问题标签 [tcpdump]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3255 浏览

python - Python 2.6 问题:从 tcpdump 子进程捕获输出

我正在尝试从 Python 捕获 tcpdump/grep 管道的输出。我在 Mac OS 10.6.7 上使用 Python 2.6。

当我使用dmesg /grep 尝试它时,调用者按预期接收来自子进程的输出。

当我尝试使用tcpdump /grep 时,选择永远不会返回任何内容。

我究竟做错了什么?

0 投票
3 回答
6743 浏览

security - 如何使用 tcpdump 实时解密 WPA/WPA2-PSK?

这是我的问题:

如果我连接到网络(所以我知道 WPA/WPA2-PSK),我希望能够解密从网络中其他设备捕获的流量。(如果使用 WEP,tcpdump 会自动执行此操作)。

据我所知,WPA 对 WiFi 中的每个客户端都使用会话密钥之类的东西——但我知道这是可能的——所以我想知道如何做到这一点。(如果 tcpdump 无法做到这一点,如何“手动”执行此操作?)

谢谢你的帮助!

0 投票
3 回答
2474 浏览

security - 我如何知道 Mac OS X 中的进程数据包来自什么?

关闭所有应用程序后,tcpdump 显示我的 Mac 偶尔会向少数 IP 发送数据包。它们是没有数据有效负载且具有不寻常的 TCP 序列号(如隐蔽通道)的数据包突发。有没有办法确定哪个进程从命令行或以编程方式发起这些数据包?

注意:我已经使用 ipfw 来过滤目标 IP,所以我不担心数据泄露。

0 投票
2 回答
2997 浏览

merge - Pcap捕获合并问题

我有两个 pcap 文件

我想合并它们,但封装不同。如果我使用

或者

Wireshark 无法识别过去的第二个文件,并分别显示as的数据包cap1_wlan0.pcap或数据包。还使用“tcpslice”删除以太网层(使两个文件都具有封装)向我显示无法识别的数据包数据。cap1_stego0.pcapraw packet datacap1_wlan0.pcaprawip

我能怎么做?有没有办法将 pcap 与不同的封装合并或转换 eth->rawip 或 rawip->eth?谢谢你。

0 投票
1 回答
499 浏览

php - 是否可以像使用 tcpdump 一样在 php 中捕获 flv 链接?

我正在制作一个在线视频转换器。我设法制作了 youtube 插件来获取 flv 链接,但我发现很难制作其他插件,例如dailymotion,因此可以使用 tcpdump 之类的东西来捕获流 url,因为这也意味着我不必更新如果他们改变了他们提供视频的方式,插件?

0 投票
1 回答
3799 浏览

c - 使用 popen 时使 tcpdump 的输出静音

我正在用 C 编写一个程序来分析 tcpdump 捕获的数据包。在我的程序中,我popen用来打开一个 tcpdump 进程的管道,该进程捕获数据包并将原始数据转储到标准输出,如下所示。

但是,来自 tcpdump 的警告和错误消息会直接发送到 stderr,它会显示在控制台中。我想以某种方式隐藏这些,所以只显示我的程序的输出。

我尝试的一种方法是附加2>&1到 tcpdump 命令,但是我的程序必须区分 tcpdump 警告/错误和原始数据包数据。

有没有一种简单的方法可以使 tcpdump 的 stderr 输出静音?

0 投票
2 回答
19503 浏览

tcpdump - 如何使用 tcpdump 查看完整的 snaplen 捕获?

使用 tcpdump 时,我似乎看不到捕获的所有数据。具体来说,我似乎从帧的头部丢失了 6 个字节,我想知道是否有人可以解释原因。

为了说明,我在仅主机网络配置中在 VMWare 上设置了一个 Ubuntu 实例。为了生成流量,我 ping VMWare 网关......在我的例子中:

现在捕获并打印数据:

正如所料,此时显示的总字节数不是 64;数据链路标头被隐藏,IP 字节最先出现,即“4500”。为了显示数据链接头字节,我添加了另一个 x。

