{"id":17680480,"url":"https://github.com/hahwul/hack-pet","last_synced_at":"2026-01-27T05:31:41.328Z","repository":{"id":57533750,"uuid":"277989526","full_name":"hahwul/hack-pet","owner":"hahwul","description":"🐰 Managing command snippets for hackers/bug bounty hunters. with pet.","archived":false,"fork":false,"pushed_at":"2023-05-06T07:37:47.000Z","size":66,"stargazers_count":105,"open_issues_count":0,"forks_count":18,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-05-24T20:41:32.510Z","etag":null,"topics":["bugbounty","bugbountytips","command-line-manager","go","golang","hacking","pet","snippets","tool"],"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/hahwul.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"custom":["https://paypal.me/hahwul","https://www.buymeacoffee.com/hahwul"]}},"created_at":"2020-07-08T04:30:06.000Z","updated_at":"2025-04-01T06:03:55.000Z","dependencies_parsed_at":"2024-06-20T05:53:53.340Z","dependency_job_id":"bc182199-31ca-4385-9822-80e6809edec7","html_url":"https://github.com/hahwul/hack-pet","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hahwul/hack-pet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hahwul%2Fhack-pet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hahwul%2Fhack-pet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hahwul%2Fhack-pet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hahwul%2Fhack-pet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hahwul","download_url":"https://codeload.github.com/hahwul/hack-pet/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hahwul%2Fhack-pet/sbom","scorecard":{"id":452826,"data":{"date":"2025-08-11","repo":{"name":"github.com/hahwul/hack-pet","commit":"0a913324faa0e1240445aad17164bcee9b8b24da"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.6,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/go.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":2,"reason":"dependency not pinned by hash detected -- score normalized to 2","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/hahwul/hack-pet/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/hahwul/hack-pet/go.yml/master?enable=pin","Warn: downloadThenRun not pinned by hash: .github/workflows/go.yml:31","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   1 out of   1 goCommand dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}}]},"last_synced_at":"2025-08-19T08:38:56.962Z","repository_id":57533750,"created_at":"2025-08-19T08:38:56.963Z","updated_at":"2025-08-19T08:38:56.963Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28803889,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-27T03:44:14.111Z","status":"ssl_error","status_checked_at":"2026-01-27T03:43:33.507Z","response_time":168,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","bugbountytips","command-line-manager","go","golang","hacking","pet","snippets","tool"],"created_at":"2024-10-24T09:07:57.945Z","updated_at":"2026-01-27T05:31:41.303Z","avatar_url":"https://github.com/hahwul.png","language":"Go","funding_links":["https://paypal.me/hahwul","https://www.buymeacoffee.com/hahwul"],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003cbr\u003e\n  \u003ca href=\"\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/13212227/87844645-fd483080-c8f9-11ea-949b-006305de5ac4.png\"\u003e\u003c/a\u003e\n  \u003cbr\u003e\n  \u003cimg src=\"https://img.shields.io/github/languages/top/hahwul/hack-pet?style=flat-square\"\u003e \u003cimg src=\"https://api.codacy.com/project/badge/Grade/c3f297eba09342e8b9156c2bc8cbbfbb\"\u003e \u003ca href=\"https://goreportcard.com/report/github.com/hahwul/hack-pet\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/hahwul/hack-pet\"\u003e\u003c/a\u003e \u003cimg src=\"https://img.shields.io/github/issues-closed/hahwul/hack-pet?style=flat-square\"\u003e \n\u003ca href=\"https://twitter.com/intent/follow?screen_name=hahwul\"\u003e\u003cimg src=\"https://img.shields.io/twitter/follow/hahwul?style=flat-square\"\u003e\u003c/a\u003e\n\u003c/h1\u003e\n\n## hack-pet\nhack-pet is collection of command snippets that are useful to hackers/bug bounty hunters. It is similar to the [recon_profile](https://github.com/nahamsec/recon_profile), but it uses the [pet](https://github.com/knqyf263/pet). pet can manage the command set more progressively.\n\n### What is pet\nSimple command-line snippet manager, written in Go =\u003e [pet](https://github.com/knqyf263/pet)\n\n### How to use hack-pet\nAdd the snippet you like from the list below to the snippet toml file(`~/.config/pet/snippet.toml` or `$ pet edit`) in pet. To add all items, you can also paste `hackpet.toml`.\n\n1) Copy \u0026 Paste hackpet.toml file to pet snippet file\n```text\n$ cat ./hackpet.toml \u003e\u003e ~/.config/pet/snippet.toml\n```\n\n2) Running pet\n```text\n$ pet exec\n\nor \n\n$ pet search\n```\n\n3) You can find hackpet's snippets. The snippet of the hackpet has the tag `#hackpet`. If you have a lot of snippets in use, you can find them quickly by searching for tags.\n\n\n## Screenshot\n\u003cimg src=\"https://user-images.githubusercontent.com/13212227/87844969-7a28d980-c8fd-11ea-9c08-c96230937b19.png\" width=\"100%\"\u003e\n\n## Tree\n```text\n.\n├── hackpet.toml =\u003e all snippets\n├── snippets     =\u003e collection of snippets\n```\n\n## Snippets\n\n| Description | Command |\n| ----------- | ------- |\n| Find All Allocated IP ranges for ASN given an IP address | `whois -h whois.radb.net -i origin -T route $(whois -h whois.radb.net \u003cOrganization\u003e \\| grep origin: \\| awk '{print $NF}' \\| head -1) \\| grep -w \"route:\" \\| awk '{print $NF}' \\| sort -n` |\n| Android set proxy | `adb shell settings put global http_proxy \u003cip address\u003e:\u003cparam\u003e` |\n| Android unset proxy | `adb shell settings put global http_proxy :0` |\n| Brute forcing for endpoints with dirsearch | `dirsearch -e php,asp,aspx,jsp,py,txt,conf,config,bak,backup,swp,old,db,sql -u \u003cURL\u003e` |\n| certprobe / runs httprobe on all the hosts from certspotter | `curl -s https://crt.sh/\\?q\\=\\%.\u003cdomain\u003e\\\u0026output\\=json \\| jq -r '.[].name_value' \\| sed 's/\\*\\.//g' \\| sort -u \\| httprobe \\| tee -a ./all.txt` |\n| Extract subdomains from IP Range | `nmap \u003cip range\u003e -sn \\| grep \"\u003cgreping domain\u003e\" \\| awk '{print $5}'` |\n| Find subdomain and takeover (with subfinder/amass/assetfinder/subjack) | `subfinder -d \u003cdomain\u003e \u003e\u003e domains ; assetfinder -subs-only \u003cdomain\u003e \u003e\u003e domains ; amass enum -norecursive -noalts -d \u003cdomain\u003e \u003e\u003e domains ; subjack -w domains -t 100 -timeout 30 -ssl -c ~/go/src/github.com/haccer/subjack/fingerprints.json -v  \\| tee takeover` |\n| Find LFI with gau | `~/go/bin/gau \u003cdomain\u003e \\| ~/go/bin/gf lfi \\| ~/go/bin/qsreplace \"/etc/passwd\" \\| xargs -I % -P 25 sh -c 'curl -s \"%\" 2\u003e\u00261 \\| grep -q \"root:x\" \u0026\u0026 echo \"VULN! %\"'` |\n| Find OpenRedirect with gau | `export LHOST=\"http://localhost\"; gau \u003cdomain\u003e \\| gf redirect \\| qsreplace \"$LHOST\" \\| xargs -I % -P 25 sh -c 'curl -Is \"%\" 2\u003e\u00261 \\| grep -q \"Location: $LHOST\" \u0026\u0026 echo \"VULN! %\"'` |\n| Get bugcrowd programs | `curl -sL https://github.com/arkadiyt/bounty-targets-data/raw/master/data/bugcrowd_data.json \\| jq -r '.[].targets.in_scope[] \\| [.target, .type] \\| @tsv'` |\n| one \\| uniq); doneGet CIDR and Orgz from target lists | `for DOMAIN in $(cat \u003cFILE NAME\u003e);do echo $(for ip in $(dig a $DOMAIN +short); do whois $ip \\| grep -e \"CIDR\\\\|Organization\" \\| tr -s \" \" \\| paste - -; d` |\n| Get hackerone programs | `curl -sL https://github.com/arkadiyt/bounty-targets-data/blob/master/data/hackerone_data.json?raw=true \\| jq -r '.[].targets.in_scope[] \\| [.asset_identifier, .asset_type] \\| @tsv'` |\n| Get intigriti programs | `curl -sL https://github.com/arkadiyt/bounty-targets-data/raw/master/data/intigriti_data.json \\| jq -r '.[].targets.in_scope[] \\| [.endpoint, .type] \\| @tsv'` |\n| Get Subdomains from Archive | `curl -s \"http://web.archive.org/cdx/search/cdx?url=*.\u003cdomain\u003e/*\u0026output=text\u0026fl=original\u0026collapse=urlkey\" \\| sed -e 's_https*://__' -e \"s/\\/.*//\" \\| sort -u` |\n| Get Subdomains from BufferOverRun | `curl -s https://dns.bufferover.run/dns?q=.\u003cdomain\u003e \\|jq -r .FDNS_A[]\\|cut -d',' -f2\\|sort -u` |\n| Get Subdomains from CertSpotter | `curl -s \"https://certspotter.com/api/v0/certs?domain=\u003cdomain\u003e\" \\| grep -Po \"((http\\|https):\\/\\/)?(([\\w.-]*)\\.([\\w]*)\\.([A-z]))\\w+\" \\| sort -u` |\n| Get Subdomains from crt.sh | `curl -s \"https://crt.sh/?q=%25.\u003cdomain\u003e\u0026output=json\" \\| jq -r '.[].name_value' \\| sed 's/\\*\\.//g' \\| sort -u` |\n| Get Subdomains from JLDC | `curl -s \"https://jldc.me/anubis/subdomains/\u003cdomain\u003e?\" \\| grep -Po \"((http\\|https):\\/\\/)?(([\\w.-]*)\\.([\\w]*)\\.([A-z]))\\w+\" \\| sort -u` |\n| Get Subdomains from RapidDNS.io | `curl -s \"https://rapiddns.io/subdomain/\u003cdomain\u003e?full=1#result\" \\| grep \"\u003ctd\u003e\u003ca\" \\| cut -d '\"' -f 2 \\| grep http \\| cut -d '/' -f3 \\| sed 's/#results//g' \\| sort -u` |\n| Get Subdomains from Riddler.io | `curl -s \"https://riddler.io/search/exportcsv?q=pld:\u003cdomain\u003e\" \\| grep -Po \"(([\\w.-]*)\\.([\\w]*)\\.([A-z]))\\w+\" \\| sort -u` |\n| Get Subdomains from VirusTotal | `curl -s \"https://www.virustotal.com/ui/domains/\u003cdomain\u003e/subdomains?limit=40\" \\| grep -Po \"((http\\|https):\\/\\/)?(([\\w.-]*)\\.([\\w]*)\\.([A-z]))\\w+\" \\| sort -u` |\n| Get url with gau, included parameter | `echo \u003cdomain\u003e \\| ~/go/bin/gau \\| grep \"=\" \\| qsreplace -a ` |\n| Get all the urls out of a sitemap.xml | `curl -s \u003csitemap URL\u003e \\| xmllint --format - \\| grep -e 'loc' \\| sed -r 's\\|\u003c/?loc\u003e\\|\\|g'` |\n| Get urls from urlscanio | `gron \"https://urlscan.io/api/v1/search/?q=domain:\u003cdomain\u003e\"  \\| grep 'url' \\| gron --ungron` |\n| Find XSS with gospider | `gospider -S \u003cTARGET URLS FILE\u003e -c 10 -d 5 --blacklist \".(jpg\\|jpeg\\|gif\\|css\\|tif\\|tiff\\|png\\|ttf\\|woff\\|woff2\\|ico\\|pdf\\|svg\\|txt)\" --other-source \\| grep -e \"code-200\" \\| awk '{print $5}'\\| grep \"=\" \\| qsreplace -a \\| dalfox pipe -o result.txt` |\n| ipinfo | `curl http://ipinfo.io/\u003cparam\u003e` |\n| Create a wordlist using param used in the domain | `waybackurls \u003cdomain\u003e \\|  grep \"?\" \\| unfurl keys  \\| sort -u \\| tee -a paramlist.txt` |\n| Ports Scan without CloudFlare | `subfinder -silent -d \u003cdomain\u003e \\| filter-resolved \\| cf-check \\| sort -u \\| naabu -rate 40000 -silent -verify \\| httprobe` |\n| Sort \u0026 Tested Domains from Recon.dev | `curl \"https://recon.dev/api/search?key=\u003cAPI Key\u003e\u0026domain=\u003cdomain\u003e\" \\|jq -r '.[].rawDomains[]' \\| sed 's/ //g' \\| sort -u \\|httpx -silent` |\n| Find Subdomains TakeOver | `subfinder -d \u003ctarget\u003e \u003e\u003e domains ; assetfinder -subs-only \u003ctarget\u003e \u003e\u003e domains ; amass enum -norecursive -noalts -d \u003ctarget\u003e \u003e\u003e domains ; subjack -w domains -t 100 -timeout 30 -ssl -c ~/go/src/github.com/haccer/subjack/fingerprints.json -v 3 \u003e\u003e takeover ;` |\n| Get multiple target's Custom URLs from ParamSpider | `cat \u003cdomains file\u003e \\| xargs -I % python3 ~/tool/ParamSpider/paramspider.py -l high -o ./spidering/paramspider/% -d % ;` |\n| URLs Probing with cURL + Parallel | `cat \u003cdomains file\u003e \\| parallel -j50 -q curl -w 'Status:%{http_code}\\t  Size:%{size_download}\\t %{url_effective}\\n' -o /dev/null -sk` |\n\n## Contribute\nFirst, Make snippet DOML with `hack-pet add` \n```\n$ hack-pet add\nadd called\n[command]\n\u003e\u003e\u003e echo \u003cdomain\u003e | ~/go/bin/gau | grep \"=\" | qsreplace -a\necho \u003cdomain\u003e | ~/go/bin/gau | grep \"=\" | qsreplace -a\n\n[desc]\n\u003e\u003e\u003e get url with gau, included parameter\nget url with gau, included parameter\n\n[toml filename | e.g nmap_full_scan.toml]\n\u003e\u003e\u003e get_url_param.toml\nget_url_param.toml\n\n[[snippets]]\ncommand = \"echo \u003cdomain\u003e | ~/go/bin/gau | grep \\\"=\\\" | qsreplace -a \"\ndescription = \"get url with gau, included parameter\"\noutput = \"\"\ntag = [\"hackpet\"]\n```\n\nor \n\nWrite TOML Code in `./snippets` directory\n```toml\n[[snippets]]\ncommand = \"echo \u003cdomain\u003e | ~/go/bin/gau | grep \\\"=\\\" | qsreplace -a \"\ndescription = \"Get url with gau, included parameter\"\noutput = \"\"\ntag = [\"hackpet\"]\n\n```\nPlease attach a `hackpet` to the tag. This allows you to distinguish between different snippets and hackpet.\n\n\nSecond, move your DOML file to `/snippet` directory\n```\n$ mv get_url_param.toml ./snippets/\n```\n\nFinaly, Send Pull Request! (your DOML file in `./snippets/`)\n\n## Merge (for me)\n```\n$ hack-pet merge\n$ git add hackpet.toml README.md\n$ git commit -m \"merge and distribute readme\"\n$ git push -u origin master \n```\nOneline\n```\n$ hack-pet merge\n$ git add hackpet.toml README.md ; git commit -m \"merge and distribute readme\" ; git push -u origin master\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhahwul%2Fhack-pet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhahwul%2Fhack-pet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhahwul%2Fhack-pet/lists"}