linux - linux 上的实时数据包捕获

标签 linux networking live capture packet

我想知道是否有可能实时捕获网络数据包并将其保存到变量中,例如在 python 中。 我需要从中获取一些信息,而不是将其保存到文件中。

我需要捕获 http 数据包并获取源地址及其内容(应该是 html 代码)以仅从中提取文本,然后根据该信息完成其余工作。 没有理由将每个数据包都保存到文件中,因为整个过程会更慢。我一直在寻找任何工具来执行此操作但没有成功。 如果您知道任何可以帮助我做到这一点的工具,请写下来。

最佳答案

我相信你已经看到了this link关于处理 PCAP 文件的库。现在的问题是如何在不存储在文件中的情况下实时获取。

可能最简单的方法是使用 fifo

$ mkfifo /tmp/tcpdump.fifo

现在您可以捕获数据并将其输入指定的 fifo

$ sudo tcpdump -s0 -i eth0 -f /tmp/tcpdump.fifo tcp port 80

在您的 Python 程序中,您可以按照链接中的说明打开“/tmp/tcpdump.fifo”作为输入文件。

或者,您可以尝试在您的程序中打开“/dev/stdin”并从那里读取数据;然后,您可以使用 shell 并跳过名为 fifo 的中间层,将 PCAP 数据直接通过管道传输到标准输入中。

$ sudo tcpdump -s0 -i eth0 -f - tcp port 80 | ./youprogram.py

关于linux - linux 上的实时数据包捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20555947/

相关文章:

linux - 检查 "make"的输出,如果失败则退出 bash 脚本

linux - 关闭,比如 vim,会触发 sys_exit 吗?

python - python 中的 getProcAddress for linux?

c++ - 是否有用于 Visual C++ 或其他 IDE 的工具,允许超过 1 个程序员(在线)同时处理同一个项目?

cocoa - 如何确定 Mac 连接的网络是 WiFi 还是有线网络等

jquery - 在 jQuery 中实时查找

javascript - jQuery 1.9 .live() 不是函数

linux - 什么是数据依赖屏障 : Linux Kernel

c++ - 使用 boost::asio 获取广播源 ip 地址

使用内置 LinkedList 进行 Java 复制