hett-patell/ShardFlow

GitHub: hett-patell/ShardFlow

ShardFlow 是一个基于 Go 的二层局域网工作台,通过 ARP 投毒实现设备发现、流量丢弃、带宽限速与抓包,并提供 TUI 和 CLI 双模式操作。

Stars: 1 | Forks: 0

ShardFlow

# ShardFlow [![发布](https://img.shields.io/github/v/release/hett-patell/ShardFlow?color=blue)](https://github.com/hett-patell/ShardFlow/releases) [![许可证: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![仅限授权使用](https://img.shields.io/badge/Use-Authorized%20Lab%20Only-red.svg)](#) [![Go Report Card](https://goreportcard.com/badge/github.com/hett-patell/ShardFlow)](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终端, 丢包, 中间人攻击, 二进制发布, 局域网管理, 开源工具, 情报分析, 授权实验室, 日志审计, 流量控制, 程序破解, 第二层攻击, 网络发现, 网络嗅探, 网络诊断, 防御绕过, 限速