首页 > 其他分享 >PyQt5 扫描远程端口

PyQt5 扫描远程端口

时间:2023-06-12 12:33:06浏览次数:50  
标签:setObjectName centralwidget 端口 self 扫描 PyQt5 label QtWidgets MainWindow

# -*- coding: utf-8 -*-
# @Time : 2023/6/9 16:00
# @Author : wangyafeng
# @FileName: main.py.py
# @Email : [email protected]
# @Software: PyCharm
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
import scanport
import threading
import socket


def scan_port(ip, port, timewait, results):
    try:
        con = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        con.settimeout(int(timewait) / 1000)
        conn = con.connect_ex((ip, port))
        if conn == 0:
            results.append(f'主机:{ip},端口{port}已开放')
        con.close()
    except:
        pass


class Demo(QMainWindow):
    def __init__(self):
        self.app = QApplication(sys.argv)
        super().__init__()
        self.ui = scanport.Ui_MainWindow()
        self.ui.setupUi(self)
        self.init_ui()

    def init_ui(self):
        self.ui.pushButton.clicked.connect(self.click_pushButton)
        self.show()

    def click_pushButton(self):
        self.ui.pushButton.setText('开始扫描')
        ip = self.ui.IP.toPlainText()
        startport = self.ui.startport.toPlainText()
        endport = self.ui.endport.toPlainText()
        timewait = self.ui.textEdit_4.toPlainText()
        results = []
        threads = []
        for port in range(int(startport), int(endport) + int(1)):
            t = threading.Thread(target=scan_port, args=(ip, port, timewait, results))
            threads.append(t)
            t.start()
        # for thread in threads:
        #     thread.join()
        for result in results:
            self.ui.textBrowser.append(result)
        self.ui.pushButton.setText('开始扫描')


if __name__ == '__main__':
    e = Demo()
    sys.exit(e.app.exec())

  基于Qt Designer的代码

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'scanport.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(643, 480)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.IP = QtWidgets.QTextEdit(self.centralwidget)
        self.IP.setGeometry(QtCore.QRect(150, 90, 381, 31))
        font = QtGui.QFont()
        font.setPointSize(16)
        self.IP.setFont(font)
        self.IP.setAcceptRichText(False)
        self.IP.setObjectName("IP")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(110, 100, 41, 16))
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(110, 140, 41, 16))
        self.label_2.setObjectName("label_2")
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(240, 140, 41, 16))
        self.label_3.setObjectName("label_3")
        self.startport = QtWidgets.QTextEdit(self.centralwidget)
        self.startport.setGeometry(QtCore.QRect(150, 130, 81, 31))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.startport.setFont(font)
        self.startport.setAcceptRichText(False)
        self.startport.setObjectName("startport")
        self.endport = QtWidgets.QTextEdit(self.centralwidget)
        self.endport.setGeometry(QtCore.QRect(280, 130, 81, 31))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.endport.setFont(font)
        self.endport.setAcceptRichText(False)
        self.endport.setObjectName("endport")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(150, 190, 381, 23))
        self.pushButton.setObjectName("pushButton")
        self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser.setGeometry(QtCore.QRect(150, 230, 381, 192))
        self.textBrowser.setObjectName("textBrowser")
        self.label_4 = QtWidgets.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(380, 140, 71, 20))
        self.label_4.setObjectName("label_4")
        self.textEdit_4 = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit_4.setGeometry(QtCore.QRect(450, 130, 81, 31))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.textEdit_4.setFont(font)
        self.textEdit_4.setAcceptRichText(False)
        self.textEdit_4.setObjectName("textEdit_4")
        MainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 643, 23))
        self.menubar.setObjectName("menubar")
        self.menu = QtWidgets.QMenu(self.menubar)
        self.menu.setObjectName("menu")
        MainWindow.setMenuBar(self.menubar)
        self.menubar.addAction(self.menu.menuAction())

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.IP.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'SimSun\'; font-size:16pt; font-weight:400; font-style:normal;\">\n"
"<p align=\"center\" style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p></body></html>"))
        self.label.setText(_translate("MainWindow", "地址:"))
        self.label_2.setText(_translate("MainWindow", "端口:"))
        self.label_3.setText(_translate("MainWindow", "------"))
        self.pushButton.setText(_translate("MainWindow", "PushButton"))
        self.label_4.setText(_translate("MainWindow", "等待时长ms:"))
        self.menu.setTitle(_translate("MainWindow", "端口检测"))

 

