python调用tcpdump抓包过滤
之前在linux用python脚本写一个抓包分析小工具,实在不想用什么libpcap、pypcap所以,简单来了个tcpdump加grep搞定。基本思路是分别起tcpdump和grep两个进程,进程直接通过pipe交换数据,简单代码例如以下:
#! /usr/bin/pythondef tcpdump():import subprocess, fcntl, os# sudo tcpdump -i eth0 -n -s 0 -w - | grep -a -o -E "Host: .*|GET /.*"cmd1 = ['tcpdump', '-i', 'eth0', '-n','-B', '4096','-s', '0', '-w', '-']cmd2 = ['grep', '--line-buffered', '-a', '-o', '-E', 'Host: .*|GET /.*']p1 = subprocess.Popen(cmd1, stdout=subprocess.PIPE)p2 = subprocess.Popen(cmd2, stdout=subprocess.PIPE, stdin=p1.stdout)flags = fcntl.fcntl(p2.stdout.fileno(), fcntl.F_GETFL)fcntl.fcntl(p2.stdout.fileno(), fcntl.F_SETFL, (flags | os.O_NDELAY | os.O_NONBLOCK))return p2def poll_tcpdump(proc):#print 'poll_tcpdump....'import selecttxt = Nonewhile True:# wait 1/10 second readReady, _, _ = select.select([proc.stdout.fileno()], [], [], 0.1)if not len(readReady):breaktry:for line in iter(proc.stdout.readline, ""):if txt is None:txt = ''txt += lineexcept IOError:print 'data empty...'passbreakreturn txtproc = tcpdump()
while True:text = poll_tcpdump(proc)if text:print '>>>> ' + text
执行效果:
当中值得注意tcpdump中'-B', '4096'这个參数。官方文档貌似没有明白提及,可是它是你解决丢包的关键地方之中的一个。当然还有-s这个參数也得好好利用!
其它的大家能够自由发挥。
转载请注明:http://blog.csdn.net/wangqiuyun/article/details/46966839
python调用tcpdump抓包过滤相关推荐
- Python调用Tushare抓取上证指数并作初步分析示例
1.关于Tusahre Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采集.清洗加工 到 数据存储的过程,能够为金融分析人员提供快速.整洁.和多样的便于分析 ...
- html 调用tcpdump,抓包工具:tcpdump抓包命令详解
简介: tcpdump全称:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的"头& ...
- python解包dump,tcpdump抓包及tshark解包方法介绍
tshark是wireshark的命令行工具,经过shell命令抓取.解析报文.tcpdump是Linux系统下的抓包工具.wireshark和tcpdump都共同使用 libpcap做为其底层抓包的 ...
- 使用Python调用Flickr API抓取图片数据
Flickr是雅虎旗下的图片分享网站,上面有全世界网友分享的大量精彩图片,被认为是专业的图片网站.其API也很友好,可以实现多种功能.这里我使用了Python调用其API获得了大量的照片数据.需要注意 ...
- 在 Linux 命令行中使用 tcpdump 抓包
tcpdump抓包时,如果-i选项指定为一个网卡地址,那么抓取的数据包数据链路层是以太网头部:如果指定any,则以太网头部将被替换为linux cooked capture头部 # tcpdump - ...
- tcpdump 抓包
简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的 ...
- tcpdump抓包使用小结
前言 tcpdump 是一个很常用的网络包分析工具,可以用来显示通过网络传输到本系统的 TCP/IP 以及其他网络的数据包.tcpdump 使用 libpcap 库来抓取网络报,这个库在几乎在所有的 ...
- tcpdump抓包笔记
1. 概述 tcpdump 是一个命令行实用工具,允许你抓取和分析经过系统的流量数据包.它通常被用作于网络故障分析工具以及安全工具. 并且支持多种选项和过滤规则,适用场景十分广泛. 由于它是命令行工具 ...
- Linux tcpdump抓包
简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的 ...
最新文章
- python queue 模块教程
- iframe 覆盖父页面_一次iframe子页面与父页面的通信
- 在无头单链表的一个非头节点前插入一个节点(C语言)
- ubuntu16.04下FSA-Net环境安装和训练
- 生物信息学初学——山大公开课笔记
- 线性代数(同济) 第六版 复习
- 完成类似百度贴吧客户端tableview滑动效果
- thinkpad e480安装win7
- AngularJS知识概括
- centos6查看运行服务器,centos如何查看端口是否开放_网站服务器运行维护,centos,端口...
- python有架构师吗_运维架构师-Python 自动化运维开发-021
- 小学生计算机校本课程教材,二年级校本课程教材
- Retinanet网络结构简介
- 机顶盒ttl无法输入_哪位大神帮帮忙,B860 AV1.1 TTL 无法输入命令
- kafka如何扩容分区Partition、并重新分区
- 利用 Travis CI 把 Android 项目部署到 github
- 写一个各向异性/各向同性高斯滤波器
- 去除js代码混淆的方法,亲测有效
- Qt实践3: 图片浏览器
- 墨刀--在线原型设计工具
热门文章
- CTreeCtrl标签的编辑
- LINQ to SQL 在 Visual Studio 2008 中的简单应用
- String比较 运用String.equals
- vue.js 多图上传,并可预览
- Python黑帽编程 3.1 ARP欺骗
- 甲骨文推出全新Oracle Cloud at Customer
- 2015年十佳IDC评选结果:50强名单揭晓
- 关于CLR、CIL、CTS、CLS、CLI、BCL和FCL
- ubuntu的SSH的安装和免密码登陆
- Windows开发环境搭建(安装 VS2010, VS2013, VS2015 Community, Windows Server 2008 R2)