{"id":18952431,"url":"https://github.com/devanshbatham/rayder","last_synced_at":"2025-04-07T17:10:37.679Z","repository":{"id":189730085,"uuid":"681196377","full_name":"devanshbatham/rayder","owner":"devanshbatham","description":"A lightweight tool for orchestrating and organizing your bug hunting recon / pentesting command-line workflows","archived":false,"fork":false,"pushed_at":"2023-09-08T08:01:36.000Z","size":524,"stargazers_count":285,"open_issues_count":2,"forks_count":36,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-03-31T14:14:29.704Z","etag":null,"topics":[],"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/devanshbatham.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":"2023-08-21T13:33:52.000Z","updated_at":"2025-03-18T07:49:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"3d4394e3-b69f-4478-a249-caa8ac28544a","html_url":"https://github.com/devanshbatham/rayder","commit_stats":null,"previous_names":["devanshbatham/rayder"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devanshbatham%2Frayder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devanshbatham%2Frayder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devanshbatham%2Frayder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devanshbatham%2Frayder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devanshbatham","download_url":"https://codeload.github.com/devanshbatham/rayder/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247694876,"owners_count":20980733,"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":[],"created_at":"2024-11-08T13:33:24.420Z","updated_at":"2025-04-07T17:10:37.652Z","avatar_url":"https://github.com/devanshbatham.png","language":"Go","funding_links":[],"categories":["Building","红队\u0026渗透测试"],"sub_categories":["Workflows"],"readme":"\u003ch1 align=\"center\"\u003e\n  Rayder\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eA lightweight tool for orchestrating and organizing your command-line workflows\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#about\"\u003eAbout\u003c/a\u003e •\n  \u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e •\n  \u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e •\n  \u003ca href=\"#workflow-configuration\"\u003eWorkflow Configuration\u003c/a\u003e •\n  \u003ca href=\"#parallel-execution\"\u003eParallel Execution\u003c/a\u003e •\n  \u003ca href=\"#workflows\"\u003eWorkflows\u003c/a\u003e\n\u003c/p\u003e\n\n![rayder](https://github.com/devanshbatham/rayder/blob/main/static/banner.png?raw=true)\n\n\n## About\n\nRayder is a command-line tool designed to simplify the orchestration and execution of workflows. It allows you to define a series of modules in a YAML file, each consisting of commands to be executed. Rayder helps you automate complex processes, making it easy to streamline repetitive modules and execute them parallelly if the commands do not depend on each other.\n\n## Installation\n\nTo install Rayder, ensure you have Go (1.16 or higher) installed on your system. Then, run the following command:\n\n```sh\ngo install github.com/devanshbatham/rayder@v0.0.4\n```\n\n## Usage\n\nRayder offers a straightforward way to execute workflows defined in YAML files. Use the following command:\n\n```sh\nrayder -w path/to/workflow.yaml\n```\n\n## Workflow Configuration\n\nA workflow is defined in a YAML file with the following structure:\n\n```yaml\nvars:\n  VAR_NAME: value\n  # Add more variables...\n\nparallel: true|false\nmodules:\n  - name: task-name\n    cmds:\n      - command-1\n      - command-2\n      # Add more commands...\n    silent: true|false\n  # Add more modules...\n```\n\n## Using Variables in Workflows\n\nRayder allows you to use variables in your workflow configuration, making it easy to parameterize your commands and achieve more flexibility. You can define variables in the `vars` section of your workflow YAML file. These variables can then be referenced within your command strings using double curly braces (`{{}}`).\n\n### Defining Variables\n\nTo define variables, add them to the `vars` section of your workflow YAML file:\n\n```yaml\nvars:\n  VAR_NAME: value\n  ANOTHER_VAR: another_value\n  # Add more variables...\n```\n\n### Referencing Variables in Commands\n\nYou can reference variables within your command strings using double curly braces (`{{}}`). For example, if you defined a variable `OUTPUT_DIR`, you can use it like this:\n\n```yaml\nmodules:\n  - name: example-task\n    cmds:\n      - echo \"Output directory {{OUTPUT_DIR}}\"\n```\n\n### Supplying Variables via the Command Line\n\nYou can also supply values for variables via the command line when executing your workflow. Use the format `VARIABLE_NAME=value` to provide values for specific variables. For example:\n\n```sh\nrayder -w path/to/workflow.yaml VAR_NAME=new_value ANOTHER_VAR=updated_value\n```\n\nIf you don't provide values for variables via the command line, Rayder will automatically apply default values defined in the `vars` section of your workflow YAML file.\n\nRemember that variables supplied via the command line will override the default values defined in the YAML configuration.\n\n## Example\n\n### Example 1: \n\nHere's an example of how you can define, reference, and supply variables in your workflow configuration:\n\n```yaml\nvars:\n  ORG: \"example.org\"\n  OUTPUT_DIR: \"results\"\n\nmodules:\n  - name: example-task\n    cmds:\n      - echo \"Organization {{ORG}}\"\n      - echo \"Output directory {{OUTPUT_DIR}}\"\n```\n\nWhen executing the workflow, you can provide values for `ORG` and `OUTPUT_DIR` via the command line like this:\n\n```sh\nrayder -w path/to/workflow.yaml ORG=custom_org OUTPUT_DIR=custom_results_dir\n```\n\nThis will override the default values and use the provided values for these variables.\n\n\n\n\n### Example 2: \n\nHere's an example workflow configuration tailored for reverse whois recon and processing the root domains into subdomains, resolving them and checking which ones are alive:\n\n```yaml\nvars:\n  ORG: \"Acme, Inc\"\n  OUTPUT_DIR: \"results-dir\"\n\nparallel: false\nmodules:\n  - name: reverse-whois\n    silent: false\n    cmds:\n      - mkdir -p {{OUTPUT_DIR}}\n      - revwhoix -k \"{{ORG}}\" \u003e {{OUTPUT_DIR}}/root-domains.txt\n\n  - name: finding-subdomains\n    cmds:\n      - xargs -I {} -a {{OUTPUT_DIR}}/root-domains.txt echo \"subfinder -d {} -o {}.out\" | quaithe -workers 30 \n    silent: false\n\n  - name: cleaning-subdomains\n    cmds:\n      -  cat *.out \u003e {{OUTPUT_DIR}}/root-subdomains.txt\n      -  rm *.out\n    silent: true\n\n  - name: resolving-subdomains\n    cmds:\n      - cat {{OUTPUT_DIR}}/root-subdomains.txt | dnsx -silent -threads 100 -o {{OUTPUT_DIR}}/resolved-subdomains.txt\n    silent: false\n\n  - name: checking-alive-subdomains\n    cmds:\n      - cat {{OUTPUT_DIR}}/resolved-subdomains.txt | httpx -silent -threads 1000 -o {{OUTPUT_DIR}}/alive-subdomains.txt\n    silent: false\n```\n\n\nTo execute the above workflow, run the following command:\n\n```sh\nrayder -w path/to/reverse-whois.yaml ORG=\"Yelp, Inc\" OUTPUT_DIR=results\n```\n\n## Parallel Execution\n\nThe `parallel` field in the workflow configuration determines whether modules should be executed in parallel or sequentially. Setting `parallel` to `true` allows modules to run concurrently, making it suitable for modules with no dependencies. When set to `false`, modules will execute one after another.\n\n## Workflows\n\nExplore a collection of sample workflows and examples in the [Rayder workflows repository](https://github.com/devanshbatham/rayder-workflows). Stay tuned for more additions!\n\n## Inspiration\nInspiration of this project comes from Awesome [taskfile](https://taskfile.dev/) project. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevanshbatham%2Frayder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevanshbatham%2Frayder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevanshbatham%2Frayder/lists"}