现在显示了更多字节。我认为它们是以太网帧头的 14 个字节(目标,源 MAC + ethertype = 14 个字节)。相应地,IP 标头现在从 14 个字节开始。

但是为什么仍然缺少 6 个字节?请注意,只显示了 58 个字节 - 我希望 64 个字节可见。

0 投票
1 回答
2609 浏览

packet-capture - 如何在libpcap数据包接收功能中定期超时

我在 stackoverflow.com 中发现这篇文章 使用 Pcap 监听超时

我面临一个类似(但不同)的问题:使用 libpcap 数据包接收功能接收捕获的数据包时,什么是 GENERIC(与平台无关)方法定期超时?实际上,我想知道是否可以从 pcap_dispatch(pcap_t...) / pcap_next_ex(pcap_t...) 定期超时?如果可能的话,我可以像使用经典的 select(...timeout) 函数(http://linux.die.net/man/2/select)一样使用它们。

另外,从官方网页(http://www.tcpdump.org/pcap3_man.html),我发现原来的超时机制被认为是错误的和特定于平台的(这很糟糕,因为我的程序可能在不同的 Linux 和Unix box):
"... ... to_ms 以毫秒为单位指定读取超时。读取超时用于安排读取不一定在看到数据包时立即返回,而是等待一段时间以允许更多数据包到达并在一次操作中从操作系统内核读取多个数据包。并非所有平台都支持读取超时;在不支持的平台上,读取超时被忽略......
注意:读取实时捕获时,读取超时时 pcap_dispatch() 不一定会返回;在某些平台上,不支持读取超时,而在其他平台上,计时器在至少一个数据包到达之前不会启动。这意味着不应在例如交互式应用程序中使用读取超时,以允许数据包捕获循环定期“轮询”用户输入,因为无法保证 pcap_dispatch() 将在超时到期后返回。 ……”

因此,我想我需要自己实现 GENERIC(平台无关)超时机制,如下所示?

  1. 使用 pcap_open_live() 创建一个 pcap_t 结构。
  2. 使用 pcap_setnonblock(pcap_t...) 将其设置为非阻塞模式。
  3. 使用已注册的 OS 计时器轮询此非阻塞 pcap_t,例如:

注册 OS timer_x,并重置 timer_x;

而(1){

if(timer_x timeout) {做一些需要定期做的事情;重置 timer_x;}

通过调用 pcap_dispatch(pcap_t...)/pcap_next_ex(pcap_t...) 来轮询 pcap_t 以​​接收一些数据包;
对这些数据包做点什么;

}//while(1) 结束

问候,
直流

0 投票
2 回答
17643 浏览

histogram - 使用wireshark或其他工具绘制RTT直方图

我有一个小的办公室网络,我遇到了巨大的互联网链接延迟。我们有一个简单的网络拓扑:一台配置为运行 ubuntu 服务器 10.10 的路由器的计算机、2 个网卡(一个连接到 Internet 链接,另一个连接到办公室网络)和一个连接 20 台计算机的交换机。我在路由器上收集了一个巨大的 tcpdump 日志,我想用所有TCP 流的 RTT 时间绘制一个直方图,以尝试找出解决这个延迟问题的最佳方法。那么,有人可以告诉我如何使用wireshark或其他工具来做到这一点吗?

0 投票
1 回答
2162 浏览

network-programming - 如何找出正确的数据包长度?

我正在使用我指定的SENDIP工具在 LAN 中的另一台机器上发送三种类型的数据包。长度 = 8 字节,最大长度 = 512 字节...

但....

当我发送 udp 数据包(最小长度)并使用tcpdump捕获时,它显示指针长度 = 70 字节。

当我发送 udp 数据包(最小长度)时,tcpdump显示指针长度=574 字节。

当我发送 icmp 数据包(最小长度)时,tcpdump显示前两个数据包的长度为 80,其余所有数据包的长度为 66 字节。

我通过 tcpdump 获得的指针长度是使用数据包中指定的标头信息......

为什么 sendip 和 tcpdump 的结果有差异???