{"id":20804733,"url":"https://github.com/hashtopolis/agent-python","last_synced_at":"2025-04-09T06:10:28.062Z","repository":{"id":38380433,"uuid":"155236048","full_name":"hashtopolis/agent-python","owner":"hashtopolis","description":"Official python agent for using the distributed hashcracker Hashtopolis","archived":false,"fork":false,"pushed_at":"2025-03-28T10:30:27.000Z","size":1085,"stargazers_count":71,"open_issues_count":11,"forks_count":54,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-02T04:06:22.137Z","etag":null,"topics":["cracking","distributed","hash","hashcat","hashing","hashtopolis"],"latest_commit_sha":null,"homepage":"https://hashtopolis.org","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hashtopolis.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":null,"funding":null,"license":"LICENSE.txt","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":"2018-10-29T15:31:47.000Z","updated_at":"2025-03-28T10:28:38.000Z","dependencies_parsed_at":"2023-02-15T10:31:24.566Z","dependency_job_id":"bd25717d-0bdd-4b8a-902c-b54e166f91cb","html_url":"https://github.com/hashtopolis/agent-python","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hashtopolis%2Fagent-python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hashtopolis%2Fagent-python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hashtopolis%2Fagent-python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hashtopolis%2Fagent-python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hashtopolis","download_url":"https://codeload.github.com/hashtopolis/agent-python/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247987285,"owners_count":21028895,"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":["cracking","distributed","hash","hashcat","hashing","hashtopolis"],"created_at":"2024-11-17T19:11:20.364Z","updated_at":"2025-04-09T06:10:28.044Z","avatar_url":"https://github.com/hashtopolis.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hashtopolis Python Agent\n\n[![CodeFactor](https://www.codefactor.io/repository/github/hashtopolis/agent-python/badge)](https://www.codefactor.io/repository/github/hashtopolis/agent-python)\n[![LoC](https://tokei.rs/b1/github/hashtopolis/agent-python?category=code)](https://github.com/hashtopolis/agent-python)\n[![Build Status](https://travis-ci.com/hashtopolis/agent-python.svg?branch=master)](https://travis-ci.com/hashtopolis/agent-python)\n\nThis agent is used with [Hashtopolis](https://github.com/hashtopolis/server), read the wiki or create issues there, visit the [Forum](https://hashtopolis.org).\nThis Hashtopolis agent is only compatible with Hashtopolis versions 0.5.0 and higher.\n\n## Prerequisites\n\nYou need python3 installed on your agent system. \nFollowing python packages are required:\n\n* requests\n* psutil\n\n## Manual\n\nYou can either download the agent from the Hashtopolis new agent page or you can use the url shown there to download the agent with \nwget/curl.\n\n### Run\n\nTo run the agent you simply need to call `python3 hashtopolis.zip`. The settings/configurations normally are done via the config file, described in one of the following sections.\n\nPlease note:\n- The client does not correctly recognize the OS when you are running in Cygwin or similar on Windows. You need to run it in Windows command line.\n- If you unpack the agent out of the .zip file, the automatic updating from the server won't work correctly.\n\n### Command Line Arguments\n\n```\nusage: python3 hashtopolis.zip [-h] [--de-register] [--version] [--number-only] [--disable-update] [--debug] [--voucher VOUCHER] [--url URL] [--cert CERT] [--files-path FILES_PATH]\n                               [--crackers-path CRACKERS_PATH] [--hashlists-path HASHLISTS_PATH] [--preprocessors-path PREPROCESSORS_PATH] [--zaps-path ZAPS_PATH] [--cpu-only]\n\n\nHashtopolis Client v0.7.3\n\noptional arguments:\n  -h, --help            show this help message and exit\n  --de-register         client should automatically de-register from server now\n  --version             show version information\n  --number-only         when using --version show only the number\n  --disable-update      disable retrieving auto-updates of the client from the server\n  --debug, -d           enforce debugging output\n  --voucher VOUCHER     voucher to use to automatically register\n  --url URL             URL to Hashtopolis client API\n  --cert CERT           Client TLS cert bundle for Hashtopolis client API\n  --files-path FILES_PATH\n                        Use given folder path as files location\n  --crackers-path CRACKERS_PATH\n                        Use given folder path as crackers location\n  --hashlists-path HASHLISTS_PATH\n                        Use given folder path as hashlists location\n  --preprocessors-path PREPROCESSORS_PATH\n                        Use given folder path as preprocessors location\n  --zaps-path ZAPS_PATH\n                        Use given folder path as zaps location\n  --cpu-only            Force client to register as CPU only and also only reading out CPU information\n```\n\n### Config\n\nWhen you run the client for the first time it will ask automatically for all the requirement settings and then saves it automatically to a config file called `config.json`. This could for example look like this:\n\n```\n{\n  \"url\": \"https://example.org/hashtopolis/api/server.php\", \n  \"token\": \"ABCDEFGHIJ\", \n  \"uuid\": \"49dcd31c-3637-4f2a-8df1-b545202df5b3\"\n}\n```\n\n### Config Options\n\n| field                 | type    | default | description                                                                |\n|-----------------------|---------|---------|----------------------------------------------------------------------------|\n| voucher               | string  |         | Used for agent registration (will be prompted on first start)              |\n| url                   | string  |         | The hashtopolis API endpoint (will be prompted on first start)             |\n| token                 | string  |         | The access token for the API (sent by server on registration)              |\n| uuid                  | string  |         | Unique identifier of the agent (generated on registration)                 |\n| debug                 | boolean | false   | Enables debug output                                                       |\n| allow-piping          | boolean | false   | Allows hashcat to read password candidates from stdin                      |\n| piping-threshold      | integer | 95      | Restarts chunk in piping mode when GPU UTIL is below this value            |\n| rsync                 | boolean | false   | Enables download of wordlists and rules via rsync                          |\n| rsync-path            | string  |         | Remote path to hashtopolis files directory                                 |\n| multicast-device      | string  | eth0    | Device which is used to retrieve UDP multicast file distribution           |\n| file-deletion-disable | boolean | false   | Disable requesting the server for files to delete                          |\n| file-deletion-interval| integer | 600     | Interval time in seconds in which the agent should check for deleted files |\n| proxies               | object  |         | Specify proxies e.g. `\"proxies\": {\"https\": \"localhost:8433\"}`              |\n| auth-user             | string  |         | HTTP Basic Auth user                                                       |\n| auth-password         | string  |         | HTTP Basic Auth password                                                   |\n| outfile-history       | boolean | false   | Keep old hashcat outfiles with founds and not getting them overwritten     |\n| files-path            | string  |         | Use given folder path as files location                                    |\n| crackers-path         | string  |         | Use given folder path as crackers location                                 |\n| hashlists-path        | string  |         | Use given folder path as hashlists location                                |\n| preprocessors-path    | string  |         | Use given folder path as preprocessors location                            |\n| zaps-path             | string  |         | Use given folder path as zaps location                                     |\n| cpu-only              | boolean | false   | Only send CPU information about agent (for CPU only agents)                |\n\n### Debug example\n\n```\n{\n  \"url\": \"https://example.org/hashtopolis/api/server.php\", \n  \"token\": \"7RNDqtnPxm\",\n  \"uuid\": \"49dcd31c-3637-4f2a-8df1-b545202df5b3\",\n  \"debug\": true\n}\n```\n\n### rsync\n\nYou need a user on the server which can automatically login (e.g. SSH keys) and has read access to the files directory of hashtopolis. On the client side you need rsync installed and set the following lines in your agent config.\n\n```\n  \"rsync\": true,\n  \"rsync-path\": \"user@yourserver:/path/to/hashtopolis/files\"\n```\n\n### Multicast\n\nIn order to use the multicast distribution for files, please make sure that the agents and server are prepared according to this:https://github.com/hashtopolis/runner\n\n## Hashcat Compatibility\n\nThe list contains all Hashcat versions with which the client was tested and is able to work with (other versions might work):\n\n* 6.2.6\n* 6.2.5\n* 6.2.4\n* 6.2.3\n* 6.2.2\n* 6.2.1\n* 6.2.0\n* 6.1.1\n* 6.1.0\n* 6.0.0\n* 5.1.0\n* 5.0.0\n* 4.2.1\n* 4.2.0\n* 4.1.0\n* 4.0.1\n* 4.0.0\n\n## Generic Crackers\n\nThis client is able to run generic Hashtopolis cracker binaries which fulfill the minimal functionality requirements, described [here](https://github.com/s3inlc/hashtopolis/tree/master/doc/README.md). An example implementation can be found [here](https://github.com/hashtopolis/generic-cracker)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhashtopolis%2Fagent-python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhashtopolis%2Fagent-python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhashtopolis%2Fagent-python/lists"}