为了监视服务器和 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 服务器:Apache/2.2.3 (Red Hat) Content-Type:text/html;charset=UTF-8 日期:2009 年 11 月 14 日星期六 18:35:22 GMT 年龄:7149
内容长度:438<HTML> <HEAD> <TITLE>示例网页</TITLE> </HEAD> <body>
<p>您已访问此网页...</p> </BODY> </HTML>
这几乎是完美的,除了突出显示的部分。这是什么,结束——更重要的是——我该如何摆脱它?也许只是对命令末尾的表达式稍作调整?
Ale*_*vic 39
tcpdump 打印完整的数据包。你看到的“垃圾”实际上是 TCP 包头。
您当然可以使用 ie perl 脚本来处理输出,但为什么不使用 tshark(wireshark 的文本版本)呢?
tshark 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
它采用与 tcpdump(同一个库)相同的参数,但由于它是一个分析器,它可以进行深度数据包检查,因此您可以进一步细化过滤器,即
tshark 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
-R'http.request.method == "GET" || http.request.method == "HEAD"'
| 归档时间: |
|
| 查看次数: |
107384 次 |
| 最近记录: |