From 8d7d234dbe3b75af48ab2a8b83bd4cb6727e7765 Mon Sep 17 00:00:00 2001 From: qsc20001102 Date: Fri, 31 Oct 2025 17:27:32 +0800 Subject: [PATCH] 14 --- app.log | 11 ++++++ .../__pycache__/telnet_fun.cpython-313.pyc | Bin 12020 -> 12020 bytes core/ui/__pycache__/tab_ping.cpython-313.pyc | Bin 9253 -> 9253 bytes .../ui/__pycache__/tab_telnet.cpython-313.pyc | Bin 7116 -> 9612 bytes core/ui/tab_telnet.py | 37 ++++++++++++++++-- 5 files changed, 44 insertions(+), 4 deletions(-) diff --git a/app.log b/app.log index 6a6373f..549e7d3 100644 --- a/app.log +++ b/app.log @@ -291,3 +291,14 @@ 2025-10-31 17:03:14,076 [INFO] 开始测试202.89.233.100 的 1 到 1000 端口连接情况 2025-10-31 17:09:53,765 [INFO] 开始测试202.89.233.100 的 1 到 1000 端口连接情况 2025-10-31 17:09:55,506 [INFO] 开始测试202.89.233.100 的 1 到 1000 端口连接情况 +2025-10-31 17:24:20,343 [INFO] 日志系统初始化完成,日志文件路径:E:\Git\Network-tools\app.log +2025-10-31 17:24:50,276 [INFO] 日志系统初始化完成,日志文件路径:E:\Git\Network-tools\app.log +2025-10-31 17:25:51,039 [INFO] 日志系统初始化完成,日志文件路径:E:\Git\Network-tools\app.log +2025-10-31 17:26:06,263 [INFO] 开始测试202.89.233.100 的 [21, 22, 23, 25, 80, 110, 143, 443, 1433, 3306, 3389] 端口连接情况 +2025-10-31 17:26:35,927 [INFO] 开始测试202.89.233.100 的 [21, 22, 23, 25, 80, 110, 143, 443, 1433, 3306, 3389] 端口连接情况 +2025-10-31 17:26:36,377 [INFO] 开始测试202.89.233.100 的 [21, 22, 23, 25, 80, 110, 143, 443, 1433, 3306, 3389] 端口连接情况 +2025-10-31 17:26:38,288 [INFO] 开始测试202.89.233.100 的 [21, 22, 23, 25, 80, 110, 143, 443, 1433, 3306, 3389] 端口连接情况 +2025-10-31 17:26:38,678 [INFO] 停止测试202.89.233.100 的端口连接情况 +2025-10-31 17:26:41,880 [INFO] 开始测试202.89.233.100 的 [21, 22, 23, 25, 80, 110, 143, 443, 1433, 3306, 3389] 端口连接情况 +2025-10-31 17:26:43,350 [INFO] 开始测试202.89.233.100 的 100 到 1000 端口连接情况 +2025-10-31 17:26:44,697 [INFO] 开始测试202.89.233.100 的 [21, 22, 23, 25, 80, 110, 143, 443, 1433, 3306, 3389] 端口连接情况 diff --git a/core/Function/__pycache__/telnet_fun.cpython-313.pyc b/core/Function/__pycache__/telnet_fun.cpython-313.pyc index 45d2ce1291499131e3fa52a44c786c332c949ca4..3ad28f3a42e6cee25b1d57bc820136603dbc4b41 100644 GIT binary patch delta 19 Zcmewo`z4m^GcPX}0}#Bc*~s-u4**Lv2LS*8 delta 19 Zcmewo`z4m^GcPX}0}#Ba+{pDx4**LU2K)d3 diff --git a/core/ui/__pycache__/tab_ping.cpython-313.pyc b/core/ui/__pycache__/tab_ping.cpython-313.pyc index c417260344f2727e8c67b01745264c966885fca1..77cb3d838076534a06f5541dfcdc0591543b33f6 100644 GIT binary patch delta 19 ZcmZ4LvDAa>GcPX}0}wo_-N+@a0suQ>1yuk5 delta 19 ZcmZ4LvDAa>GcPX}0}wpQ-pD1b0suP+1w#M; diff --git a/core/ui/__pycache__/tab_telnet.cpython-313.pyc b/core/ui/__pycache__/tab_telnet.cpython-313.pyc index eaedbbe53f8b57103536c40b7e4425358cdec6de..f68e3cc9da9eed6889b196d0d3bb6426972a47b6 100644 GIT binary patch delta 2531 zcmb7_YfM|$9l-Co_O-8#-!EbZhzV|ji3v8wA<06TGTJ7jNeRZ#&=!;gm#{J89-FF5 zrI~C?Mb%8CIeCz=F3@cXw5sq%qx2E2Y1gSywGVbfW#;9>KGYPXX^otrWs@fD|G$QY zlzrKi?(f|5fBD|?fA~-Jr}yjbYPD((uCXC`-}t)U>a2wHFc;Zh=HRF%SOnAtH9%cZ zOZ6eHflz~sbL(baA{U7Ir{H*=3vsQ48FUU7kTtT1Xk$*Z$OdH(5jh)^m1*q9X!uAx z+}+<7i?cUnFOXVRF1IN+rNvFNV&zP&JVT1AArRe)s9_dGg`%)$4T=;gW;*4YWEXo+ z`D>XzXkc1lbB!^m3Yy?&b>Q)>D`?&!gt&fjMGRJ2W)Q7D3;0-JXIjzRUzdHPb3kb? z=e8YOVp~YU{C}2>aFSA$ggt47Z)ZbsTTw%+_gSW zZLO!)@2L%VwtGE3AKZ0*PaWK_`aOQXcN<{)j>Sq0RSQ^Ba0!mfT_4I_d6foGx~(7u z;mKdjzx~Fd4EF9KiVNM2*n!vy$ZGMpln%sHAce6az)-&3bDh&_I zXGO=H({)8Rp_?2`MnH3@^$y29Lmua03Gp5LxDFo5pW@N96ixLL`lOJ2@y4N>kEA-D z&U8f69no=p%K3c3VnfB{#H9oTJAUJlo4!oMtBIq1FgG5oc?h;2^f%?_dfEmH{Q)9^2m!KcY=rKk;oiOoZAXD93Br*cD%jB~ig+GD5itaeFx$q`AL8Q) zKn#1&xl-;Ou*q&cRPWhd0k_tCS&L#|1^dz>Zs+i$i<>a|o9c=4Om{!W|*cu@9{__8!+zeLB$`4O1PJHm?yYJ7Re`o%D z^6TrTzdAR$ICL>LaxFLf^5W0W(HFs1O8H8n_o3i^q7%)q&kBW+hgBgZH7mrT{e5v* z;7qmX5;6YjpMsh{@|>pZBAplqmZl2bJf1-&Z*8!bwj$k;oW12+3LnymX^<}8z;%9 zy&v^{+Q+)i1xJmSi!T+A*)MdZs~d+OO<7w0q2^Tjk)l_M&h(GhU8$d_A9qg%lGda$ zRo|Sl?4K2%m=iT4`d9QBadTSSJSm@6PAQYtFU0zP<+Ysk5V?0-Z@4HepFN1WamECtZTB!KdvkV{z2eD@`*)2+RK|7WS{IJO%1GT-K7Nm z5x7wJ8|2pX#{m##OTTsAtB-piDmnicor?i(bD{BY7|~sbhY`|fz=0qQ0s0g^bt0gY zyd1>>qE8?WB5-QaZ`xlf18P7S7L40?*72mH1h=~pI1lJy1QrK9z&ahx4}TXP@4d_| z@iL)4uNDM%UMC81lDCLL6sQs?$=ejdro6!<)a5HJ!d{a1@PaEZ8ieitbg^5GA;r%y iT#OxFzln^oq4j~{7YK2kkzG{1rW&nZ;&3N@@_zwdM5b8) delta 974 zcmZ{iT}V@57{~YSe57X|&f#XREvGw*M@=VFR+$+hnA0eX^=*F6A=R|^Y&RKbH(6L| zJZKS>lte_N#*m1DAc7(aq{{`-&8FUTVMswYz0aA3H=T>$`+WSL=e*Bz&b5|Le)CV0 zNz$=r@dDr9X?gvmt(eb6HbII|Url_Hcz~ zzG9?W&X0nfh+Xj3)Ij!tU_L_XVOp}md2^BIW-0Xp8@4R|-h78R{yz!~SqiKrOsLeexM~}2GhUq?;7BD5=QI)@yvr%c+RbtaE*y#` z^v#E8E&Ry|TDwudxm6u>+hpR4kJ{S#;iK667~(kM1mYwD_eW15+8MO{rdPE7iB4lw zU~ng|%)4m^vy?2_#17ht=tAsgNJxVNG}_S}3in57GX^rWKq%5ng*;UCAn;$KAw(Y{ z3>O`Rt}|$!Wl(YV?u}&xn3Ko{ugl4I(P&frtK$bD3Vd`{_!MEi9xJswWTQA!jSdWU zs6AZ~>SVr37}hu23S};jfJ3Tq*i{oy%;`GZC9Os5MQD@ZJlYJj1+4=J+%NriQEEXK z->I14f#;y14t=~ZZ3RgV*nQ0WeOb4r=LG+%#0$!*F++&Lpq#7!RSqDJh!n+rkXKYp bMqpo2O>U47d4ju@c{B62e@%xT&1IUu`e5z| diff --git a/core/ui/tab_telnet.py b/core/ui/tab_telnet.py index c1fe778..564b654 100644 --- a/core/ui/tab_telnet.py +++ b/core/ui/tab_telnet.py @@ -16,6 +16,7 @@ class TelnetTab(ttk.Frame, BasicUI): def telnet_ui(self): """端口扫描界面布局""" self.create_assigntelnet_section() + self.create_listtelnet_section() self.create_batchtelnet_section() self.create_outputping_section() # --------------------------------------UI界面布局函数-------------------------------------- @@ -28,6 +29,16 @@ class TelnetTab(ttk.Frame, BasicUI): self.assignTelnet_IP = self.add_input(frame, "目标IP", row=0, col=0, inivar="202.89.233.100") self.assignTelnet_port = self.add_input(frame, "目标端口", row=0, col=1, inivar="443", entry_width=10) self.assignTelnet_test = self.add_button(frame, "测试", row=0, col=2, command=self.btn_assignTelnet_test) + + def create_listtelnet_section(self): + # 区域标签 + frame = ttk.LabelFrame(self, text="批量端口连接测试") + frame.pack(side='top', fill='x', padx=10, pady=5) + + self.listtelnet_IP = self.add_input(frame, "目标IP", row=0, col=0, inivar="202.89.233.100") + self.listtelnet_ports = self.add_input(frame, "端口列表", row=0, col=1, inivar="21,22,23,25,80,110,143,443,1433,3306,3389", entry_width=40) + self.listtelnet_start = self.add_button(frame, "开始", row=0, col=2, command=self.btn_listTelnet_start) + self.listtelnet_stop = self.add_button(frame, "停止", row=0, col=3, command=self.btn_listTelnet_stop) def create_batchtelnet_section(self): # 区域标签 @@ -88,16 +99,34 @@ class TelnetTab(ttk.Frame, BasicUI): messagebox.showwarning("输入错误", "起始端口最小为1,结束端口最大为65535!") return logger.info(f"开始测试{self.IP} 的 {port_begin} 到 {port_end} 端口连接情况") - self.batchTelnet_start['btn'].config(state='disabled') self.telnet_fun.start_range_scan(self.IP, port_begin, port_end) def btn_batchTelnet_stop(self): logger.info(f"停止测试{self.IP} 的端口连接情况") self.telnet_fun.stop_scan() - self.batchTelnet_start['btn'].config(state='normal') - def batchTelnet_callback(self): - self.batchTelnet_start['btn'].config(state='normal') + def btn_listTelnet_start(self): + self.IP = self.listtelnet_IP['var'].get() + self.ports = self.listtelnet_ports['var'].get() + + if not self.ports: + messagebox.showwarning("输入错误", "请输入端口号或范围!") + return + + # 支持格式:例如 "22,80,443,8080" + try: + ports = [int(p.strip()) for p in self.ports.split(',') if p.strip()] + except ValueError: + messagebox.showwarning("输入错误", "端口必须为整数,用逗号分隔") + return + + logger.info(f"开始测试{self.IP} 的 {ports} 端口连接情况") + self.telnet_fun.start_list_scan(self.IP, ports) + + def btn_listTelnet_stop(self): + logger.info(f"停止测试{self.IP} 的端口连接情况") + self.telnet_fun.stop_scan() +