[package]
name = "pyrograph"
version = "0.1.0"
edition = "2021"
rust-version = "1.85"
description = "GPU-accelerated taint analysis for supply chain malware detection"
keywords = ["taint-analysis", "gpu", "malware", "supply-chain", "security"]
categories = ["algorithms", "development-tools"]
license = "MIT"
repository = "https://github.com/santhsecurity/Santh"
readme = "README.md"
[workspace]
[dependencies]
wgpu = { version = "0.19", optional = true }
bytemuck = { version = "1.15", features = ["derive"], optional = true }
thiserror = "1.0"
tracing = "0.1"
serde = { version = "=1.0.219", features = ["derive"] }
serde_json = "1.0"
toml = "0.8"
swc_ecma_parser = { version = "0.152", optional = true }
swc_ecma_ast = { version = "0.121", optional = true }
swc_common = { version = "0.40", optional = true }
swc_ecma_visit = { version = "0.107", optional = true }
syn = { version = "2.0", features = ["full", "visit"], optional = true }
tree-sitter = { version = "0.25", optional = true }
tree-sitter-go = { version = "0.25", optional = true }
rustpython-parser = { version = "0.4.0", optional = true }
[dev-dependencies]
tempfile = "3.10"
proptest = "1.4"
tokio = { version = "1", features = ["full"] }
[features]
default = ["gpu"]
gpu = ["dep:wgpu", "dep:bytemuck"]
js = ["dep:swc_ecma_parser", "dep:swc_ecma_ast", "dep:swc_common", "dep:swc_ecma_visit"]
rust-lang = ["dep:syn"]
go = ["dep:tree-sitter", "dep:tree-sitter-go"]
python = ["dep:rustpython-parser"]
[[test]]
name = "express_fp"
path = "tests/js/fp/express.rs"
required-features = ["js"]
[[test]]
name = "js_malware_obfuscation_heavy"
path = "tests/js/malware/obfuscation_heavy.rs"
required-features = ["js"]
[[test]]
name = "unit_advanced_dataflow"
path = "tests/unit/advanced_dataflow.rs"
[[test]]
name = "unit_false_positives"
path = "tests/unit/false_positives.rs"
[[test]]
name = "unit_fp_infrastructure"
path = "tests/unit/fp_infrastructure.rs"
[[test]]
name = "unit_fp_popular_packages"
path = "tests/unit/fp_popular_packages.rs"
[[test]]
name = "unit_go_detection"
path = "tests/unit/go_detection.rs"
[[test]]
name = "unit_go_fp_legitimate"
path = "tests/unit/go_fp_legitimate.rs"
[[test]]
name = "unit_go_malware"
path = "tests/unit/go_malware.rs"
[[test]]
name = "unit_js_fp_crossenv"
path = "tests/unit/js_fp_crossenv.rs"
[[test]]
name = "unit_js_tests"
path = "tests/unit/js_tests.rs"
[[test]]
name = "unit_print_graph"
path = "tests/unit/print_graph.rs"
[[test]]
name = "unit_print_graph2"
path = "tests/unit/print_graph2.rs"
[[test]]
name = "unit_python_deep_improvement"
path = "tests/unit/python_deep_improvement.rs"
[[test]]
name = "unit_python_detection"
path = "tests/unit/python_detection.rs"
[[test]]
name = "unit_python_pypi_2024"
path = "tests/unit/python_pypi_2024.rs"
[[test]]
name = "unit_python_tests"
path = "tests/unit/python_tests.rs"
[[test]]
name = "unit_rust_advanced"
path = "tests/unit/rust_advanced.rs"
[[test]]
name = "unit_rust_chains"
path = "tests/unit/rust_chains.rs"
[[test]]
name = "unit_rust_comprehensive"
path = "tests/unit/rust_comprehensive.rs"
[[test]]
name = "unit_test_rust_parser"
path = "tests/unit/test_rust_parser.rs"
[[test]]
name = "unit_unit"
path = "tests/unit/unit.rs"
[[test]]
name = "adversarial_adversarial"
path = "tests/adversarial/adversarial.rs"
[[test]]
name = "adversarial_js_vuln_ssrf"
path = "tests/adversarial/js_vuln_ssrf.rs"
[[test]]
name = "adversarial_malware"
path = "tests/adversarial/malware.rs"
[[test]]
name = "adversarial_malware_supply_chain"
path = "tests/adversarial/malware_supply_chain.rs"
[[test]]
name = "adversarial_malware_wave3"
path = "tests/adversarial/malware_wave3.rs"
[[test]]
name = "adversarial_python_malware"
path = "tests/adversarial/python_malware.rs"
[[test]]
name = "adversarial_python_setup_attacks"
path = "tests/adversarial/python_setup_attacks.rs"
[[test]]
name = "adversarial_razor_edge"
path = "tests/adversarial/razor_edge.rs"
[[test]]
name = "adversarial_rust_malware"
path = "tests/adversarial/rust_malware.rs"
[[test]]
name = "adversarial_rust_malware_proc"
path = "tests/adversarial/rust_malware_proc.rs"
[[test]]
name = "adversarial_taint_evasion"
path = "tests/adversarial/taint_evasion.rs"
[[test]]
name = "adversarial_test_obfusc"
path = "tests/adversarial/test_obfusc.rs"
[[test]]
name = "adversarial_test_obfusc2"
path = "tests/adversarial/test_obfusc2.rs"
[[test]]
name = "integration_integration"
path = "tests/integration/integration.rs"
[[test]]
name = "integration_real_incidents"
path = "tests/integration/real_incidents.rs"
[[test]]
name = "property_proptest"
path = "tests/property/proptest.rs"
[[test]]
name = "js_corpus_tests"
path = "tests/corpus/js_corpus_tests.rs"