Python 使用dpkt分析数据包
来源:互联网 发布:php中app接口代码 编辑:程序博客网 时间:2024/05/29 03:52
H-blog
上周Lightless放了一题数据包分析的题,挺有意思的
题目地址: http://7xscw6.com1.z0.glb.clouddn.com/hahaha.pcapng
数据包分析这部分很简单,随便看看可以看出来这是个用sqlmap去艹服务器的数据包,然后flag使用盲注注出来的.
最简单的方法就是手工把盲注的包提取出来,手工分析得到flag.
不过我觉得手工太low了,所以有了这篇文章,使用Python的dpkt包对pcap包进行分析.
直接先贴代码:
12345678910111213141516171819202122232425262728293031323334353637383940414243
#!/usr/bin/env python# -*- coding:utf-8 -*-from dpkt.ethernet import Ethernetimport dpktimport reimport urllibresult = []f = file("test.pcapng")pcap = dpkt.pcapng.Reader(f)(ts, buf) = pcap.next()while True: http_data = Ethernet(buf).data.data.data request = dpkt.http.Request(http_data) (ts, buf) = pcap.next() http_data = Ethernet(buf).data.data.data response = dpkt.http.Response(http_data) payload = urllib.unquote(request.uri) entity_body = response.entity_body if "ctf.flag " in payload: if "123456" in entity_body: result.append({"payload": payload, "result": True}) else: result.append({"payload": payload, "result": False}) try: (ts, buf) = pcap.next() except StopIteration: breaknumber = 1flag = ""c = 0for y in result: [(x, h)] = re.findall("1\),(\d+).+>(\d+)", y['payload']) x, h = int(x), int(h) if x > number: number = x flag += chr(c) else: if y['result']: c = h + 1print flag
因为dpkt包的setfilter方法是没用的,感觉是作者还没把dpkt写完
12
def setfilter(self, value, optimize=1): return NotImplementedError
所以我用wireshark过滤出了http包:http://7xscw6.com1.z0.glb.clouddn.com/test.pcapng
然后由于http包实体内容使用了gzip压缩,所以我魔改了http.py
12345678910111213141516
class Response(Message): """Hypertext Transfer Protocol Response.""" __hdr_defaults__ = { 'version': '1.0', 'status': '200', 'reason': 'OK' } __proto = 'HTTP' def __init__(self, *args, **kwargs): Message.__init__(self, *args, **kwargs) try: entity = gzip.Gzip(self.body) self.entity_body = gzip.Gzip.decompress(entity) except: self.entity_body = ""
加了一个__init__
然后,代码短,也容易看懂,不过还有需要优化的地方,不过跑这题确是没问题的
本文标题:Python 使用dpkt分析数据包
文章作者:Hcamael
发布时间:2016-04-04, 22:50:47
最后更新:2016-04-04, 23:29:28
原始链接:http://0x48.pw/2016/04/04/0x17/
许可协议: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。
0 0
- Python 使用dpkt分析数据包
- 【Python学习】Mac下用python+pypcap+dpkt抓取IP数据包并分析(一)
- 使用dpkt
- python强制类型转换(dpkt)
- 使用WireShark分析DICOM数据包
- 使用Scapy分析pcap数据包
- Python 2.7.X安装dpkt, sendpkt, pycap
- python:ImportError: No module named dpkt
- python:ImportError: No module named dpkt
- Python绝技笔记--------python利用dpkt操作pcap
- mac使用Wireshark抓取分析iphone数据包
- 使用wireshark分析加密的WIFI数据包
- 分析数据包
- 数据包分析
- 学习dpkt库-dpkt.py
- 使用网络监视器(IRSI)捕捉和分析协议数据包
- mac下抓取分析iphone数据包 - 使用Wireshark
- 使用Wireshark mac下抓取分析iphone数据包 --IOS端
- 关于.getClass()和.class的区别
- handler
- 将pdf转换成word格式的转换方法
- [DIV/CSS] CSS-清除浮动
- SimpleDateFormate的使用
- Python 使用dpkt分析数据包
- 数组中出现次数超过一半的数字
- Solr --- 聚合统计stats
- java开发工具——eclipse
- android调整对话框长宽
- android MVP模式介绍与实战
- 翻转课堂心得
- 6.4 高斯过程
- c# 发送GET 和 POST请求