python实现linux下抓包并存库功能
作者:pingnanlee 发布时间:2022-12-23 20:22:06
标签:python,linux,抓包
最近项目需要抓包功能,并且抓包后要对数据包进行存库并分析。抓包想使用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
上面的功能涉及到了文件操作,数据库操作,定时任务等几个功能点。
来源:https://blog.csdn.net/pingnanlee/article/details/46831293


猜你喜欢
- 异常异常是程序发生错误的信号,程序一旦出错就会抛出异常,程序的运行随之终止。# 异常处理的三个特征- 异常的追踪信息- 异常的类型- 异常的
- 项目开发中文件的读写是必不可少的下面来简单介绍一下文件的读读文件,首先我们要有文件那我首先自己创建了一个文本文件password.txt内容
- 导语:哈喽,哈喽~今天小编又来分享小游戏了——flappy bird(飞扬的小鸟),这个游戏非常的经
- 最近在学习django,学到第五章模型时,需要连接数据库,然后,在这里分享一下方法。起初是不知道怎样配置mysql数据库,但是还好,djan
- 本文实例讲述了Python爬虫爬取电影票房数据及图表展示操作。分享给大家供大家参考,具体如下:爬虫电影历史票房排行榜 http://www.
- 一、简介抠图是用PS?用魔棒和快速选择工具?遇到复杂背景怎么办?最近发现一个神奇的工具——Remove Image Backgroundht
- 最近在一个python工具中需要实现串口自动触发工作的功能,之前只在winform上面实现,今天使用python试试。这里简单记一下:首先用
- 我就废话不多说了,大家还是直接看代码吧~# -*- coding: utf-8 -*-#keras==2.0.5#tensorflow==1
- 熟悉 C 语言的小伙伴一定对 goto 语句不陌生,它可以在代码之间随意的跳来跳去,但是好多老鸟都告诫大家,不要使用 goto,因为 got
- 1.Jinja21.简介Jinja2是Python下一个被广泛应用的模版引擎,他的设计思想来源于Django的模板引擎,并扩展了其语法和一系
- 在Python中,经常会去读csv文件,如下import pandas as pdimport numpy as npdf = pd.rea
- 一、XML产生的背景 XML同HTML一样,都来自Standard Generalized Markup Language, 即标准通用标记
- 一. 布隆过滤器简介布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别
- 学习Python过程中,发现没有switch-case,过去写C习惯用Switch/Case语句,官方文档说通过if-elif实现。所以不妨
- 代码片段一:alert(Function instanceof Object); // truealert(Object instanceo
- 简单总结:1、与类和实例无绑定关系的function都属于函数(function);2、与类和实例有绑定关系的function都属于方法(m
- 一、数据集下载加州高速公路PEMS数据集这里绘制PEMS04中的交通流量数据。该数据集中包含旧金山2018年1月1日至2月28日的29条道路
- 在产品开发中,由UED发起的项目越来越多,但是现在的问题是很难为其设定商业价值的目标。如果没有明确的商业价值目标,很多公司根本没办法花大成本
- 前几天,使用python时遇到这么一个需求,删除一个列表中值为1的元素。我寻思着使用remove方法,但是remove方法只会删除第一个,于
- python使用pandas和xlsxwriter读写xlsx文件已有xlsx文件如下:1. 读取前n行所有数据# coding: utf-