python错误提示未定义tn_python程序中的全局名称错误[关闭]
我有这样的代码:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import tkMessageBox as box
import time
from tkFileDialog import askopenfilename,asksaveasfilename
import pcapy
from impacket import ImpactDecoder, ImpactPacket
import thread
import sys
import tkMessageBox
from Tkinter import Tk, Text, BOTH, W, N, E, S, StringVar, END, Listbox
from ttk import Frame, Button, Label, Style
class Program(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.initUI()
def initUI(self):
self.parent.title("Wąchacz")
self.style = Style()
self.style.theme_use("default")
self.pack(fill=BOTH, expand=1)
devices = pcapy.findalldevs()
acts = devices
lb = Listbox(self)
for i in acts:
lb.insert(END, i)
self.columnconfigure(1, weight=1)
self.columnconfigure(3, pad=7)
self.rowconfigure(3, weight=1)
self.rowconfigure(5, pad=7)
lbl = Label(self, text="Wybierz interface:")
lbl.grid(sticky=W, pady=4, padx=5)
lb.bind("<>", self.onSelect)
lb.grid(row=1, column=0, columnspan=2, rowspan=4,
padx=5, sticky=E+W+S+N)
self.var = StringVar()
self.columnconfigure(1, weight=1)
self.columnconfigure(3, pad=7)
self.rowconfigure(3, weight=1)
self.rowconfigure(5, pad=7)
abtn = Button(self, text="Start", command=self.start)
abtn.grid( row=1, column=3)
bbtn = Button(self, text="Stop", command=self.threadinterrupt)
bbtn.grid(row=2, column=3, pady=4)
cbtn = Button(self, text="Otwórz", command=self.OpenFile)
cbtn.grid(row=3, column=3, pady=4)
dbtn = Button(self, text="Zapisz", command=self.SaveFile)
dbtn.grid(row=4, column=3, pady=4)
ebtn = Button(self, text="O programie...", command=self.onAbout)
ebtn.grid( row=5, column=3, pady=4)
fbtn = Button(self, text="Zamknij", command=self.quitGui)
fbtn.grid( row=5, column=0, pady=10)
def start(self):
try:
thread.start_new_thread(eth_addr,())
except (KeyboardInterrupt, SystemExit):
cleanup_stop_thread();
sys.exit()
def threadinterrupt(self):
thread.interrupt_main()
def OpenFile(self):
name = askopenfilename(filetypes=[("Pliki PCAP","*.pcap")],title="Otwórz plik pcap")
def SaveFile(self):
asksaveasfilename(filetypes=[("Pliki PCAP","*.pcap")],title="Zapisz plik pcap")
def quitGui(self):
answer = box.askquestion('wyjscie', "Napewno chcesz wyjść? ")
if answer == 'yes':
self.quit()
def onAbout(self):
box.showinfo("O programie", '''monitorowanie ruchu sieciowego''')
def onSelect(self, val):
interface1 = val.widget
idx = interface1.curselection()
value = interface1.get(idx)
self.var.set(value)
def eth_addr(a) :
b = "%.2x:%.2x:%.2x:%.2x:%.2x:%.2x" % (ord(a[0]) , ord(a[1]) , ord(a[2]), ord(a[3]), ord(a[4]) , ord(a[5]))
return b
global interface1
interface1 = str(var1.get())
try:
s = socket.socket( socket.AF_PACKET , socket.SOCK_RAW , socket.ntohs(0x0003))
except socket.error, msg:
print 'Kod błędu : ' + str(msg[0]) + ' Wiadomość ' + msg[1]
sys.exit()
while True:
packet = s.recvfrom(interface1 , 65536, True, 1000)
packet = packet[0]
eth_length = 14
eth_header = packet[:eth_length]
eth = unpack('!6s6sH' , eth_header)
eth_protocol = socket.ntohs(eth[2])
print 'Docelowy adres MAC : ' + eth_addr(packet[0:6]) + ' Źródłowy adres MAC : ' + eth_addr(packet[6:12]) + ' Protokół : ' + str(eth_protocol)
if eth_protocol == 8 :
ip_header = packet[eth_length:20+eth_length]
iph = unpack('!BBHHHBBH4s4s' , ip_header)
version_ihl = iph[0]
version = version_ihl >> 4
ihl = version_ihl & 0xF
iph_length = ihl * 4
ttl = iph[5]
protocol = iph[6]
s_addr = socket.inet_ntoa(iph[8]);
d_addr = socket.inet_ntoa(iph[9]);
print 'Wersja : ' + str(version) + ' Długość nagłówka IP : ' + str(ihl) + ' TTL : ' + str(ttl) + ' Protokół : ' + str(protocol) + ' Adres źródłowy : ' + str(s_addr) + ' Adres docelowy : ' + str(d_addr)
if protocol == 6 :
t = iph_length + eth_length
tcp_header = packet[t:t+20]
tcph = unpack('!HHLLBBHHH' , tcp_header)
source_port = tcph[0]
dest_port = tcph[1]
sequence = tcph[2]
acknowledgement = tcph[3]
doff_reserved = tcph[4]
tcph_length = doff_reserved >> 4
print 'Port źródłowy : ' + str(source_port) + ' Port docelowy : ' + str(dest_port) + ' Numer sekwencji : ' + str(sequence) + ' Potwierdzenie : ' + str(acknowledgement) + ' Długość nagłówka TCP : ' + str(tcph_length)
h_size = eth_length + iph_length + tcph_length * 4
data_size = len(packet) - h_size
data = packet[h_size:]
print 'Dane : ' + data
elif protocol == 1 :
u = iph_length + eth_length
icmph_length = 4
icmp_header = packet[u:u+4]
icmph = unpack('!BBH' , icmp_header)
icmp_type = icmph[0]
code = icmph[1]
checksum = icmph[2]
print 'Typ : ' + str(icmp_type) + ' Kod : ' + str(code) + ' Suma kontrolna : ' + str(checksum)
h_size = eth_length + iph_length + icmph_length
data_size = len(packet) - h_size
data = packet[h_size:]
print 'Dane : ' + data
elif protocol == 17 :
u = iph_length + eth_length
udph_length = 8
udp_header = packet[u:u+8]
udph = unpack('!HHHH' , udp_header)
source_port = udph[0]
dest_port = udph[1]
length = udph[2]
checksum = udph[3]
print 'Port źródłowy : ' + str(source_port) + ' Port docelowy : ' + str(dest_port) + ' Długość : ' + str(length) + ' Suma kontrolna : ' + str(checksum)
h_size = eth_length + iph_length + udph_length
data_size = len(packet) - h_size
data = packet[h_size:]
print 'Dane : ' + data
else :
print 'Protokół inny niż TCP/UDP/ICMP'
def main():
root = Tk()
root.geometry("350x300+300+300")
app = Program(root)
root.mainloop()
if __name__ == '__main__':
main()
但按下启动按钮后,我有一个追溯:
Tkinter回调中的异常回溯(最近一次调用最后一次):文件“/usr/lib/python2.7/lib-tk/Tkinter.py”,第1489行,在调用中返回self.func(* args)文件“示例 . py“,第80行,在start thread.start_new_thread(eth_addr,())NameError:未定义全局名称'eth_addr'
有人可以帮我解决这个全局名称问题吗?
python错误提示未定义tn_python程序中的全局名称错误[关闭]相关推荐
- python调用js文件报错_python - selenium 运行网页中js脚本报错,提示未定义
问 题 问题1 selenium 运行网易中js脚本报错提示未定义 报错提示如下: driver.execute_script("javascript:amsInit(62800,30315 ...
- c++中调用python脚本提示 error LNK2001: 无法解析的外部符号 __imp_Py_Initialize等错误的解决方法
c++中调用python脚本提示 error LNK2001: 无法解析的外部符号 __imp_Py_Initialize等错误的解决方法 时间:2017-05-09 12:32:06阅读:234评论 ...
- Windows IIS 调试ASP 错误号:3706 提示 “未找到提供程序 该程序可能未正确安装”解决办法
有两种报错形式 一.错误号:3706 错误描述:未找到提供程序.该程序可能未正确安装. 二."ADODB.Connection 错误 '800a0e7a' 未找到提供程序.该程序可能未正确 ...
- 连接Oracle错误:800a0e7a未找到提供程序的解决
一.现象: C#程序中需要以Provider=OraOLEDB.Oracle.1方式访问ORACLE数据库.但程序执行时报异常:未在本地计算机注册"OraOLEDB.Oracle.1&quo ...
- WN7 上IIS7运行asp+access网站出现错误: ADODB.Connection 错误 '800a0e7a'未找到提供程序。该程序可能未正确安装
错误描述: 在ASP连接Access数据库的时候,产生如下的出错提示: ADODB.Connection 错误 '800a0e7a' 未找到提供程序.该程序可能未正确安装. /Conn.asp,行 2 ...
- android 快捷方式 未安装该应用程序,android,解决手动创建的桌面快捷方式无法跳转到制定的activity的问题,提示未安装应用程序...
android,解决手动创建的桌面快捷突变无法跳转到制定的activity的问题 第一步也是最关键的一步: mainfest.xml中: android:name=".activity.No ...
- ADODB.Connection 错误 '800a0e7a' 未找到提供程序
ASP页面提示ADODB.Connection 错误 '800a0e7a' 未找到提供程序.该程序可能未正确安装. 转换下编码,之前我也遇到过这问题,一般都是64位系统的原因. 把IIS切换为32Bi ...
- python定义方法self会被当作变量_为什么Python必须在方法定义和调用中显式使用“self”?...
为什么Python必须在方法定义和调用中显示使用"self"? 这个想法借鉴了 Modula-3 语言.出于多种原因它被证明是非常有用的. 首先,更明显的显示出,使用的是方法或实例 ...
- c++ 已声明变量提示未定义
第一次崩溃的感受到vs2008是多么坑爹. 已声明变量,死活提示未定义. 心中一万匹草泥马往返奔腾了无数次 没办法,自己写个小demo,一个一个变量试. tnd,终于发现问题了. 就因为涉及到了str ...
最新文章
- 【BZOJ】2675: Bomb
- 第三百六十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)基本的索引和文档CRUD操作、增、删、改、查...
- python解释器的下载和安装
- 计算机视觉——利用openCV与Socket结合进行远程摄像头实时视频传输并保存图片数据
- C++,那些可爱的小陷阱(二)
- PP模块: 最简单的混合生产方式
- python画图颜色表示大小变化_python画图(线条颜色、大小、类型:点、虚线等)(图文详细入门教程四)...
- linux popd 命令,在Linux系统中的Pushd命令与Popd命令,教你这两个命令的基本用法...
- android网络编程——HttpGet、HttpPost比较
- 无限重启_三星蓝光播放器出现无限自动重启BUG,涉及不少用户及不同型号
- Spring3 MVC+Spring+Spring Jdbc实现的权限管理系统,可以控制到增删改查
- vue再次入手(数据传递①)
- 买基金的一个很重要的知识
- 在线CSV转XML/JSON工具
- selenium java api_selenium_java常用API操作
- 利用matlab命令画出以下信号的波形,大连理工大学 信号与系统实验三报告
- 计算机联锁架的构成,TYJL-II计算机联锁的特点
- oracle口试问题,Oracle口试复习(二)
- 申请邓白氏编码的流程
- 在网络中狂奔:KCP协议