{"id":17208435,"url":"https://github.com/elongl/viper","last_synced_at":"2025-07-16T18:40:29.263Z","repository":{"id":36960369,"uuid":"500068823","full_name":"elongl/viper","owner":"elongl","description":"Remote control agent and controller.","archived":false,"fork":false,"pushed_at":"2023-11-10T08:17:09.000Z","size":154,"stargazers_count":13,"open_issues_count":2,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-27T12:52:27.392Z","etag":null,"topics":["agent","controller","rat","security"],"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/elongl.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":"2022-06-05T10:44:14.000Z","updated_at":"2023-11-20T23:55:06.000Z","dependencies_parsed_at":"2024-06-19T06:18:45.648Z","dependency_job_id":"8c91fcf1-9757-41f4-b7be-8ff8b7073320","html_url":"https://github.com/elongl/viper","commit_stats":{"total_commits":97,"total_committers":1,"mean_commits":97.0,"dds":0.0,"last_synced_commit":"35fedaeda529c9d416a14971fc0bf4fa4d527da8"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elongl%2Fviper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elongl%2Fviper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elongl%2Fviper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elongl%2Fviper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elongl","download_url":"https://codeload.github.com/elongl/viper/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248790871,"owners_count":21162103,"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":["agent","controller","rat","security"],"created_at":"2024-10-15T02:48:34.374Z","updated_at":"2025-04-13T22:33:46.645Z","avatar_url":"https://github.com/elongl.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Viper\n\nRemote control software using gRPC and Go.\n\n## Components\n\n- **Agent**: Runs on the endpoint.\n- **Controller**: The server that the _agents_ connect to.\n- **Agent Manager**: The server that runs alongside the _controller_ to manage the _agents_.\n- **Controller Client**: Talks to the _agent manager_.\n\n## Features\n\n- **Cross-platform Support**: Runs on all modern operating systems (Windows, Linux, macOS, etc).\n- **Authentication \u0026 Encryption**: Connections are encrypted and verified using client certificates.\n- **Persistence**: Keeps connection to the controller even if rebooted or disconnected momentarily.\n- **Shell**: Execute shell commands.\n- **File I/O**: Download and upload files.\n- **Screenshots**: Capture screenshots.\n- **Network Proxy**: Connect into the agent's network using [SOCKS](https://en.wikipedia.org/wiki/SOCKS).\n\n## Build\n\n1. Update the `config.json` according to your needs.\n2. Run `make` to build the executables in `bin`.\n\n## Usage\n\n1. Run `controller` to accept agent connections.\n2. Run the controller client to manage the agents: `ipython -i controller-client/main.py`.\n\n```py\ncnc.get_agents()\n\u003e [\n    id: 0\n    alive: true\n    connect_time: \"2022-06-19 15:22:13.17828 +0300 IDT m=+61.594837928\"\n]\n\nagent = cnc.get_agent(agent_id=0)\nagent.shell('whoami')\n\u003e 'root'\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felongl%2Fviper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felongl%2Fviper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felongl%2Fviper/lists"}