使用dpkt

# -*- coding: utf-8 -*-
import socket
import dpkt
import sys
import os
import time




def get_flags_num(pcap_name):
    pcapReader = dpkt.pcap.Reader(file(pcap_name, "rb"))


    fp_syn = open('excel\\syn.csv','a+')
    fp_fin = open('excel\\fin.csv','a+')
    fp_rst = open('excel\\rst.csv','a+')
    for ts, data in pcapReader:
        ether = dpkt.ethernet.Ethernet(data)
        if ether.type == dpkt.ethernet.ETH_TYPE_IP:
            ip = ether.data
            src = socket.inet_ntoa(ip.src)
            dst = socket.inet_ntoa(ip.dst)
        
            data = ip.data


            if isinstance(data, dpkt.tcp.TCP):
                dport = data.dport
                sport = data.sport
                if (sport == 2404 or dport == 2404):
                    packet_type = 'normal'
                    timeStamp = ts
                    timeArray = time.localtime(timeStamp)
                    otherStyletime = time.strftime("%Y-%m-%d %H:%M", timeArray)
                    if  data.flags & dpkt.tcp.TH_SYN :
                        packet_type = 'syn'
                        fp_syn.write(' %s,%s,%s,%s,%s,%s\n' % (src, sport, dst, dport, packet_type, otherStyletime))
                    if data.flags & dpkt.tcp.TH_FIN:
                        packet_type = 'fin'
                        fp_fin.write(' %s,%s,%s,%s,%s,%s\n' % (src, sport, dst, dport, packet_type, otherStyletime))
                    if data.flags & dpkt.tcp.TH_RST:
                        packet_type = 'reset'
                        fp_rst.write(' %s,%s,%s,%s,%s,%s\n' % (src, sport, dst, dport, packet_type, otherStyletime))
                        
    fp_rst.close()
    fp_fin.close()
    fp_syn.close()


if __name__ == '__main__':
    if len(sys.argv) == 2:
        file_list = os.listdir(sys.argv[1])
        for pcap in file_list:
            pcap_addr = sys.argv[1] + '\\' + pcap
            get_flags_num(pcap_addr)
    else:
        print "argvs:input_folder"
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值