Chinese version: README_zh-CN.md
CADScanner is a Go-based static analyzer for AutoLISP, FAS, and VLX files. This repository contains the project codebase used for CAD automation security analysis, with a focus on the core analysis pipeline and reproducible command-line workflows.
CADScanner is a security-focused analysis tool for CAD automation scripts and packaged extensions. It parses AutoLISP-family inputs, normalizes syntax across source and compiled formats, lifts program behavior into an intermediate representation, and detects suspicious capabilities such as file access, command execution, persistence logic, and obfuscation patterns. The project is designed for malware triage, rule-based inspection, and research workflows that need explainable results from a local CLI.
- Parse and normalize AutoLISP-family inputs
- Build a security-oriented IR with lifted effects
- Detect suspicious behaviors and map them to ATT&CK-style techniques
- Produce text or JSON analysis output from a single CLI
cadscanner/
|- main.go
|- configs/
|- cmd/
|- pkg/
|- examples/
|- README.md
`- README_zh-CN.md
go build .go test ./...cadscanner examples/benign.lsp
cadscanner -format json examples/suspicious.lsp
cadscanner -config config.yaml examples/benign.lsp
go run ./cmd/inspect examples/suspicious.lsp
go run ./cmd/batcheval -root examples -format humancadscanner: main analyzer CLI for.lsp,.fas, and.vlxbatcheval: batch evaluation over a sample directorydecompile: decompile.fasand.vlxinputs into pseudo-LISP outputinspect: single-sample inspection command for effects, rule hits, and ATT&CK outputfasresources: inspect extracted FAS resource tablesvlxdiag: inspect VLX record structure and recovered metadata
paperexp: paper-oriented replay and calibration workflow over a benchmark setapisufficiency: API masking robustness experiment for recovered FAS/VLX representationsrecoveryval: recovery validation against paired source/compiled expectationsllmmetrics: LLM cache and fusion evaluation; requires an LLM-enabled config
These commands are kept for reproducibility and evaluation, but they are not the primary user-facing CLI surface.
Start from configs/config.example.yaml when preparing a local configuration. For optional LLM-assisted analysis, keep credentials in environment variables rather than hardcoding secrets into a tracked file.
The project provides a public command set for analysis and format inspection, along with a separate group of research commands for paper reproduction and evaluation workflows.
GNU Affero General Public License v3.0 (AGPL-3.0)