python 进行抓包嗅探
一、绪论
最近一直想弄一个代理,并且对数据包进行解读,从而完成来往流量的嗅探。于是今天学习了一下如何使用Python抓包并进行解包。
首先要用到两个模块
dpkt(我这边ubuntu16.04 LTS)Python2.7中默认安装的
pcap安装
pip install pypcap
然后来说一下,pypcap主要用来抓包或者说是sniffer的,dpkt用来解包的,我对dpkt的认知是解包传输层以及传输层一下的数据比较不错,但是对于应用层数据的解读就是渣渣。尤其是HTTP,所以HTTP部分解包,是我自己重写的,并没有使用dpkt.http.Request和dpkt.http.Response。(总他妈报错).
二、目前做到:
(1)正常解码请求和响应数据包。
(2)对于长连接传输数据的数据包解读失败。
三、先来讲抓包
import pcap
import dpkt sniffer = pcap.pcap(name="eth1") #name parameter => interface name
sniffer.setfilter("tcp") #filter sentence
for packet_time packet_data in sniifer:
pass # packet_time => packet receive time
# packet_data => ethernet level data
四、解包:
packet = dpkt.ethernet.Ethernet(pdata)#二层数据报文嘛
print "SRC IP:%d.%d.%d.%d"%tuple(map(ord,list(packet.data.src)))
print "DST IP:%d.%d.%d.%d"%tuple(map(ord,list(packet.data.dst)))
print "SRC PORT:%s"%packet.data.data.sport
print "DST PORT:%s"%packet.data.data.dport
五、HTTP部分是我自己解的包:
def http_request_analyst(string):
string = string[1:-1]
method = string.split(" ")[0]
print "Method:",method
path = string.split(" ")[1]
print "Path:",urllib.unquote(path)
protover = string.split(" ")[2].split("\\r\\n")[0]
print "Protocol Version:",protover
headers = string.split("\\r\\n\\r\\n")[0].split("\\r\\n")[1:]
print "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"
print "Header:"
for header in headers:
header = header.split(":")
try:
hstr = "%s:%s"%(str(header[0]),str(header[1])) if header[0] not in ["Referer"] else "%s:%s:%s"%(str(header[0]),str(header[1]),str(header[2]))
except Exception,ex:
print "[*]",ex
print header
raw_input()
print hstr
print "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"
print "Data:",string.split("\\r\\n")[-1]
def http_response_analyst(string):
string = string[1:-1]
protover = string.split(" ")[0]
print "Protocol Version:",protover
status_code = string.split(" ")[1]
print "Response Code:",status_code
status_string = string.split(" ")[2].split("\\r\\n")[0]
print "Reposne String:",status_string
headers = string.split("\\r\\n\\r\\n")[0].split("\\r\\n")[1:]
print repr(headers)
print repr(string)
print "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"
print "Header:"
for header in headers:
header = header.split(":")
try:
hstr = "%s:%s"%(str(header[0]),str(header[1])) if header[0] not in ["Referer"] else "%s:%s:%s"%(str(header[0]),str(header[1]),str(header[2]))
except Exception,ex:
print "[*]",ex
print header
raw_input()
print hstr
print "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"
print "Data:",string.split("\\r\\n")[-1]
六、效果如图了:
python 进行抓包嗅探的更多相关文章
- 小白日记22:kali渗透测试之提权(二)--抓包嗅探
抓包嗅探 通过抓包嗅探目标机器的流量,发现账号密码. Windows系统 1.Wirehshark 2.Omnipeek 3.commview 4.Sniffpass 只会抓取识别传输密码的明文协议, ...
- Python—网络抓包与解包(pcap、dpkt)
pcap安装 [root@localhost ~]# pip install pypcap 抓包与解包 # -*- coding:utf-8 -*- import pcap, dpkt import ...
- Python + winpcap抓包和发包
winpcapy Python的winpcapy库可以简单地实现收发Layer2层(数据链路层,以太网)数据. winpcapy主页:https://github.com/orweis/winpcap ...
- python抓包截取http记录日志
#!/usr/bin/python import pcap import dpkt import re def main(): pc=pcap.pcap(name="eth1" ...
- python编写网络抓包分析脚本
python编写网络抓包分析脚本 写网络抓包分析脚本,一个称手的sniffer工具是必不可少的,我习惯用Ethereal,简单,易用,基于winpcap的一个开源的软件 Ethereal自带许多协议的 ...
- python socket+tcp三次握手四次撒手学习+wireshark抓包
Python代码: server: #!/usr/bin/python # -*- coding: UTF-8 -*- # 文件名:server.py import socket # 导入 socke ...
- Python+Requests接口测试教程(1):Fiddler抓包工具
本书涵盖内容:fiddler.http协议.json.requests+unittest+报告.bs4.数据相关(mysql/oracle/logging)等内容.刚买须知:本书是针对零基础入门接口测 ...
- Python 爬虫——抖音App视频抓包
APP抓包 前面我们了解了一些关于 Python 爬虫的知识,不过都是基于 PC 端浏览器网页中的内容进行爬取.现在手机 App 用的越来越多,而且很多也没有网页端,比如抖音就没有网页版,那么上面的视 ...
- jmeter压测数据库,抓包工具,python基础
jmeter压力测试 前提场景的设置:单场景(单个接口进行压力测试一个请求)或混合场景(有业务流程的场景进行压力测试多个请求),压测时间一般在5--1515分组具体看需求. 数据准备:数据量少和数据量 ...
随机推荐
- device mapper的使用
http://www.ibm.com/developerworks/cn/linux/l-devmapper/index.html 这个页面讲了点原理,可以看一下. dmsetup命令 显示当前的de ...
- No supported encrypter found. The cipher and / or key length are invalid.
终端使用如下命令: php artisan key:generate 将生成的key复制到config/app.php替换82行的APP_KEY键值.
- CSS 块级元素、内联元素概念
p.h1.或div等元素常常称为块级元素,这些元素显示为一块内容:Strong.span等元素称为行内元素,它们的内容显示在行中,即“行内框”.(可以使用display=block将行内元素转换成块元 ...
- 非常强大的jQuery万能浮动框插件
支持hover, click, focus以及无事件触发:支持多达12种位置的定位,出界自动调整:支持页面元素加载,Ajax加载,下拉列表,提示层效果,tip类效果等:可自定义装载容器:内置UI不错的 ...
- 上传图片(示列分析) $_FILES
新建一个think_photo数据库,库里用sql CREATE TABLE IF NOT EXISTS `think_photo` ( `id` ) NOT NULL AUTO_INCREMENT, ...
- 本地Git仓库和远程仓库的创建及关联
新建一个远程的仓库(空的) 新建一个远程仓库 设置远程仓库的名字,并创建 设置仓库名 切记:如果我们在创建远程仓库的时候添加了README和.ignore等文件,我们在后面关联仓库后,需要先执行pul ...
- spring只是一个框架
想跟着 spring in action 4 系统的研究下spring,结果发现忘了怎么建一个spring项目. 关键是,不知道该建一个什么项目,Java项目?Maven项目(Java项目?Web项目 ...
- (转)loff_t *ppos是什么东东
ssize_t generic_file_read(struct file * filp, char * buf, size_t count, loff_t *ppos) 这是一个文件读函数 我们很容 ...
- nodejs基础 -- 交互式解析器(REPL)
------------类似在浏览器中调试js代码----------------------- Node.js REPL(交互式解释器) Node.js REPL(Read Eval Print L ...
- Openstack镜像和密码
#!/bin/sh passwd ubuntu<<EOF ubuntu ubuntu EOF sed -i 's/PasswordAuthentication no/PasswordAut ...