{"id":21928610,"url":"https://github.com/nuvious/htb-catalog","last_synced_at":"2025-03-22T12:24:42.176Z","repository":{"id":248610492,"uuid":"823837168","full_name":"nuvious/HTB-Catalog","owner":"nuvious","description":null,"archived":false,"fork":false,"pushed_at":"2024-10-31T19:28:03.000Z","size":285,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-20T08:14:53.912Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nuvious.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-03T20:31:41.000Z","updated_at":"2024-10-31T19:25:56.000Z","dependencies_parsed_at":"2024-10-31T20:32:38.923Z","dependency_job_id":null,"html_url":"https://github.com/nuvious/HTB-Catalog","commit_stats":null,"previous_names":["nuvious/htb-catalog"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuvious%2FHTB-Catalog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuvious%2FHTB-Catalog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuvious%2FHTB-Catalog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuvious%2FHTB-Catalog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nuvious","download_url":"https://codeload.github.com/nuvious/HTB-Catalog/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244955005,"owners_count":20537874,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-28T22:27:04.121Z","updated_at":"2025-03-22T12:24:42.146Z","avatar_url":"https://github.com/nuvious.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hack the Box (HTB) Catalog in JSON\n\nI like many HTB users will do write-ups of the challenges I complete to get\npractice with doing formal write-ups in the cybersecurity space and to provide\nsome practical evidence of skill for job searches and other activities.\n\nThis repository contains a machine-readable catalog of all the HTB machines,\nchallenges, and sherlocks in their catalog. This allows me to quickly sort\nthrough the list of challenges and machines to find ones that have recently\nretired so I can take write-ups in github repositories and gists and make them\npublic.\n\nThis repository will only contain the raw json and implementation details will\nbe kept separate. Collecting this information requires authorization so I can't\nturn this into a github action without some significant engineering, so I'll try\nto update these periodically. May try to automate this in the future but this\nis the ammount of effort I can afford at the moment.\n\nIf the repository falls significantly out of date feel free to open up an issue\nto get my attention. I have enough reason to keep this populated for my own\ninterests and will try to keep it up to date as best I can.\n\n## Note to HTB\n\nIf this repository is for any reason inappropriate or against your TOS, please\nopen up an issue requesting the repository's removal from anyone in your GitHub\norganization and I'll happily comply.\n\n## Schema\n\n### Machines\n\nMachines have two different api endpoints so I divided them into two files. If\nyou pull them all in at once you can still distinguish retired vs active by the\n`free` value which is either `true` or `false` for active vs retired machines\n_generally_. There are a few machines which are retired that are free but\nthat's usually on the order of single-digits.\n\n#### Example Machine\n\n```json\n[\n ...\n {\n  \"id\": 589,\n  \"avatar\": \"/storage/avatars/e809e8df8d66ec8bb2ca3bbcc1942de7.png\",\n  \"name\": \"Jab\",\n  \"static_points\": 30,\n  \"sp_flag\": 0,\n  \"os\": \"Windows\",\n  \"points\": 30,\n  \"star\": 4.5,\n  \"release\": \"2024-02-24T19:00:00.000000Z\",\n  \"easy_month\": 0,\n  \"poweroff\": 0,\n  \"free\": true,\n  \"difficulty\": 51,\n  \"difficultyText\": \"Medium\",\n  \"user_owns_count\": 2722,\n  \"authUserInUserOwns\": false,\n  \"root_owns_count\": 2492,\n  \"authUserHasReviewed\": false,\n  \"authUserInRootOwns\": false,\n  \"isTodo\": false,\n  \"is_competitive\": false,\n  \"active\": null,\n  \"feedbackForChart\": {\n   \"counterCake\": 89,\n   \"counterVeryEasy\": 82,\n   \"counterEasy\": 353,\n   \"counterTooEasy\": 595,\n   \"counterMedium\": 1045,\n   \"counterBitHard\": 653,\n   \"counterHard\": 432,\n   \"counterTooHard\": 106,\n   \"counterExHard\": 34,\n   \"counterBrainFuck\": 55\n  },\n  \"ip\": null,\n  \"playInfo\": {\n   \"isActive\": null,\n   \"expires_at\": null\n  },\n  \"labels\": [],\n  \"recommended\": 0\n },\n {\n  \"id\": 588,\n  \"avatar\": \"/storage/avatars/2cdef06b99725f3dcce38431a95b7b77.png\",\n  \"name\": \"Office\",\n  \"static_points\": 40,\n  \"sp_flag\": 0,\n  \"os\": \"Windows\",\n  \"points\": 0,\n  \"star\": 4.7,\n  \"release\": \"2024-02-17T19:00:00.000000Z\",\n  \"easy_month\": 0,\n  \"poweroff\": 0,\n  \"free\": true,\n  \"difficulty\": 64,\n  \"difficultyText\": \"Hard\",\n  \"user_owns_count\": 2023,\n  \"authUserInUserOwns\": false,\n  \"root_owns_count\": 1634,\n  \"authUserHasReviewed\": false,\n  \"authUserInRootOwns\": false,\n  \"isTodo\": false,\n  \"is_competitive\": false,\n  \"active\": null,\n  \"feedbackForChart\": {\n   \"counterCake\": 50,\n   \"counterVeryEasy\": 21,\n   \"counterEasy\": 93,\n   \"counterTooEasy\": 185,\n   \"counterMedium\": 360,\n   \"counterBitHard\": 444,\n   \"counterHard\": 709,\n   \"counterTooHard\": 371,\n   \"counterExHard\": 114,\n   \"counterBrainFuck\": 109\n  },\n  \"ip\": null,\n  \"playInfo\": {\n   \"isActive\": null,\n   \"expires_at\": null\n  },\n  \"labels\": [],\n  \"recommended\": 0\n }\n ...\n]\n```\n\n### Challenges and Sherlocks\n\nChallenges and Sherlocks have a value `state` that is either `retired` or `active`:\n\n#### Example Challenge\n\n```json\n[\n ...\n {\n  \"id\": 706,\n  \"name\": \"Regularity\",\n  \"difficulty\": \"Very Easy\",\n  \"user_difficulty\": \"2.53\",\n  \"difficulty_chart\": {\n   \"counterCake\": 14,\n   \"counterVeryEasy\": 20,\n   \"counterEasy\": 14,\n   \"counterTooEasy\": 5,\n   \"counterMedium\": 3,\n   \"counterBitHard\": 1,\n   \"counterHard\": 0,\n   \"counterTooHard\": 0,\n   \"counterExHard\": 0,\n   \"counterBrainFuck\": 1\n  },\n  \"state\": \"retired\",\n  \"category_id\": 4,\n  \"category_name\": \"Pwn\",\n  \"solves\": 61,\n  \"is_owned\": false,\n  \"rating\": null,\n  \"rating_count\": 0,\n  \"auth_user_has_reviewed\": false,\n  \"avatar\": null,\n  \"release_date\": \"2024-06-07T20:00:00.000000Z\"\n }\n ...\n]\n```\n\n#### Example Sherlock\n\n```json\n {\n  \"id\": 572,\n  \"name\": \"Constellation\",\n  \"difficulty\": \"Medium\",\n  \"state\": \"retired\",\n  \"category_id\": 19,\n  \"category_name\": \"Threat Intelligence\",\n  \"solves\": 426,\n  \"is_owned\": false,\n  \"rating\": 4.5,\n  \"rating_count\": 30,\n  \"auth_user_has_reviewed\": false,\n  \"progress\": 0,\n  \"avatar\": \"https://labs.hackthebox.com/storage/challenges/e6b4b2a746ed40e1af829d1fa82daa10.png\",\n  \"release_date\": \"2023-12-14T19:00:00.000000Z\"\n },\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnuvious%2Fhtb-catalog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnuvious%2Fhtb-catalog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnuvious%2Fhtb-catalog/lists"}