# Copyright (C) 2023 Mandiant, Inc. All Rights Reserved. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: [package root]/LICENSE.txt # Unless required by applicable law or agreed to in writing, software distributed under the License # is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and limitations under the License. [build-system] requires = ["setuptools", "setuptools-scm"] build-backend = "setuptools.build_meta" [project] name = "flare-capa" authors = [ {name = "Willi Ballenthin", email = "william.ballenthin@mandiant.com"}, {name = "Moritz Raabe", email = "moritz.raabe@mandiant.com"}, {name = "Mike Hunhoff", email = "michael.hunhoff@mandiant.com"}, ] description = "The FLARE team's open-source tool to identify capabilities in executable files." readme = {file = "README.md", content-type = "text/markdown"} license = {file = "LICENSE.txt"} requires-python = ">=3.8" keywords = ["malware analysis", "reverse engineering", "capability detection", "software behaviors", "capa", "FLARE"] classifiers = [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Programming Language :: Python :: 3", "Topic :: Security", ] dependencies = [ "tqdm==4.66.4", "pyyaml==6.0.1", "tabulate==0.9.0", "colorama==0.4.6", "termcolor==2.4.0", "wcwidth==0.2.13", "ida-settings==2.1.0", "viv-utils[flirt]==0.7.9", "networkx==3.1", "ruamel.yaml==0.18.6", "vivisect==1.1.1", "pefile==2023.2.7", "pyelftools==0.31", "dnfile==0.14.1", "dncil==1.0.2", "pydantic==2.7.1", "rich==13.4.2", "humanize==4.9.0", "protobuf==5.27.0", ] dynamic = ["version"] [tool.setuptools.dynamic] version = {attr = "capa.version.__version__"} [tool.setuptools.packages.find] include = ["capa*"] namespaces = false [project.optional-dependencies] dev = [ "pre-commit==3.5.0", "pytest==8.0.0", "pytest-sugar==1.0.0", "pytest-instafail==0.5.0", "pytest-cov==5.0.0", "flake8==7.0.0", "flake8-bugbear==24.4.26", "flake8-encodings==0.5.1", "flake8-comprehensions==3.14.0", "flake8-logging-format==0.9.0", "flake8-no-implicit-concat==0.3.5", "flake8-print==5.0.0", "flake8-todos==0.3.1", "flake8-simplify==0.21.0", "flake8-use-pathlib==0.3.0", "flake8-copyright==0.2.4", "ruff==0.4.5", "black==24.4.2", "isort==5.13.2", "mypy==1.10.0", "psutil==5.9.2", "stix2==3.0.1", "requests==2.31.0", "mypy-protobuf==3.6.0", # type stubs for mypy "types-backports==0.1.3", "types-colorama==0.4.15.11", "types-PyYAML==6.0.8", "types-tabulate==0.9.0.20240106", "types-termcolor==1.1.4", "types-psutil==5.8.23", "types_requests==2.32.0.20240523", "types-protobuf==5.26.0.20240422", "deptry==0.14" ] build = [ "pyinstaller==6.7.0", "setuptools==69.5.1", "build==1.2.1" ] [tool.deptry] extend_exclude = [ "sigs", "tests" ] # dependencies marked as first party, to inform deptry that they are local known_first_party = [ "backports", "binaryninja", "flirt", "ghidra", "ida_bytes", "ida_entry", "ida_funcs", "ida_kernwin", "ida_loader", "ida_nalt", "ida_segment", "idaapi", "idautils", "idc", "java", "netnode", "PyQt5" ] [tool.deptry.per_rule_ignores] # dependencies defined but not used in the codebase DEP002 = [ "black", "build", "deptry", "flake8", "flake8-bugbear", "flake8-comprehensions", "flake8-copyright", "flake8-encodings", "flake8-logging-format", "flake8-no-implicit-concat", "flake8-print", "flake8-simplify", "flake8-todos", "flake8-use-pathlib", "isort", "mypy", "mypy-protobuf", "pre-commit", "pyinstaller", "pytest", "pytest-cov", "pytest-instafail", "pytest-sugar", "ruff", "setuptools", "types-backports", "types-colorama", "types-protobuf", "types-psutil", "types-PyYAML", "types-tabulate", "types-termcolor", "types_requests", "wcwidth" ] # dependencies imported but missing from definitions DEP003 = [ "typing_extensions" # TODO(s-ff): remove when Python 3.9 is deprecated, see #1699 ] [project.urls] Homepage = "https://github.com/mandiant/capa" Repository = "https://github.com/mandiant/capa.git" Documentation = "https://github.com/mandiant/capa/tree/master/doc" Rules = "https://github.com/mandiant/capa-rules" "Rules Documentation" = "https://github.com/mandiant/capa-rules/tree/master/doc" [project.scripts] capa = "capa.main:main"