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的设计模式编程入门指南
Apr 02 Python
Python requests发送post请求的一些疑点
May 20 Python
对python中矩阵相加函数sum()的使用详解
Jan 28 Python
Python安装Flask环境及简单应用示例
May 03 Python
Python中查看变量的类型内存地址所占字节的大小
Jun 26 Python
Python实现自定义读写分离代码实例
Nov 16 Python
QML实现钟表效果
Jun 02 Python
Python爬虫爬取微信朋友圈
Aug 06 Python
anaconda3安装及jupyter环境配置全教程
Aug 24 Python
理解Django 中Call Stack机制的小Demo
Sep 01 Python
python 实现学生信息管理系统的示例
Nov 28 Python
详解Python如何批量采集京东商品数据流程
Jan 22 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
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
2010/04/07 PHP
thinkphp5使用无限极分类
2019/02/18 PHP
jQuery 1.2.x 升? 1.3.x 注意事项
2009/05/06 Javascript
基于jQuery的仿flash的广告轮播
2010/11/05 Javascript
关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
2010/11/30 Javascript
js采用concat和sort将N个数组拼接起来的方法
2016/01/21 Javascript
javascript瀑布流式图片懒加载实例解析与优化
2016/02/23 Javascript
jquery ztree实现树的搜索功能
2016/02/25 Javascript
Avalon中文长字符截取、关键字符隐藏、自定义过滤器
2016/05/18 Javascript
JS选取DOM元素的简单方法
2016/07/08 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
2016/11/20 Javascript
常用的javascript设计模式
2017/01/11 Javascript
JS中定位 position 的使用实例代码
2017/08/06 Javascript
详解用node搭建简单的静态资源管理器
2017/08/09 Javascript
angular中ui calendar的一些使用心得(推荐)
2017/11/03 Javascript
Angular数据绑定机制原理
2018/04/17 Javascript
vue的过滤器filter实例详解
2018/09/17 Javascript
Vue.extend实现挂载到实例上的方法
2019/05/01 Javascript
JavaScript enum枚举类型定义及使用方法
2020/05/15 Javascript
[01:20:05]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第二场 2月5日
2021/03/11 DOTA
对python实现二维函数高次拟合的示例详解
2018/12/29 Python
Python设计模式之备忘录模式原理与用法详解
2019/01/15 Python
python实现nao机器人身体躯干和腿部动作操作
2019/04/29 Python
matlab中二维插值函数interp2的使用详解
2020/04/22 Python
详解Python中的编码问题(encoding与decode、str与bytes)
2020/09/30 Python
索桥的故事教学反思
2014/02/06 职场文书
关于环保的建议书400字
2014/03/12 职场文书
年会主持词结束语
2014/03/27 职场文书
银行委托书范本
2014/04/04 职场文书
《回乡偶书》教学反思
2014/04/12 职场文书
违反交通安全法检讨书
2014/10/24 职场文书
一年级语文下册复习计划
2015/01/17 职场文书
房屋租赁意向书范本
2015/05/09 职场文书
2019中小学生安全过暑期倡议书
2019/06/24 职场文书
OpenCV图像变换之傅里叶变换的一些应用
2021/07/26 Python
Python标准库pathlib操作目录和文件
2021/11/20 Python