目前,我正在使用可分析PCAP文件的GUI。我是Python / wxPython的初学者,所以我非常感谢您的友好帮助!
我正在使用tshark读取我的PCAP文件和用于GUI的wxPython4.0.1。 tshark读取的输出存储在subprocess.popen()中。从现在开始,我打算通过GUI中的ListCtrl来显示输出,以使输出更具组织性和可读性。有没有一种方法可以将tshark输出添加到ListCtrl中?
这是我代码的主要部分:
import wx
import os
from subprocess import Popen, PIPE
import sys
class MyFrame(wx.Frame):
def __init__(self, *args, **kwds):
# begin wxGlade: MyFrame.__init__
kwds["style"] = kwds.get("style", 0) | wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
self.SetSize((965, 600))
self.panel_1 = wx.Panel(self, wx.ID_ANY)
self.list_ctrl_1 = wx.ListCtrl(self.panel_1, wx.ID_ANY, style=wx.LC_HRULES | wx.LC_REPORT | wx.LC_SINGLE_SEL | wx.LC_VRULES)
# Menu Bar
self.frame_menubar = wx.MenuBar()
wxglade_tmp_menu = wx.Menu()
item = wxglade_tmp_menu.Append(wx.ID_ANY, "Upload PCAP", "")
self.Bind(wx.EVT_MENU, self.on_menu_upload, id=item.GetId())
self.frame_menubar.Append(wxglade_tmp_menu, "File")
self.SetMenuBar(self.frame_menubar)
# Menu Bar end
self.__set_properties()
self.__do_layout()
# end wxGlade
def __set_properties(self):
# begin wxGlade: MyFrame.__set_properties
self.SetTitle("Analysis")
self.list_ctrl_1.AppendColumn("Time", format=wx.LIST_FORMAT_LEFT, width=193)
self.list_ctrl_1.AppendColumn("#", format=wx.LIST_FORMAT_LEFT, width=185)
self.list_ctrl_1.AppendColumn("Source", format=wx.LIST_FORMAT_LEFT, width=193)
self.list_ctrl_1.AppendColumn("Destination", format=wx.LIST_FORMAT_LEFT, width=193)
self.list_ctrl_1.AppendColumn("Protocol", format=wx.LIST_FORMAT_LEFT, width=193)
# end wxGlade
def __do_layout(self):
# begin wxGlade: MyFrame.__do_layout
sizer_1 = wx.BoxSizer(wx.VERTICAL)
sizer_2 = wx.BoxSizer(wx.VERTICAL)
sizer_2.Add(self.list_ctrl_1, 1, wx.EXPAND, 0)
sizer_2.Add((0, 0), 0, 0, 0)
self.panel_1.SetSizer(sizer_2)
sizer_1.Add(self.panel_1, 1, wx.EXPAND, 0)
self.SetSizer(sizer_1)
self.Layout()
# end wxGlade
def on_menu_upload(self, event): # wxGlade: MyFrame.<event_handler>
openFileDialog = wx.FileDialog(self, "Open", "", "","*.pcap", #creates a filedialog that only allow user to select .pcap files
wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
if openFileDialog.ShowModal() == wx.ID_OK:
evidencePath = openFileDialog.GetPath() #get path of selected dd file
filename = os.path.basename(evidencePath)
cmd = ['tshark', '-r', filename]
process = Popen(cmd, stdout=PIPE, stderr=PIPE)
stdout, stderr = process.communicate()
"""self.list_ctrl_1.InsertStringItem(stdout)""" #insert the output into the ListCtrl
print("PCAP Uploaded")
else:
print("Error Occurred!")
# end of class MyFrame