{"id":13762816,"url":"https://github.com/BountyStrike/Emissary","last_synced_at":"2025-05-10T15:31:58.453Z","repository":{"id":39612858,"uuid":"231693140","full_name":"BountyStrike/Emissary","owner":"BountyStrike","description":"Send notifications on different channels such as Slack, Telegram, Discord etc.","archived":false,"fork":false,"pushed_at":"2023-04-25T11:47:24.000Z","size":307,"stargazers_count":39,"open_issues_count":1,"forks_count":10,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-08-03T14:06:34.714Z","etag":null,"topics":["bugbounty","golang","notification"],"latest_commit_sha":null,"homepage":"","language":"Go","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/BountyStrike.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}},"created_at":"2020-01-04T01:42:40.000Z","updated_at":"2024-06-12T22:40:59.000Z","dependencies_parsed_at":"2024-01-15T03:59:41.528Z","dependency_job_id":"27fcc296-12a4-4fbc-9b59-b6f30cf2af91","html_url":"https://github.com/BountyStrike/Emissary","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BountyStrike%2FEmissary","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BountyStrike%2FEmissary/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BountyStrike%2FEmissary/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BountyStrike%2FEmissary/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BountyStrike","download_url":"https://codeload.github.com/BountyStrike/Emissary/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224974208,"owners_count":17401100,"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":["bugbounty","golang","notification"],"created_at":"2024-08-03T14:00:58.215Z","updated_at":"2024-11-16T21:30:45.224Z","avatar_url":"https://github.com/BountyStrike.png","language":"Go","funding_links":[],"categories":["Weapons"],"sub_categories":["Tools"],"readme":"\u003ch1 align=\"center\"\u003eEmissary\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"300\" height=\"300\" src=\"./img.png\"\u003e\n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"https://goreportcard.com/badge/github.com/BountyStrike/Emissary\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/BountyStrike/Emissary\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://img.shields.io/github/actions/workflow/status/BountyStrike/Emissary/go.yml?branch=master\"\u003e\u003cimg alt=\"GitHub Workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/BountyStrike/Emissary/go.yml?branch=master\"\u003e\u003c/a\u003e\u003cbr /\u003e\n  Send notifications via different channels such as Slack, Telegram or Teams in your bug bounty flow. \n  \u003c/p\u003e\n\u003c/p\u003e\n\n## Motivation\nThe idea is to hook Emissary into https://github.com/BountyStrike/Bountystrike-sh which will notify me on Telegram when new domains have been found.\n\n## Usage\n\n```\n$ emissary\nSend data through chat channels. Made by @dubs3c.\n\nUsage:\n  emissary [options] [message]\n\nOptions:\n  -ch,  --channel      Specify a custom channel you have defined emissary.ini\n  -in,  --inline       Specify channel directly in the commandline\n  -m,   --message      Message to send\n  -h,   --header       Custom header\n  -si,  --stdin        Get message from stdin\n  -e,   --email        Send via Email\n  -txt, --text         Specify the field that contains the message. Default is 'message'\n  -d,   --data         Specify additional data in json format that should be sent\n  -r,   --rows         Max rows/lines to send, 0 for unlimited. Default 20\n  -v,   --version      Show version\n\nExamples:\n  emissary --channel Telegram --message \"Hello telegram\"\n  cat domins.txt | emissary -ch Slack --stdin --header \"New subdomains from Google!\"\n  emissary -ch Discord -ch Telegram -m \"Your message\"\n  emissary -in \"webhook:=https://api.telegram.org/botxxxxx/sendMessage§data:={'chat_id': 'xxxx'}\" -in \"webhook:=https://hooks.slack.com/services/xxxxx\" -m \"Hack the planet!\"\n```\n\n### Create ~/.config/emissary.ini with the following:\n```\n[Telegram]\nwebhook=https://api.telegram.org/botxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxx/sendMessage\ntextField=text\ndata={\"chat_id\": \"xxxxxx\"}\n\n[Slack]\nwebhook=https://hooks.slack.com/services/xxxxxxxxxx/xxxxxxxxxx/xxxxxxxxxx\n\n[Teams]\nwebhook=https://outlook.office.com/webhook/xxxxxxxxxxxxxxxxxxxxx\n\n[Email]\nusername=\npassword=\nrecipient=\nserver=smtp.gmail.com\nport=587\nsubject=\"New domains found!\"\n```\n*When using gmail, you need to activate less secure apps on your account: [https://myaccount.google.com/lesssecureapps](https://myaccount.google.com/lesssecureapps)*\n\nNow you can start using emissary :)\n\n\n### Custom Webhooks\n\nIt's possible to add your own channels as well, adding Discord as a custom channel looks like this:\n\n```\n[Discord]\nwebhook=https://discord.com/api/webhooks/xxxxxxxxxxxxxxxxxxxxxxxxxx\ntextField=content\n```\n\nAnd can be executed with `emissary --channel Discord -m \"It works!!!\"`.\n\nThe following fields can be used for a given channel:\n\n| field     | description                                                                                                                                                |\n| --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| webhook   | The actual webhook to send data to                                                                                                                         |\n| textField | Some API's have a specific json key where the message goes, here you can define that. Default key is `text`, e.g. `{\"text\": \"Your message\"}`.              |\n| data      | If you want to send additional data, you can specify that here as a json formatted string, e.g. `data={\"someKey\": \"someValue\", \"otherKey\": \"otherValue\"}`. |\n\n\n### Pipe data via stdin:\n```\n$ cat domains.txt | emissary -ch telegram --stdin\n```\n\n### Specify a message as an argument:\n```\n$ emissary -ch telegram --message \"This is a very cool message\"\n```\n\n### Send to multiple channels:\n```\n$ cat domains.txt | emissary -ch telegram -ch slack -si\n```\n\n### Send only 10 lines:\n```\n$ cat domains.txt | emissary -ch telegram -si --rows 10\n```\n\n### Send everything from the file:\n```\n$ cat domains.txt | emissary -ch telegram -si -r 0\n```\n\nEmissary will only send 20 rows by default, this is to protect against accidentally sending a gazillion domains :) It can be overwritten with `--rows 0` which means unlimited rows. \n\n### Multiple inline webhooks\n\nIt's possible use multiple webhooks directly on the command line without specifying them in `config.ini`.\n\nThe following command will send `Hack the planet` to Telegram and Slack:\n\n```\nemissary -in \"webhook:=https://api.telegram.org/botxxxxx/sendMessage§data:={'chat_id': 'xxxx'}\" -in \"webhook:=https://hooks.slack.com/services/xxxxx\" -m \"Hack the planet!\"\n```\n\nThe same fields in `config.ini` are used inline as well. They can be used like so:\n\n- `webhook:=\u003curl\u003e`\n- `textField:=\u003ckey\u003e`\n- `data:=\u003cadditional json\u003e`\n\nThe character `§` is used as a delimiter between each field.\n\n## Contributing\nAny feedback or ideas are welcome! Want to improve something? Create a pull request!\n\n1. Fork it!\n2. Create your feature branch: `git checkout -b my-new-feature`\n3. Commit your changes: `git commit -am 'Add some feature'`\n4. Push to the branch: `git push origin my-new-feature`\n5. Submit a pull request :D\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBountyStrike%2FEmissary","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FBountyStrike%2FEmissary","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBountyStrike%2FEmissary/lists"}