我想写一个应用程序层嗅探器(SMTP / ftp / http)。
基于我的搜索,首先(也许最难!)步骤是重新组装嗅探连接的tcp流。
事实上,我需要的是像wireshark的“跟随TCP流”选项,但我需要一个工具,它可以在实时界面上自动完成。据我所知,Tshark可以自动从保存的pcap文件中提取TCP流数据(link),但不能从实时接口中提取。 Tshark可以在现场接口上做吗???
据我所知,TCPflow可以完全按照我的意愿行事,但是,它无法处理IP碎片整理和SSL连接(我希望在拥有服务器私钥的情况下分析SSL内容)。
最后,我还尝试了兄弟网络监视器。虽然它提供了TCP连接列表(conn.log),但我无法获得TCP连接内容。
欢迎任何有关所提及工具或任何其他有用工具的建议。
提前致谢,Dan。
答案 0 :(得分:1)
perl Net :: Inspect库可能对您有所帮助。它还附带了一个tcpudpflow,它可以将tcp和udp流写入单独的文件,类似于tcpflow。它适用于pcap文件或可以进行实时捕获。该库处理IP分段。它还附带一个httpflow工具来提取HTTP请求和响应(包括解压缩,分块编码......)。它目前不处理SSL。
作为这个库的作者,我不认为提取TCP流是最难的部分,HTTP解析器(排除解压缩,包括分块模式)几乎是IP和TCP组合的两倍。
答案 1 :(得分:0)
此示例适用于重新组合单个协议的应用程序数据:
tshark -Y "tcp.dstport == 80" -T fields -d tcp.port==80,echo -e echo.data
它捕获实时http数据,重新组合它,并将其输出为原始十六进制。
如果您愿意,我可以添加一个小脚本来将十六进制解析为ascii。
我希望在拥有服务器私钥的情况下分析SSL内容
TL; DR:这不能单独使用捕获工具完成。
为什么不:因为每个SSL会话都会生成一个新的秘密会话密钥,并且您无法在没有此密钥的情况下解密会话。拥有私人服务器密钥是不够的。这背后的想法是,如果有人捕获您的SSL流量,保存它,然后一年后他发现"私人服务器密钥,然后他仍然无法解密您的流量。