python学习之---端口扫描器(GUI版)
直接上代码
# -*- coding: utf-8 -*-
import socket
import re
from tkinter import *
# 扫描端口1.0.1版本
# 2021年6月28日
class port_Scan:
def __init__(self):
window = Tk()
window.title(端口扫描)
self.a=Label(window, text=ip=).grid(row=0, column=0)
self.ip=Text(window, width=15, height=1, wrap=WORD, font=(楷体, 11))
self.ip.grid(row=0, column=1)
self.port = Text(window, width=6, height=1, wrap=WORD, font=(楷体, 11))
self.port.grid(row=0, column=2)
self.b = Button(window, text=开始扫描, command=self.check_ip).grid(row=0, column=3)
self.result = Text(window, width=50, height=20, wrap=WORD, font=(宋体, 15))
self.result.grid(row=1, column=0, rowspan=10, columnspan=10)
window.mainloop()
def Ip_portScan(self, ip, port):
socket.setdefaulttimeout(1)
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
server.connect((ip, int(port)))
self.result.delete(1.0, 2.0)
self.result.insert(1.0, (ip, port, port, open))
except:
self.result.delete(1.0, 2.0)
self.result.insert(1.0,(ip, port, port, down))
finally:
server.close()
def check_ip(self):
ip = self.ip.get(1.0, END).strip()
port = self.port.get(1.0, END).strip()
if ip == or port == :
self.result.delete(1.0, 2.0)
self.result.insert(1.0, ip或port不能为空)
elif not re.match(r"^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]?)$", ip):
self.result.delete(1.0, 2.0)
self.result.insert(1.0, ip错误,请重新输入!)
else:
self.Ip_portScan(ip, port)
port_Scan()
代码很丑,只是为实现功能而写(滑稽)
该版本为单线程 !!!
多线程还需要究一下