标签:setObjectName,centralwidget,端口,self,扫描,PyQt5,label,QtWidgets,MainWindow
From: https://www.cnblogs.com/wangyafeng/p/17474718.html

相关文章

  • 根据端口找到进程pid
    [root@localhostluban]#netstat-anp|grep"8999"tcp600:::8999:::*LISTEN93234/./luban#这里的93234就是占用8999端口进程的pid[root@localhostluban]#ps-ef|greplubanroot9323491770016:......
  • 推荐一个 C#写的 支持OCR的免费通用扫描仪软件
    不管是办公还是家用扫描仪,现在越来越日常化了,人们对扫描仪的使用需求也越来越频繁。NAPS2是一个开源免费软件,体积只有6M不到,支持运行在Windows,Mac和Linux操作系统中,默认就带有简体中文界面,官方默认就提供绿色版,所以解压即可使用,直接可以从官方网站下载:https://www.naps2.co......
  • 推荐一个 C#写的 支持OCR的免费通用扫描仪软件
    NAPS2是一个开源免费软件,体积只有6M不到,支持运行在Windows,Mac和Linux操作系统中,默认就带有简体中文界面,官方默认就提供绿色版,所以解压即可使用,直接可以从官方网站下载:https://www.naps2.com/。NAPS2全名叫做NotAnotherPDFScanner2,中文名叫做【不是另一个PDF扫描仪2】。如......
  • 容器镜像静态扫描原理
    前言有这样一个工具,可以对镜像进行扫描,拿出其中包含的软件包、lib库(pip包等)、危险文件等,并能够识别出哪些包是存在漏洞的.比如trivy工具.那么他们是如何做到这件事情的呢?正好最近在研究这块,索性就简单谈一谈(其实原理很简单).获取包含内容对于镜像的存储,层之间......
  • zabbix监控多JMX端口
    1.开启Tomcat JMX功能CATALINA_OPTS="$CATALINA_OPTS-Dcom.sun.management.jmxremote-Djava.rmi.server.hostname=10.124.129.241-Dcom.sun.management.jmxremote.port=8889-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=false&quo......
  • Burp Suite Professional / Community 2023.6 (macOS, Linux, Windows) - Web 应用安
    BurpSuiteProfessional/Community2023.6(macOS,Linux,Windows)-Web应用安全、测试和扫描BurpSuiteProfessional,Test,find,andexploitvulnerabilities.请访问原文链接:https://sysin.org/blog/burp-suite-pro-2023/,查看最新版。原创作品,转载请保留出处。作者......
  • kali开启ssh端口连接xshell
    先记一下主要命令启动ssh服务:systemctlstartssh.servicenetstat-lnt:再次查看端口状态,可以看到22端口已经成功开启第一步编辑ssh文件 vi/etc/ssh/sshd_config 将其修改为第二步重启ssh/etc/init.d/sshrestart重启或者servicesshstart重启/etc/init.d/sshstatu......
  • SonarQube扫描C#代码
    目录用SonarQube实现什么功能?SonarLintforVisualStudio是什么?使用SonarQube扫描检测C#/.NET代码并上传到服务器一、配置MSBuild二、下载安装SonarScannerforMSBuild三、使用SonarQube分析C#代码并上传服务器Sonar系列相关参考SonarQube官网SonarQube是一款静态代码质量......
  • 如何修改服务器远程端口号3389?
    昨天给你们分享了电脑和服务器的安全基础知识,有讲到修改端口号,有必要时,这个端口,建议还是修改一下为好,最好改大一点,这样安全性会高一点,但如果面对高手级打击,就没有用了,通常高手级过NMAP扫描一个你的IP地址,端口便全部显现出来了。好了,下面我来告诉你们如何修改远程连接3389端口;首先......
  • EasyRTMPLive拉转推硬件设备访问端口返回404报错,该如何解决?
    TSINGSEE青犀视频的各个平台部署灵活,视频能力丰富且全面、能满足用户的多场景视频监控需求。平台各具特点,可支持多类型的设备、多协议接入,包括国标GB28181协议、RTMP/RTSP/Onvif协议、海康EHOME、海康SDK、大华SDK等,在视频流分发上,能支持全终端、全平台的视频流输出,包括RTSP、RTMP......