标签: tcpdump

过滤特定时间范围的pcap转储文件

有没有简单的方法来创建一个PCAP文件的使用可能与特定日期时间范围内的数据包tshark,tcpdump或其他命令行工具?

tshark -Rframe.time似乎很有前途,但我一直没能上班了这一点尚未...

编辑

最后的命令:

editcap -F libpcap -A "2013-07-20 23:00:00" -B "2013-07-20 23:20:00" input.pcap output.pcap
Run Code Online (Sandbox Code Playgroud)

tcpdump pcap tshark editcap

12
推荐指数
1
解决办法
2万
查看次数

windows 10 bash tcpdump:socket:参数无效

我正在使用windows 10 bash来使用tcpdump从教程中我发现听一个接口命令是:

tcpdump -i eth0 //eth0 is ethernet interface
tcpdump -i any // to listen to any interface
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,我得到tcpdump:socket:无效的参数错误.注意:

tcpdump -D
Run Code Online (Sandbox Code Playgroud)

不会在控制台上打印任何内容.

networking tcpdump network-tools windows-subsystem-for-linux

12
推荐指数
1
解决办法
1万
查看次数

在C中设置TCP接收窗口并在Linux中使用tcpdump

我正在运行一个运行2.6.9-55.ELsmp,x86_64的Linux机器.

我正在尝试使用C使用setsockopt()函数设置TCP接收窗口.我尝试以下操作:

rwnd = 1024;
setsockopt(sock, SOL_SOCKET, SO_RCVBUF, (char *)&rwnd, sizeof(rwnd));
Run Code Online (Sandbox Code Playgroud)

上面的代码段位于从服务器接收数据的客户端程序中.当我启动程序接收并观察tcpdump输出时,我会观察窗口协商,如下所示:

11:34:40.257755 IP clientReceiver.42464 > serverSender.8991: 
S 1742042788:1742042788(0) win 5840 
<mss 1460,sackOK,timestamp 1688222886 0,nop,wscale 2>
Run Code Online (Sandbox Code Playgroud)

我们看到客户端程序实际上正在协商一个与我在客户端程序中设置的窗口不同的窗口.但是,从我如何解释Steven的文本("TCP/IP Illustrated,第1卷")第20.4节开始,我相信你使用我使用的setsockopt()调用来影响他在第20.4节的第二个块引用中引用的内容(见上文) ).

我想知道我哪里出错了.

也许我对史蒂文斯所说的话的解释是错误的.在这种情况下,你能指出我设置接收缓冲区大小的正确方法吗?为了证明我的困惑,我在http://linux.die.net/man/7/tcp上提到Linux TCP套接字手册页(请参阅SO_RCFBUF上的评论).

我在这个故事里想念的是什么?如何控制接收缓冲区大小(并将其显示在tcpdump输出中)?请注意,我在这里提到套接字选项SO_RCFBUF的设置 - 我理解这是SYN中窗口协商中出现的内容.

任何输入都表示赞赏.

c linux tcp tcpdump setsockopt

10
推荐指数
1
解决办法
7072
查看次数

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

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

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

$ ping 192.168.153.1
Run Code Online (Sandbox Code Playgroud)

现在捕获并打印数据:

$ tcpdump -i eth0 -x -s 64
...
10:23:24.419067 IP 192.168.153.1 > ubuntu.local: ICMP echo reply, id 2959, seq 137, length 64
    0x0000:  4500 0054 2313 4000 4001 63bf c0a8 9901
    0x0010:  c0a8 9984 0000 af80 0b8f 0089 0cb2 294e
    0x0020:  1d64 0600 0809 0a0b 0c0d 0e0f
10:23:25.418807 IP ubuntu.local > 192.168.153.1: ICMP echo request, id 2959, seq 138, length 64
    0x0000:  4500 0054 0000 4000 4001 86d2 c0a8 9984
    0x0010:  c0a8 9901 …
Run Code Online (Sandbox Code Playgroud)

tcpdump

10
推荐指数
1
解决办法
2万
查看次数

客户端向服务器发送延迟的FIN ACK(~500ms)

我有一个node.js客户端(10.177.62.7)从服务器(10.177.0.1)请求来自http rest服务的一些数据.客户端只是使用node.js http.request()方法(agent = false).客户端在Ubuntu 11.10框上.

为什么客户端在475ms后发送FIN ACK?为何这么慢?他应该立即发送FIN ACK.我有很多这样的情况.大约1%的整个流量是带有延迟FIN ACK的请求.

客户端上的Cpu空闲大约是99%,所以没有什么能耗尽CPU.

如何调试?会是什么呢?我需要调整任何sysctl选项吗?

屏幕截图第2列是数据包之间经过的时间.

链接到更大的图片.

在此输入图像描述

linux networking tcp tcpdump node.js

10
推荐指数
1
解决办法
4128
查看次数

由tcpdump捕获的udp数据包,但socket没有收到

我写了一个rawudp程序,通过原始套接字发送udp数据包,网址为http://www.tenouk.com/Module43a.html.然后我写了一个udp服务器来监听给定端口上的udp数据包.代码如下所示:

