{"id":19864160,"url":"https://github.com/sr-lab/ampasamp","last_synced_at":"2026-05-14T03:36:26.451Z","repository":{"id":75386265,"uuid":"113774473","full_name":"sr-lab/ampasamp","owner":"sr-lab","description":"A minimal password sampler.","archived":false,"fork":false,"pushed_at":"2018-05-11T12:06:02.000Z","size":128,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-01T00:29:55.742Z","etag":null,"topics":["dictionary","password","password-policy","sampler","windows"],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sr-lab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-10T18:46:45.000Z","updated_at":"2018-05-11T12:06:04.000Z","dependencies_parsed_at":null,"dependency_job_id":"fe9da667-9ace-4e4d-a7a5-694a52bd0ee6","html_url":"https://github.com/sr-lab/ampasamp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sr-lab/ampasamp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sr-lab%2Fampasamp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sr-lab%2Fampasamp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sr-lab%2Fampasamp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sr-lab%2Fampasamp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sr-lab","download_url":"https://codeload.github.com/sr-lab/ampasamp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sr-lab%2Fampasamp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33009723,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["dictionary","password","password-policy","sampler","windows"],"created_at":"2024-11-12T15:17:39.427Z","updated_at":"2026-05-14T03:36:26.434Z","avatar_url":"https://github.com/sr-lab.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ampasamp\nA minimal password sampler.\n\n## Overview\nThis C# application will (optionally randomly) sample compliant passwords from a file according to a _task_ specified as a JSON file. Multiple policies can be sampled at once at identical sample sizes. C# is used because I wanted to write this fast and use it from Windows.\n\n## Building\nBuild this application like any other Visual Studio 2017 project. Remember, though, that you'll need to target `x64` processors if you want to sample from huge banks\n\n## Usage\nBriefly, use the program like this:\n\n```\n./Ampasamp.exe -t mytask.json -d mypasswordlist.txt\n```\n\nThere really aren't that many options to get to grips with.\n\n| Option     | Shorthand | Required? | Description                        |\n|------------|-----------|-----------|------------------------------------|\n| --database | -d        | Yes       | The full password database to use. |\n| --task     | -t        | Yes       | The task file to execute.          |\n| --help     | N/A       | No        | Displays the help screen.          |\n\nBear in mind that this is going to write a bunch of files to your working directory. If there are any in there with the same name expect them to be overwritten without warning. Names take the following form:\n\n```\n{% task.Name %}_{% policy.Name %}_{% task.Sample %}.{% format.Extension %}\n```\n\nSo a policy called `basic16` under a task called `mytask` with a sample size of `1000` with output format `coq` will generate a file called:\n\n```\nmytask_basic16_1000.v\n```\n\n## Tasks\nCommented for clarity, the task file format looks like this (remove comments before using this, comments aren't valid JSON):\n\n```javascript\n{\n  \"name\": \"MySamplingTask\", // The name of the task.\n  \"sample\": 10000, // The number of passwords to sample under each policy.\n  \"output\": \"plain\", // The format of any output, can be \"plain\", \"json\" or \"coq\".\n  \"cullNonAscii\": true, // If set to true, removes any passwords containing non-ASCII characters.\n  \"cullNonPrintable\": true, // If set to true, removes any passwords containing non-printable ASCII characters.\n  \"randomizeInitial\": true, // If set to true, randomizes the data before collecting any samples.\n  \"randomizeEachSample\": false, // If set to true, randomizes the data after collecting each sample..\n  \"deduplicate\": false, // If set to true, removes all duplicates before sampling.\n  \"policies\": [ // A collection of policies to sample according to.\n    {\n      \"name\": \"Basic8\", // The name of the policy.\n      \"length\": 8, // The minimum password length allowed by the policy.\n      \"uppers\": 0, // The minimum number of uppercase characters in passwords allowed by the policy.\n      \"lowers\": 0, // The minimum number of lowercase characters in passwords allowed by the policy.\n      \"digits\": 0, // The minimum number of digits characters in passwords allowed by the policy.\n      \"others\": 0, // The minimum number of non-alphanumeric characters in passwords allowed by the policy.\n      \"classes\": 0, // The minimum number of character classes present in passwords allowed by the policy.\n      \"words\": 0, // The minimum number of words in passwords permitted under the policy.\n      \"Repetitions\": -1, // The maximum number of times a character in a password can be repeated.\n      \"Consecutives\": -1, // The maximum number of times a character in a password can vary from its predecessor by one code point.\n      \"Dictionary\": null // The file path of the dictionary to use for the dictionary check.\n    }\n  ],\n}\n```\n\n## Credits\nFor any contributions not recognised below, please open an issue. A maintainer will resolve the issue as soon as possible.\n- Software: Saul Johnson [@lambdacasserole](https://github.com/lambdacasserole)\n- Dictionaries: Alexander Peslyak a.k.a. Solar Designer (see [Licensing](#licensing))\n\n## Licensing\nLicensed under the MIT license, with the exception of the wordlists under `/Ampasamp/Dictionaries` which have their own license (included, can also be found [here](http://download.openwall.net/pub/wordlists/LICENSE.html)) and [readme](http://download.openwall.net/pub/wordlists/README.html).\n\n## Resources\nFor password lists, [Daniel Miessler's SecLists](https://github.com/danielmiessler/SecLists) is an exceptional resource.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsr-lab%2Fampasamp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsr-lab%2Fampasamp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsr-lab%2Fampasamp/lists"}