python实现linux下抓包并存库功能


Posted in Python onJuly 18, 2018

最近项目需要抓包功能,并且抓包后要对数据包进行存库并分析。抓包想使用tcpdump来完成,但是tcpdump抓包之后只能保存为文件,我需要将其保存到数据库。想来想去shell脚本似乎不太好实现,于是用了比较热门的python来实现。不得不说,python丰富的第三方库确实是很强大,下面是具体的功能代码。

from apscheduler.scheduler import Scheduler
import os
import sys
import time
import MySQLdb
import ConfigParser
import Logger

def main():

  logger = Logger.Logger(logname='flowstat.log', loglevel=1, logger='flowstat').getlog()

  try:
    cf = ConfigParser.ConfigParser()
    cf.read('./flowstat.conf')

    filterNet1 = cf.get('packet', 'filterNet1')
    filterNet2 = cf.get('packet', 'filterNet2')
    packetFile = cf.get('packet', 'packetFile')

    db_host = cf.get('db', 'host')
    db_user = cf.get('db', 'user')
    db_passwd = cf.get('db', 'passwd')
    db_dbname = cf.get('db', 'dbname')

    conn = MySQLdb.connect(host=db_host, user=db_user, passwd=db_passwd, db=db_dbname, port=3306)

    os.system('nohup ./capturePacket.sh ' + filterNet1 + ' ' + filterNet2 + ' ' + packetFile + ' &')
  except Exception, e:
    logger.error(e)
    sys.exit(1)


  sched = Scheduler(daemonic = False)
  @sched.cron_schedule(day_of_week='0-4', hour='*', minute='0-59', second='*/60')
  def packagestat_job():
    logger.debug('stat package' + ' ' + time.strftime("%Y-%m-%d %H:%M:%S"))
    try:
      fos = open(packetFile, 'r+')
      lines = fos.readlines()
      values = []
      for line in lines:
        arr = line.split(',')
        if len(arr) > 4:
          values.append((arr[0].strip(), arr[2].strip(), arr[3].strip(), arr[4].strip()))

      if len(values) > 0:
        cur = conn.cursor()
        cur.executemany('insert into tbpk_packet(TimesMacs, LengthIps, Seq, Ack) values(%s,%s,%s,%s)', values)
        conn.commit()
        cur.close()

      fos.truncate(0)
      fos.close()
    except Exception, e3:
      Logger.error(e3)


  sched.start()

  while 1:
    time.sleep(60)

  conn.close()

if __name__ == '__main__':
  main()

shell脚本
#!/bin/sh
tcpdump -i eth0 -l >> *.txt

上面的功能涉及到了文件操作,数据库操作,定时任务等几个功能点。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python内置的字符串处理函数详细整理(覆盖日常所用)
Aug 19 Python
使用Pyrex来扩展和加速Python程序的教程
Apr 13 Python
浅谈Python中用datetime包进行对时间的一些操作
Jun 23 Python
Python文本相似性计算之编辑距离详解
Nov 28 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
Jun 17 Python
python实现微信自动回复及批量添加好友功能
Jul 03 Python
python 含子图的gif生成时内存溢出的方法
Jul 07 Python
Kali Linux安装ipython2 和 ipython3的方法
Jul 11 Python
Python 实现微信自动回复的方法
Sep 11 Python
将不规则的Python多维数组拉平到一维的方法实现
Jan 11 Python
Keras多线程机制与flask多线程冲突的解决方案
May 28 Python
使用python绘制横竖条形图
Apr 21 Python
python调用tcpdump抓包过滤的方法
Jul 18 #Python
Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例
Jul 18 #Python
解决Python3中的中文字符编码的问题
Jul 18 #Python
Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
Jul 18 #Python
python 将print输出的内容保存到txt文件中
Jul 17 #Python
python 实现对数据集的归一化的方法(0-1之间)
Jul 17 #Python
Python计算开方、立方、圆周率,精确到小数点后任意位的方法
Jul 17 #Python
You might like
PHP数组交集的优化代码分析
2011/03/06 PHP
php数据结构与算法(PHP描述) 快速排序 quick sort
2012/06/21 PHP
WampServer下安装多个版本的PHP、mysql、apache图文教程
2015/01/07 PHP
php将一维数组转换为每3个连续值组成的二维数组
2016/05/06 PHP
浅谈PHP正则中的捕获组与非捕获组
2016/07/18 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
PHP通过get方法获得form表单数据方法总结
2018/09/12 PHP
workerman结合laravel开发在线聊天应用的示例代码
2018/10/30 PHP
静态的动态续篇之来点XML
2006/08/15 Javascript
dojo 之基础篇(三)之向服务器发送数据
2007/03/24 Javascript
JS无限树状列表实现代码
2011/01/11 Javascript
使用Javascript简单实现图片无缝滚动
2014/12/05 Javascript
WebGL利用FBO完成立方体贴图效果完整实例(附demo源码下载)
2016/01/26 Javascript
JQuery validate插件Remote用法大全
2016/05/15 Javascript
深入理解AngularJS中的ng-bind-html指令和$sce服务
2016/09/08 Javascript
json的结构与遍历方法实例分析
2017/04/25 Javascript
bootstrap table表格使用方法详解
2017/04/26 Javascript
详解Javascript 中的 class、构造函数、工厂函数
2017/12/20 Javascript
JS函数基本定义与用法示例
2020/01/15 Javascript
[14:56]教你分分钟做大人:巫医
2014/10/30 DOTA
Python实现过滤单个Android程序日志脚本分享
2015/01/16 Python
Python中装饰器兼容加括号和不加括号的写法详解
2017/07/05 Python
python 使用正则表达式按照多个空格分割字符的实例
2018/12/20 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
2019/06/26 Python
Django后端接收嵌套Json数据及解析详解
2019/07/17 Python
python框架Django实战商城项目之工程搭建过程图文详解
2020/03/09 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
2020/04/15 Python
Python如何爬取51cto数据并存入MySQL
2020/08/25 Python
Philosophy美国官网:美国美容品牌
2016/08/15 全球购物
大学毕业生的自我鉴定
2013/11/30 职场文书
高中毕业生生活的自我评价
2013/12/08 职场文书
总裁助理岗位职责
2014/02/17 职场文书
毕业生如何写自我鉴定
2014/03/15 职场文书
市场营销策划方案
2014/06/11 职场文书
委托开发合同书(标准版)
2019/08/07 职场文书
基于python制作简易版学生信息管理系统
2021/04/20 Python