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 Web框架Pylons中使用MongoDB的例子
Dec 03 Python
Python中获取网页状态码的两个方法
Nov 03 Python
python opencv实现任意角度的透视变换实例代码
Jan 12 Python
浅谈Tensorflow模型的保存与恢复加载
Apr 26 Python
Sanic框架异常处理与中间件操作实例分析
Jul 16 Python
python网络应用开发知识点浅析
May 28 Python
python中调试或排错的五种方法示例
Sep 12 Python
浅谈对pytroch中torch.autograd.backward的思考
Dec 27 Python
Win10里python3创建虚拟环境的步骤
Jan 31 Python
Python环境管理virtualenv&virtualenvwrapper的配置详解
Jul 01 Python
pandas apply多线程实现代码
Aug 17 Python
Python3.9最新版下载与安装图文教程详解(Windows系统为例)
Nov 28 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
2020年4月放送!《Princess Connect Re:Dive》制作组 & 角色声优公开!
2020/03/06 日漫
php使用百度ping服务代码实例
2014/06/19 PHP
thinkphp配置文件路径的实现方法
2016/08/30 PHP
PHP数组式访问接口ArrayAccess用法分析
2017/12/28 PHP
写了一个layout,拖动条连贯,内容区可为iframe
2007/08/19 Javascript
《JavaScript高级程序设计》阅读笔记(二) ECMAScript中的原始类型
2012/02/27 Javascript
Jquery动态更改一张位图的src与Attr的使用
2013/07/31 Javascript
用户代理字符串userAgent可实现的四个识别
2015/09/20 Javascript
深入浅析AngularJS和DataModel
2016/02/16 Javascript
JavaScript代码性能优化总结(推荐)
2016/05/16 Javascript
canvas实现流星雨的背景效果
2017/01/13 Javascript
Angular ui.bootstrap.pagination分页
2017/01/20 Javascript
初探js和简单隐藏效果的实例
2017/11/23 Javascript
Node.js成为Web应用开发最佳选择的原因
2018/02/05 Javascript
vue实现可移动的悬浮按钮
2021/03/04 Vue.js
[01:38]DOTA2辉夜杯 欢乐的观众现场采访
2015/12/26 DOTA
python列表操作使用示例分享
2014/02/21 Python
python利用urllib和urllib2访问http的GET/POST详解
2017/09/27 Python
Python逐行读取文件中内容的简单方法
2019/02/26 Python
Django shell调试models输出的SQL语句方法
2019/08/29 Python
python隐藏类中属性的3种实现方法
2019/12/19 Python
Python实现Word表格转成Excel表格的示例代码
2020/04/16 Python
python 实现倒计时功能(gui界面)
2020/11/11 Python
Python更改pip镜像源的方法示例
2020/12/01 Python
python 制作本地应用搜索工具
2021/02/27 Python
检测浏览器对HTML5和CSS3支持度的方法
2015/06/25 HTML / CSS
日本最佳原创设计品牌:Felissimo(芬理希梦)
2019/03/19 全球购物
娇韵诗俄罗斯官方网站:Clarins俄罗斯
2020/10/03 全球购物
团日活动总结
2014/04/28 职场文书
领导班子整改方案和个人整改措施
2014/10/25 职场文书
党员教师群众路线思想汇报范文
2014/10/28 职场文书
毕业设计论文评语
2014/12/31 职场文书
师范生小学见习总结
2015/06/23 职场文书
大学迎新生的欢迎词
2019/06/25 职场文书
Python实现简繁体转换
2021/06/07 Python
集英社今正式宣布 成立游戏公司“集英社Games”
2022/03/31 其他游戏