G-ojies/ChainSentry
GitHub: G-ojies/ChainSentry
一款基于 BlockCypher API 的比特币区块链取证工具,用于追溯资金流动路径。
Stars: 0 | Forks: 0
# ChainSentry 🔍
**比特币钱包取证工具** — 使用免费的 [BlockCypher](https://www.blockcypher.com) 公共 API 追溯最多 N 层的资金流向。无需 API 密钥。
## 功能
| 功能 | 详情 |
|---|---|
| 余额与历史 | 获取已确认余额、总收入/总支出、交易列表 |
| 资金流追踪 | 递归追踪输出地址,最深可达 `--hops` 层 |
| 循环预防 | 全局已访问集合确保每个地址仅获取一次 |
| 易读报告 | 带颜色编码、缩进的交易树及跳数层级摘要 |
| 限流安全 | 请求之间内置 400 毫秒延迟(免费层:约 3 请求/秒) |
## 要求
- Python 3.11+
- `requests` 库
```
pip install requests
```
## 用法
```
python chainsentry.py [--hops N]
```
| 参数 | 默认值 | 描述 |
|---|---|---|
| `address` | — | 种子比特币钱包地址 |
| `--hops N` | 3 | 最大递归深度(0 = 仅种子地址) |
### 示例
```
# 追溯创世区块地址,3 跳(默认)
python chainsentry.py 1A1zP1eP5QGefi2DMPTfTL5SLmv7Divf1V
# 仅追溯 1 跳深度
python chainsentry.py 1A1zP1eP5QGefi2DMPTfTL5SLmv7Divf1V --hops 1
# 仅种子地址(无递归)
python chainsentry.py 1A1zP1eP5QGefi2DMPTfTL5SLmv7Divf1V --hops 0
```
## 架构
```
chainsentry.py
│
├── BlockCypherClient # API layer — HTTP + rate-limiting
│ ├── fetch_address() # GET /addrs/{addr}/full
│ └── fetch_transaction() # GET /txs/{txid}
│
├── Parsing layer # Raw dict → typed dataclasses
│ ├── parse_tx_output()
│ ├── parse_transaction()
│ └── parse_wallet_info()
│
├── Forensics core
│ ├── collect_output_addresses() # Identify fund destinations
│ └── trace_funds() # Recursive DFS with visited set
│
└── Reporting layer # Colour-coded terminal output
├── print_header()
├── print_wallet_summary()
├── print_tree()
└── print_summary_stats()
```
## 速率限制
BlockCypher 的免费层级大约允许 **每秒 3 个请求** 而无需 API 令牌。ChainSentry 默认在每次调用之间休眠 400 毫秒(`RATE_DELAY` 常量)。对活跃钱包的深度追踪可能需要几分钟。你可以注册一个免费的 BlockCypher 令牌并将其作为查询参数(`?token=`)添加到 `BlockCypherClient._get()` 中以提高限制。
## 免责声明
ChainSentry 是一个研究与教育工具。所有数据均来自公共比特币区块链并通过 BlockCypher 的 API 提供。请勿将此工具用于任何违反适用法律的活动。
标签:BlockCypher, T1580, 二进制发布, 交易可视化, 区块链取证, 开源工具, 循环检测, 数字货币调查, 数据解析, 比特币分析, 深度优先搜索, 资金流分析, 逆向工具, 递归遍历, 钱包取证, 链上追踪