tshark是wireshark下的一个工具,主要用于命令行环境进行抓包,分析。 安装wireshark yum install wireshark yum install wireshark-gnome
tshark -r 包路径 -Tfields -e tcp.stream 获取这个包所有的tcp流id
tshark -2 -R "tcp.stream eq 1" -r 源包路径 -w 目标包路径 将tcp流id为1的所有包过滤输出到指定文件
根据这两个命令,写了一个小demo,将一个大包,按照tcp流或者udp流拆分成对应的多个小包。
#!/usr/bin/python
# -*- coding:utf-8 -*-
import os
import sys
def test(src_file, dst_path, proto):
cmd = "tshark -r %s -Tfields -e %s.stream" % (src_file, proto)
data = os.popen(cmd).read().split()
data = map(eval, data)
max_streamid = max(data) + 1
for i in range(max_streamid):
dst_file = os.path.join(dst_path, '%s.pcap' % i)
cmd = "tshark -2 -R '%s.stream eq %s' -r %s -w %s" % (proto, i, src_file, dst_file)
os.system(cmd)
if __name__ == '__main__':
count = len(sys.argv)
if count != 4:
print "参数错误,请输入python test.py 原始包文件全路径 目的输出路径 tcp或udp"
sys.exit(1)
src_file = sys.argv[1]
dst_path = sys.argv[2]
proto = sys.argv[3]
test(src_file, dst_path, proto)