{"id":18464861,"url":"https://github.com/acceis/bqm","last_synced_at":"2025-04-08T08:31:29.732Z","repository":{"id":65502383,"uuid":"561692380","full_name":"Acceis/bqm","owner":"Acceis","description":"Deduplicate custom BloudHound queries from different datasets and merge them in one customqueries.json file.","archived":false,"fork":false,"pushed_at":"2024-03-23T19:28:05.000Z","size":117,"stargazers_count":37,"open_issues_count":0,"forks_count":5,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-23T09:24:08.683Z","etag":null,"topics":["bloodhound","bloodhound-json-files","bloodhound-queries","bloodhoundad-cypher-queries"],"latest_commit_sha":null,"homepage":"https://acceis.github.io/bqm/","language":"Ruby","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/Acceis.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}},"created_at":"2022-11-04T09:16:33.000Z","updated_at":"2025-02-23T13:29:45.000Z","dependencies_parsed_at":"2024-03-23T20:37:12.034Z","dependency_job_id":null,"html_url":"https://github.com/Acceis/bqm","commit_stats":{"total_commits":34,"total_committers":4,"mean_commits":8.5,"dds":"0.47058823529411764","last_synced_commit":"055f66f5d4c741a92507bd91dccdd0a87107df18"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Acceis%2Fbqm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Acceis%2Fbqm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Acceis%2Fbqm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Acceis%2Fbqm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Acceis","download_url":"https://codeload.github.com/Acceis/bqm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247804468,"owners_count":20998990,"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":["bloodhound","bloodhound-json-files","bloodhound-queries","bloodhoundad-cypher-queries"],"created_at":"2024-11-06T09:11:20.471Z","updated_at":"2025-04-08T08:31:29.435Z","avatar_url":"https://github.com/Acceis.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BQM (Bloodhound Query Merger)\n\n[![GitHub forks](https://img.shields.io/github/forks/Acceis/bqm)](https://github.com/Acceis/bqm/network)\n[![GitHub stars](https://img.shields.io/github/stars/Acceis/bqm)](https://github.com/Acceis/bqm/stargazers)\n[![GitHub license](https://img.shields.io/github/license/Acceis/bqm)](https://github.com/Acceis/bqm/blob/master/LICENSE)\n[![Rawsec's CyberSecurity Inventory](https://inventory.raw.pm/img/badges/Rawsec-inventoried-FF5050_flat.svg)](https://inventory.raw.pm/tools.html#BQM)\n\n![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/Acceis/bqm/ruby.yml?branch=master)\n![GitHub commit activity](https://img.shields.io/github/commit-activity/y/Acceis/bqm)\n\n![BQM logo](assets/logo-bqm.png)\n\n\u003e Tool to deduplicate custom BloudHound queries from different datasets and merge them in one `customqueries.json` file.\n\n## Why?\n\n[BloodHound][bh] allows you to store custom queries in `~/.config/bloodhound/customqueries.json`. Most pentester are then downloading a custom queries file from an external project. **The issue?** There are several projects offering very good queries files but they are all very different and complementary and BloodHound supports only one custom queries file. **The solution?** What if a tool would index all custom queries files, download them for you, remove duplicate queries and merge them all in one file you can use in BloodHound? That's what BQM offers, no more query file compromise, more AD compromise!\n\n## Features\n\n- Inventory many query datasets\n- Fetch all query datasets\n- Remove duplicate queries\n- Merge all queries in one file\n- List all available datasets\n- Merge existing customqueries.json to the output\n- Merge local custom queries files as well as remote ones\n- Merge local bqm query sets file\n- Offline support\n- Folder support\n\n## Install\n\nNo install, just clone the repository and run! No dependencies, just pure Ruby.\n\n```bash\ngit clone https://github.com/Acceis/bqm.git \u0026\u0026 cd bqm\nruby bin/bqm -h\n```\n\n[![Packaging status](https://repology.org/badge/vertical-allrepos/bqm.svg)](https://repology.org/project/bqm/versions)\n\nSee [INSTALL](INSTALL.md) for options with package managers.\n\n## Usage\n\n```\nUsage: bqm [options]\n    -o, --output-path PATH           Path where to store the query file\n    -l, --list                       List available datasets\n    -i FILE,DIRECTORY,...,           Local custom queries files/directories\n        --local-sets\n        --ignore-default             Ignore the default query-sets.json\n    -v, --verbose                    Display the name of the merged files/sets\n\nExample: bqm -o ~/.config/bloodhound/customqueries.json\nExample: bqm -o /tmp/customqueries.json -i /tmp/a.json,/home/user/folder\n```\n\nExample:\n\n```\n$ bqm -o ~/.config/bloodhound/customqueries.json\n[+] The output path /home/noraj/.config/bloodhound/customqueries.json already exists\n[?] Do you want to overwrite it? [y/n]\ny\n[?] What to do with the existing queries? (merge / discard) [m/d]\nd\n[+] Fetching and merging datasets\n[+] Removing duplicates\n[+] All queries have been merged in /home/noraj/.config/bloodhound/customqueries.json\n```\n\nSee [DOC](DOC.md) for more explanation about some options.\n\n## Datasets\n\nDatasets used by BQM are referenced in `data/query-sets.json`. They are coming from the following projects:\n\n- [ly4k/Certipy](https://github.com/ly4k/Certipy)\n- [CompassSecurity/BloodHoundQueries](https://github.com/CompassSecurity/BloodHoundQueries)\n- [hausec/Bloodhound-Custom-Queries](https://github.com/hausec/Bloodhound-Custom-Queries)\n- [awsmhacks/awsmBloodhoundCustomQueries](https://github.com/awsmhacks/awsmBloodhoundCustomQueries)\n- [porterhau5/BloodHound-Owned](https://github.com/porterhau5/BloodHound-Owned)\n- [ZephrFish/Bloodhound-CustomQueries](https://github.com/ZephrFish/Bloodhound-CustomQueries)\n- [Scoubi/BloodhoundAD-Queries](https://github.com/Scoubi/BloodhoundAD-Queries)\n- [InfamousSYN/bloodhound-queries](https://github.com/InfamousSYN/bloodhound-queries)\n- [zeronetworks/BloodHound-Tools](https://github.com/zeronetworks/BloodHound-Tools)\n- [egypt/customqueries](https://github.com/egypt/customqueries)\n- [trustedsec/CrackHound](https://github.com/trustedsec/CrackHound)\n- [aress31/bloodhound-utils](https://github.com/aress31/bloodhound-utils)\n- [ThePorgs/Exegol-images](https://github.com/ThePorgs/Exegol-images/blob/main/sources/bloodhound/customqueries.json)\n\n## Author\n\nMade by Alexandre ZANNI ([@noraj](https://pwn.by/noraj/)) for [ACCEIS](https://www.acceis.fr/).\n\n## Credits\n\nLogo made with [DesignEvo](https://www.designevo.com/).\n\n[bh]:https://github.com/BloodHoundAD/BloodHound\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Facceis%2Fbqm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Facceis%2Fbqm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Facceis%2Fbqm/lists"}