### Retrieve Agent Binaries List Source: https://docs.hashtopolis.org/api Example response for a GET request to retrieve a paginated list of agent binaries. ```json [ { "jsonapi": { "version": "1.1", "ext": "https://jsonapi.org/profiles/ethanresnick/cursor-pagination" }, "links": { "self": "/api/v2/ui/agentbinaries?page[size]=25", "first": "/api/v2/ui/agentbinaries?page[size]=25&page[after]=0", "last": "/api/v2/ui/agentbinaries?page[size]=25&page[before]=500", "next": "/api/v2/ui/agentbinaries?page[size]=25&page[after]=25", "previous": "/api/v2/ui/agentbinaries?page[size]=25&page[before]=25" }, "data": [ { "id": 0, "type": "AgentBinary", "attributes": { "binaryType": "string", "version": "string", "operatingSystems": "string", "filename": "string", "updateTrack": "string", "updateAvailable": "string" } } ], "relationships": { }, "included": [ { } ] } ] ``` -------------------------------- ### Agent Registration Prompt and Example Source: https://docs.hashtopolis.org/installation_guidelines/basic_install Illustrates the agent's prompt for the server API URL and a successful registration with a voucher token. This interaction occurs after starting the agent. ```text Starting client 's3-python-0.7.2.4'... Please enter the url to the API of your Hashtopolis installation: http://localhost:8080/api/server.php No token found! Please enter a voucher to register your agent: peKxylVY Successfully registered! Collecting agent data... Login successful! ``` -------------------------------- ### Retrieve Files List Source: https://docs.hashtopolis.org/api Example response for a GET request to /api/v2/ui/files, demonstrating cursor-based pagination and relationship links. ```json [ * { * "jsonapi": { * "version": "1.1", * "ext": "https://jsonapi.org/profiles/ethanresnick/cursor-pagination" }, * "links": { * "self": "/api/v2/ui/files?page[size]=25", * "first": "/api/v2/ui/files?page[size]=25&page[after]=0", * "last": "/api/v2/ui/files?page[size]=25&page[before]=500", * "next": "/api/v2/ui/files?page[size]=25&page[after]=25", * "previous": "/api/v2/ui/files?page[size]=25&page[before]=25" }, * "data": [ * { * "id": 0, * "type": "File", * "attributes": { * "filename": "string", * "size": 0, * "isSecret": true, * "fileType": 0, * "accessGroupId": 0, * "lineCount": 0 } } ], * "relationships": { * "0": { * "accessGroup": { * "links": { * "self": "/api/v2/ui/files/relationships/accessGroup", * "related": "/api/v2/ui/files/accessGroup" } } } }, * "included": [ * { * "0": { * "id": 0, * "type": "accessGroup", * "attributes": { * "accessGroupId": 0, * "groupName": "string" } } } ] } ] ``` -------------------------------- ### Install Python Agent Packages Source: https://docs.hashtopolis.org/installation_guidelines/basic_install Installs the 'requests' and 'psutil' Python packages required by the Hashtopolis agent. Ensure the virtual environment is activated. ```bash pip install requests psutil ``` -------------------------------- ### Load and Start Hashtopolis Docker Images Offline Source: https://docs.hashtopolis.org/installation_guidelines/update Load previously saved Hashtopolis Docker images from tar archives and start the containers on an offline system. ```bash docker compose down docker load --input hashtopolis-backend.tar docker load --input hashtopolis-frontend.tar docker compose up ``` -------------------------------- ### GET /api/v2/ui/configs Source: https://docs.hashtopolis.org/api Retrieves a paginated list of system configurations. ```APIDOC ## GET /api/v2/ui/configs ### Description Retrieves multiple configuration objects with support for filtering and pagination. ### Method GET ### Endpoint /api/v2/ui/configs ### Parameters #### Query Parameters - **page[size]** (integer) - Optional - Amount of data to retrieve inside a single page - **page[after]** (integer) - Optional - Pointer to paginate to retrieve the data after the value provided - **page[before]** (integer) - Optional - Pointer to paginate to retrieve the data before the value provided - **filter** (object) - Optional - Filters results using a query - **include** (string) - Optional - Items to include, comma separated (e.g., configSection) ### Response #### Success Response (200) - **data** (array) - List of configuration objects #### Response Example { "data": [ { "id": 0, "type": "Config", "attributes": { "configSectionId": 0, "item": "string", "value": "string" } } ] } ``` -------------------------------- ### Initialize Environment Configuration Source: https://docs.hashtopolis.org/installation_guidelines/advanced_install Copies the example environment file and opens it for modification. ```bash cp env.example .env nano .env ``` -------------------------------- ### Healthcheck GET Response Sample Source: https://docs.hashtopolis.org/api Example JSON:API response structure for a healthcheck retrieval request. ```json { "jsonapi": { "version": "1.1", "ext": "https://jsonapi.org/profiles/ethanresnick/cursor-pagination" }, "links": { "self": "/api/v2/ui/healthchecks?page[size]=25", "first": "/api/v2/ui/healthchecks?page[size]=25&page[after]=0", "last": "/api/v2/ui/healthchecks?page[size]=25&page[before]=500", "next": "/api/v2/ui/healthchecks?page[size]=25&page[after]=25", "previous": "/api/v2/ui/healthchecks?page[size]=25&page[before]=25" }, "data": [ { "id": 0, "type": "HealthCheck", "attributes": { "time": 0, "status": 0, "checkType": 0, "hashtypeId": 0, "crackerBinaryId": 0, "expectedCracks": 0, "attackCmd": "string" } } ], "relationships": { "0": { "crackerBinary": { "links": { "self": "/api/v2/ui/healthchecks/relationships/crackerBinary", "related": "/api/v2/ui/healthchecks/crackerBinary" } } }, "1": { "hashType": { "links": { "self": "/api/v2/ui/healthchecks/relationships/hashType", "related": "/api/v2/ui/healthchecks/hashType" } } }, "2": { "healthCheckAgents": { "links": { "self": "/api/v2/ui/healthchecks/relationships/healthCheckAgents", "related": "/api/v2/ui/healthchecks/healthCheckAgents" } } } }, "included": [ { "0": { "id": 0, "type": "crackerBinary", "attributes": { "crackerBinaryId": 0, "crackerBinaryTypeId": 0, "version": "string", "downloadUrl": "string", "binaryName": "string" } }, "1": { "id": 0, "type": "hashType", "attributes": { "hashTypeId": 0, "description": "string", "isSalted": true, "isSlowHash": true } }, "2": { "id": 0, "type": "healthCheckAgents", "attributes": { "healthCheckAgentId": 0, "healthCheckId": 0, "agentId": 0, "status": 0, "cracked": 0, "numGpus": 0, "start": 0, "end": 0, "errors": "string" } } } ] } ``` -------------------------------- ### Retrieve Access Group Relationship Link Source: https://docs.hashtopolis.org/api Example response for a GET request to a to-one relationship link. ```json { "jsonapi": { "version": "1.1", "ext": "https://jsonapi.org/profiles/ethanresnick/cursor-pagination" }, "links": { "self": "/api/v2/ui/accessgroups?page[size]=25", "first": "/api/v2/ui/accessgroups?page[size]=25&page[after]=0", "last": "/api/v2/ui/accessgroups?page[size]=25&page[before]=500", "next": "/api/v2/ui/accessgroups?page[size]=25&page[after]=25", "previous": "/api/v2/ui/accessgroups?page[size]=25&page[before]=25" }, "data": [ { "id": 0, "type": "AccessGroup", "attributes": { "groupName": "string" } } ], "relationships": { "0": { "agentMembers": { "links": { "self": "/api/v2/ui/accessgroups/relationships/agentMembers", "related": "/api/v2/ui/accessgroups/agentMembers" } } }, "1": { "userMembers": { "links": { "self": "/api/v2/ui/accessgroups/relationships/userMembers", "related": "/api/v2/ui/accessgroups/userMembers" } } } }, "included": [ { "0": { "id": 0, "type": "userMembers", "attributes": { "userId": 0, "name": "string", "email": "string", "passwordHash": "string", "passwordSalt": "string", "isValid": true, "isComputedPassword": true, "lastLoginDate": 0, "registeredSince": 0, "sessionLifetime": 0, "globalPermissionGroupId": 0, "yubikey": "string", "otp1": "string", "otp2": "string", "otp3": "string", "otp4": "string" } }, "1": { "id": 0, "type": "agentMembers", "attributes": { "agentId": 0, "agentName": "string", "uid": "string", "os": 0, "devices": "string", "cmdPars": "string", "ignoreErrors": 0, "isActive": true, "isTrusted": true, "token": "string", "lastAct": "string", "lastTime": 0, "lastIp": "string", "userId": 0, "cpuOnly": true, "clientSignature": "string" } } } ] } ``` -------------------------------- ### Download Environment File Source: https://docs.hashtopolis.org/installation_guidelines/update Download the example .env file for configuring your Hashtopolis Docker environment. ```bash wget https://raw.githubusercontent.com/hashtopolis/server/master/env.example -O .env ``` -------------------------------- ### Retrieve CrackerBinary List Response Source: https://docs.hashtopolis.org/api Example response structure for a GET request to retrieve multiple CrackerBinary objects. ```json [ { "jsonapi": { "version": "1.1", "ext": "https://jsonapi.org/profiles/ethanresnick/cursor-pagination" }, "links": { "self": "/api/v2/ui/crackers?page[size]=25", "first": "/api/v2/ui/crackers?page[size]=25&page[after]=0", "last": "/api/v2/ui/crackers?page[size]=25&page[before]=500", "next": "/api/v2/ui/crackers?page[size]=25&page[after]=25", "previous": "/api/v2/ui/crackers?page[size]=25&page[before]=25" }, "data": [ { "id": 0, "type": "CrackerBinary", "attributes": { "crackerBinaryTypeId": 0, "version": "string", "downloadUrl": "string", "binaryName": "string" } } ], "relationships": { "0": { "crackerBinaryType": { "links": { "self": "/api/v2/ui/crackers/relationships/crackerBinaryType", "related": "/api/v2/ui/crackers/crackerBinaryType" } } }, "1": { "tasks": { "links": { "self": "/api/v2/ui/crackers/relationships/tasks", "related": "/api/v2/ui/crackers/tasks" } } } }, "included": [ { "0": { "id": 0, "type": "crackerBinaryType", "attributes": { "crackerBinaryTypeId": 0, "typeName": "string", "isChunkingAvailable": true } }, "1": { "id": 0, "type": "tasks", "attributes": { "hashlistId": 0, "files": [ 0 ], "taskId": 0, "taskName": "string", "attackCmd": "string", "chunkTime": 0, "statusTimer": 0, "keyspace": 0, "keyspaceProgress": 0, "priority": 0, "maxAgents": 0, "color": "string", "isSmall": true, "isCpuTask": true, "useNewBench": true, "skipKeyspace": 0, "crackerBinaryId": 0, "crackerBinaryTypeId": 0, "taskWrapperId": 0, "isArchived": true, "notes": "string", "staticChunks": 0, "chunkSize": 0, "forcePipe": true, "preprocessorId": 0, "preprocessorCommand": "string" } } } ] } ] ``` -------------------------------- ### Download configuration files Source: https://docs.hashtopolis.org/installation_guidelines/advanced_install Fetch the necessary deployment files for the Hashtopolis server. ```bash wget https://raw.githubusercontent.com/hashtopolis/server/master/docker-compose.yml wget https://raw.githubusercontent.com/hashtopolis/server/master/env.example -O .env ``` -------------------------------- ### Download Docker Compose File Source: https://docs.hashtopolis.org/installation_guidelines/update Fetch the docker-compose.yml file to set up Hashtopolis with Docker. ```bash wget https://raw.githubusercontent.com/hashtopolis/server/master/docker-compose.yml ``` -------------------------------- ### Retrieve HealthCheck List Response Source: https://docs.hashtopolis.org/api Example response structure for a GET request to retrieve multiple health check objects. ```json [ { "jsonapi": { "version": "1.1", "ext": "https://jsonapi.org/profiles/ethanresnick/cursor-pagination" }, "links": { "self": "/api/v2/ui/healthchecks?page[size]=25", "first": "/api/v2/ui/healthchecks?page[size]=25&page[after]=0", "last": "/api/v2/ui/healthchecks?page[size]=25&page[before]=500", "next": "/api/v2/ui/healthchecks?page[size]=25&page[after]=25", "previous": "/api/v2/ui/healthchecks?page[size]=25&page[before]=25" }, "data": [ { "id": 0, "type": "HealthCheck", "attributes": { "time": 0, "status": 0, "checkType": 0, "hashtypeId": 0, "crackerBinaryId": 0, "expectedCracks": 0, "attackCmd": "string" } } ], "relationships": { "0": { "crackerBinary": { "links": { "self": "/api/v2/ui/healthchecks/relationships/crackerBinary", "related": "/api/v2/ui/healthchecks/crackerBinary" } } }, "1": { "hashType": { "links": { "self": "/api/v2/ui/healthchecks/relationships/hashType", "related": "/api/v2/ui/healthchecks/hashType" } } }, "2": { "healthCheckAgents": { "links": { "self": "/api/v2/ui/healthchecks/relationships/healthCheckAgents", "related": "/api/v2/ui/healthchecks/healthCheckAgents" } } } }, "included": [ { "0": { "id": 0, "type": "crackerBinary", "attributes": { "crackerBinaryId": 0, "crackerBinaryTypeId": 0, "version": "string", "downloadUrl": "string", "binaryName": "string" } }, "1": { "id": 0, "type": "hashType", "attributes": { "hashTypeId": 0, "description": "string", "isSalted": true, "isSlowHash": true } }, "2": { "id": 0, "type": "healthCheckAgents", "attributes": { "healthCheckAgentId": 0, "healthCheckId": 0, "agentId": 0, "status": 0, "cracked": 0, "numGpus": 0, "start": 0, "end": 0, "errors": "string" } } } ] } ] ``` -------------------------------- ### Retrieve Global Permission Groups Response Source: https://docs.hashtopolis.org/api Example JSON response for a GET request to retrieve global permission groups. ```json [ { "jsonapi": { "version": "1.1", "ext": "https://jsonapi.org/profiles/ethanresnick/cursor-pagination" }, "links": { "self": "/api/v2/ui/globalpermissiongroups?page[size]=25", "first": "/api/v2/ui/globalpermissiongroups?page[size]=25&page[after]=0", "last": "/api/v2/ui/globalpermissiongroups?page[size]=25&page[before]=500", "next": "/api/v2/ui/globalpermissiongroups?page[size]=25&page[after]=25", "previous": "/api/v2/ui/globalpermissiongroups?page[size]=25&page[before]=25" }, "data": [ { "id": 0, "type": "RightGroup", "attributes": { "name": "string", "permissions": { } } } ], "relationships": { "0": { "userMembers": { "links": { "self": "/api/v2/ui/globalpermissiongroups/relationships/userMembers", "related": "/api/v2/ui/globalpermissiongroups/userMembers" } } } }, "included": [ { "0": { "id": 0, "type": "userMembers", "attributes": { "userId": 0, "name": "string", "email": "string", "passwordHash": "string", "passwordSalt": "string", "isValid": true, "isComputedPassword": true, "lastLoginDate": 0, "registeredSince": 0, "sessionLifetime": 0, "globalPermissionGroupId": 0, "yubikey": "string", "otp1": "string", "otp2": "string", "otp3": "string", "otp4": "string" } } } ] } ] ``` -------------------------------- ### Build frontend Docker image Source: https://docs.hashtopolis.org/installation_guidelines/advanced_install Compile the web-ui repository into a production-ready Docker image. ```bash docker build -t hashtopolis/frontend:latest --target hashtopolis-web-ui-prod . ``` -------------------------------- ### Clone Hashtopolis web-ui repository Source: https://docs.hashtopolis.org/installation_guidelines/advanced_install Prepare the source code for building the frontend image. ```bash git clone https://github.com/hashtopolis/web-ui.git cd web-ui ``` -------------------------------- ### Retrieve Single Cracker Relationship Source: https://docs.hashtopolis.org/api Example response for a GET request to retrieve a specific cracker binary type relationship. ```json { "data": { "type": "crackerBinaryType", "id": 1 } } ``` -------------------------------- ### Start Hashtopolis Agent Source: https://docs.hashtopolis.org/installation_guidelines/basic_install Executes the Hashtopolis agent script. This command should be run after activating the virtual environment. ```bash python hashtopolis.zip ``` -------------------------------- ### Retrieve Access Group Agent Members Source: https://docs.hashtopolis.org/api Example response for a GET request to retrieve agent members of an access group. ```json { "data": [ { "type": "agentMembers", "id": 1 } ] } ``` -------------------------------- ### Import Database into Container Source: https://docs.hashtopolis.org/installation_guidelines/update Import the SQL backup file into the Hashtopolis database within the container. ```bash mysql -D hashtopolis -p < hashtopolis-backup.sql ``` -------------------------------- ### Retrieve Global Permission Group Details Source: https://docs.hashtopolis.org/api Example JSON response for a successful GET request to retrieve a single global permission group object. ```json { * "jsonapi": { * "version": "1.1", * "ext": "https://jsonapi.org/profiles/ethanresnick/cursor-pagination" }, * "links": { * "self": "/api/v2/ui/globalpermissiongroups?page[size]=25", * "first": "/api/v2/ui/globalpermissiongroups?page[size]=25&page[after]=0", * "last": "/api/v2/ui/globalpermissiongroups?page[size]=25&page[before]=500", * "next": "/api/v2/ui/globalpermissiongroups?page[size]=25&page[after]=25", * "previous": "/api/v2/ui/globalpermissiongroups?page[size]=25&page[before]=25" }, * "data": [ * { * "id": 0, * "type": "RightGroup", * "attributes": { * "name": "string", * "permissions": { } } } ], * "relationships": { * "0": { * "userMembers": { * "links": { * "self": "/api/v2/ui/globalpermissiongroups/relationships/userMembers", * "related": "/api/v2/ui/globalpermissiongroups/userMembers" } } } }, * "included": [ * { * "0": { * "id": 0, * "type": "userMembers", * "attributes": { * "userId": 0, * "name": "string", * "email": "string", * "passwordHash": "string", * "passwordSalt": "string", * "isValid": true, * "isComputedPassword": true, * "lastLoginDate": 0, * "registeredSince": 0, * "sessionLifetime": 0, * "globalPermissionGroupId": 0, * "yubikey": "string", * "otp1": "string", * "otp2": "string", * "otp3": "string", * "otp4": "string" } } } ] } ``` -------------------------------- ### Clone Hashtopolis Server Repository Source: https://docs.hashtopolis.org/installation_guidelines/advanced_install Initial steps to download the server source code. ```bash cd .. git clone https://github.com/hashtopolis/server.git cd server ``` -------------------------------- ### Retrieve System Configurations Response Source: https://docs.hashtopolis.org/api Example JSON response for the system configurations endpoint, showing the structure for config items and their associated sections. ```json [ { "jsonapi": { "version": "1.1", "ext": "https://jsonapi.org/profiles/ethanresnick/cursor-pagination" }, "links": { "self": "/api/v2/ui/configs?page[size]=25", "first": "/api/v2/ui/configs?page[size]=25&page[after]=0", "last": "/api/v2/ui/configs?page[size]=25&page[before]=500", "next": "/api/v2/ui/configs?page[size]=25&page[after]=25", "previous": "/api/v2/ui/configs?page[size]=25&page[before]=25" }, "data": [ { "id": 0, "type": "Config", "attributes": { "configSectionId": 0, "item": "string", "value": "string" } } ], "relationships": { "0": { "configSection": { "links": { "self": "/api/v2/ui/configs/relationships/configSection", "related": "/api/v2/ui/configs/configSection" } } } } }, "included": [ { "0": { "id": 0, "type": "configSection", "attributes": { "configSectionId": 0, "sectionName": "string" } } } ] } ] ``` -------------------------------- ### JWT API Keys - Get Relationship Source: https://docs.hashtopolis.org/openapi.json Retrieves the resource record of an object that is part of a specified relation via a GET request. ```APIDOC ## GET /api/v2/ui/apiTokens/{id}/user ### Description GET request for a to-one relationship link. Returns the resource record of the object that is part of the specified relation. ### Method GET ### Endpoint /api/v2/ui/apiTokens/{id}/user ### Parameters #### Path Parameters - **id** (integer) - Required - The ID of the JWT API key. ### Response #### Success Response (200) - **[schema: JwtApiKeyResponse]** - Successful operation #### Response Example ```json { "example": "response body" } ``` ``` -------------------------------- ### Get API Tokens Response Sample Source: https://docs.hashtopolis.org/api This is a sample JSON response for the GET /api/v2/ui/apiTokens endpoint, used to retrieve multiple JWT API keys. ```json { "jsonapi": { "version": "1.1", "ext": "https://jsonapi.org/profiles/ethanresnick/cursor-pagination" }, "links": { "self": "/api/v2/ui/apiTokens?page[size]=25", "first": "/api/v2/ui/apiTokens?page[size]=25&page[after]=0", "last": "/api/v2/ui/apiTokens?page[size]=25&page[before]=500", "next": "/api/v2/ui/apiTokens?page[size]=25&page[after]=25", "previous": "/api/v2/ui/apiTokens?page[size]=25&page[before]=25" }, "data": [ { "id": 0, "type": "ApiToken", "attributes": { "name": "Example Token", "token": "example_token_string", "createdAt": "2023-01-01T12:00:00Z", "expiresAt": "2024-01-01T12:00:00Z" } } ], "relationships": { }, "included": [ { } ] } ``` -------------------------------- ### Download MySQL Docker Compose and Env Files Source: https://docs.hashtopolis.org/installation_guidelines/basic_install Downloads the necessary Docker Compose configuration and environment file for a MySQL setup. Use this if you prefer MySQL as your database. ```bash wget https://raw.githubusercontent.com/hashtopolis/server/dev/docker-compose.mysql.yml -O docker-compose.yml wget https://raw.githubusercontent.com/hashtopolis/server/dev/env.mysql.example -O .env ``` -------------------------------- ### Build Backend Docker Image Source: https://docs.hashtopolis.org/installation_guidelines/advanced_install Builds the production-ready backend image. ```bash docker build . -t hashtopolis/backend:latest --target hashtopolis-server-prod ``` -------------------------------- ### Get Agent Stats Count Response Sample Source: https://docs.hashtopolis.org/api This is a sample JSON response for the GET /api/v2/ui/agentstats/count endpoint. It includes pagination links and agent statistics data. ```json [ { "jsonapi": { "version": "1.1", "ext": "https://jsonapi.org/profiles/ethanresnick/cursor-pagination" }, "links": { "self": "/api/v2/ui/agentstats?page[size]=25", "first": "/api/v2/ui/agentstats?page[size]=25&page[after]=0", "last": "/api/v2/ui/agentstats?page[size]=25&page[before]=500", "next": "/api/v2/ui/agentstats?page[size]=25&page[after]=25", "previous": "/api/v2/ui/agentstats?page[size]=25&page[before]=25" }, "data": [ { "id": 0, "type": "AgentStat", "attributes": { "agentId": 0, "statType": 0, "time": 0, "value": [ 0 ] } } ], "relationships": { }, "included": [ { } ] } ] ``` -------------------------------- ### Download PostgreSQL Docker Compose and Env Files Source: https://docs.hashtopolis.org/installation_guidelines/basic_install Downloads the necessary Docker Compose configuration and environment file for a PostgreSQL setup. Use this if you prefer PostgreSQL as your database. ```bash wget https://raw.githubusercontent.com/hashtopolis/server/dev/docker-compose.postgres.yml -O docker-compose.yml wget https://raw.githubusercontent.com/hashtopolis/server/dev/env.postgres.example -O .env ``` -------------------------------- ### GET Request for Hash Lists Hashes Source: https://docs.hashtopolis.org/api Use this GET request to retrieve all hashes associated with a specific hash list. Requires authorization and the hash list ID. ```http GET /api/v2/ui/hashlists/{id:[0-9]+}/{relation:hashes} ``` -------------------------------- ### Create API Token Response Sample Source: https://docs.hashtopolis.org/api Example of a successful response after creating a new API token. Returns the created token's data. ```json { "jsonapi": { "version": "1.1", "ext": "https://jsonapi.org/profiles/ethanresnick/cursor-pagination" }, "data": [ { "id": 0, "type": "JwtApiKey", "attributes": { "startValid": 0, "endValid": 0, "userId": 0, "isRevoked": true } } ] } ``` -------------------------------- ### Get Single Agent Stat Response Sample Source: https://docs.hashtopolis.org/api This is a sample JSON response for the GET /api/v2/ui/agentstats/{id:[0-9]+} endpoint, which retrieves a single agent statistic by its ID. ```json { "jsonapi": { "version": "1.1", "ext": "https://jsonapi.org/profiles/ethanresnick/cursor-pagination" }, "links": { "self": "/api/v2/ui/agentstats?page[size]=25", "first": "/api/v2/ui/agentstats?page[size]=25&page[after]=0", "last": "/api/v2/ui/agentstats?page[size]=25&page[before]=500", "next": "/api/v2/ui/agentstats?page[size]=25&page[after]=25", "previous": "/api/v2/ui/agentstats?page[size]=25&page[before]=25" }, "data": [ { "id": 0, "type": "AgentStat", "attributes": { "agentId": 0, "statType": 0, "time": 0, "value": [ 0 ] } } ], "relationships": { }, "included": [ { } ] } ``` -------------------------------- ### Define Nginx configuration for binary server Source: https://docs.hashtopolis.org/installation_guidelines/advanced_install Create an nginx.conf file to serve files from the local directory. ```nginx events { worker_connections 1024; } http { server { listen 80; listen [::]:80; server_name localhost; location / { root /var/www/html; index index.html index.htm; } } } ``` -------------------------------- ### GET /api/v2/ui/taskwrappers/{id:[0-9]+}/relationships/{relation:tasks} Source: https://docs.hashtopolis.org/openapi.json Retrieves a single object related to a task wrapper. This endpoint is used to get the resource record of an object that is part of a specified relation. ```APIDOC ## GET /api/v2/ui/taskwrappers/{id:[0-9]+}/relationships/{relation:tasks} ### Description GET request for a to-one relationship link. Returns the resource record of the object that is part of the specified relation. ### Method GET ### Endpoint /api/v2/ui/taskwrappers/{id:[0-9]+}/relationships/{relation:tasks} ### Parameters #### Path Parameters - **id** (integer) - Required - The ID of the task wrapper. ### Responses #### Success Response (200) - **TaskWrapperResponse** (object) - successful operation #### Error Response (400) - **ErrorResponse** (object) - Invalid request #### Error Response (401) - **ErrorResponse** (object) - Authentication failed #### Error Response (404) - **NotFoundResponse** (object) - Not Found ``` -------------------------------- ### GET Request for Hash List Relationship Hashes Source: https://docs.hashtopolis.org/api This GET request retrieves a single related resource record for a specified relationship, such as hashes, within a hash list. Requires authorization and the hash list ID. ```http GET /api/v2/ui/hashlists/{id:[0-9]+}/relationships/{relation:hashes} ``` -------------------------------- ### Backup Hashtopolis Database Source: https://docs.hashtopolis.org/installation_guidelines/update Use this command to create a SQL backup of your existing Hashtopolis database before migrating to Docker. ```bash mysqldump > hashtopolis-backup.sql ``` -------------------------------- ### GET /api/v2/ui/healthchecks Source: https://docs.hashtopolis.org/api Retrieves a paginated list of healthchecks. ```APIDOC ## GET /api/v2/ui/healthchecks ### Description Retrieves a paginated list of healthchecks. ### Method GET ### Endpoint /api/v2/ui/healthchecks ### Query Parameters - **page[size]** (integer) - Optional - Number of items per page - **page[after]** (integer) - Optional - Cursor for pagination - **page[before]** (integer) - Optional - Cursor for pagination ### Response #### Success Response (200) - **data** (array) - List of healthcheck objects - **links** (object) - Pagination links #### Response Example { "data": [ { "id": 0, "type": "HealthCheck", "attributes": { "time": 0, "status": 0, "checkType": 0, "hashtypeId": 0, "crackerBinaryId": 0, "expectedCracks": 0, "attackCmd": "string" } } ] } ``` -------------------------------- ### Create and Activate Python Virtual Environment Source: https://docs.hashtopolis.org/installation_guidelines/basic_install Creates a virtual environment named 'hashtopolis_env' and activates it. This isolates Python package dependencies for the agent. ```bash python3 -m venv hashtopolis_env source hashtopolis_env/bin/activate ``` -------------------------------- ### GET /api/v2/ui/hashes Source: https://docs.hashtopolis.org/api Retrieves a paginated list of hashes. ```APIDOC ## GET /api/v2/ui/hashes ### Description Retrieves a paginated list of hashes using cursor-based pagination. ### Method GET ### Endpoint /api/v2/ui/hashes ### Query Parameters - **page[size]** (integer) - Optional - Number of items per page - **page[after]** (string) - Optional - Cursor for next page - **page[before]** (string) - Optional - Cursor for previous page ### Response #### Success Response (200) - **data** (array) - List of hash objects - **links** (object) - Pagination links #### Response Example { "jsonapi": { "version": "1.1" }, "data": [ { "id": 0, "type": "Hash", "attributes": { "hashlistId": 0, "hash": "string", "isCracked": true } } ] } ``` -------------------------------- ### GET /api/v2/ui/agents/count Source: https://docs.hashtopolis.org/api Retrieves the count of agent objects. ```APIDOC ## GET /api/v2/ui/agents/count ### Description GET request to retrieve the count of agent objects. ### Method GET ### Endpoint /api/v2/ui/agents/count ### Response #### Success Response (200) successful operation #### Error Response **400** Invalid request **401** Authentication failed ``` -------------------------------- ### Create Hashtopolis Directory Source: https://docs.hashtopolis.org/installation_guidelines/tls Creates a directory for persistent Hashtopolis files and navigates into it. ```bash mkdir hashtopolis/ cd hashtopolis/ ``` -------------------------------- ### List running containers Source: https://docs.hashtopolis.org/installation_guidelines/docker Displays the status of the frontend, backend, and database containers. ```bash docker compose ps ``` -------------------------------- ### GET /api/v2/helper/getAgentBinary Source: https://docs.hashtopolis.org/openapi.json Downloads an agent binary file. ```APIDOC ## GET /api/v2/helper/getAgentBinary ### Description Endpoint to download files. ### Method GET ### Endpoint /api/v2/helper/getAgentBinary ### Parameters #### Query Parameters - **agent** (integer) - Required - The ID of the agent zip to download. ### Response #### Success Response (200) - **description** (string) - successful operation ``` -------------------------------- ### Configure Docker Compose with Host Folders Source: https://docs.hashtopolis.org/installation_guidelines/advanced_install Example docker-compose.yml configuration to map host directories to container paths instead of using Docker volumes. ```yaml version: '3.7' services: hashtopolis-backend: container_name: hashtopolis-backend image: hashtopolis/backend:latest restart: always volumes: # Where /opt/hashtopolis/ are folders on you host OS. - /opt/hashtopolis/config:/usr/local/share/hashtopolis/config:Z - /opt/hashtopolis/log:/usr/local/share/hashtopolis/log:Z - /opt/hashtopolis/import:/usr/local/share/hashtopolis/import:Z - /opt/hashtopolis/binaries:/usr/local/share/hashtopolis/binaries:Z - /opt/hashtopolis/files:/usr/local/share/hashtopolis/files:Z environment: HASHTOPOLIS_DB_USER: $MYSQL_USER HASHTOPOLIS_DB_PASS: $MYSQL_PASSWORD HASHTOPOLIS_DB_HOST: $HASHTOPOLIS_DB_HOST HASHTOPOLIS_DB_DATABASE: $MYSQL_DATABASE HASHTOPOLIS_ADMIN_USER: $HASHTOPOLIS_ADMIN_USER HASHTOPOLIS_ADMIN_PASSWORD: $HASHTOPOLIS_ADMIN_PASSWORD HASHTOPOLIS_APIV2_ENABLE: $HASHTOPOLIS_APIV2_ENABLE depends_on: - db ports: - 8080:80 db: container_name: db image: mysql:8.0 restart: always volumes: - db:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: $MYSQL_ROOT_PASS MYSQL_DATABASE: $MYSQL_DATABASE MYSQL_USER: $MYSQL_USER MYSQL_PASSWORD: $MYSQL_PASSWORD hashtopolis-frontend: container_name: hashtopolis-frontend image: hashtopolis/frontend:latest environment: HASHTOPOLIS_BACKEND_URL: $HASHTOPOLIS_BACKEND_URL restart: always depends_on: - hashtopolis-backend ports: - 4200:80 volumes: db: hashtopolis: ``` -------------------------------- ### GET /api/v2/ui/speeds Source: https://docs.hashtopolis.org/openapi.json Retrieve a list of speed information. ```APIDOC ## GET /api/v2/ui/speeds ### Description Retrieve a list of speed information. ### Method GET ### Endpoint /api/v2/ui/speeds ### Response #### Success Response (200) - **SpeedResponse[]** (array) - A list of speed objects. ``` -------------------------------- ### Create a systemd service for Hashtopolis agent Source: https://docs.hashtopolis.org/faq_tips/faq Define a systemd service file to manage the Hashtopolis agent process on Ubuntu. Ensure the paths and user are updated to match your environment. ```ini [Unit] Description=Hashtopolis Agent After=network.target StartLimitIntervalSec=0 [Service] Type=simple Restart=always RestartSec=10 User=root ExecStart=/usr/bin/python3 /root/agents/hashtopolis.zip StandardInput=tty-force WorkingDirectory=/root/agents/ [Install] WantedBy=multi-user.target ``` -------------------------------- ### GET /api/v2/ui/hashes Source: https://docs.hashtopolis.org/openapi.json Retrieves multiple hash objects. ```APIDOC ## GET /api/v2/ui/hashes ### Description GET many request to retrieve multiple objects. ### Method GET ### Endpoint /api/v2/ui/hashes ### Parameters #### Query Parameters - **page[after]** (integer) - Optional - Pointer to paginate to retrieve the data after the value provided. - **page[before]** (integer) - Optional - Pointer to paginate to retrieve the data before the value provided. - **page[size]** (integer) - Optional - Amount of data to retrieve inside a single page. - **filter** (string) - Optional - Filter criteria for the request. ### Response #### Success Response (200) - **array of HashResponse** (object) - An array of hash objects. #### Error Response - **400**: Invalid request. - **401**: Authentication failed. ``` -------------------------------- ### GET /api/v2/ui/agentbinaries Source: https://docs.hashtopolis.org/openapi.json Retrieves a list of agent binaries. ```APIDOC ## GET /api/v2/ui/agentbinaries ### Description GET request to retrieve a list of agent binaries. ### Method GET ### Endpoint /api/v2/ui/agentbinaries ### Response #### Success Response (200) - **AgentBinaryList** (array) - A list of agent binaries. #### Error Response - **ErrorResponse** (object) - Returned for invalid requests. ``` -------------------------------- ### Restart Docker Containers for a Fresh Instance Source: https://docs.hashtopolis.org/installation_guidelines/advanced_install Starts up the Docker containers defined in your docker-compose.yml file, creating a fresh and clean Hashtopolis instance. This command should be run after cleaning up existing data and volumes. ```bash docker compose up -d ```