{"id":44452563,"url":"https://mandiant.github.io/capa/","last_synced_at":"2026-02-24T23:01:23.326Z","repository":{"id":37489905,"uuid":"272815213","full_name":"mandiant/capa","owner":"mandiant","description":"The FLARE team's open-source tool to identify capabilities in executable files.","archived":false,"fork":false,"pushed_at":"2026-02-16T15:50:07.000Z","size":36866,"stargazers_count":5827,"open_issues_count":270,"forks_count":659,"subscribers_count":85,"default_branch":"master","last_synced_at":"2026-02-17T13:04:02.798Z","etag":null,"topics":["binary-analysis","gsoc-2026","malware-analysis","reverse-engineering","threat-intelligence"],"latest_commit_sha":null,"homepage":"https://mandiant.github.io/capa/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mandiant.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-06-16T21:24:57.000Z","updated_at":"2026-02-17T05:08:18.000Z","dependencies_parsed_at":"2025-12-30T00:06:16.823Z","dependency_job_id":null,"html_url":"https://github.com/mandiant/capa","commit_stats":{"total_commits":4320,"total_committers":81,"mean_commits":"53.333333333333336","dds":0.8435185185185186,"last_synced_commit":"5a284de438fcb26c648f2e3bfe21e3e189149b0b"},"previous_names":["fireeye/capa"],"tags_count":48,"template":false,"template_full_name":null,"purl":"pkg:github/mandiant/capa","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mandiant%2Fcapa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mandiant%2Fcapa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mandiant%2Fcapa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mandiant%2Fcapa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mandiant","download_url":"https://codeload.github.com/mandiant/capa/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mandiant%2Fcapa/sbom","scorecard":{"id":400762,"data":{"date":"2025-08-14T21:00:22Z","repo":{"name":"github.com/mandiant/capa","commit":"d456d52e8189005077eea338b8f388e84fb1f253"},"scorecard":{"version":"v4.13.1","commit":"49c0eed3a423f00c872b5c3c9f1bbca9e8aae799"},"score":5.8,"checks":[{"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/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#binary-artifacts"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#branch-protection"}},{"name":"CI-Tests","score":10,"reason":"16 out of 16 merged PRs checked by a CI test -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project runs tests before pull requests are merged.","url":"https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#ci-tests"}},{"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/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#cii-best-practices"}},{"name":"Code-Review","score":1,"reason":"found 18 unreviewed changesets out of 21 -- score normalized to 1","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/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#code-review"}},{"name":"Contributors","score":10,"reason":"17 different organizations found -- score normalized to 10","details":["Info: contributors work for Vector35,argoproj,aws,check-spelling,curated-intel,flare/mandiant,gabertan.colton@gmail.com,garnercorp,google @mandiant,googlers,hexrayssa,iit bombay,mandiant,openSUSE,osusec,rantly-rb,vector35 inc"],"documentation":{"short":"Determines if the project has a set of contributors from multiple organizations (e.g., companies).","url":"https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#contributors"}},{"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/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#dangerous-workflow"}},{"name":"Dependency-Update-Tool","score":10,"reason":"update tool detected","details":["Info: tool 'Dependabot' is used: .github/dependabot.yml:1"],"documentation":{"short":"Determines if the project uses a dependency update tool.","url":"https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#dependency-update-tool"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no OSSFuzz integration found: Follow the steps in https://github.com/google/oss-fuzz to integrate fuzzing for your project.\nOver time, try to add fuzzing for more functionalities of your project. (High effort)","Warn: no OneFuzz integration found: Follow the steps in https://github.com/microsoft/onefuzz to start fuzzing for your project.\nOver time, try to add fuzzing for more functionalities of your project. (High effort)","Warn: no GoBuiltInFuzzer integration found: Follow the steps in https://go.dev/doc/fuzz/ to enable fuzzing on your project.\nOver time, try to add fuzzing for more functionalities of your project. (Medium effort)","Warn: no PythonAtherisFuzzer integration found: Follow the steps in https://github.com/google/atheris to enable fuzzing on your project.\nOver time, try to add fuzzing for more functionalities of your project. (Medium effort)","Warn: no CLibFuzzer integration found: Follow the steps in https://llvm.org/docs/LibFuzzer.html to enable fuzzing on your project.\nOver time, try to add fuzzing for more functionalities of your project. (Medium effort)","Warn: no CppLibFuzzer integration found: Follow the steps in https://llvm.org/docs/LibFuzzer.html to enable fuzzing on your project.\nOver time, try to add fuzzing for more functionalities of your project. (Medium effort)","Warn: no SwiftLibFuzzer integration found: Follow the steps in https://google.github.io/oss-fuzz/getting-started/new-project-guide/swift-lang/ to enable fuzzing on your project.\nOver time, try to add fuzzing for more functionalities of your project. (Medium effort)","Warn: no RustCargoFuzzer integration found: Follow the steps in https://rust-fuzz.github.io/book/cargo-fuzz.html to enable fuzzing on your project.\nOver time, try to add fuzzing for more functionalities of your project. (Medium effort)","Warn: no JavaJazzerFuzzer integration found: Follow the steps in https://github.com/CodeIntelligenceTesting/jazzer to enable fuzzing on your project.\nOver time, try to add fuzzing for more functionalities of your project. (Medium effort)","Warn: no ClusterFuzzLite integration found: Follow the steps in https://github.com/google/clusterfuzzlite to integrate fuzzing as part of CI.\nOver time, try to add fuzzing for more functionalities of your project. (High effort)","Warn: no HaskellPropertyBasedTesting integration found: Use one of the following frameworks to fuzz your project:\nQuickCheck: https://hackage.haskell.org/package/QuickCheck\nhedgehog: https://hedgehog.qa/\nvalidity: https://github.com/NorfairKing/validity\nsmallcheck: https://hackage.haskell.org/package/smallcheck\nhspec: https://hspec.github.io/\ntasty: https://hackage.haskell.org/package/tasty (High effort)","Warn: no TypeScriptPropertyBasedTesting integration found: Use fast-check: https://github.com/dubzzz/fast-check (High effort)","Warn: no JavaScriptPropertyBasedTesting integration found: Use fast-check: https://github.com/dubzzz/fast-check (High effort)"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: License file found in expected location: LICENSE.txt:1","Info: FSF or OSI recognized license: LICENSE.txt:1"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#license"}},{"name":"Maintained","score":10,"reason":"30 commit(s) out of 30 and 11 issue activity out of 30 found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#maintained"}},{"name":"Packaging","score":10,"reason":"publishing workflow detected","details":["Info: GitHub/GitLab publishing workflow used in run https://api.github.com/repos/mandiant/capa/actions/runs/15499607375: .github/workflows/publish.yml:13"],"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/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":3,"reason":"dependency not pinned by hash detected -- score normalized to 3","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pip-audit.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/mandiant/capa/pip-audit.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pip-audit.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/mandiant/capa/pip-audit.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/web-deploy.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/mandiant/capa/web-deploy.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/web-deploy.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/mandiant/capa/web-deploy.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/web-deploy.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/mandiant/capa/web-deploy.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/web-deploy.yml:63: update your workflow using https://app.stepsecurity.io/secureworkflow/mandiant/capa/web-deploy.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/web-deploy.yml:73: update your workflow using https://app.stepsecurity.io/secureworkflow/mandiant/capa/web-deploy.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/web-deploy.yml:83: update your workflow using https://app.stepsecurity.io/secureworkflow/mandiant/capa/web-deploy.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/web-deploy.yml:85: update your workflow using https://app.stepsecurity.io/secureworkflow/mandiant/capa/web-deploy.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/web-deploy.yml:101: update your workflow using https://app.stepsecurity.io/secureworkflow/mandiant/capa/web-deploy.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/web-deploy.yml:114: update your workflow using https://app.stepsecurity.io/secureworkflow/mandiant/capa/web-deploy.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/web-deploy.yml:118: update your workflow using https://app.stepsecurity.io/secureworkflow/mandiant/capa/web-deploy.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/web-deploy.yml:122: update your workflow using https://app.stepsecurity.io/secureworkflow/mandiant/capa/web-deploy.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/web-deploy.yml:127: update your workflow using https://app.stepsecurity.io/secureworkflow/mandiant/capa/web-deploy.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/web-deploy.yml:129: update your workflow using https://app.stepsecurity.io/secureworkflow/mandiant/capa/web-deploy.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/web-deploy.yml:134: update your workflow using https://app.stepsecurity.io/secureworkflow/mandiant/capa/web-deploy.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/web-release.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/mandiant/capa/web-release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/web-tests.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/mandiant/capa/web-tests.yml/master?enable=pin","Warn: containerImage not pinned by hash: .devcontainer/Dockerfile:5","Warn: pipCommand not pinned by hash: .github/workflows/build.yml:71","Warn: pipCommand not pinned by hash: .github/workflows/build.yml:73","Warn: pipCommand not pinned by hash: .github/workflows/build.yml:74","Warn: pipCommand not pinned by hash: .github/workflows/publish.yml:27","Warn: pipCommand not pinned by hash: .github/workflows/publish.yml:28","Warn: pipCommand not pinned by hash: .github/workflows/publish.yml:29","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:51","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:52","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:79","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:80","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:116","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:117","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:153","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:154","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:205","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:212","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:213","Warn: pipCommand not pinned by hash: .github/workflows/web-deploy.yml:93","Info:  27 out of  42 GitHub-owned GitHubAction dependencies pinned","Info:   8 out of  11 third-party GitHubAction dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned","Info:   0 out of  18 pipCommand dependencies pinned","Info:   3 out of   3 npmCommand 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/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":9,"reason":"SAST tool is not run on all commits -- score normalized to 9","details":["Warn: 15 commits out of 16 are checked with a SAST tool","Warn: CodeQL tool not detected"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#sast"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected: On GitHub:\nEnable private vulnerability disclosure in your repository settings https://docs.github.com/en/code-security/security-advisories/repository-security-advisories/configuring-private-vulnerability-reporting-for-a-repository\nAdd a section in your SECURITY.md indicating you have enabled private reporting, and tell them to follow the steps in https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability to report vulnerabilities.\nOn GitLab:\nAdd a section in your SECURITY.md indicating the process to disclose vulnerabilities for your project.\nExamples: https://github.com/ossf/scorecard/blob/main/SECURITY.md, https://github.com/slsa-framework/slsa-github-generator/blob/main/SECURITY.md, https://github.com/sigstore/.github/blob/main/SECURITY.md.\nFor additional information on vulnerability disclosure, see https://github.com/ossf/oss-vulnerability-guide/blob/main/maintainer-guide.md. (Medium effort)","Warn: no security file to analyze: On GitHub:\nEnable private vulnerability disclosure in your repository settings https://docs.github.com/en/code-security/security-advisories/repository-security-advisories/configuring-private-vulnerability-reporting-for-a-repository\nAdd a section in your SECURITY.md indicating you have enabled private reporting, and tell them to follow the steps in https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability to report vulnerabilities.\nOn GitLab:\nProvide a point of contact in your SECURITY.md.\nExamples: https://github.com/ossf/scorecard/blob/main/SECURITY.md, https://github.com/slsa-framework/slsa-github-generator/blob/main/SECURITY.md, https://github.com/sigstore/.github/blob/main/SECURITY.md. (Low effort)","Warn: no security file to analyze: On GitHub:\nEnable private vulnerability disclosure in your repository settings https://docs.github.com/en/code-security/security-advisories/repository-security-advisories/configuring-private-vulnerability-reporting-for-a-repository\nAdd a section in your SECURITY.md indicating you have enabled private reporting, and tell them to follow the steps in https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability to report vulnerabilities.\nOn GitLab:\nAdd a section in your SECURITY.md indicating the process to disclose vulnerabilities for your project.\nExamples: https://github.com/ossf/scorecard/blob/main/SECURITY.md, https://github.com/slsa-framework/slsa-github-generator/blob/main/SECURITY.md, https://github.com/sigstore/.github/blob/main/SECURITY.md. (Low effort)","Warn: no security file to analyze: On GitHub:\nEnable private vulnerability disclosure in your repository settings https://docs.github.com/en/code-security/security-advisories/repository-security-advisories/configuring-private-vulnerability-reporting-for-a-repository\nAdd a section in your SECURITY.md indicating you have enabled private reporting, and tell them to follow the steps in https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability to report vulnerabilities.\nOn GitLab:\nAdd a section in your SECURITY.md indicating the process to disclose vulnerabilities for your project.\nExamples: https://github.com/ossf/scorecard/blob/main/SECURITY.md, https://github.com/slsa-framework/slsa-github-generator/blob/main/SECURITY.md, https://github.com/sigstore/.github/blob/main/SECURITY.md. (Low effort)"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#security-policy"}},{"name":"Signed-Releases","score":0,"reason":"0 out of 5 artifacts are signed or have provenance","details":["Warn: release artifact v9.2.1 does not have provenance: https://api.github.com/repos/mandiant/capa/releases/223737603","Warn: release artifact v9.2.1 not signed: https://api.github.com/repos/mandiant/capa/releases/223737603","Warn: release artifact v9.2.0 does not have provenance: https://api.github.com/repos/mandiant/capa/releases/223452710","Warn: release artifact v9.2.0 not signed: https://api.github.com/repos/mandiant/capa/releases/223452710","Warn: release artifact v9.1.0 does not have provenance: https://api.github.com/repos/mandiant/capa/releases/203712159","Warn: release artifact v9.1.0 not signed: https://api.github.com/repos/mandiant/capa/releases/203712159","Warn: release artifact v9.0.0 does not have provenance: https://api.github.com/repos/mandiant/capa/releases/198521476","Warn: release artifact v9.0.0 not signed: https://api.github.com/repos/mandiant/capa/releases/198521476","Warn: release artifact v8.0.1 does not have provenance: https://api.github.com/repos/mandiant/capa/releases/189774872","Warn: release artifact v8.0.1 not signed: https://api.github.com/repos/mandiant/capa/releases/189774872"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#signed-releases"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: topLevel 'contents' permission set to 'write': .github/workflows/build.yml:15: Visit https://app.stepsecurity.io/secureworkflow/mandiant/capa/build.yml/master?enable=permissions\nTick the 'Restrict permissions for GITHUB_TOKEN'\nUntick other options\nNOTE: If you want to resolve multiple issues at once, you can visit https://app.stepsecurity.io/securerepo instead. (Low effort)","Warn: no topLevel permission defined: .github/workflows/pip-audit.yml:1: Visit https://app.stepsecurity.io/secureworkflow/mandiant/capa/pip-audit.yml/master?enable=permissions\nTick the 'Restrict permissions for GITHUB_TOKEN'\nUntick other options\nNOTE: If you want to resolve multiple issues at once, you can visit https://app.stepsecurity.io/securerepo instead. (Low effort)","Warn: topLevel 'contents' permission set to 'write': .github/workflows/publish.yml:10: Visit https://app.stepsecurity.io/secureworkflow/mandiant/capa/publish.yml/master?enable=permissions\nTick the 'Restrict permissions for GITHUB_TOKEN'\nUntick other options\nNOTE: If you want to resolve multiple issues at once, you can visit https://app.stepsecurity.io/securerepo instead. (Low effort)","Info: topLevel permissions set to 'read-all': .github/workflows/scorecard.yml:18","Info: topLevel permissions set to 'read-all': .github/workflows/tag.yml:7","Info: topLevel permissions set to 'read-all': .github/workflows/tests.yml:21","Info: topLevel 'contents' permission set to 'read': .github/workflows/web-deploy.yml:14","Warn: no topLevel permission defined: .github/workflows/web-release.yml:1: Visit https://app.stepsecurity.io/secureworkflow/mandiant/capa/web-release.yml/master?enable=permissions\nTick the 'Restrict permissions for GITHUB_TOKEN'\nUntick other options\nNOTE: If you want to resolve multiple issues at once, you can visit https://app.stepsecurity.io/securerepo instead. (Low effort)","Warn: no topLevel permission defined: .github/workflows/web-tests.yml:1: Visit https://app.stepsecurity.io/secureworkflow/mandiant/capa/web-tests.yml/master?enable=permissions\nTick the 'Restrict permissions for GITHUB_TOKEN'\nUntick other options\nNOTE: If you want to resolve multiple issues at once, you can visit https://app.stepsecurity.io/securerepo instead. (Low effort)","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/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#token-permissions"}},{"name":"Vulnerabilities","score":7,"reason":"3 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T20:02:01.329Z","repository_id":37489905,"created_at":"2025-08-18T20:02:01.329Z","updated_at":"2025-08-18T20:02:01.329Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29804148,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-24T22:43:48.403Z","status":"ssl_error","status_checked_at":"2026-02-24T22:43:18.536Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["binary-analysis","gsoc-2026","malware-analysis","reverse-engineering","threat-intelligence"],"created_at":"2026-02-12T17:00:18.691Z","updated_at":"2026-02-24T23:01:23.316Z","avatar_url":"https://github.com/mandiant.png","language":"Python","readme":"\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"https://mandiant.github.io/capa/\" target=\"_blank\"\u003e\n  \u003cimg src=\"https://github.com/mandiant/capa/blob/master/.github/logo.png\"\u003e\n\u003c/a\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://mandiant.github.io/capa/\" target=\"_blank\"\u003eWebsite\u003c/a\u003e\n  |\n  \u003ca href=\"https://github.com/mandiant/capa/releases/latest\" target=\"_blank\"\u003eDownload\u003c/a\u003e\n  |\n  \u003ca href=\"https://mandiant.github.io/capa/explorer/\" target=\"_blank\"\u003eWeb Interface\u003c/a\u003e\n\u003c/p\u003e\n\u003cdiv align=\"center\"\u003e\n\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/flare-capa)](https://pypi.org/project/flare-capa)\n[![Last release](https://img.shields.io/github/v/release/mandiant/capa)](https://github.com/mandiant/capa/releases)\n[![Number of rules](https://gist.githubusercontent.com/capa-bot/6d7960e911f48b3b74916df8988cf0f3/raw/rules_badge.svg)](https://github.com/mandiant/capa-rules)\n[![CI status](https://github.com/mandiant/capa/workflows/CI/badge.svg)](https://github.com/mandiant/capa/actions?query=workflow%3ACI+event%3Apush+branch%3Amaster)\n[![Downloads](https://img.shields.io/github/downloads/mandiant/capa/total)](https://github.com/mandiant/capa/releases)\n[![License](https://img.shields.io/badge/license-Apache--2.0-green.svg)](LICENSE.txt)\n\n\u003c/div\u003e\n\u003c/div\u003e\n\n---\n\ncapa detects capabilities in executable files.\nYou run it against a PE, ELF, .NET module, shellcode file, or a sandbox report and it tells you what it thinks the program can do.\nFor example, it might suggest that the file is a backdoor, is capable of installing services, or relies on HTTP to communicate.\n\nTo interactively inspect capa results in your browser use the [capa Explorer Web](https://mandiant.github.io/capa/explorer/).\n\nIf you want to inspect or write capa rules, head on over to the [capa-rules repository](https://github.com/mandiant/capa-rules). Otherwise, keep reading.\n\nBelow you find a list of [our capa blog posts with more details.](#blog-posts)\n\n# example capa output\n```\n$ capa.exe suspicious.exe\n\n+--------------------+------------------------------------------------------------------------+\n| ATT\u0026CK Tactic      | ATT\u0026CK Technique                                                       |\n|--------------------+------------------------------------------------------------------------|\n| DEFENSE EVASION    | Obfuscated Files or Information [T1027]                                |\n| DISCOVERY          | Query Registry [T1012]                                                 |\n|                    | System Information Discovery [T1082]                                   |\n| EXECUTION          | Command and Scripting Interpreter::Windows Command Shell [T1059.003]   |\n|                    | Shared Modules [T1129]                                                 |\n| EXFILTRATION       | Exfiltration Over C2 Channel [T1041]                                   |\n| PERSISTENCE        | Create or Modify System Process::Windows Service [T1543.003]           |\n+--------------------+------------------------------------------------------------------------+\n\n+-------------------------------------------+-------------------------------------------------+\n| CAPABILITY                                | NAMESPACE                                       |\n|-------------------------------------------+-------------------------------------------------|\n| read and send data from client to server  | c2/file-transfer                               |\n| execute shell command and capture output  | c2/shell                                       |\n| receive data (2 matches)                  | communication                                   |\n| send data (6 matches)                     | communication                                   |\n| connect to HTTP server (3 matches)        | communication/http/client                       |\n| send HTTP request (3 matches)             | communication/http/client                       |\n| create pipe                               | communication/named-pipe/create                 |\n| get socket status (2 matches)             | communication/socket                            |\n| receive data on socket (2 matches)        | communication/socket/receive                    |\n| send data on socket (3 matches)           | communication/socket/send                       |\n| connect TCP socket                        | communication/socket/tcp                        |\n| encode data using Base64                  | data-manipulation/encoding/base64               |\n| encode data using XOR (6 matches)         | data-manipulation/encoding/xor                  |\n| run as a service                          | executable/pe                                   |\n| get common file path (3 matches)          | host-interaction/file-system                    |\n| read file                                 | host-interaction/file-system/read               |\n| write file (2 matches)                    | host-interaction/file-system/write              |\n| print debug messages (2 matches)          | host-interaction/log/debug/write-event          |\n| resolve DNS                               | host-interaction/network/dns/resolve            |\n| get hostname                              | host-interaction/os/hostname                    |\n| create process                            | host-interaction/process/create                 |\n| create registry key                       | host-interaction/registry/create                |\n| create service                            | host-interaction/service/create                 |\n| create thread                             | host-interaction/thread/create                  |\n| persist via Windows service               | persistence/service                             |\n+-------------------------------------------+-------------------------------------------------+\n```\n\n# download and usage\n\nDownload stable releases of the standalone capa binaries [here](https://github.com/mandiant/capa/releases). You can run the standalone binaries without installation. capa is a command line tool that should be run from the terminal.\n\nTo use capa as a library or integrate with another tool, see [doc/installation.md](https://github.com/mandiant/capa/blob/master/doc/installation.md) for further setup instructions.\n\n**Documentation:** [Usage and tips](doc/usage.md) · [Installation](doc/installation.md) · [Limitations](doc/limitations.md) · [FAQ](doc/faq.md)\n\n# capa Explorer Web\nThe [capa Explorer Web](https://mandiant.github.io/capa/explorer/) enables you to interactively explore capa results in your web browser. Besides the online version you can download a standalone HTML file for local offline usage.\n\n![capa Explorer Web screenshot](https://github.com/mandiant/capa/blob/master/doc/img/capa_web_explorer.png)\n\nMore details on the web UI is available in the [capa Explorer Web README](https://github.com/mandiant/capa/blob/master/web/explorer/README.md).\n\n# example\n\nIn the above sample output, we run capa against an unknown binary (`suspicious.exe`),\nand the tool reports that the program can send HTTP requests, decode data via XOR and Base64,\ninstall services, and spawn new processes.\nTaken together, this makes us think that `suspicious.exe` could be a persistent backdoor.\nTherefore, our next analysis step might be to run `suspicious.exe` in a sandbox and try to recover the command and control server.\n\n## detailed results\n\nBy passing the `-vv` flag (for very verbose), capa reports exactly where it found evidence of these capabilities.\nThis is useful for at least two reasons:\n\n  - it helps explain why we should trust the results, and enables us to verify the conclusions, and\n  - it shows where within the binary an experienced analyst might study with IDA Pro\n\n```\n$ capa.exe suspicious.exe -vv\n...\nexecute shell command and capture output\nnamespace   c2/shell\nauthor      matthew.williams@mandiant.com\nscope       function\natt\u0026ck      Execution::Command and Scripting Interpreter::Windows Command Shell [T1059.003]\nreferences  https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/ns-processthreadsapi-startupinfoa\nfunction @ 0x4011C0\n  and:\n    match: create a process with modified I/O handles and window @ 0x4011C0\n      and:\n        number: 257 = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW @ 0x4012B8\n        or:\n          number: 68 = StartupInfo.cb (size) @ 0x401282\n        or: = API functions that accept a pointer to a STARTUPINFO structure\n          api: kernel32.CreateProcess @ 0x401343\n    match: create pipe @ 0x4011C0\n      or:\n        api: kernel32.CreatePipe @ 0x40126F, 0x401280\n    optional:\n      match: create thread @ 0x40136A, 0x4013BA\n        or:\n          and:\n            os: windows\n            or:\n              api: kernel32.CreateThread @ 0x4013D7\n        or:\n          and:\n            os: windows\n            or:\n              api: kernel32.CreateThread @ 0x401395\n    or:\n      string: \"cmd.exe\" @ 0x4012FD\n...\n```\n\ncapa also supports dynamic capabilities detection for multiple sandboxes including:\n* [CAPE](https://github.com/kevoreilly/CAPEv2) (supported report formats: `.json`, `.json_`, `.json.gz`)\n* [DRAKVUF](https://github.com/CERT-Polska/drakvuf-sandbox/) (supported report formats: `.log`, `.log.gz`)\n* [VMRay](https://www.vmray.com/) (supported report formats: analysis archive `.zip`)\n\n\nTo use this feature, submit your file to a supported sandbox and then download and run capa against the generated report file. This feature enables capa to match capabilities against dynamic and static features that the sandbox captured during execution.\n\nHere's an example of running capa against a packed file, and then running capa against the CAPE report generated for the same packed file:\n\n```yaml\n$ capa 05be49819139a3fdcdbddbdefd298398779521f3d68daa25275cc77508e42310.exe\nWARNING:capa.capabilities.common:--------------------------------------------------------------------------------\nWARNING:capa.capabilities.common: This sample appears to be packed.\nWARNING:capa.capabilities.common: \nWARNING:capa.capabilities.common: Packed samples have often been obfuscated to hide their logic.\nWARNING:capa.capabilities.common: capa cannot handle obfuscation well using static analysis. This means the results may be misleading or incomplete.\nWARNING:capa.capabilities.common: If possible, you should try to unpack this input file before analyzing it with capa.\nWARNING:capa.capabilities.common: Alternatively, run the sample in a supported sandbox and invoke capa against the report to obtain dynamic analysis results.\nWARNING:capa.capabilities.common: \nWARNING:capa.capabilities.common: Identified via rule: (internal) packer file limitation\nWARNING:capa.capabilities.common: \nWARNING:capa.capabilities.common: Use -v or -vv if you really want to see the capabilities identified by capa.\nWARNING:capa.capabilities.common:--------------------------------------------------------------------------------\n\n$ capa 05be49819139a3fdcdbddbdefd298398779521f3d68daa25275cc77508e42310.json\n\n┍━━━━━━━━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┑\n│ ATT\u0026CK Tactic          │ ATT\u0026CK Technique                                                                   │\n┝━━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┥\n│ CREDENTIAL ACCESS      │ Credentials from Password Stores T1555                                             │\n├────────────────────────┼────────────────────────────────────────────────────────────────────────────────────┤\n│ DEFENSE EVASION        │ File and Directory Permissions Modification T1222                                  │\n│                        │ Modify Registry T1112                                                              │\n│                        │ Obfuscated Files or Information T1027                                              │\n│                        │ Virtualization/Sandbox Evasion::User Activity Based Checks T1497.002               │\n├────────────────────────┼────────────────────────────────────────────────────────────────────────────────────┤\n│ DISCOVERY              │ Account Discovery T1087                                                            │\n│                        │ Application Window Discovery T1010                                                 │\n│                        │ File and Directory Discovery T1083                                                 │\n│                        │ Query Registry T1012                                                               │\n│                        │ System Information Discovery T1082                                                 │\n│                        │ System Location Discovery::System Language Discovery T1614.001                     │\n│                        │ System Owner/User Discovery T1033                                                  │\n├────────────────────────┼────────────────────────────────────────────────────────────────────────────────────┤\n│ EXECUTION              │ System Services::Service Execution T1569.002                                       │\n├────────────────────────┼────────────────────────────────────────────────────────────────────────────────────┤\n│ PERSISTENCE            │ Boot or Logon Autostart Execution::Registry Run Keys / Startup Folder T1547.001    │\n│                        │ Boot or Logon Autostart Execution::Winlogon Helper DLL T1547.004                   │\n│                        │ Create or Modify System Process::Windows Service T1543.003                         │\n┕━━━━━━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┙\n\n┍━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┑\n│ Capability                                           │ Namespace                                            │\n┝━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┥\n│ check for unmoving mouse cursor (3 matches)          │ anti-analysis/anti-vm/vm-detection                   │\n│ gather bitkinex information                          │ collection/file-managers                             │\n│ gather classicftp information                        │ collection/file-managers                             │\n│ gather filezilla information                         │ collection/file-managers                             │\n│ gather total-commander information                   │ collection/file-managers                             │\n│ gather ultrafxp information                          │ collection/file-managers                             │\n│ resolve DNS (23 matches)                             │ communication/dns                                    │\n│ initialize Winsock library (7 matches)               │ communication/socket                                 │\n│ act as TCP client (3 matches)                        │ communication/tcp/client                             │\n│ create new key via CryptAcquireContext               │ data-manipulation/encryption                         │\n│ encrypt or decrypt via WinCrypt                      │ data-manipulation/encryption                         │\n│ hash data via WinCrypt                               │ data-manipulation/hashing                            │\n│ initialize hashing via WinCrypt                      │ data-manipulation/hashing                            │\n│ hash data with MD5                                   │ data-manipulation/hashing/md5                        │\n│ generate random numbers via WinAPI                   │ data-manipulation/prng                               │\n│ extract resource via kernel32 functions (2 matches)  │ executable/resource                                  │\n│ interact with driver via control codes (2 matches)   │ host-interaction/driver                              │\n│ get Program Files directory (18 matches)             │ host-interaction/file-system                         │\n│ get common file path (575 matches)                   │ host-interaction/file-system                         │\n│ create directory (2 matches)                         │ host-interaction/file-system/create                  │\n│ delete file                                          │ host-interaction/file-system/delete                  │\n│ get file attributes (122 matches)                    │ host-interaction/file-system/meta                    │\n│ set file attributes (8 matches)                      │ host-interaction/file-system/meta                    │\n│ move file                                            │ host-interaction/file-system/move                    │\n│ find taskbar (3 matches)                             │ host-interaction/gui/taskbar/find                    │\n│ get keyboard layout (12 matches)                     │ host-interaction/hardware/keyboard                   │\n│ get disk size                                        │ host-interaction/hardware/storage                    │\n│ get hostname (4 matches)                             │ host-interaction/os/hostname                         │\n│ allocate or change RWX memory (3 matches)            │ host-interaction/process/inject                      │\n│ query or enumerate registry key (3 matches)          │ host-interaction/registry                            │\n│ query or enumerate registry value (8 matches)        │ host-interaction/registry                            │\n│ delete registry key                                  │ host-interaction/registry/delete                     │\n│ start service                                        │ host-interaction/service/start                       │\n│ get session user name                                │ host-interaction/session                             │\n│ persist via Run registry key                         │ persistence/registry/run                             │\n│ persist via Winlogon Helper DLL registry key         │ persistence/registry/winlogon-helper                 │\n│ persist via Windows service (2 matches)              │ persistence/service                                  │\n┕━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┙\n```\n\n# capa rules\ncapa uses a collection of rules to identify capabilities within a program.\nThese rules are easy to write, even for those new to reverse engineering.\nBy authoring rules, you can extend the capabilities that capa recognizes.\nIn some regards, capa rules are a mixture of the OpenIOC, Yara, and YAML formats.\n\nHere's an example rule used by capa:\n\n```yaml\nrule:\n  meta:\n    name: create TCP socket\n    namespace: communication/socket/tcp\n    authors:\n      - william.ballenthin@mandiant.com\n      - joakim@intezer.com\n      - anushka.virgaonkar@mandiant.com\n    scopes:\n      static: basic block\n      dynamic: call\n    mbc:\n      - Communication::Socket Communication::Create TCP Socket [C0001.011]\n    examples:\n      - Practical Malware Analysis Lab 01-01.dll_:0x10001010\n  features:\n    - or:\n      - and:\n        - number: 6 = IPPROTO_TCP\n        - number: 1 = SOCK_STREAM\n        - number: 2 = AF_INET\n        - or:\n          - api: ws2_32.socket\n          - api: ws2_32.WSASocket\n          - api: socket\n      - property/read: System.Net.Sockets.TcpClient::Client\n```\n\nThe [github.com/mandiant/capa-rules](https://github.com/mandiant/capa-rules) repository contains hundreds of standard rules that are distributed with capa.\nPlease learn to write rules and contribute new entries as you find interesting techniques in malware.\n\n# IDA Pro plugin: capa explorer\nIf you use IDA Pro, then you can use the [capa explorer](https://github.com/mandiant/capa/tree/master/capa/ida/plugin) plugin.\ncapa explorer helps you identify interesting areas of a program and build new capa rules using features extracted directly from your IDA Pro database.\nIt also uses your local changes to the .idb to extract better features, such as when you rename a global variable that contains a dynamically resolved API address.\n\n![capa + IDA Pro integration](https://github.com/mandiant/capa/blob/master/doc/img/explorer_expanded.png)\n\n# Ghidra integration\n\ncapa supports using Ghidra (via [PyGhidra](https://github.com/NationalSecurityAgency/ghidra/tree/master/Ghidra/Features/PyGhidra)) as a feature extraction backend. This allows you to run capa against binaries using Ghidra's analysis engine.\n\nYou can run and view capa results in the Ghidra UI using [capa explorer for Ghidra](https://github.com/mandiant/capa/tree/master/capa/ghidra/plugin).\n\n\u003cimg src=\"https://github.com/mandiant/capa/assets/66766340/eeae33f4-99d4-42dc-a5e8-4c1b8c661492\" width=300\u003e\n\nYou can also run capa from the command line using the [Ghidra backend](https://github.com/mandiant/capa/tree/master/capa/ghidra).\n\n# blog posts\n- [Riding Dragons: capa Harnesses Ghidra](https://www.mandiant.com/resources/blog/capa-harnesses-ghidra)\n- [Dynamic capa: Exploring Executable Run-Time Behavior with the CAPE Sandbox](https://www.mandiant.com/resources/blog/dynamic-capa-executable-behavior-cape-sandbox)\n- [capa v4: casting a wider .NET](https://www.mandiant.com/resources/blog/capa-v4-casting-wider-net) (.NET support)\n- [ELFant in the Room – capa v3](https://www.mandiant.com/resources/elfant-in-the-room-capa-v3) (ELF support)\n- [capa 2.0: Better, Stronger, Faster](https://www.mandiant.com/resources/capa-2-better-stronger-faster)\n- [capa: Automatically Identify Malware Capabilities](https://www.mandiant.com/resources/capa-automatically-identify-malware-capabilities)\n\n# further information\n## capa\n- [Installation](https://github.com/mandiant/capa/blob/master/doc/installation.md)\n- [Usage](https://github.com/mandiant/capa/blob/master/doc/usage.md)\n- [Limitations](https://github.com/mandiant/capa/blob/master/doc/limitations.md)\n- [Contributing Guide](https://github.com/mandiant/capa/blob/master/.github/CONTRIBUTING.md)\n\n## capa rules\n- [capa-rules repository](https://github.com/mandiant/capa-rules)\n- [capa-rules rule format](https://github.com/mandiant/capa-rules/blob/master/doc/format.md)\n\n## capa testfiles\nThe [capa-testfiles repository](https://github.com/mandiant/capa-testfiles) contains the data we use to test capa's code and rules\n\n## mailing list\nSubscribe to the FLARE mailing list for community announcements! Email \"subscribe\" to [flare-external@google.com](mailto:flare-external@google.com?subject=subscribe).\n","funding_links":[],"categories":["Point-of-use validations"],"sub_categories":["Vulnerability information exchange"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/mandiant.github.io%2Fcapa%2F","html_url":"https://awesome.ecosyste.ms/projects/mandiant.github.io%2Fcapa%2F","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/mandiant.github.io%2Fcapa%2F/lists"}