合并wireshark、tcpdump的抓包文件 mergecap合并pcap文件

在最近工作中经常会遇到需要合并的抓包,wireshark自带mergecap命令,但是如果需要合并多个文件的时候,还是有点麻烦。顺手编写了一个小脚本,手动选择要合并的文件,目的文件夹。会生成合并命令,可以直接执行,并打开目标文件夹。
界面如下
在这里插入图片描述
代码如下:


import tkinter
import os
import time
import tkinter.filedialog

def dstpkg():
    cmd_filename = tkinter.filedialog.askdirectory()
    # Folderpath = filedialog.askdirectory()
    if cmd_filename != '':
        print(cmd_filename)

        # dstpkg_lable.config(text='要导入的命令文件是:' + cmd_filename)
        dstpkg_lable.delete(1.0,tkinter.END)
        dstpkg_lable.insert(1.0,cmd_filename)

    else:
        dstpkg_lable.insert(1.0,"输入有误")

def srcpkg():
    cmd_filename = tkinter.filedialog.askopenfilenames()
    if cmd_filename != '':
        print(cmd_filename)
        for i in cmd_filename:

            # dstpkg_lable.config(text='要导入的命令文件是:' + cmd_filename)
            srcpkg_lable.insert(tkinter.END,i)
            srcpkg_lable.insert(tkinter.END,'\n')

    else:
        srcpkg_lable.insert(1.0,"输入有误")

def merge():
    dst_file_name=dstpkg_lable.get('1.0','end').strip()+'/'+time.asctime().replace(' ','_').replace(':','_')+'.pcap'
    print('-----------------------')
    print('目的文件',dst_file_name)

    # src_file_names=srcpkg_lable.get('1.0','end').replace('\n',' ')
    src_file_names = srcpkg_lable.get('1.0', 'end')
    srctmp=src_file_names.splitlines()
    srclen=len(srctmp)
    for i in range(srclen):

        if srctmp[(srclen - i - 1)][-4:] != 'pcap':
            print(srctmp[(srclen - i - 1)][-4:])

            print(srctmp[(srclen - i - 1)],'不合格文件')
            srctmp.pop((srclen - i - 1))

    src_file_names=' '.join(srctmp)
    print('源文件',src_file_names)

    merge_cmd="mergecap.exe -w %s %s"%(dst_file_name,src_file_names) #合成命令
    print('合并命令',merge_cmd)
    gen_lable.insert(1.0,merge_cmd) #文本框中显示

    # print(os.popen(merger_cmd).read())


def merge_do():
    merge_cmd2=gen_lable.get('1.0','end')

    os.popen(merge_cmd2).read()
    os.popen("explorer.exe %s" % dstpkg_lable.get('1.0','end').replace('/','\\'))






# 按间距中的绿色按钮以运行脚本。
if __name__ == '__main__':


    root = tkinter.Tk()  # 初始化Tk()
    root.title("合并抓包数据v0.1")  # 设置窗口标题
    root.geometry("800x400")  # 设置窗口大小 注意:是x 不是*
    root.resizable(width=True, height=True)  # 设置窗口是否可以变化长/宽,False不可变,True可变,默认为True

    # l = tkinter.Label(root, text="显示内容", bg="white", font=("Arial", 12), width=8, height=2)
    # l.grid(row=0, column=1)  # 这里的side可以赋值为LEFT  RTGHT TOP  BOTTOM
    #
    # t = tkinter.Text(root, width=20, height=2, font=("Arial", 22))
    # t.grid(row=0, column=2)
    #

    # ##############################################


    dstpkg_but = tkinter.Button(root, width=20,text='目标文件夹:' ,command= dstpkg)
    dstpkg_but.grid(row=5, column=1)
    dstpkg_lable = tkinter.Text(root, width=70, height=2, font=("Arial", 10), bg='white')
    dstpkg_lable.grid(row=5, column=2)
    dstpkg_clear = tkinter.Button(root, width=20,text='清空目标文件夹:' ,command=lambda : dstpkg_lable.delete(1.0,tkinter.END) )
    dstpkg_clear.grid(row=5, column=3)



    srcpkg_but = tkinter.Button(root, width=20,text='需要合并的文件',command= srcpkg)
    srcpkg_but.grid(row=10, column=1)
    srcpkg_lable = tkinter.Text(root, width=70, height=7, font=("Arial", 10), bg='white')
    srcpkg_lable.grid(row=10, column=2)
    srcpkg_clear = tkinter.Button(root, width=20,text='清空合并:' ,command=lambda : srcpkg_lable.delete(1.0,tkinter.END) )
    srcpkg_clear.grid(row=10, column=3)

    gen_but = tkinter.Button(root, width=20,text='生成合并命令',command= merge)
    gen_but.grid(row=15, column=1)
    gen_lable = tkinter.Text(root, width=70,height=2, font=("Arial", 10), bg='white')
    gen_lable.grid(row=15, column=2)
    gen_clear = tkinter.Button(root, width=20,text='清空命令:' ,command=lambda : gen_lable.delete(1.0,tkinter.END) )
    gen_clear.grid(row=15, column=3)


    merge_but = tkinter.Button(root, width=20,height=5,text='执行命令并打开文件夹',command= merge_do)
    merge_but.grid(row=20, column=2)

    root.mainloop()  #

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值