是否有一种自动方式(无论是在tcpdump还是通过一个辅助应用程序在那里)来生成一个pcap文件,其中只包含以太网,IP和第4层(在我的情况下是TCP)头,以便没有有效载荷/应用程序数据在生成的PCAP?我发现由于标头大小经常不同,因此选择不会捕获任何有效负载数据的捕获大小是不可能的。从tcpdump剥离有效载荷?
6
A
回答
9
你可以用Python的scapy
模块很容易剥离出TCP有效载荷
前
[[email protected] tshark_wd]$ tcpdump -n -r sample.pcap
reading from file sample.pcap, link-type EN10MB (Ethernet)
00:25:42.443559 IP 192.168.12.237.1052 > 192.168.12.236.22: Flags [P.],
seq 2445372969:2445373021, ack 1889447842, win 63432, length 52
00:25:42.443607 IP 192.168.12.236.22 > 192.168.12.237.1052: Flags [.],
ack 52, win 65535, length 0
00:25:42.443980 IP 192.168.12.236.22 > 192.168.12.237.1052: Flags [P.],
seq 1:389, ack 52, win 65535, length 388
有效载荷溶出
在Linux上运行此为根...
#!/usr/bin/env python
from scapy.all import *
INFILE = 'sample.pcap'
OUTFILE = 'stripped.pcap'
paks = rdpcap(INFILE)
for pak in paks:
pak[TCP].remove_payload()
wrpcap(OUTFILE, paks)
后
[[email protected] tshark_wd]$ tcpdump -n -r stripped.pcap
reading from file sample.pcap, link-type EN10MB (Ethernet)
00:25:42.443559 IP truncated-ip - 52 bytes missing! 192.168.12.237.1052
> 192.168.12.236.22: Flags [P.], seq 2445372969:2445373021,
ack 1889447842, win 63432, length 52
00:25:42.443607 IP 192.168.12.236.22 > 192.168.12.237.1052: Flags [.],
ack 52, win 65535, length 0
00:25:42.443980 IP truncated-ip - 388 bytes missing! 192.168.12.236.22
> 192.168.12.237.1052: Flags [P.], seq 1:389,
ack 52, win 65535, length 388
在tcpdump
以上,请注意 “XX字节失踪了!”消息。这是因为我们已经删除了TCP有效负载。
0
如果简单截断会为你工作,你可以使用:
tcpdump -i eth0 -s 96 -w test1.pcap
以后你可以使用Wireshark分析它。
-2
我的解决方案如下。我很想听听其他人如何在没有外部库或截断的情况下做到这一点。我很想听听其他人如何执行此操作,因为我无法在Scapy文档中找到remove_payload()函数,从而使此答案无法使用。
#read pcap file
pkts = rdpcap("packet-capture.pcap")
#write packet with payload "XXXXXXXXXX"
for pkt in pkts:
pkt.load = "XXXXXXXXXX"
#write new pcap
wrpcap("new.pcap", pkts)
这里的问题是,当使用tcpdump读取,它留下了字节失踪了!为src IP。我可以通过
pkts[_packet_num].load
有没有办法重新生成整个拍摄,所以它看起来就好像它是不变的验证infromation仍存在使用Scapy的?
+0
这听起来更像是另一个问题,而不是答案。也许考虑[问](http://stackoverflow.com/questions/ask)另一个。 – adamdunson
相关问题
- 1. TCPDump/libpcap - 找到有效载荷数据的内存位置
- 2. 在tcpdump或pcap中加密的有效载荷
- 3. 获取从有效载荷
- 4. 从JSON有效载荷
- 5. Laravel:有效载荷无效
- 6. Android gcm通知有效载荷与数据有效载荷?
- 7. 什么是“有效载荷”?例如,XML有效载荷
- 8. JWT从node.js更新有效载荷
- 9. 需要从有效载荷在MSMQ
- 10. Mule-如何从有效载荷
- 11. 接收有效载荷
- 12. 什么是有效载荷?
- 13. 的部分有效载荷
- 14. JSON有效载荷webwrite
- 15. 替代Astoria有效载荷?
- 16. HttpClient,httppost和有效载荷
- 17. 剥离从CALS
- 18. Laravel DecryptException - 有效载荷是无效
- 19. 无效的有效载荷选择
- 20. 骡 - 你如何清除有效载荷/将有效载荷设置为空?
- 21. 剥离从列表
- 22. appengine任务有效载荷有多大?
- 23. 为每个内部添加多个有效载荷并提供具有所有有效载荷的最终有效载荷
- 24. Route 53从所有网址剥离WWW
- 25. Lucene中的有效载荷性能
- 26. Asp.Net Web服务数据有效载荷
- 27. Solr获得分数与有效载荷
- 28. 如何打印NaN的有效载荷?
- 29. facebook明信片和有效载荷
- 30. MDM命令和有效载荷
不幸的是,由于TCP选项字段,OP是正确的,没有办法可靠地预测TCP报头的长度。大部分情况下,这是IP/TCP报头中唯一具有长度不同的机会的部分。固定的snaplen值并不能保证您总是在正确的位置截断TCP有效负载。 –