{"id":21988531,"url":"https://github.com/lubyruffy/gop","last_synced_at":"2025-07-18T16:03:15.198Z","repository":{"id":78834693,"uuid":"369939358","full_name":"LubyRuffy/gop","owner":"LubyRuffy","description":null,"archived":false,"fork":false,"pushed_at":"2021-03-30T11:07:59.000Z","size":10008,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-06-13T17:10:03.749Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":false,"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/LubyRuffy.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":"2021-05-23T01:42:56.000Z","updated_at":"2021-09-29T08:07:01.000Z","dependencies_parsed_at":"2024-03-09T03:00:45.584Z","dependency_job_id":null,"html_url":"https://github.com/LubyRuffy/gop","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/LubyRuffy/gop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LubyRuffy%2Fgop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LubyRuffy%2Fgop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LubyRuffy%2Fgop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LubyRuffy%2Fgop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LubyRuffy","download_url":"https://codeload.github.com/LubyRuffy/gop/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LubyRuffy%2Fgop/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265791407,"owners_count":23829160,"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-29T19:18:54.104Z","updated_at":"2025-07-18T16:03:15.179Z","avatar_url":"https://github.com/LubyRuffy.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# GOP - GOPentest\n![Go](https://github.com/HopHouse/gop/workflows/Go/badge.svg)\n\n## Requirements \n - `Google Chrome` is needed by the screenshot and crawler commands.\n\n## Installation\n```powershell\ngo get github.com/hophouse/gop\n```\n\n## Documentation\n[https://pkg.go.dev/github.com/hophouse/gop](https://pkg.go.dev/github.com/hophouse/gop)\n\n## Commands\n```\nGOP provides a toolbox to do pentest tasks.\n\nUsage:\n  gop [command]\n\nAvailable Commands:\n  crawler        Crawler command to crawl recursively or not a domain or a website.\n  help           Help about any command\n  host           Resolve hostname to get the IP address.\n  osint          OSINT module.\n  proxy          Set up a proxy to use\n  scan           Scan commands to scan any kind of assets.\n  schedule       Schedule a command to be executed at a precise time. If an option is not defined, the value of the current date will be taken.\n  screenshot     Take screenshots of the supplied URLs. The program will take the stdin if no input file is passed as argument.\n  search         Search for files on disk that matches a specific patterne. Regex or partial filename can be passed to the script.\n  serve          Serve a specific directory through an HTTP server.\n  shell          Set up a shell either reverse or bind.\n  static-crawler The static crawler command will visit the supplied Website found link, script and style sheet inside it.\n  visit          Visit supplied URLs.\n\nFlags:\n  -h, --help                      help for gop\n      --logfile string            Set a custom log file. (default \"logs.txt\")\n      --output-directory string   Use the following directory to output results.\n\nUse \"gop [command] --help\" for more information about a command.\n```\n\n### Crawler\n```\nCrawler command to crawl recursively or not a domain or a website.\n\nUsage:\n  gop crawler [flags]\n\nFlags:\n  -t, --concurrency int   Thread used to take screenshot. (default 10)\n      --delay int         Use this delay in seconds between each requests.      \n  -h, --help              help for crawler\n  -p, --proxy string      Use the specified proxy.\n  -r, --recursive         Crawl the website recursively.\n  -s, --screenshot        Take a screenshot of each internal resource found.    \n  -u, --url string        URL to test.\n\nGlobal Flags:\n      --logfile string            Set a custom log file. (default \"logs.txt\")   \n      --output-directory string   Use the following directory to output results.\n```\n\n### Host\n```\nCrawler command to crawl recursively or not a domain or a website.\n\nUsage:\n  gop crawler [flags]\n\nFlags:\n  -t, --concurrency int   Thread used to take screenshot. (default 10)\n      --delay int         Use this delay in seconds between each requests.      \n  -h, --help              help for crawler\n  -p, --proxy string      Use the specified proxy.\n  -r, --recursive         Crawl the website recursively.\n  -s, --screenshot        Take a screenshot of each internal resource found.    \n  -u, --url string        URL to test.\n\nGlobal Flags:\n      --logfile string            Set a custom log file. (default \"logs.txt\")   \n      --output-directory string   Use the following directory to output results.\n```\n\n### Osint\n```\nOSINT module.\n\nUsage:\n  gop osint [command]\n\nAvailable Commands:\n  emailgen    Generate email based on input data. It will create all the possible variations based on the allowed delimiters.\n\nFlags:\n  -h, --help   help for osint\n\nGlobal Flags:\n      --logfile string            Set a custom log file. (default \"logs.txt\")\n      --output-directory string   Use the following directory to output results.\n\nUse \"gop osint [command] --help\" for more information about a command.\n```\n\n#### emailgen\n```\nGenerate email based on input data. It will create all the possible variations based on the allowed delimiters.\n\nUsage:\n  gop osint emailgen [flags]\n\nFlags:\n      --delimiters strings   Delimiters to construct the mail address. (default [.,-,_,#,$,%,\u0026,*,+,/,=,!,?,^,',`,{,|,},~])\n  -d, --domain string        Domain used into the email address.\n  -f, --firstname string     First name.\n  -h, --help                 help for emailgen\n  -s, --surname string       Surname.\n\nGlobal Flags:\n      --logfile string            Set a custom log file. (default \"logs.txt\")\n      --output-directory string   Use the following directory to output results.\n```\n\n### Proxy\n```\nSet up a proxy to use\n\nUsage:\n  gop proxy [flags]\n\nFlags:\n  -H, --Host string   Define the proxy host. (default \"127.0.0.1\")\n  -P, --Port string   Define the proxy port. (default \"8080\")\n  -h, --help          help for proxy\n  -i, --intercept     Intercept traffic.\n  -v, --verbose       Display more information about packets.\n\nGlobal Flags:\n      --logfile string            Set a custom log file. (default \"logs.txt\")   \n      --output-directory string   Use the following directory to output results.\n```\n\nIf the proxy option is set, please use set the following option \"Suppress Burp error messages in browser\". If it is not done, all the response will have the status code `200 OK`. The option can be enabled in `Proxy -\u003e Options -\u003e Miscellaneous`.\n\n#### CertificateAutority - CA\nGenerate a private key.\n```powershell\nopenssl genrsa -out ca.key 4096\n```\n\nGenerate the CA.\n```powershell\nopenssl req -new -x509 -sha256 -key ca.key -out ca.crt -days 3650\n```\n\n### Scan\n```\nScan commands to scan any kind of assets.\n\nUsage:\n  gop scan [command]\n\nAvailable Commands:\n  file        Search for files on disk that matches a specific patterne. Regex or partial filename can be passed to the script.\n  network     Port scan the network. Only valid IP address must be passed as input.\n\nFlags:\n  -h, --help   help for scan\n\nGlobal Flags:\n      --logfile string            Set a custom log file. (default \"logs.txt\")\n      --output-directory string   Use the following directory to output results.\n\nUse \"gop scan [command] --help\" for more information about a command.\n```     \n\n### File\n```\nSearch for files on disk that matches a specific patterne. Regex or partial filename can be passed to the script.\n\nUsage:\n  gop scan file [flags]\n\nFlags:\n      --blacklist-extensions strings   Extension that will be blacklisted. (default [exe,ttf,dll,svg,go,py,html,css,js,yar,json,md,tex])\n      --blacklist-location strings     Locations were the script will not look. (default [C:\\Windows])\n  -h, --help                           help for file\n      --only-files                     Only display found items that are files.\n  -p, --path strings                   Locations were to look the script have to look.\n  -s, --search strings                 Specify a file will all the pattern that need to be checked. (default [(?i)identifiants,(?i)password,(?i)mot de passe,(?i)motdepasse,(?i)compte(s)?,kdb(x)?,(?i)secret,key[0-9].db$,(?i)backup,.ntds$,SYSTEM$,SAM$])\n      --whitelist-extensions strings   Extension that will be whithelisted. If specified the black list option is taken in consideration by the program. Exemple : msg, \nsqulite, zip, backup\n\nGlobal Flags:\n      --logfile string            Set a custom log file. (default \"logs.txt\")\n      --output-directory string   Use the following directory to output results.\n```\n\n#### Network\n```\nPort scan the network. Only valid IP address must be passed as input.\n\nUsage:\n  gop scan network [flags]\n\nFlags:\n  -t, --concurrency int     Number of threads used to take to scan. (default 5000)\n  -h, --help                help for network\n  -i, --input-file string   Input file with the IP addresses to scan. If no file is passed, then the stdin will be taken.\n      --open                Display only open ports.\n  -o, --output string       Display result format as :\n                                - text\n                                - grep\n                                - short\n                            Option text will display a human-readable outpit.\n                            Option grep will displays the following format for each host :\n                                ip,protcol,port,status.\n                            Option short will activate the flag --open and will display value for each open port as :    \n                                ip:port (default \"text\")\n  -p, --port string         Ports to scan. Can be either :\n                                - X,Y,Z\n                                - X-Y\n                                - X-Y,Z\n                            Family of ports can also be passed :\n                                - http\n                                - ssh\n                                - mail\n                                - ...   \n                            Options can be combined, example :\n                                - 22,http,445,8080-8088\n      --tcp                 Scan with the TCP protocol.\n      --udp                 [WIP] Scan with the UDP protocol.\n\nGlobal Flags:\n      --logfile string            Set a custom log file. (default \"logs.txt\")\n      --output-directory string   Use the following directory to output results..\n```\n\n### Schedule      \n```\nSchedule a command to be executed at a precise time. If an option is not defined, the value of the current date will be taken.\n\nUsage:\n  gop schedule [flags]\n\nFlags:\n  -c, --command string     Command to execute.\n      --day int            Days of the month. (default -1)\n  -h, --help               help for schedule\n      --hour int           Hour of the day. (default -1)\n  -m, --minute int         Minute of the hour. (default -1)\n      --month int          Month of the year. (default -1)\n      --plus-days int      Add this number of days from the execution to execute the command.\n      --plus-hours int     Add this number of hours from the execution to execute the command.\n      --plus-minutes int   Add this number of minutes from the execution to execute the command.\n      --plus-seconds int   Add this number of seconds from the execution to execute the command.\n  -s, --second int         Second of the minute. (default -1)\n      --year int           Year were the command will be launched. (default -1)\n\nGlobal Flags:\n      --logfile string            Set a custom log file. (default \"logs.txt\")\n      --output-directory string   Use the following directory to output results.\n```          \n\n## Screenshot    \nThe screenshot command is using `chromecdp` to take screenshot. \n\n```\nTake screenshots of the supplied URLs. The program will take the stdin if no input file is passed as argument.\n\nUsage:\n  gop screenshot [flags]\n\nFlags:\n  -t, --concurrency int     Thread used to take screenshot. (default 5)\n      --delay int           Use this delay in seconds between requests. (default 1)\n  -h, --help                help for screenshot\n  -i, --input-file string   Use the specified cookie.\n  -p, --proxy string        Use this proxy to visit the pages.\n\nGlobal Flags:\n      --logfile string            Set a custom log file. (default \"logs.txt\")      \n      --output-directory string   Use the following directory to output results. \n```          \n\n## Serve\nThis command will serve file through a HTTP Web server. A few authentication methods can be added with the option `--auth`. The HTTP `Basic` and `NTLM` authentication are included.\n```\nServe a specific directory through an HTTP server.\n\nUsage:\n  gop serve [flags]\n\nFlags:\n  -H, --Host string        Define the proxy host. (default \"127.0.0.1\")\n  -P, --Port string        Define the proxy port. (default \"8000\")\n  -a, --auth string        Add an authentication option to the server. Could be either \"Basic\" or \"NTLM\".\n  -d, --directory string   Directory to serve. (default \".\")\n  -h, --help               help for serve\n      --realm string       Realm used for the \"Basic\" authentication.\n\nGlobal Flags:\n      --logfile string            Set a custom log file. (default \"logs.txt\")\n      --output-directory string   Use the following directory to output results.\n```\n\n## Shell         \n```\nSet up a shell either reverse or bind.\n\nUsage:\n  gop shell [flags]\n\nFlags:\n  -H, --Host string   Define the proxy host. (default \"127.0.0.1\")\n  -m, --Mode string   Define the mode where the shell is runned : blind or reverse. (default \"reverse\")\n  -P, --Port string   Define the proxy port. (default \"8000\")\n  -h, --help          help for shell\n\nGlobal Flags:\n      --logfile string            Set a custom log file. (default \"logs.txt\")\n      --output-directory string   Use the following directory to output results.\n```          \n\n## Static-crawler\n```\nThe static crawler command will visit the supplied Website found link, script and style sheet inside it.\n\nUsage:\n  gop static-crawler [flags]\n\nFlags:\n  -t, --concurrency int   Thread used to take screenshot. (default 10)\n  -c, --cookie string     Use the specified cookie.\n      --delay int         Use this delay in seconds between each requests.      \n  -h, --help              help for static-crawler\n  -p, --proxy string      Use the specified proxy.\n  -r, --recursive         Crawl the website recursively.\n      --report            Generate a report.\n  -s, --screenshot        Take a screenshot on each visited link.\n  -u, --url string        URL to test.\n\nGlobal Flags:\n      --logfile string            Set a custom log file. (default \"logs.txt\")   \n      --output-directory string   Use the following directory to output results.\n```          \n\n## Visit\nThe list of URL that needs to be visited can be passed to stdin if the option `--stdin` is set or `-i/--input-file`.\n```\nVisit supplied URLs.\n\nUsage:\n  gop visit [flags]\n\nFlags:\n      --burp                Set the proxy directly to the default address and port of burp.\n  -h, --help                help for visit\n  -i, --input-file string   Use the specified cookie.\n  -p, --proxy string        Use this proxy to visit the pages.\n\nGlobal Flags:\n      --logfile string            Set a custom log file. (default \"logs.txt\")\n      --output-directory string   Use the following directory to output results.\n```          \n\n## CI/CD\n.gitlab-co.yml file.\n```\nimage: golang:1.10\n\nstages:\n  - build\n\nbefore_script:\n  - go get -u github.com/golang/dep/cmd/dep\n  - mkdir -p $GOPATH/src/github.com/hophouse/gop\n  - cd $GOPATH/src/github.com/hophouse/gop\n  - ln -s $CI_PROJECT_DIR\n  - cd $CI_PROJECT_NAME\n  - dep ensure\n  - GOOS=windows GOARCH=amd64 go install\n  - GOOS=linux GOARCH=amd64 go install\n\nafter_script:\n  - mv workdir release\n\nbuild:\n  stage: build\n  artifacts:\n    paths:\n      - release\n    name: artifact:build\n    when: on_success\n    expire_in: 1 week\n  script:\n    - make\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flubyruffy%2Fgop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flubyruffy%2Fgop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flubyruffy%2Fgop/lists"}