python 抓包保存为pcap文件并解析的实例


Posted in Python onJuly 23, 2019

首先是抓包,使用scapy模块,

sniff()函数 在其中参数为本地文件路径时,操作为打开本地文件

若参数为BPF过滤规则和回调函数,则进行Sniff,回调函数用于对Sniff到的数据包进行处理

import os
from scapy.all import *
 
pkts=[]
count=0
pcapnum=0
filename=''
 
def test_dump_file(dump_file):
  print "Testing the dump file..."
  
  if os.path.exists(dump_file):
    print "dump fie %s found." %dump_file
    pkts=sniff(offline=dump_file)
    count = 0
    while (count<=2):                   
      print "----Dumping pkt:%s----" %dump_file
      print hexdump(pkts[count])
      count +=1
  else:
    print "dump fie %s not found." %dump_file
 
def write_cap(x):
  global pkts
  global count
  global pcapnum
  global filename
  pkts.append(x)
  count +=1
  if count ==3:             <span style="font-family: Arial, Helvetica, sans-serif;">#每3个TCP操作封为一个包(为了检测正确性,使用时尽量增多)</span>
 
  
  pcapnum +=1
  pname="pcap%d.pcap"%pcapnum
  wrpcap(pname,pkts)
  filename ="./pcap%d.pcap"%pcapnum
  test_dump_file(filename)
  pkts=[]
  count=0
    
 
 
 
if __name__=='__main__':
  print "Start packet capturing and dumping ..."
  sniff(filter="dst net 127.0.0.1 and tcp",prn=write_cap)   #BPF过滤规则

下面是对pcap文件的解析,会自动查找下一个pcap文件,按照src.ip和dst.ip进行划分

# -*- coding: cp936 -*-
import re
import zlib
import os
 
from scapy.all import *
num=1
a=rdpcap("pcap1.pcap")               #循环打开文件
while True:
  try:
    num+=1
    file_name="pcap%d.pcap" % num
    b=rdpcap(file_name)
    a=a+b
  except:
    break
    print "[*] Read pcap file ok"
  
 
 
print "[*] Begin to parse pcapfile..."
print a
try:
  #print "[*] OPen new pcap_file %s" % pcap_file
  sessions=a.sessions()
  for session in sessions:
    print "[*]New session %s" % session
    data_payload=""
    for packet in sessions[session]:
      try:
        data_payload +=str(packet[TCP].payload)
        print "[**] Data:%s" % data_payload
      except:
        pass
except:
  print "[*]no pcapfile..."

以上这篇python 抓包保存为pcap文件并解析的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现通过shelve修改对象实例
Sep 26 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
Jan 04 Python
python用win32gui遍历窗口并设置窗口位置的方法
Jul 26 Python
基于Python解密仿射密码
Oct 21 Python
python 解决flask uwsgi 获取不到全局变量的问题
Dec 22 Python
python编程进阶之类和对象用法实例分析
Feb 21 Python
jupyter notebook参数化运行python方式
Apr 10 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
Jun 03 Python
pytorch简介
Nov 11 Python
Python实例教程之检索输出月份日历表
Dec 16 Python
python Scrapy爬虫框架的使用
Jan 21 Python
关于探究python中sys.argv时遇到的问题详解
Feb 23 Python
Django ModelForm组件使用方法详解
Jul 23 #Python
Pandas之groupby( )用法笔记小结
Jul 23 #Python
Python OpenCV调用摄像头检测人脸并截图
Aug 20 #Python
使用PYTHON解析Wireshark的PCAP文件方法
Jul 23 #Python
Django 静态文件配置过程详解
Jul 23 #Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
Jul 23 #Python
pandas通过字典生成dataframe的方法步骤
Jul 23 #Python
You might like
一个漂亮的php验证码类(分享)
2013/08/06 PHP
PHP制作万年历
2015/01/07 PHP
PHP生成唯一订单号的方法汇总
2015/04/16 PHP
PHP实现的oracle分页函数实例
2016/01/25 PHP
Laravel利用gulp如何构建前端资源详解
2018/06/03 PHP
PHP实现统计代码行数小工具
2019/09/19 PHP
让网页根据不同IE版本显示不同的内容
2009/02/08 Javascript
node.js实现多图片上传实例
2014/06/03 Javascript
使用原生JS实现弹出层特效
2014/12/22 Javascript
浅析vue component 组件使用
2017/03/06 Javascript
详解Nodejs之npm&amp;package.json
2017/06/15 NodeJs
javascript 面向对象实战思想分享
2017/09/07 Javascript
js 开发之autocomplete=&quot;off&quot;在chrom中失效的解决办法
2017/09/28 Javascript
修改UA在PC中访问只能在微信中打开的链接方法
2017/11/27 Javascript
jQuery封装animate.css的实例
2018/01/04 jQuery
vue一个页面实现音乐播放器的示例
2018/02/06 Javascript
vue 中动态绑定class 和 style的方法代码详解
2018/06/01 Javascript
Vue父组件向子组件传值以及data和props的区别详解
2020/03/02 Javascript
[04:17]DOTA2完美盛典,rOtk、BurNIng携手巴图演唱《倔强》
2017/11/28 DOTA
python通过函数属性实现全局变量的方法
2015/05/16 Python
Python实现简单拆分PDF文件的方法
2015/07/30 Python
python实现12306火车票查询器
2017/04/20 Python
Python+tkinter使用40行代码实现计算器功能
2018/01/30 Python
总结python 三种常见的内存泄漏场景
2020/11/20 Python
CSS3 linear-gradient线性渐变生成加号和减号的方法
2017/11/21 HTML / CSS
html5中canvas学习笔记2-判断浏览器是否支持canvas
2013/01/06 HTML / CSS
学校办公室主任职责
2013/12/27 职场文书
毕业自我评价
2014/02/05 职场文书
大学生入党推荐书范文
2014/05/17 职场文书
汽车维修求职信
2014/06/15 职场文书
银行柜员求职自荐书
2014/06/18 职场文书
长城导游词400字
2015/01/30 职场文书
蔬果开业典礼发言稿应该怎么写?
2019/09/03 职场文书
MATLAB 如何求取离散点的曲率最大值
2021/04/16 Python
Vue OpenLayer 为地图绘制风场效果
2022/04/24 Vue.js
GPU服务器的多用户配置方法
2022/07/07 Servers