/l7dump

基于libcap的7层抓包工具

Primary LanguageGo

l7dump

应用层抓包工具

原理

  1. 通过 tcp syn 追踪连接
  2. 根据头部监测应用层连接类型

tcp 连接的生命周期

  1. 半连接

这个发生在tcp 连接主动发起方 发出第一次 syn 后,被动方 收到了 sync, 然后被动方的第一次ack + syn 主动方可以理解为客户端,被动方可以看作服务端, 半连接之前并没有真正的应用层数据

  1. 已连接

这个发生在主动方的第一次 ack, 此时会有应用层的数据出现,在这个钩子函数中可以判断出应用层协议的类型 例如 http https mysql 等

  1. 新的数据

这个时候我们已经知道了应用层协议了,所以我们可以把传输层的数据解包成应用层的数据,再根据我们的需要对应用层数据作记录

  1. 断开

特性

  1. 支持 http, mysql, kafka, mogodb 等应用层协议
  2. 支持插件 (lua script)
  3. 支持高级过滤