pcap 文件上的一个简单的 cat 看起来很糟糕:
$cat tcp_dump.pcap
?ò????YVJ?
JJ
?@@.?E<??@@
?CA??qe?U?????h?
.Ceh?YVJ??
JJ
?@@.?E<??@@
CA??qe?U?????z?
.ChV?YVJ$?JJ
?@@.?E<-/@@A?CA??9????F???A&?
.Ck??YVJgeJJ@@.??#3E<@3{n??9CA??P???F???<K?
??`.Ck??YVJgeBB
?@@.?E4-0@@AFCA??9????F?P?????
.Ck???`?YVJ?""@@.??#3E?L@3?I??9CA??P???F?????
???.Ck?220-rly-da03.mx
Run Code Online (Sandbox Code Playgroud)
等等。
我试图让它更漂亮:
sudo tcpdump -ttttnnr tcp_dump.pcap
reading from file tcp_dump.pcap, link-type EN10MB (Ethernet)
2009-07-09 20:57:40.819734 IP 67.23.28.65.49237 > 216.239.113.101.25: S 2535121895:2535121895(0) win 5840 <mss 1460,sackOK,timestamp 776168808 0,nop,wscale 5>
2009-07-09 20:57:43.819905 IP 67.23.28.65.49237 > 216.239.113.101.25: S 2535121895:2535121895(0) win 5840 <mss 1460,sackOK,timestamp 776169558 0,nop,wscale 5>
2009-07-09 20:57:47.248100 IP 67.23.28.65.42385 > 205.188.159.57.25: S 2644526720:2644526720(0) win 5840 <mss 1460,sackOK,timestamp 776170415 0,nop,wscale 5>
2009-07-09 …Run Code Online (Sandbox Code Playgroud) 我想在 Linux 机器中查看从 Apache(侦听端口 80)到 Tomcat(端口 4080)发送的 HTTP 标头。
根据维基百科,
标头字段是明文字符串格式的冒号分隔的名称-值对。
我尝试了以下tcpdump命令的一些变体:
$ sudo tcpdump -lnX dst port 4080 -c 10
11:29:28.605894 IP SOME_IP.33273 > SOME_IP.4080: P 0:49(49) ack 1 win 23 <nop,nop,timestamp 1191760962 509391143>
0x0000: 4500 0065 3a9f 4000 3f06 0084 628a 9ec4 E..e:.@.?...b...
0x0010: 628a 9c97 81f9 0ff0 9e87 eee0 144b 90e1 b............K..
0x0020: 8018 0017 fb43 0000 0101 080a 4708 d442 .....C......G..B
0x0030: 1e5c b127 4845 4144 202f 6461 7070 6572 .\.'HEAD./dapper
0x0040: …Run Code Online (Sandbox Code Playgroud) 我有一个巨大的 pcap 文件(由 tcpdump 生成)。当我尝试在wireshark中打开它时,该程序没有响应。有没有办法将一个文件分成一组较小的文件以一个一个地打开它们?文件中捕获的流量由两台服务器上的两个程序生成,因此我无法使用 tcpdump 'host' 或 'port' 过滤器拆分文件。我也试过 linux 'split' 命令 :-) 但没有运气。Wireshark 无法识别该格式。
为了监视服务器和 Web 服务器之间的 HTTP 流量,我目前使用tcpdump. 这工作正常,但我想摆脱输出中的一些多余数据(我知道tcpflow和wireshark,但它们在我的环境中不容易获得)。
从tcpdump手册页:
打印所有进出端口 80 的 IPv4 HTTP 数据包,即仅打印包含数据的数据包,而不是,例如,SYN 和 FIN 数据包以及仅 ACK 数据包。
tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
这个命令
sudo tcpdump -A 'src example.com 和 tcp 端口 80 和 (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2) ) != 0)'
提供以下输出:
19:44:03.529413 IP 192.0.32.10.http > 10.0.1.6.52369: Flags [P.], seq 918827135:918827862, ack 351213824, options 437noval, 439pnoval, 437noval, 4399, 439
E...@....... ....P..6.0.......D...... __..e=3...__HTTP/1.1 200 OK …
我试过这个:
tcpdump -s 1500 -A -l -i eth0 '(port 6667) and (length > 74)'
Run Code Online (Sandbox Code Playgroud)
我只需要它的 ascii 部分。我如何删除其余的?
我有一个带有这些简单规则的防火墙:
iptables -A INPUT -p tcp -s 127.0.0.1/32 --dport 6000 -j ACCEPT
iptables -A INPUT -p tcp -s 192.168.16.20/32 --dport 6000 -j ACCEPT
iptables -A INPUT -p tcp --dport 6000 -j REJECT
Run Code Online (Sandbox Code Playgroud)
现在,假设我像这样使用TCPDUMP:
tcpdump port 6000
Run Code Online (Sandbox Code Playgroud)
我有主机192.168.16.21试图连接到端口6000。
将/应该tcpdump输出一些来自192.168.16.21?
我需要在 CentOS 5 服务器上捕获流量,该服务器充当具有 2 个 wan 接口和 1 个 LAN 的 Web 代理。为了解决一个奇怪的代理问题,我想捕获一个完整的对话。由于外部连接在两个WAN接口之间是平衡的,我想知道是否可以在所有接口上同时捕获。
我以前使用过 tcpdump,但它一次只允许一个接口。我可以启动 3 个并行进程以在所有接口上进行捕获,但最终会得到 3 个不同的捕获文件。
这样做的正确方法是什么?
我发现在 GNU Linux 64 位服务器上执行的TCPDUMP 中有太多不正确的校验和错误。导出中有接近 50% 的错误校验和?
cksum 0xe61f(不正确(-> 0x8c37)
我们如何解释这些数据?它对性能影响很大吗?
我正在使用以下 tcpdump 命令:
tcpdump -w net75.out -s 0 host 65.207.95.222
Run Code Online (Sandbox Code Playgroud)
我想将单个主机上的过滤器更改为以下子网中的所有地址:
65.192.0.0/10
Run Code Online (Sandbox Code Playgroud)
我一直无法弄清楚如何指定 tcpdump 过滤器来执行此操作。
请指教。