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编写函数装饰器
Mar 18 Python
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
Jul 11 Python
python获取文件真实链接的方法,针对于302返回码
May 14 Python
基于numpy中数组元素的切片复制方法
Nov 15 Python
python网络编程 使用UDP、TCP协议收发信息详解
Aug 29 Python
python turtle 绘制太极图的实例
Dec 18 Python
python入门之基础语法学习笔记
Feb 08 Python
django model的update时auto_now不被更新的原因及解决方式
Apr 01 Python
如何基于windows实现python定时爬虫
May 01 Python
Ubuntu16安装Python3.9的实现步骤
Dec 15 Python
PyQt5通过信号实现MVC的示例
Feb 06 Python
手把手教你使用TensorFlow2实现RNN
Jul 15 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
跟我学Laravel之请求与输入
2014/10/15 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
2016/02/22 PHP
javascript下IE与FF兼容函数收集
2008/09/17 Javascript
网页中返回顶部代码(多种方法)另附注释说明
2013/04/24 Javascript
javascript 数字格式化输出的实现代码
2013/12/10 Javascript
js实现鼠标移到链接文字弹出一个提示层的方法
2015/05/11 Javascript
JS实现的在线调色板实例(附demo源码下载)
2016/03/01 Javascript
node.js操作mongodb简单示例分享
2017/05/25 Javascript
JavaScript之DOM插入更新删除_动力节点Java学院整理
2017/07/03 Javascript
js读取本地文件的实例
2017/12/22 Javascript
jquery插件开发模式实例详解
2019/07/20 jQuery
微信小程序移动拖拽视图-movable-view实例详解
2019/08/17 Javascript
Python操作Word批量生成文章的方法
2015/07/28 Python
详解使用 pyenv 管理多个版本 python 环境
2017/10/19 Python
使用Python微信库itchat获得好友和群组已撤回的消息
2018/06/24 Python
python求解数组中两个字符串的最小距离
2018/09/27 Python
解决pycharm运行出错,代码正确结果不显示的问题
2018/11/30 Python
Python3实现计算两个数组的交集算法示例
2019/04/03 Python
Python之pymysql的使用小结
2019/07/01 Python
Python 获取ftp服务器文件时间的方法
2019/07/02 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
2019/07/15 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
2020/04/07 Python
使用Keras实现简单线性回归模型操作
2020/06/12 Python
可能这些是你想要的H5软键盘兼容方案(小结)
2019/04/23 HTML / CSS
就业推荐表自我鉴定
2013/10/29 职场文书
大学校园活动策划书
2014/02/04 职场文书
体育教学随笔感言
2014/02/24 职场文书
yy婚礼司仪主持词
2014/03/14 职场文书
地下停车场租赁协议范本
2014/10/07 职场文书
民用住房租房协议书
2014/10/29 职场文书
2015毕业生实习工作总结
2014/12/12 职场文书
2015年小学远程教育工作总结
2015/07/28 职场文书
2016年先进班集体事迹材料
2016/02/26 职场文书
七年级作文之游记
2019/12/11 职场文书
python3 删除所有自定义变量的操作
2021/04/08 Python
CSS的class与id常用的命名规则
2021/05/18 HTML / CSS