# Forensics

> 文件取证 — 魔数识别、strings 提取、gzip 日志解压，全部 Go 原生无需 file/strings/zcat

- Skill: `asaotomo/forensics` (Agent Skill)
- Install (CLI): `npx skillmds@latest add asaotomo/forensics`
- Raw SKILL.md: https://api.skillmd.com/api/skills/asaotomo/forensics/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: Apache-2.0
- Author: asaotomo (https://skillmd.com/u/asaotomo)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/asaotomo/forensics

---


# 文件取证 Skill

## 何时使用

- 分析可疑二进制、Webshell、恶意样本
- 读取 `.gz` 压缩日志（auth.log、nginx access.log 等）
- 目标系统无 `file`、`strings`、`zcat`、`gunzip` 命令

## 工具选用

| 场景 | 工具 | 示例 |
|------|------|------|
| 文件是什么类型 | `file_ident` | `{"tool_name":"file_ident","tool_args":{"path":"/tmp/suspicious"}}` |
| 提取硬编码字符串/IP/URL | `file_strings` | `{"tool_name":"file_strings","tool_args":{"path":"/var/www/x.php","pattern":"eval\|base64"}}` |
| 读 gzip 日志 | `read_gzip` | `{"tool_name":"read_gzip","tool_args":{"path":"/var/log/auth.log.1.gz","lines":"100"}}` |
| 不确定是否 gzip | `read_log` | `{"tool_name":"read_log","tool_args":{"path":"/var/log/syslog","pattern":"Failed"}}` |
| 文件哈希 | `file_hash` | `{"tool_name":"file_hash","tool_args":{"path":"/bin/busybox"}}` |

## 推荐流程

1. `file_ident` — 确认文件类型（ELF/PHP/GZIP/文本）
2. 若为 gzip 日志 → `read_log` 或 `read_gzip` + pattern 过滤
3. 若为二进制/可疑脚本 → `file_strings` + pattern
4. `file_hash` — 留存 IOC

## 限制

- 单文件读取上限 5MB（压缩），解压上限 20MB
- strings 扫描上限 2MB
- 禁止读取 config.yaml / reports/ 等受保护路径

