反编译出来了的代码,不完整可以学习一下,另外反编译的字节码是完整的:[Python] 纯文本查看 复制代码 import tkinter as tk
from tkinter.ttk import ttk
import configparser
import socket
from tkinter import messagebox
import os
class PortTester:
def __init__(self):
self.root = tk.Tk()
self.root.title('网络端口测试工具')
self.root.geometry('800x600')
main_frame = tk.Frame(self.root)
main_frame.pack(fill = tk.BOTH, expand = True)
execute_frame = tk.Frame(main_frame)
execute_frame.pack(side = tk.TOP, fill = tk.X)
tk.Label(execute_frame, text = 'IP:').pack(side = tk.LEFT)
self.ip_entry = tk.Entry(execute_frame)
self.ip_entry.pack(side = tk.LEFT)
tk.Label(execute_frame, text = 'Port:').pack(side = tk.LEFT)
self.port_entry = tk.Entry(execute_frame)
self.port_entry.pack(side = tk.LEFT)
self.manual_input_var = tk.BooleanVar()
self.manual_checkbutton = tk.Checkbutton(execute_frame, text = '手动输入', variable = self.manual_input_var)
self.manual_checkbutton.pack(side = tk.LEFT)
self.test_button = tk.Button(execute_frame, text = '开始测试', command = self.start_test)
self.test_button.pack(side = tk.LEFT)
self.clear_button = tk.Button(execute_frame, text = '清空结果', command = self.clear_results)
self.clear_button.pack(side = tk.LEFT)
nav_frame = tk.Frame(main_frame)
nav_frame.pack(side = tk.LEFT, fill = tk.Y)
config_dir = 'config'
def show_selected_configs(self):
pass
def update_display(self, category, ip, port, result, color = ('black',)):
item_id = None
def start_test(self):
selected_configs = self.checkboxes.items()()
if not selected_configs and self.manual_input_var.get():
messagebox.showwarning('警告', '请选择至少一个配置文件或切换到手动输入模式。')
return None
ip = (lambda .0: pass
).ip_entry.get()
port = self.port_entry.get()
if self.manual_input_var.get():
category = '手动'
if ip and port:
result = self.test_port(ip, int(port))
self.update_display(category, ip, port, result, 'red' if result == 'fail' else 'black')
else:
messagebox.showwarning('警告', '手动输入模式下,IP 和 Port 不能为空。')
def test_port(self, ip, port):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(2)
result = sock.connect_ex((ip, port))
if result == 0:
sock.close()
return 'ok'
sock.close()
return 'fail'
def clear_results(self):
pass
if __name__ == '__main__':
app = PortTester()
app.root.mainloop()
|