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