Python利用tkinter和socket实现端口扫描
作者:所谓独醉 发布时间:2022-05-08 11:53:23
标签:Python,tkinter,socket,端口,扫描
题目
请设计并实现一款主机端口扫描程序。程序根据用户输入的域名或IP地址,可以查询该主机的开放的端口号。 例如:
并有一定的异常处理
参考code
import tkinter
from tkinter import *
import socket
import tkinter.messagebox
class CheckPort:
def __init__(self):
window = Tk()
window.title("端口扫描")
window.geometry("600x500")
frame1 = Frame(window)
frame1.pack()
Label(frame1, text="IP地址、域名:", bg="#f0f0f0").grid(row=0, column=1, pady=3)
Label(frame1, text="起始端口(最小为1):", bg="#f0f0f0").grid(row=1, column=1, pady=3)
Label(frame1, text="结束端口(最大为65535):", bg="#f0f0f0").grid(row=2, column=1, pady=3)
self.searchText = StringVar()
Entry(frame1, textvariable=self.searchText, justify=LEFT).grid(row=0, column=2)
self.originPort = IntVar()
Entry(frame1, textvariable=self.originPort, justify=LEFT).grid(row=1, column=2)
self.endPort = IntVar()
Entry(frame1, textvariable=self.endPort, justify=LEFT).grid(row=2, column=2)
Button(frame1, text="扫描", command=self.getRes).grid(row=3, column=1, columnspan=2, pady=3)
frame2 = Frame(window).pack()
self.resText = Text(frame2, height=50, width=500, wrap=WORD)
self.resText.pack()
window.mainloop()
def getRes(self):
try:
ip = socket.gethostbyname(self.searchText.get())
str1 = ""
if 1 <= self.originPort.get() <= self.endPort.get() <= 65535:
for port in range(self.originPort.get(), self.endPort.get() + 1):
try:
socket.setdefaulttimeout(1)
client = socket.socket()
client.connect((ip, port))
client.shutdown(1)
str1 += f"{ip}:{port}已开放\n"
except Exception as e:
str1 += f"{ip}:{port}未开放\n"
pass
str1 += f"扫描完成\n"
self.resText.insert(END, str1)
else:
self.errorHandle("请输入正确的端口号!")
except:
self.errorHandle("请输入正确的域名或者ip地址!")
def errorHandle(self, message):
tkinter.messagebox.showerror(title="error", message=message)
CheckPort()
来源:https://blog.csdn.net/m0_51126511/article/details/128168854
0
投稿
猜你喜欢
- 用过vuex的肯定会有这样一个痛点,就是刷新以后vuex里面存储的state就会被浏览器释放掉,因为我们的state都是存储在内存中的。所以
- 一、php事务处理概述:事务:是若干事件的集合事务处理:当所有事件执行成功,事务才执行;若有任何一个事件不能成功执行,事务的其它事件也不被执
- 1. 真值测试所谓真值测试,是指当一种类型对象出现在if或者while条件语句中时,对象值表现为True或者False。弄清楚各种情况下的真
- 好不容易有个周末,不能闲着,趁着这个时间安装sql server2016正式版,下载那个安装包都用了一个星期安装包可以从这里下载:http:
- Python 正则表达式正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。Python 自1.5版本起增加了
- 这几天一直困惑我的问题,我觉得pycharm应该也是有的啊,偶然间找到了这个。把那个框里的选中,就可以了。ps:我的是 PyCharm 20
- 引言提到 numpy 的数组操作,我们就不得不说到 np.concatenate() 函数,concatenate 一词在英文中是级联的意思
- 前言本篇文章分享一下我在实际开发小程序时遇到的需要获取用户当前位置的问题,在小程序开发过程中经常使用到的获取定位功能。uniapp官方也提供
- 这几天研究HUE,这个东西是基于Django开发的,于是又看了一眼Django,学着写个demo。微软开源的vscode在业界反应不错,以前
- 不好意思,标题比较啰嗦,因为这次的流水账确实属于一个比较细节的小东西,下面详细讲:1需求最近在使用electron-vue 开发一个跨平台的
- 如果想单独取background-position的X值或Y值,IE里可以通过私有属性background-positionX或者backg
- 发现问题 win10默认设置150%,对页面布局的影响靠单纯的自适应是没办法解决的问题出在device-pixel-ratio解决
- 用Python + PyQT写的一个系统桌面时钟,刚学习Python,写的比较简陋,但是基本的功能还可以。功能:①窗体在应用程序最上层,不用
- Fiddler简介Fiddler(中文名称:小提琴)是一个HTTP的调试代理,以代理服务器的方式,监听系统的Http网络数据流动,Fiddl
- 图片的宽度和高度是未知的,没有一个固定的尺寸,在这个前提下要使图片在一个固定了宽度和高度的容器中垂直居中,想想感觉还是挺麻烦的,由于最近的项
- Python 类/对象Python 是一种面向对象的编程语言。Python 中的几乎所有东西都是对象,拥有属性和方法。类(Class)类似对
- 一、先描述一下问题吧如下创建表时候报错了CREATE TABLE `xxx` ( `id` bigint(20) NOT NUL
- 代码import requestsimport timefrom tqdm import tqdmfrom bs4 import Beaut
- 1 The syntax of the SQL statement is verified.SQL的语法检查2 The data dicti
- Python安装Graphviz画图器首先,要明确他是一个独立的软件,如果大家用pip的方法装了graphviz可以先卸载pip unins