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实现提取百度搜索结果的方法
May 19 Python
python基于itchat实现微信群消息同步机器人
Feb 27 Python
linecache模块加载和缓存文件内容详解
Jan 11 Python
Python实现聊天机器人的示例代码
Jul 09 Python
使用Python抓取豆瓣影评数据的方法
Oct 17 Python
PyTorch 1.0 正式版已经发布了
Dec 13 Python
详解python中eval函数的作用
Oct 22 Python
PyCharm 2019.3发布增加了新功能一览
Dec 08 Python
基于python和flask实现http接口过程解析
Jun 15 Python
Python图像识别+KNN求解数独的实现
Nov 13 Python
Python接口自动化测试框架运行原理及流程
Nov 30 Python
Python编写冷笑话生成器
Apr 20 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新手上路(五)
2006/10/09 PHP
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
2007/02/11 PHP
跟我学Laravel之视图 & Response
2014/10/15 PHP
PHP获取毫秒级时间戳的方法
2015/04/15 PHP
PHP PDOStatement::bindParam讲解
2019/01/30 PHP
用js实现预览待上传的本地图片
2007/03/15 Javascript
js下将字符串当函数执行的方法
2011/07/13 Javascript
多浏览器兼容性比较好的复制到剪贴板的js代码
2011/10/09 Javascript
JS清除IE浏览器缓存的方法
2013/07/26 Javascript
实例讲解jquery与json的结合
2016/01/07 Javascript
BootStrap智能表单实战系列(八)表单配置json详解
2016/06/13 Javascript
jQuery简单实现MD5加密的方法
2017/03/03 Javascript
JS简单判断滚动条的滚动方向实现方法
2017/04/28 Javascript
BootStrap Select清除选中的状态恢复默认状态
2017/06/20 Javascript
用js实现before和after伪类的样式修改的示例代码
2017/09/07 Javascript
使用Dropzone.js上传的示例代码
2017/10/10 Javascript
vue使用rem实现 移动端屏幕适配
2018/09/26 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
Element的el-tree控件后台数据结构的生成以及方法的抽取
2020/03/05 Javascript
基于JavaScript实现简单的轮播图
2021/03/03 Javascript
[01:08:43]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第一场 1月9日
2021/03/11 DOTA
Python二维码生成库qrcode安装和使用示例
2014/12/16 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
2016/12/23 Python
Python箱型图绘制与特征值获取过程解析
2019/10/22 Python
tensorflow 限制显存大小的实现
2020/02/03 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
2020/03/09 Python
借助Paramiko通过Python实现linux远程登陆及sftp的操作
2020/03/16 Python
会展中心部门工作职责
2013/11/27 职场文书
前台接待岗位职责
2013/12/03 职场文书
给海归自荐信的建议
2013/12/13 职场文书
怀孕辞职信怎么写
2015/02/28 职场文书
2015年信访工作总结
2015/04/07 职场文书
预备党员群众意见
2015/06/01 职场文书
股权投资协议书
2016/03/23 职场文书
解析Java中的static关键字
2021/06/14 Java/Android
Vue自定义铃声提示音组件的实现
2022/01/22 Vue.js