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实现的文件同步服务器实例
Jun 02 Python
Python实现telnet服务器的方法
Jul 10 Python
python 换位密码算法的实例详解
Jul 19 Python
python 读写excel文件操作示例【附源码下载】
Jun 19 Python
Django的Modelforms用法简介
Jul 27 Python
pycharm配置git(图文教程)
Aug 16 Python
python return逻辑判断表达式实现解析
Dec 02 Python
Python读取YAML文件过程详解
Dec 30 Python
Django模型中字段属性choice使用说明
Mar 30 Python
Python生成器generator原理及用法解析
Jul 20 Python
Python实现一个简单的递归下降分析器
Aug 01 Python
Python3使用 GitLab API 进行批量合并分支
Oct 15 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中利用substr_replace将指定两位置之间的字符替换为*号
2011/01/27 PHP
PHP实现的博客欢迎提示功能(很特别哦)
2014/06/05 PHP
教你如何用php实现LOL数据远程获取
2014/06/10 PHP
利用PHP生成静态html页面的原理
2016/09/30 PHP
thinkPHP模板中函数的使用方法示例
2016/11/30 PHP
php基于dom实现读取图书xml格式数据的方法
2017/02/03 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
比Jquery的document.ready更快的方法
2010/04/28 Javascript
js实现登陆遮罩效果的方法
2015/07/28 Javascript
jQuery的Ajax用户认证和注册技术实例教程(附demo源码)
2015/12/08 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
2016/07/24 Javascript
jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
2016/09/17 Javascript
Angular5中调用第三方库及jQuery的添加的方法
2018/06/07 jQuery
Vue封装的可编辑表格插件方法
2018/08/28 Javascript
原生JavaScript实现日历功能代码实例(无引用Jq)
2019/09/23 Javascript
vue 中几种传值方法(3种)
2019/11/12 Javascript
jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】
2020/05/19 jQuery
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
2020/05/28 Javascript
[01:14]2019完美世界城市挑战赛(秋季赛)全国总决赛精彩花絮
2020/01/08 DOTA
Python操作列表的常用方法分享
2014/02/13 Python
python中abs&amp;map&amp;reduce简介
2018/02/20 Python
Django实现分页功能
2018/07/02 Python
Python使用pymysql模块操作mysql增删改查实例分析
2019/12/19 Python
Python操作Word批量生成合同的实现示例
2020/08/28 Python
Django中如何用xlwt生成表格的方法步骤
2021/01/31 Python
Python使用tkinter实现小时钟效果
2021/02/22 Python
Android本地应用打开方法——通过html5写连接
2016/03/11 HTML / CSS
英国领先的电动可调床制造商:Laybrook
2019/12/26 全球购物
Linux不知道文件后缀名怎么判断文件类型
2014/08/21 面试题
质检部职责
2013/12/28 职场文书
班主任工作年限证明
2014/01/12 职场文书
“四风”问题的主要表现和危害思想汇报
2014/09/19 职场文书
西安导游词
2015/02/12 职场文书
原告代理词范文
2015/05/25 职场文书
vue打包时去掉所有的console.log
2022/04/10 Vue.js
vue ant design 封装弹窗表单的使用
2022/06/01 Vue.js