解析pcap包

需求:我们需要从恶意流量中的log中提取其ip地址。再根据ip地址去从tcpdump中采集pcap包,把恶意流量提取出来。
首先是初版的解析pcap包

import os
from scapy.all import *
import scapy.all as scapy
import sys
import csv
from time import strftime, localtime

# f = open('log/dealpcap.log', 'a') #日志的重定向输出
# sys.stdout = f
# sys.stderr = f

print(strftime("%Y-%m-%d %H:%M:%S", localtime())+"开始处理")

# 需要采集的数据包
srccapfile = './data_flow/5_25_flow.pcap'
# 需要保存的pcap包
malware_pcap = './malware_flow/test.pcap'

def main_process():

    fp = open("./log/2021-05-25.log")
    malware_ip =set()
    for line in fp.readlines():  # 遍历每一行
        date_str = line[43:81]  # 每行取前14个字母,作为下面新建文件的名称
        # content = line[14:]  # 每行取第15个字符后的所有字符,作为新建文件的内容
        ip = date_str.split(" ")
        # ipv4 = ip[0]
        malware_ip.add(ip[0])

    fp.close()



    # pr = PcapReader(srccapfile) #逐行读取package包
    # packet = pr.read_packet()
    id = 0
    pkts = rdpcap(srccapfile)

    for pkt in pkts:
        print("pcaket id:",id)
        if (pkt.payload.name == "IP"):
            source = pkt.payload.src
            destination = pkt.payload.dst
            for ip in malware_ip:
                if (source == ip or destination == ip):
                    scapy.wrpcap(malware_pcap, pkt, append=True)
        id=id+1

if __name__ == '__main__':
    main_process()

使用方法
先从github上把源码拿下来: GitHub源码
早上
首先使用tcpdump把pcap包采集下来;

tcpdump -i eth0 -w malware.pcap

晚上
进行流量识别和匹配过程;
以后如果需要把srccapfile换成其他收集的pcap流量包;
在这里需要把log日志换掉。fp = open("./log/2021-05-25.log");
malware_pcap,这里是填写需要保存的恶意流量的名称。

最后直接运行duip.py文件

未来工作
可以做一个自动化的脚本,每天定时去使用tcpdump采集恶意流量;再定时去使用python脚本去找流量。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值