hett-patell/ShardFlow
GitHub: hett-patell/ShardFlow
ShardFlow 是一个基于 Go 的二层局域网工作台,通过 ARP 投毒实现设备发现、流量丢弃、带宽限速与抓包,并提供 TUI 和 CLI 双模式操作。
Stars: 1 | Forks: 0
# ShardFlow
[](https://github.com/hett-patell/ShardFlow/releases)
[](LICENSE)
[](#)
[](https://goreportcard.com/report/github.com/hett-patell/ShardFlow)
一个二层局域网工作台,专为那些想知道网络上究竟有谁、以及(可选地)让他们日子不好过的人而设计。
发现线路上的每一台设备。切断它们、限制它们、或悄无声息地记录它们发送的一切。专为红队实验室、伦理课演示、以及那些楼上邻居发现半夜可以用 Twitch 直播的人而构建。
## 它能做什么
| 能力 | 实际效果 |
|---|---|
| **发现** | 主动 ARP 扫描 + 被动嗅探 + mDNS + SSDP + OUI 厂商查询。发现所有设备,包括那些偷偷摸摸的。 |
| **丢弃** | 切断设备与网关的连接。他们会花20分钟拔插路由器,最后才会怪到 ISP 头上。 |
| **限速** | 将目标设备的带宽限制为你选择的任何速率。`200kbit` 足够加载 Gmail。总有一天。在运气好的时候。 |
| **抓包** | 悄悄地将其流量捕获到轮转的 `.pcapng` 文件中。用 Wireshark 打开它,感受一下电影里的黑客。 |
| **TUI 仪表板** | 完整的终端 UI。扫描网络、选择目标、应用策略、观察混乱上演——全程不用离开座位。 |
| **可调 ARP 投毒** | 默认为 1 Hz × 4 帧/周期,适用于大多数设备。现代 iPhone 和加固的 Android 内核自认为高不可攀,因此你可以将节奏调到 `50ms`(约80帧/秒)来跟上。当你清除策略时,修复性洪泛会在约3秒内发送90+ ARP 帧以撤销破坏。量很大,但有效。 |
底层:**nftables** 用于丢弃,**tc + IFB** 用于限速,**libpcap** 用于抓包,**AF_PACKET ARP 投毒**用于让局域网相信你的机器就是网关。两个二进制文件,一个 Unix 套接字,JSON-RPC 2.0。无需认证——你已经 root,你已经义无反顾。
完整设计文档在 `docs/superpowers/specs/2026-05-06-shardflow-design.md`,如果你想了解幕后细节的话。
## 快速开始
需要 Linux、root 权限和基本的责任感。还需要这些:
```
sudo apt install -y libpcap-dev nftables iproute2 iputils-ping
```
构建:
```
make build
```
简单的方法。一条命令。无需参数、无需选择接口、无需像 2003 年一样打开两个终端:
```
sudo ./scripts/shardflow-up
```
自动检测默认接口、启动守护进程、打开 TUI。当你退出时,它会发送修复性 ARP,让每台设备恢复网络。你是个怪物,但体贴。
进入后的快捷键:`s` 扫描,`j/k` 移动,`d`/`t`/`p`/`x` 应用或清除策略,`q` 退出并去摸摸草。
需要指定接口、套接字路径或为那些自以为聪明的手机更快的节奏:
```
sudo ./scripts/shardflow-up -i wlp3s0 -s /tmp/sf.sock -c 50ms
```
`-c 50ms` 每秒每目标发送约80个 ARP 帧。适用于 iOS 16+、加固的 Android 或任何内核刷新 ARP 缓存速度超过你投毒速度的设备。
### 手动方式
当你想感觉更有掌控力,或者你正在将其整合进 systemd 并需要假装它是生产基础设施时:
```
# 终端 1: daemon
sudo ./bin/shardflowd -i wlp3s0 -sock /tmp/sf.sock --force --clean-on-start
# 终端 2: TUI
sudo ./bin/shardflow --sock /tmp/sf.sock tui
```
## 快捷键
```
j / k move cursor
s trigger LAN scan
d ⊘ DROP — cut this device's traffic
t ◐ THROTTLE — rate-limit (default 200kbit)
p ◉ PCAP — start passive capture
x clear policy (sends corrective ARP)
q quit
```
## 识别谁是谁
TUI 显示 IP、MAC、**厂商**(IEEE OUI 数据库,约3.9万条)、**主机名**(如果设备使用 mDNS 或 SSDP)以及当前策略:
```
192.168.1.10 e4:0d:36:92:84:57 Intel Corporate het-laptop.local
192.168.1.42 aa:bb:cc:dd:ee:ff Apple, Inc. Hets-iPhone.local
192.168.1.50 08:63:32:60:3f:63 IEEE Reg. Authority —
192.168.1.99 46:05:df:dd:31:89 — —
```
没有显示厂商?它正在使用随机化的隐私 MAC(`02:*` / `06:*` / `0A:*` / `0E:*` / `42:*` / `46:*`)。现代 iOS 和 Android 默认这样做。厂商确实无法解析——工具没坏,只是手机太 paranoid。
没有主机名?它没有广播 Bonjour 或 UPnP。大多数智能家居设备完全静默。你的智能冰箱比你的笔记本电脑有更好的隐私习惯。
## 命令行界面
不是 TUI 爱好者?所有操作都可以从命令行完成:
```
shardflow --sock /tmp/sf.sock scan
shardflow --sock /tmp/sf.sock devices list # add --json for jq fans
shardflow --sock /tmp/sf.sock policy set 192.168.1.42 drop
shardflow --sock /tmp/sf.sock policy set 192.168.1.42 throttle 200kbit
shardflow --sock /tmp/sf.sock policy set 192.168.1.42 pcap --pcap-dir /tmp/sf-pcap
shardflow --sock /tmp/sf.sock policy clear 192.168.1.42
shardflow --sock /tmp/sf.sock policy list
shardflow --sock /tmp/sf.sock session # iface, gw, wifi assoc, scan stats
shardflow --sock /tmp/sf.sock stats # --json supported
shardflow --version # also works on shardflowd
```
## 架构
`shardflowd`(守护进程,root,拥有所有内核状态)通过 Unix 套接字使用 JSON-RPC 2.0 和双向事件与 `shardflow`(CLI / TUI 客户端,也是 root,别无选择)通信。
守护进程内有八个组件:**devicestore**(MAC 键值映射)、**scan**(主动 ARP + + mDNS + SSDP)、**arpengine**(投毒器)、**nftmgr**(丢弃规则)、**tcmgr**(通过 tc-flower + HTB + IFB 进行限速/镜像)、**pcapwriter**(轮转 pcap-ng)、**policycompiler**(将“丢弃10.0.99.42”转换成正确的 nft + tc + arp 调用序列而不引起火灾的部分)、**rpc**(通信线路)。
源代码在 `internal/` 目录。可读性还行。大概吧。
## 测试
17个单元测试包,全部竞态安全:
```
make test # or: go test ./...
go test -race ./... # if you want the race detector to chew on it
```
4个网络命名空间中的集成测试——丢弃、限速、抓包和恢复端到端测试。需要 root,因为它们会创建实际的 netns 并调用 nft / tc:
```
make test-int # equivalent: sudo go test -tags=integration -v ./test/...
```
## 本地扫描沙箱
没有现成的局域网?启动一个 Linux 桥接,带有 N 个自动回复 ARP 的虚拟 netns 主机。可以安全地进行限速/丢弃/投毒,而不会打扰任何真实设备:
```
sudo make lab-up COUNT=16
sudo ./scripts/shardflow-up -i sf-lab0
# 在 TUI 中按 q 退出
sudo make lab-down
```
## OUI 数据库刷新
IEEE 列表在不断增长。当感觉过时了就拉取一份新的:
```
go generate ./internal/oui/...
git add internal/oui/data/oui.txt
git commit -m "chore: refresh OUI db"
```
## 值得了解的局限性
**它并不隐蔽。** ARP 投毒是吵闹的。任何稍有水平的 IDS 都会立即记录它。如果你需要隐蔽,这是错误的工具。
**仅限二层。** 你必须与目标处于同一广播域。不能通过互联网工作,这或许是最好的。
**粗心大意会搞坏东西。** 在你根本不了解的网络上运行它,你会同时搞乱所有设备。先在网络命名空间中练习——`test/netns/setup.sh` 会为你设置一个。只需30秒,能省去一次非常尴尬的对话。
玩得开心。别做坏事。带上零食。
## 许可证
MIT - 参见 [LICENSE](LICENSE)。
## Shard 生态系统
| 仓库 | 功能 |
|---|---|
| [ShardLure](https://github.com/hett-patell/ShardLure) | SSH 蜜罐 + 威胁情报仪表板 |
| [ShardC2](https://github.com/hett-patell/ShardC2) | Go 编写的红队 C2 框架 |
| [ShardFlow](https://github.com/hett-patell/ShardFlow) | 二层局域网工作台 (ARP, 丢弃, 限速) |
| [ShardShell](https://github.com/hett-patell/ShardShell) | PHP 后利用 shell |
| [ShardPass](https://github.com/hett-patell/ShardPass) | 最小化 TOTP 认证器 (Chrome MV3) |
| [ShardPet](https://github.com/hett-patell/ShardPet) | 像素宝可梦浏览器扩展 |
标签:ARP欺骗, EVTX分析, Go语言, MacOS取证, Maven构建, TUI终端, 丢包, 中间人攻击, 二进制发布, 局域网管理, 开源工具, 情报分析, 授权实验室, 日志审计, 流量控制, 程序破解, 第二层攻击, 网络发现, 网络嗅探, 网络诊断, 防御绕过, 限速