...
sd = socket(AF_INET, SOCK_DGRAM, 0);
bind(sd, (struct sockaddr *)&ipaddr, sizeof(ipaddr));
size = recvfrom(sd, msgbuf.text, 2000, 0, (struct sockaddr *)&sin, &sin_len);
... // print the recevied udp packet
Run Code Online (Sandbox Code Playgroud)

当我使用rawudp将udp数据包发送到udp服务器时,如果源IP地址和目标IP地址不同,则可以.但是如果源IP地址和目标IP地址相同,则udp服务器无法接收udp数据包.

我试图使用tcpdump来捕获udp数据包.我发现tcpdump在使用相同的源和目标IP地址时可以显示udp数据包.当源和目标IP地址相同时,似乎udp数据包被丢弃,因此udp服务器中的套接字没有收到它.

以下是一些日志(IP地址已在日志中更新).两种情况之间的唯一区别是源IP地址(192.168.0.26对192.168.0.226).

我陷入了这个问题.有没有人可以帮助我.提前致谢.

udp客户端(rawudp):

case 1> rawudp 192.168.0.26 18321 192.168.0.226 19702 test.bin # using different source and destination ip addresses
size of ip header:  20
size of udp header: 8
read 69 bytes from file test.bin successfully.
socket() - using SOCK_RAW socket and UDP protocol is OK.
setsockopt() …
Run Code Online (Sandbox Code Playgroud)

udp tcpdump raw-sockets

10
推荐指数
0
解决办法
7666
查看次数

UDP组播客户端看不到tcpreplay生成的UDP组播流量

我有两个程序:

  • server ...它在选定的多播上生成UDP流量
  • listener ...它在选定的多播上打印UDP流量(它订阅多播并打印它收到的任何内容).

当我在一台机器上运行服务器并在某些(其他)机器上运行侦听器时,侦听器会看到UDP流量并正确打印它.所以这些计划应该处于良好状态.

但是,当我尝试使用tcpdump在任何机器上捕获流量时:

sudo tcpdump -i eth0 'dst 233.65.120.153' -w 0.pcap
Run Code Online (Sandbox Code Playgroud)

当我以后尝试使用tcpreplay在任何机器上重放它时:

sudo tcpreplay -i eth0 0.pcap
Run Code Online (Sandbox Code Playgroud)

没有一个监听器看到那些捕获的数据包:

09:38:40.975604 IP (tos 0x0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 32)
    172.27.6.176.53507 > 233.65.120.153.64968: [udp sum ok] UDP, length 4
    0x0000:  4500 0020 0000 4000 0111 6527 ac1b 06b0  E.....@...e'....
    0x0010:  e941 7899 d103 fdc8 000c 579c 6162 6364  .Ax.......W.abcd
    0x0020:  0000 0000 0000 0000 0000 0000 0000       ..............
09:38:41.975709 IP (tos …
Run Code Online (Sandbox Code Playgroud)

udp multicast tcpdump

10
推荐指数
2
解决办法
7187
查看次数

tcpdump - 如何根据tcp连接时间/持续时间进行过滤

是否有可能根据tcp连接时间(连接持续时间)过滤tcpdump(实时或创建转储后)?

我正在录制http json rpc流量.我想只记录比1000毫秒更长的连接.

在wireshark中,菜单 - >统计 - >对话(TCP选项卡)中有工具,我可以按"持续时间"排序.但我想在之前记录(或过滤)长期存在的连接(而不是在wireshark中).

在伪命令中我想做这样的事情:

tcpdump -i eth0 port 80 and connectionTime>1000ms -w data.pcap
Run Code Online (Sandbox Code Playgroud)

或录音后:

cat data.pcap | SOMETOOL -connectionTime>1000ms > dataLongConnections.pcap
Run Code Online (Sandbox Code Playgroud)

SOMETOOL必须将过滤后的数据导出为Wireshark将理解的格式.因为过滤后我想在Wireshark中分析这些数据.

我怎么能这样做?

linux filtering tcpdump

10
推荐指数
1
解决办法
3224
查看次数

如何用linux中的tcpdump捕获http

首先我用以下方法捕获所有数据 tcpdump -i any -s 0 -w /tmp/http.cap

不,我想捕获'只有http'

我试着添加:和端口http

但这是不正确的.

谢谢

linux http tcpdump

10
推荐指数
1
解决办法
1万
查看次数

仅使用tcpdump捕获ssl握手

我有一台服务器,许多客户端使用SSL连接.最近我在服务器日志中观察到SSL握手错误(来自SSL MAC错误).错误本身并不重要,但我想知道为什么有些客户端能够连接而其他客户端失败,还需要确定哪些客户端出现故障.

为了调试这个问题,我想捕获在服务器上发生的所有SSL握手,因为我不知道有问题的客户端何时连接,我不想捕获所有流量,直到发生这种情况.我只想捕获所有SSL握手,然后使用Wireshark进行分析.假设我只能访问tcpdump而没有其他工具可以捕获.

ssl networking tcp tcpdump

10
推荐指数
1
解决办法
3万
查看次数