- 论坛徽章:
- 0
|
编写了一个捕获数据包实时显示的界面,但是只要处于抓包状态就无法调用界面插件进行数据显示,困扰很久了,有大神知道如何解决吗?
代码如下:
from Tkinter import*
import Tkinter
import Pmw
import tkFileDialog
from scapy.all import* #rdpcap
import dpkt
import filter
def page3(page3):
frame3 = Tkinter.Frame(page3)
labeframe1=Tkinter.LabelFrame(frame3)
labeframe2=Tkinter.LabelFrame(frame3)
v1=IntVar()
def s1_check():
t=v1.get()
while t==1:
Filter()
time.sleep(50)
# else:
# Filter(t)
labe1=Tkinter.Checkbutton(labeframe1,variable = v1,text= '过滤解析',command = s1_check)
bar1=Tkinter.Scrollbar(labeframe2,orient=Tkinter.VERTICAL)
bar1.pack(side = 'right',fill = 'y')
global labe22
labe22=Tkinter.Text(labeframe2,height=120,width=100,yscrollcommand=bar1.set)
frame3.pack(fill='both',expand='yes')
labeframe1.pack(anchor='w',fill='x')
labeframe2.pack(anchor='w',fill='x')
labe1.pack(side='left')
labe22.pack(side='left')
bar1.config(command=labe22.yview)
def Filter():
# labe22.delete(0.0, Tkinter.END)
pkts=sniff(filter='ip or arp',count=1)#count=1
pkts=pkts[0]
pkts.show()
if pkts.type==2048:
t=pkts[IP].src
u=pkts[IP].dst
labe22.insert(Tkinter.END,"IP:%s->%s\n"%(pkts[IP].src,pkts[IP].dst))
elif pkts.type==2054:
labe22.insert(Tkinter.END,"ARP:%s->%s\n"%(pkts[ARP].psrc,pkts[ARP].pdst))
else:
print "Else Data",pkts.type
labe22.insert(Tkinter.END,pkts.show())
|
|