我有这样的代码:

#!/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'

print

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程序中的全局名称错误[关闭]相关推荐

  1. python调用js文件报错_python - selenium 运行网页中js脚本报错,提示未定义

    问 题 问题1 selenium 运行网易中js脚本报错提示未定义 报错提示如下: driver.execute_script("javascript:amsInit(62800,30315 ...

  2. c++中调用python脚本提示 error LNK2001: 无法解析的外部符号 __imp_Py_Initialize等错误的解决方法

    c++中调用python脚本提示 error LNK2001: 无法解析的外部符号 __imp_Py_Initialize等错误的解决方法 时间:2017-05-09 12:32:06阅读:234评论 ...

  3. Windows IIS 调试ASP 错误号:3706 提示 “未找到提供程序 该程序可能未正确安装”解决办法

    有两种报错形式 一.错误号:3706  错误描述:未找到提供程序.该程序可能未正确安装. 二."ADODB.Connection 错误 '800a0e7a' 未找到提供程序.该程序可能未正确 ...

  4. 连接Oracle错误:800a0e7a未找到提供程序的解决

    一.现象: C#程序中需要以Provider=OraOLEDB.Oracle.1方式访问ORACLE数据库.但程序执行时报异常:未在本地计算机注册"OraOLEDB.Oracle.1&quo ...

  5. WN7 上IIS7运行asp+access网站出现错误: ADODB.Connection 错误 '800a0e7a'未找到提供程序。该程序可能未正确安装

    错误描述: 在ASP连接Access数据库的时候,产生如下的出错提示: ADODB.Connection 错误 '800a0e7a' 未找到提供程序.该程序可能未正确安装. /Conn.asp,行 2 ...

  6. android 快捷方式 未安装该应用程序,android,解决手动创建的桌面快捷方式无法跳转到制定的activity的问题,提示未安装应用程序...

    android,解决手动创建的桌面快捷突变无法跳转到制定的activity的问题 第一步也是最关键的一步: mainfest.xml中: android:name=".activity.No ...

  7. ADODB.Connection 错误 '800a0e7a' 未找到提供程序

    ASP页面提示ADODB.Connection 错误 '800a0e7a' 未找到提供程序.该程序可能未正确安装. 转换下编码,之前我也遇到过这问题,一般都是64位系统的原因. 把IIS切换为32Bi ...

  8. python定义方法self会被当作变量_为什么Python必须在方法定义和调用中显式使用“self”?...

    为什么Python必须在方法定义和调用中显示使用"self"? 这个想法借鉴了 Modula-3 语言.出于多种原因它被证明是非常有用的. 首先,更明显的显示出,使用的是方法或实例 ...

  9. c++ 已声明变量提示未定义

    第一次崩溃的感受到vs2008是多么坑爹. 已声明变量,死活提示未定义. 心中一万匹草泥马往返奔腾了无数次 没办法,自己写个小demo,一个一个变量试. tnd,终于发现问题了. 就因为涉及到了str ...

最新文章

  1. 【BZOJ】2675: Bomb
  2. 第三百六十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)基本的索引和文档CRUD操作、增、删、改、查...
  3. python解释器的下载和安装
  4. 计算机视觉——利用openCV与Socket结合进行远程摄像头实时视频传输并保存图片数据
  5. C++,那些可爱的小陷阱(二)
  6. PP模块: 最简单的混合生产方式
  7. python画图颜色表示大小变化_python画图(线条颜色、大小、类型:点、虚线等)(图文详细入门教程四)...
  8. linux popd 命令,在Linux系统中的Pushd命令与Popd命令,教你这两个命令的基本用法...
  9. android网络编程——HttpGet、HttpPost比较
  10. 无限重启_三星蓝光播放器出现无限自动重启BUG,涉及不少用户及不同型号
  11. Spring3 MVC+Spring+Spring Jdbc实现的权限管理系统,可以控制到增删改查
  12. vue再次入手(数据传递①)
  13. 买基金的一个很重要的知识
  14. 在线CSV转XML/JSON工具
  15. selenium java api_selenium_java常用API操作
  16. 利用matlab命令画出以下信号的波形,大连理工大学 信号与系统实验三报告
  17. 计算机联锁架的构成,TYJL-II计算机联锁的特点
  18. oracle口试问题,Oracle口试复习(二)
  19. 申请邓白氏编码的流程
  20. 在网络中狂奔:KCP协议

热门文章

  1. C语言重温-1-指针
  2. 张钹院士:视觉智能距离人类的视觉感知还差得很远
  3. 2021年php面试题
  4. 怎么查找计算机SCI文献? - 易智编译EaseEditing
  5. html怎么引轮播图插件,swipe轮播图插件使用.html
  6. 2022-2028全球与中国专业实践管理软件市场现状及未来发展趋势
  7. Matlab 代码 转成 C/C++ 代码
  8. 线结构光三维重建(一)
  9. 云南师范大学升级IPV6后校园网拨号上网教程 (以及WiFi路由器配置)
  10. 字节跳动面试难吗,应该如何应对?