资源简介
wireshark自带的follow tcp stream提取出的stream 数据没有时间戳等其他信息,在分析数据的延时和丢包问题时就有些力不从心了。这里简单用python实现了一个简单follow tcp stream功能,同时保留了tcp信息。
代码片段和文件信息
‘‘‘
Created on 2014-4-27
@author: lenovo
‘‘‘
from xml.etree.ElementTree import ElementTree
class PDMLParser(object):
‘‘‘
classdocs
@ 用于从wireshark生成的pdml格式的文件中提取出需要的信息。目前只是单纯用于提取tcp包
@usage: parser.read(filepath).do_parse()
@note: 为了减少pdml大小和提高提取的速度,生成pdml文件时,应先尽可能利用wireshark的过滤器,将不需要解析的数据包过滤掉。
‘‘‘
def __init__(self):
‘‘‘
Constructor
‘‘‘
def read(self filepath=‘./pdml.xml‘):
‘‘‘
@ 读取filepath指定的pdml格式的文件,解析生成一颗xml树
@param filepath:pdml文件的路径
@return: the parser object itself
‘‘‘
self.tree = ElementTree()
self.tree.parse(filepath)
return self
def do_parse(self):
‘‘‘
@ 从由pdml文件生成的xml树中解析出需要的数据包信息
@note: 这里简单起见,提取哪些信息都是固定的。如果有需要的下,可以通过xml文件配置或者以参数方式传入。
@return: 数据包信息,是一个list
‘‘‘
frame_list = []
for packet in self.tree.findall(“packet“):
frame = {}
for proto in packet.findall(‘proto‘):
if proto.get(‘name‘) == ‘ip‘:
frame.update(self.ip_info(proto))
elif proto.get(‘name‘) == ‘tcp‘:
frame.update(self.tcp_info(proto))
elif proto.get(‘name‘) == ‘frame‘:
frame.update(self.frame_info(proto))
elif proto.get(‘name‘) == ‘fake-field-wrapper‘:
frame.update(self.data_info(proto))
frame_list.append(frame)
del self.tree #节省内存占用
self.frame_list = frame_list
return frame_list
def ip_info(self ip_proto ipinfo={‘ip.src‘:‘show‘
‘ip.dst‘:‘show‘}):
‘‘‘
@ 提取packet中的ip协议层的信息,
@param ip_proto: wireshark生成的pdxml格式,其中的ip proto部分
@param ipinfo: ipinfo是一个dictionary,key表示要提取的field的name,value表示要提取的field的属性名称
@return: a dictionary 返回ipinfo中要查询的字段的值,其中key仍是tcpinfo中的key, value就是tcpinfo中指定的属性名称的值
e.g. {‘tcp.srcport‘:‘456‘ ‘tcp.dstport‘:‘123‘}
‘‘‘
return self.extract_element(ip_proto ipinfo)
def tcp_info(self tcp_proto tcpinfo={‘tcp.srcport‘:‘show‘
‘tcp.dstport‘:‘show‘
‘tcp.seq‘:‘show‘
‘tcp.nxtseq‘:‘show‘
‘tcp.ack‘:‘show‘
‘tcp.flags‘:‘show‘}):
‘‘‘
@see: ip_info
@param tcp_proto: proto of ‘tcp‘
@return: a dictionary of tcp info such as {‘tcp.seq‘: ‘450‘ ‘tcp.srcport‘: ‘80‘ ‘tcp.nxtseq‘: ‘‘ ‘tcp.ack‘: ‘763‘ ‘tcp.dstport‘: ‘59203‘ ‘tcp.flags‘: ‘0x0010‘}
‘‘‘
return self.extract_element(tcp_proto tcpinfo)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 380 2014-08-20 22:12 TCPParser\.project
文件 431 2014-08-20 22:12 TCPParser\.pydevproject
文件 13 2014-08-13 23:36 TCPParser\tcp\.gitignore
文件 5727 2014-08-15 22:24 TCPParser\tcp\._PDMLParser.py1239257355183174924.tmp
文件 5727 2014-08-15 22:23 TCPParser\tcp\._PDMLParser.py2410884988135934317.tmp
文件 5727 2014-08-15 22:23 TCPParser\tcp\._PDMLParser.py3258138073824387452.tmp
文件 5727 2014-08-15 22:23 TCPParser\tcp\._PDMLParser.py4594915663318073934.tmp
文件 115272 2014-08-11 23:07 TCPParser\tcp\pdml.xm
文件 5526 2014-08-20 22:14 TCPParser\tcp\PDMLParser.py
文件 13926 2014-08-20 22:14 TCPParser\tcp\PDMLParserTest.py
文件 1900 2014-08-20 22:23 TCPParser\tcp\RTTParser.py
文件 1450 2014-08-20 22:24 TCPParser\tcp\RTTParserTest.py
文件 1724 2014-08-20 22:16 TCPParser\tcp\TCPfr
文件 7260 2014-08-20 22:23 TCPParser\tcp\TCPParser.py
文件 2831 2014-08-20 22:23 TCPParser\tcp\TCPParserTest.py
文件 749 2014-08-18 20:58 TCPParser\tcp\TCPProtocolAnalizer.py
文件 0 2014-08-10 20:11 TCPParser\tcp\__init__.py
目录 0 2014-08-20 22:24 TCPParser\tcp
目录 0 2014-08-20 22:13 TCPParser
----------- --------- ---------- ----- ----
174370 19
- 上一篇:网格图的demo与详细解析Python实现
- 下一篇:短路计算程序_python3
相关资源
- python实现SGBM图像匹配算法
- python实现灰度直方图均衡化
- scrapy_qunar_one
- Python学习全系列教程永久可用
- python简明教程.chm
- 抽奖大转盘python的图形化界面
- 双边滤波器实验报告及代码python
- python +MYSQL+HTML实现21蛋糕网上商城
- Python-直播答题助手自动检测出题搜索
- OpenCV入门教程+OpenCV官方教程中文版
- Python 串口工具源码+.exe文件
- Python开发的全栈股票系统.zip
- Python操作Excel表格并将其中部分数据写
- python书籍 PDF
- 利用python绘制散点图
- python+labview+No1.vi
- 老男孩python项目实战
- python源码制作whl文件.rar
- python3.5可用的scipy
- PYTHON3 经典50案例.pptx
- 计算机科学导论-python.pdf
- python模拟鼠标点击屏幕
- windows鼠标自动点击py脚本
- 鱼c小甲鱼零基础学python全套课后题和
- Python 练习题100道
- Practical Programming 2nd Edition
- wxPython Application Development Cookbook
- python 3.6
- Python 3.5.2 中文文档 互联网唯一CHM版本
- python3.5.2.chm官方文档
评论
共有 条评论