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实现人人网登录示例分享
Jan 19 Python
分析并输出Python代码依赖的库的实现代码
Aug 09 Python
使用py2exe在Windows下将Python程序转为exe文件
Mar 04 Python
Python中表达式x += y和x = x+y 的区别详解
Jun 20 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
May 26 Python
Windows下PyCharm安装图文教程
Aug 27 Python
Python中numpy模块常见用法demo实例小结
Mar 16 Python
对于Python深浅拷贝的理解
Jul 29 Python
Python中的 sort 和 sorted的用法与区别
Aug 10 Python
浅谈对pytroch中torch.autograd.backward的思考
Dec 27 Python
理解Django 中Call Stack机制的小Demo
Sep 01 Python
详解Python为什么不用设计模式
Jun 24 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页面缓存ob系列函数介绍
2012/10/18 PHP
做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
2013/04/13 PHP
探讨:如何使用PhpDocumentor生成文档
2013/06/25 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
2014/06/25 PHP
深入解析PHP中foreach语句控制数组循环的用法
2015/11/30 PHP
php从数据库中获取数据用ajax传送到前台的方法
2018/08/20 PHP
JS中style属性
2006/10/11 Javascript
JS中的prototype与面向对象的实例讲解
2013/05/22 Javascript
JavaScript模块规范之AMD规范和CMD规范
2015/10/27 Javascript
如何使用jquery修改css中带有!important的样式属性
2016/04/28 Javascript
javascript实现简单的on事件绑定
2016/08/23 Javascript
基于javascript实现的快速排序
2016/12/02 Javascript
Vue计算属性的学习笔记
2017/03/22 Javascript
js中toString()和String()区别详解
2017/03/23 Javascript
React-intl 实现多语言的示例代码
2017/11/03 Javascript
深入理解 webpack 文件打包机制(小结)
2018/01/08 Javascript
动态Axios的配置步骤详解
2018/01/12 Javascript
微信小程序swiper禁止用户手动滑动代码实例
2019/08/23 Javascript
浅谈layer弹出层按钮颜色修改方法
2019/09/11 Javascript
Vue混入mixins滚动触底的方法
2019/11/22 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
2020/05/20 Javascript
代码块高亮可复制显示js插件highlight.js+clipboard.js整合
2021/02/15 Javascript
[10:21]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster 选手采访
2021/03/11 DOTA
Python专用方法与迭代机制实例分析
2014/09/15 Python
selenium python浏览器多窗口处理代码示例
2018/01/15 Python
Python Pandas找到缺失值的位置方法
2018/04/12 Python
Python实现的个人所得税计算器示例
2018/06/01 Python
Python一句代码实现找出所有水仙花数的方法
2018/11/13 Python
Pandas统计重复的列里面的值方法
2019/01/30 Python
用css3写出气球样式的示例代码
2017/09/11 HTML / CSS
详解三种方式实现平滑滚动页面到顶部的功能
2019/04/23 HTML / CSS
读书心得体会
2013/12/28 职场文书
法院先进个人事迹材料
2014/05/04 职场文书
图书室标语
2014/06/21 职场文书
见习报告的格式
2014/10/31 职场文书
入党介绍人考察意见
2015/06/01 职场文书