{"id":18839934,"url":"https://github.com/amlweems/atmin","last_synced_at":"2026-01-29T03:30:16.385Z","repository":{"id":147504309,"uuid":"113807816","full_name":"amlweems/atmin","owner":"amlweems","description":"automatic test case minimization library","archived":false,"fork":false,"pushed_at":"2017-12-11T08:31:12.000Z","size":13,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-18T10:19:33.762Z","etag":null,"topics":["fuzzing","go","minimizer"],"latest_commit_sha":null,"homepage":"","language":"Go","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/amlweems.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":"2017-12-11T03:30:13.000Z","updated_at":"2017-12-11T08:26:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"df807ef3-0311-4d50-8fe7-48cf6d4e4387","html_url":"https://github.com/amlweems/atmin","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amlweems%2Fatmin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amlweems%2Fatmin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amlweems%2Fatmin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amlweems%2Fatmin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/amlweems","download_url":"https://codeload.github.com/amlweems/atmin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239776110,"owners_count":19695043,"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":["fuzzing","go","minimizer"],"created_at":"2024-11-08T02:44:33.287Z","updated_at":"2026-01-29T03:30:16.333Z","avatar_url":"https://github.com/amlweems.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Automatic Test Case Minimizer\n\n`atmin` is a generic test case minimization program which accepts a test case,\nexecutor, and validator, and returns a minimized blob of data which passes the\nvalidation check. Included in the `cmd/` directory are a few examples of using\n`atmin`.\n\n## `hatmin`\n\nThe first example of `atmin`, an HTTP request minimization program, allows\nusers to provide a single HTTP request and receive a minimized payload which\ngenerally returns the same output. Validation is performed using string\nmatching, requiring the user to provide a sample string which should be returned\nby the server when the payload succeeds. An example is shown below.\n\n```bash\n$ cat req.txt\nGET / HTTP/1.1\nHost: example.org\nConnection: keep-alive\nPragma: no-cache\nCache-Control: no-cache\nAccept: text/plain, */*; q=0.01\nX-Requested-With: XMLHttpRequest\nUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36\nContent-Type: application/json; charset=utf-8\nAccept-Language: en-US,en;q=0.9\nCookie: _ga=GA1.2.1953734269.1506457661; _gid=GA1.2.593597176.1512947963; _gat=1\n\n$ hatmin -request req.txt -addr example.org:443 -dry-run | grep '\u003ch1\u003e'\n    \u003ch1\u003eExample Domain\u003c/h1\u003e\n$ hatmin -request req.txt -addr example.org:443 -needle 'Example Domain'\n2017/12/10 20:30:44 Stage 0: Block Normalization\n2017/12/10 20:30:47 Stage 1: Block Deletion\n2017/12/10 20:31:01 Stage 2: Alphabet Minimization\n2017/12/10 20:31:02 Stage 3: Character Minimization\n2017/12/10 20:31:02 Stage 1: Block Deletion\n2017/12/10 20:31:04 Stage 2: Alphabet Minimization\n2017/12/10 20:31:05 Stage 3: Character Minimization\n2017/12/10 20:31:05 Stage 1: Block Deletion\n2017/12/10 20:31:06 Stage 2: Alphabet Minimization\n2017/12/10 20:31:07 Stage 3: Character Minimization\nGET / HTTP/1.0\nHost: example.org\n0:0\n\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famlweems%2Fatmin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famlweems%2Fatmin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famlweems%2Fatmin/lists"}