python抓包截取http记录日志
#!/usr/bin/python
import pcap
import dpkt
import re
def main():
pc=pcap.pcap(name="eth1") # 抓取 eth1
pc.setfilter('tcp port 80') # 过滤表达式 tcp port 80
for p_time, p_data in pc: #
ret = main_pcap(p_time, p_data)
if ret:
print ret
def main_pcap(p_time, p_data): # 解码
out_format = "%s\t%s\t%s\t%s\t%s\tHTTP/%s"
p = dpkt.ethernet.Ethernet(p_data) #
ret = None
if p.data.__class__.__name__ == 'IP':
ip_data = p.data
src_ip = '%d.%d.%d.%d' % tuple(map(ord,list(ip_data.src)))
dst_ip = '%d.%d.%d.%d' % tuple(map(ord,list(ip_data.dst)))
if p.data.data.__class__.__name__=='TCP':
tcp_data = p.data.data
if tcp_data.dport==80:
if tcp_data.data:
h = dpkt.http.Request(tcp_data.data) # http解码
pre = "^/.*$"
if match(pre, h.uri): # url 重写
http_headers = h.headers
host = h.headers['host']
url = "http://" + host + h.uri
else:
url = h.uri
# datetime srcip dstip GET /index.htm HTTP/1.1 # 输出日志格式
ret = out_format % (p_time, src_ip, dst_ip, h.method, url, h.version)
return ret
def match(pre, line):
p = re.compile(pre)
m = p.match(line)
return m
# 脚本运行也达到了武星预期的要求,OK。
# 后续记录下referer 还是很有必要的。
======================================================================================
安装
1. python 2.5
2. pypcap python的抓包函数库
http://code.google.com/p/pypcap/downloads/list
3. dpkt python的解包函数库
http://code.google.com/p/dpkt/downloads/list
4. winpcap python支持pacp的驱动
如果有wireshark的话,就直接安装wireshark吧,里面带着winpcap
在Linux中有个库叫做libpcap可以胜任。libpcap是一个简单而又强大的数据包捕获函数库,可以在多种操作系统上运行。
关于libpcap有几个很好的教程:
http://www.tcpdump.org/pcap.htm (官方向导,英文,写得很适合新手)
http://blog.csdn.net/bat603/archive/2006/09/04/1175729.aspx (主要函数中文说明)
http://blog.csdn.net/bat603/archive/2006/09/04/1176251.aspx (入门源码)
python抓包截取http记录日志的更多相关文章
- Python 抓包程序(pypcap)
#/usr/bin/env python #-*-coding:utf8-*- #抓包脚本 """ This script is used to Capture and ...
- python抓包模块
pcapy模块 安装 yum install -y epel-release yum install -y pip gcc gcc-c++ libpcap-devel python-deve ...
- python 进行抓包嗅探
一.绪论 最近一直想弄一个代理,并且对数据包进行解读,从而完成来往流量的嗅探.于是今天学习了一下如何使用Python抓包并进行解包. 首先要用到两个模块 dpkt(我这边ubuntu16.04 LTS ...
- 【Golang】嗅探抓包,解决线上偶现问题来不及抓包的情况
背景 测试群里经常看到客户端的同学反馈发现了偶现Bug,但是来不及抓包,最后不了了之,最近出现得比较频繁,所以写个小脚本解决这个问题. 实现思路 实现的思路比较简单: 抓包 存日志 做日志管理 具体实 ...
- MySQL、Redis、MongoDB网络抓包工具
简介 go-sniffer 可以抓包截取项目(MySQL.Redis.MongoDB)中的请求并解析成相应的语句,并格式化输出.类似于在之前的文章 MySQL抓包工具:MySQL Sniffer[转] ...
- jmeter压测数据库,抓包工具,python基础
jmeter压力测试 前提场景的设置:单场景(单个接口进行压力测试一个请求)或混合场景(有业务流程的场景进行压力测试多个请求),压测时间一般在5--1515分组具体看需求. 数据准备:数据量少和数据量 ...
- 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)等内容.刚买须知:本书是针对零基础入门接口测 ...
随机推荐
- jquerycheckbox事件
https://stackoverflow.com/questions/7031226/jquery-checkbox-change-and-click-event $(document).ready ...
- **Git本地仓库图解
Git基本概念 在Git中,我们将需要进行版本控制的文件目录叫做一个仓库(repository),每个仓库可以简单理解成一个目录,这个目录里面的所有文件都通过Git来实现版本管理,Git都能跟踪并记录 ...
- swipper插件引起的a链接失效问题
在使用swiper过程中,发现a链接失效,此处没有效果,问题是 swiper是基于移动端触摸的,会有一个全局的click事件,这个事件屏蔽了A标签的链接,是为了防止手机滑动的时候不小心触发A标签而设定 ...
- Ubuntu 14.04 安装JDK 8
1.安装JDK,参考 1.下载 JDK 8 从http://www.oracle.com/technetwork/java/javasebusiness/downloads/选择下载JDK的最新版本 ...
- python debug小技巧&&工程能力的几点建议
Debug小技巧: 转载请声明本文的引用出处:仰望大牛的小清新 1.初次编程时,在每一个if后面都写上else,这样,如果你的else原本是不应该运行的,那么就可以在else中输出此时的状态信息便于排 ...
- 训练指南 UVALive - 3126(DAG最小路径覆盖)
layout: post title: 训练指南 UVALive - 3126(DAG最小路径覆盖) author: "luowentaoaa" catalog: true mat ...
- shell 查看 具体某行的值
sed: sed '5!d' file awk: awk 'NR==5' file
- 【数位dp】hdu3555 Bomb
题意就是找0到n有多少个数中含有49.数据范围接近10^20 DP的状态是2维的dp[len][3]dp[len][0] 代表长度为len不含49的方案数dp[len][1] 代表长度为len不含49 ...
- C语言计算器
地址: https://wenda.so.com/q/1371173683061754?src=140
- Mybatis添加用户&&Mybatis添加用户返回ID
(1)添加用户(添加User记录) <!--插入用户 --> <insert id="insertUser" parameterType="com.so ...