随手 vibe 了一个在 Linux 上面基于 eBPF 对 USB 流量进行抓包的工具

9 月 24 日
 swananan

https://github.com/swananan/usbscope

非常窄的一个场景,正常 tcpdump 去抓 USB 流量需要 Linux 开启 USB_MON 相关配置(开起来有一点点小麻烦,对于线上环境更是如此)。

于是就想到了 eBPF ,顺手让 codex 整了一个,个人觉得完成度还算挺高的( AI 太吊了),当然也是重置卡用不完了😂。

里面可能有意思的技术点,就是用了 aya ,也就是用 Rust 来编写这个工具,包括 eBPF 代码。当然由于 Rust 编译器暂时还不支持 eBPF 的 CO-RE 特性,所以是把需要 CO-RE 的地方,都是用 C 包装了一下,然后 Rust 混合 c shims 来链接生成 eBPF 字节码的。

1374 次点击
所在节点    程序员
2 条回复
dummyx
9 月 24 日
最近也在做流量录制回放的类似工具,之前在了解 aya 的时候 ebpf code 还只能用 C 写
swananan
9 月 24 日
@dummyx
aya 一直可以用 rust 写 eBPF ,你可能说的是 CO-RE 或者 KFuncs 之类的能力,Rust eBPF 不支持。因为需要 Rust 编译器支持。

目前一直是这样的,所以只能混着 C 代码一起写。我个人感觉,混合着写,其实也挺好的。我最近打算给 aya-book 加个章节,专门说一下相关的情况。

另外,vadorovsky 一直在推进这块,我感觉半年内有可能会落地吧。
https://github.com/rust-lang/rfcs/pull/3966

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/1244427

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX