我一直在使用tcpdump(版本4.1.1)来尝试从monitor mode设置的airmon-ng接口捕获无线帧。我说“尝试”因为到目前为止还没有发生任何事情。这很奇怪:
tcpdump -i mon0
上面的命令工作正常。我看到所有的信标和探测请求以及屏幕上可以显示的所有其他帧。但是,当我尝试使用
将输出写入捕获文件时 tcpdump -i mon0 -w captures.cap
绝对没有被捕获,包括包含实际数据的第3层数据包。当我杀死tcpdump时,它给了我
13507 packets captured
13507 packets received by filter
0 packets dropped by kernel
(在这种情况下,13507是任意数字)和一个完全空的捕获文件。
但是,当我在同一界面上使用tshark或wireshark执行捕获时,帧会被捕获到文件中而没有任何问题。
我更喜欢使用tcpdump而不是wireshark,因为它没有GUI的开销,它有“-z”选项,它允许我获取捕获文件并将其传递给复制它的shell脚本到我网络上的另一台电脑。 tshark或wireshark没有类似的功能,我非常希望避免编写程序来检查捕获文件是否存在。
我是否对tcpdump的工作方式存在根本性的误解,或者这里肯定有什么奇怪的事情发生?是否有更好的方式来做我正在做的事情,或者我将不得不编写自己的基于libpcap的捕获程序?
答案 0 :(得分:3)
你试过airodump-ng吗?
不确定它是否使用libpcap作为捕获库,但是它使用pcap文件格式并且有很多选项用于通道选择,bssid过滤等。
答案 1 :(得分:2)
似乎有效地出了问题。在我的Ubuntu上,以下效果很好。
sudo tcpdump -w ./test.cap
也许你可以试试
sudo tcpdump -U -w ./test.cap
JP