python解析pcap转储为sqlite

这篇博客介绍了一个用Python的Scapy库解析pcap包,然后将提取的IP、TCP、UDP和ICMP字段存储到SQLite数据库中的脚本。脚本包括创建数据库表并针对不同协议类型插入数据的函数。
摘要由CSDN通过智能技术生成

最近有需求对pcap包进行处理,要求提取数据包中的字段,并存储到sqlite数据库中,于是乎利用scapy写了一个简单的脚本,其中包括了对IP、TCP、UDP、ICMP包的解析,其实代码重复了许多,但是为了追求工作的效率,暂且留下这段代码吧,后续慢慢优化~大神莫见怪。

#! -- coding:utf-8 --
from scapy.all import *
import sqlite3
import getopt

global output_database

def ip_insert_db(packet_dict):
    db = sqlite3.connect(output_database)
    cur = db.cursor()
    #cur.execute('DROP TABLE IF EXISTS APACHE_LOG')
    cur.execute('''CREATE TABLE IF NOT EXISTS IP_PACKET(
    eventno INTEGER,
    eventtype TEXT,
    timestamp INTEGER,
    timestampusec INTEGER,
    sipaddr TEXT,
    dipaddr TEXT,
    totalpacketlen INTEGER,
    protocol INTEGER,
    tos INTEGER,
    ipid INTEGER,
    ipcksum INTEGER,
    ipttl INTEGER
    )''')


    query = '''insert into IP_PACKET (eventno,eventtype,timestamp,timestampusec,sipaddr,dipaddr,totalpacketlen,
                protocol,tos,ipid,ipcksum,ipttl) values ('%d','%s','%d','%d','%s','%s','%d','%d','%d','%d','%d','%d');''' \
            % (packet_dict['evento'],packet_dict['eventtype'],packet_dict['timestamp'],packet_dict['timestampusec'],packet_dict['sipaddr'],packet_dict['dipaddr'],
               packet_dict['totalpacketlen'],packet_dict['protocol'],packet_dict['tos'],packet_dict['ipid'],packet_dict['ipcksum'],packet_dict['ipttl'])
    cur.execute(query)
    db.commit()
    cur.close()
    db.close()
    return
def tcp_insert_db(packet_dict):
    db = sqlite3.connect(output_database)
    cur = db.cursor()
    #cur.execute('DROP TABLE IF EXISTS APACHE_LOG')
    cur.execute('''CREATE TABLE IF NOT EXISTS TCP_PACKET(
    eventno INTEGER,
    eventtype TEXT,
    timestamp INTEGER,
    timestampusec INTEGER,
    sipaddr TEXT,
    dipaddr TEXT,
    sport INTEGER,
    dport INTEGER,
    totalpacketlen INTEGER,
    protocol INTEGER,
    tos INTEGER,
    ipid INTEGER,
    ipcksum INTEGER,
    ipttl INTEGER,
    tcpseq TEXT,
    tcpack TEXT,
    tcpflags TEXT
    )''')


    query = '''insert into TCP_PACKET (eventno,eventtype,timestamp,timestampusec,sipaddr,dipaddr,sport,dport,totalpacketlen,
                protocol,tos,ipid,ipcksum,ipttl,tcpseq,tcpack,tcpflags) values (%d,'%s','%d','%d','%s','%s','%d','%d','%d','%d','%d','%d','%d','%d',
                '%s','%s','%s');''' \
            % (packet_dict['evento'],packet_dict['eventtype'],packet_dict['timestamp'],packet_dict['timestampusec'],packet_dict['sipaddr'],packet_dict['dipaddr'],
               packet_dict['sport'], packet_dict['dport'],packet_dict['totalpacketlen'],packet_dict['protocol'],packet_dict['tos'],packet_dict['ipid'],
               packet_dict['ipcksum'],packet_dict['ipttl

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值