[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-1219":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":20,"hasPages":20,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":38,"readmeContent":39,"aiSummary":40,"trendingCount":15,"starSnapshotCount":15,"syncStatus":16,"lastSyncTime":41,"discoverSource":42},1219,"AutoProber","GainSec\u002FAutoProber","GainSec","Hardware hacker’s flying probe automation stack for agent-driven   target discovery, microscope mapping, safety-monitored CNC motion, probe review, and   controlled pin probing.","https:\u002F\u002Fgainsec.com",null,"Python",304,19,1,0,2,5,3.9,"Other",false,"main",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"ai-agents","autromation","embedded-security","flying-probe","gainsec","hardware-hacking","hardware-security","iot-security","offensive-security","pcb","pcb-probing","penetration-testing","reverse-engineering","robotics","security-research","2026-06-12 02:00:24","# AutoProber\n\nAutoProber is the hardware hacker's flying probe automation stack for giving\nyour agent everything it needs to go from \"there's a new target on the plate\"\nto probing individual pins in a safe way.\n\n![AutoProber assembly](docs\u002Fimages\u002Fautoprober-assembly-2.jpg)\n\nDemo video: https:\u002F\u002Fgainsec.com\u002Fautoprober-demo-mp4\u002F\n\n## Flow\n\n1. Tell the agent to ingest the project.\n2. Connect all the hardware.\n3. Tell the agent to confirm that all parts are functioning.\n\n![Top of the AutoProber web dashboard](docs\u002Fimages\u002FPublic-Release-Images\u002FTopofWebDash.png)\n\n4. Have it run homing and then calibration.\n5. Attach the custom probe and microscope header.\n6. Tell the agent that there is a new target on the plate.\n7. It will find where the target is on the plate, then take individual frames,\n   keeping a record of the XYZ while noting pads, pins, chips, and other\n   interesting features.\n\n![Detected labels and target features](docs\u002Fimages\u002FPublic-Release-Images\u002Flabels.png)\n\n8. It will stitch the frames together and annotate the map, including pins and\n   interesting components it identified.\n\n![Annotated map view](docs\u002Fimages\u002FPublic-Release-Images\u002Fmapview.png)\n\n9. It will add probe targets to the web dashboard for you to approve or deny.\n\n![Probe review dashboard section](docs\u002Fimages\u002FPublic-Release-Images\u002Fbottomdash.png)\n\n10. It will probe the approved targets and report back.\n\nAll hardware can be controlled through the web dashboard, Python scripts, or by\nthe agent itself.\n\n![Manual controls and hardware panels](docs\u002Fimages\u002FPublic-Release-Images\u002FMidofDash1.png)\n\nThis repo is a self-contained source-available release candidate. It contains\nthe Python control code, dashboard, CAD files, and documentation needed to\ncreate your own AutoProber.\n\n## Safety Model\n\nThis project can move physical hardware. Treat it as a machine-control system,\nnot a normal web app.\n\nThe required safety design is:\n\n- GRBL `Pn:P` is ignored. The CNC probe pin is not a trusted endstop.\n- The independent safety endstop is read from oscilloscope Channel 4.\n- Channel 4 must be continuously monitored during any motion.\n- Any Channel 4 trigger, ambiguous voltage, CNC alarm, or real X\u002FY\u002FZ limit pin\n  is a stop condition.\n- The agent\u002Foperator must stop and report. Recovery motion is not automatic.\n\nRead [docs\u002Fsafety.md](docs\u002Fsafety.md) and [docs\u002Foperations.md](docs\u002Foperations.md)\nbefore running hardware.\n\n## Repository Layout\n\n```text\napps\u002F                 Operator-facing scripts and Flask dashboard entrypoint\nautoprober\u002F           Reusable Python package for CNC, scope, microscope, logging, safety\ndashboard\u002F            Single-page web dashboard\ndocs\u002F                 Architecture, device references, operations, and safety guidance\ncad\u002F                  Printable STL files for the current custom toolhead\nconfig\u002F               Example environment\u002Fconfiguration files\nAGENTS.md             Agent\u002Foperator safety rules\nLICENSE               PolyForm Noncommercial 1.0.0 license and commercial contact\npyproject.toml        Python project metadata\nuv.lock               Locked Python dependency resolution\n```\n\n## Hardware Stack\n\nThe tested project architecture uses:\n\n- GRBL-compatible 3018-style CNC controller over USB serial\n- USB microscope served by `mjpg_streamer`\n- Siglent oscilloscope over LAN\u002FSCPI for Channel 4 safety monitoring and\n  Channel 1 measurement\n- Optical endstop wired to an external 5V supply and oscilloscope Channel 4\n- Optional network-controlled outlet for lab power control\n- Current printable custom toolhead parts in `cad\u002F`\n\nDefault runtime assumptions are documented in the device docs. Replace them\nwith your own lab settings before use.\n\nFor a shopping-oriented hardware list, see [docs\u002FBOM.md](docs\u002FBOM.md).\n\n## Reference Parts\n\nThese are the specific parts or part classes used for the prototype release.\nVerify current listings, dimensions, voltage, and connector compatibility\nbefore buying.\n\nMy build:\n\n- [Optical End Stop](https:\u002F\u002Fwww.amazon.com\u002Fdp\u002FB08977QFK5)\n- [USB Microscope](https:\u002F\u002Fwww.amazon.com\u002Fdp\u002FB00XNYXQHE)\n- [SainSmart Genmitsu 3018-PROVer V2](https:\u002F\u002Fwww.amazon.com\u002Fdp\u002FB07ZFD6SKP)\n- [Matter Smart Power Strip](https:\u002F\u002Fwww.amazon.com\u002Fdp\u002FB0DYDFKJJJ), individually controlled AC outlets with 2 USB-A and 2 USB-C ports\n- [Siglent SDS1104X-E Oscilloscope](https:\u002F\u002Fwww.amazon.com\u002FSiglent-SDS1104X-oscilloscope-channels-standard\u002Fdp\u002FB0771N1ZF9)\n- Dupont wires\n- Pen spring or similar light compression spring\n- 3D printer for the printable toolhead parts in `cad\u002F`\n\nOptional \u002F interchangeable:\n\n- [Universal Oscilloscope Probes](https:\u002F\u002Fwww.amazon.com\u002Fdp\u002FB0827JL1T2)\n- USB power brick, 5V\n- USB 2.0 pigtail cable\n\n## Hardware Architecture\n\n```mermaid\nflowchart LR\n    Operator[Operator] --> Dashboard[Web Dashboard]\n    Dashboard --> Apps[Python Apps]\n    Apps --> CNC[GRBL CNC over USB serial]\n    Apps --> Microscope[USB Microscope via mjpg-streamer]\n    Apps --> Scope[Oscilloscope over LAN \u002F SCPI]\n    Apps --> Outlet[Optional LAN Power Outlet]\n\n    Endstop[Optical Endstop] --> ScopeC4[Scope C4 Safety Voltage]\n    Pogo[Pogo Measurement] --> ScopeC1[Scope C1 Measurement]\n    ScopeC4 --> Apps\n    ScopeC1 --> Apps\n```\n\n## Runtime Architecture\n\n```mermaid\nflowchart TD\n    Preflight[Preflight] --> SafetyCheck{Channel 4 clear?}\n    SafetyCheck -- no --> Stop[STOP State]\n    SafetyCheck -- yes --> Motion[Monitored Motion]\n    Motion --> Monitor[EndstopMonitor thread >= 10 Hz]\n    Monitor --> C4{C4 clear?}\n    C4 -- yes --> Capture[Microscope Capture]\n    C4 -- no --> FeedHold[Immediate feed hold]\n    FeedHold --> Stop\n    Capture --> Stitch[Stitch \u002F Map]\n    Stitch --> Review[Manual Probe Review]\n    Review --> Approved{Approved target and measured probe offset?}\n    Approved -- no --> Stop\n    Approved -- yes --> Probe[Bounded probe motion]\n```\n\n## STOP State\n\n```mermaid\nstateDiagram-v2\n    [*] --> Running\n    Running --> STOP: C4 triggered \u002F C4 fault \u002F CNC alarm \u002F real limit pin\n    STOP --> Report: log voltage, status, action\n    Report --> WaitForOperator: no automatic recovery motion\n    WaitForOperator --> Running: operator explicitly clears condition\n```\n\n## Quick Start\n\nInstall dependencies:\n\n```bash\nuv sync\n```\n\nStart the dashboard on a configured hardware host:\n\n```bash\nPYTHONPATH=. python3 apps\u002Fdashboard.py\n```\n\nThe dashboard defaults to port `5000`.\n\n## Configuration\n\nStart from [config\u002Fautoprober.example.env](config\u002Fautoprober.example.env). Do\nnot publish lab-specific IPs, hostnames, credentials, calibration files, or\ncaptured target images unless you intend to release them.\n\nImportant runtime values are configurable:\n\n- `AUTOPROBER_LOG_PATH`: runtime log path\n- `AUTOPROBER_RUNTIME_ROOT`: calibration, flat-field, and runtime state directory\n- `AUTOPROBER_MICROSCOPE_SNAPSHOT_URL`: microscope snapshot endpoint\n- `AUTOPROBER_SCOPE_HOST` \u002F `AUTOPROBER_SCOPE_PORT`: oscilloscope SCPI endpoint\n- Dashboard: Flask on port `5000`\n\nDo not commit local environment files that contain lab-specific hosts, paths,\nor target data.\n\n## Main Workflows\n\n1. Run preflight checks.\n2. Verify Channel 4 is clear.\n3. Home and calibrate only when the physical setup is ready.\n4. Capture microscope frames with monitored motion.\n5. Import or generate target map artifacts for review.\n6. Approve probe candidates manually.\n7. Execute any probe motion only after microscope-to-probe offset is measured\n   and stored.\n\n## What Is Excluded\n\nThis release candidate intentionally excludes:\n\n- Trial microscope captures and stitched target images\n- Uploaded reference images\n- Local backups and archives\n- `.venv`, `__pycache__`, Playwright artifacts\n- Runtime logs, calibration cache, flat-field images\n- Machine-specific SSH\u002Fdeploy state\n\nSee [RELEASE_MANIFEST.md](RELEASE_MANIFEST.md) for details.\n\n## License\n\nThis project is source-available under the PolyForm Noncommercial License 1.0.0.\n\nYou may use, modify, and share this project for noncommercial purposes.\n\nCommercial use requires a separate paid commercial license.\n\nFor commercial licensing, contact: autoprober@gainsecmail.com\n\n## Current Limitations\n\n- The microscope-to-pogo XY offset must be measured before real probing.\n- Calibration must not be fabricated; the runtime calibration file should be\n  generated on the machine that will move.\n- The dashboard is a lab-control tool and should not be exposed to untrusted\n  networks.\n\n## Responsible Use\n\nThis project is intended for controlled lab work on equipment and targets you\nare authorized to test. Do not use it to probe, damage, or analyze systems\nwithout permission.\n\n## Authors\n\n[Jon 'GainSec' Gaines](https:\u002F\u002Fgainsec.com\u002F)\n","AutoProber 是一套专为硬件黑客设计的飞针自动化测试栈，旨在通过代理驱动的目标发现、显微镜映射、安全监控下的CNC运动、探针审查和受控引脚探测等功能，实现从目标识别到单个引脚测试的全流程自动化。项目采用Python开发，核心功能包括自动化的电路板特征识别与标注、基于Web的控制面板以及详尽的安全监控机制。适用于需要进行硬件安全研究、逆向工程、渗透测试等场景，尤其是对嵌入式系统或物联网设备进行深入分析时。","2026-06-11 02:42:22","CREATED_QUERY"]