基于pyqt5+scapy 根据ip 具体端口 进行扫描 的程序

先给出代码

python 复制代码
import sys

from PyQt5 import uic
from PyQt5.QtWidgets import *


from scapy.all import *
import argparse
import logging
from scapy.layers.inet import IP, TCP
from scapy.sendrecv import sr1



class MyWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.init_ui()
    def init_ui(self):
        self.ui=uic.loadUi("./spec_port_scan.ui")
        self.ip=self.ui.lineEdit
        self.port=self.ui.lineEdit_2
        self.textBrowser=self.ui.textBrowser
        start=self.ui.pushButton

        start.clicked.connect(self.begin)

    def tcpScan(self,a,b):
        # S 代表发送SYN报文
        print("SSSSSSS")



    def begin(self):
        self.ipp=self.ip.text()
        self.portt=self.port.text().split(' ')
        print(self.ipp,self.portt)

        for p in self.portt:
            port = int(p)
            print(type(port))

            self.target = self.ipp

            send = sr1(IP(dst=self.target) / TCP(dport=port, flags="S"), timeout=2, verbose=0)

            if (send is None):
                self.textBrowser.append("ERROR")
                self.textBrowser.repaint()
                continue
            # 如果是TCP数据包
            elif send.haslayer("TCP"):
                # 是否是 SYN+ACK 应答
                if send["TCP"].flags == "SA":
                    # 发送ACK+RST数据包完成三次握手
                    # send_1 = sr1(IP(dst=target) / TCP(dport=port, flags="AR"), timeout=2, verbose=0)
                    self.textBrowser.append( "[+] 扫描主机: %-13s 端口: %-5s 开放" % (self.target, port))
                    self.textBrowser.repaint()
                elif send["TCP"].flags == "RA":
                    self.textBrowser.append("[+] 扫描主机: %-13s 端口: %-5s 关闭" % (self.target, port))
                    self.textBrowser.repaint()


        #self.textBrowser.repaint()
        #print(self.a)





if __name__=='__main__':
    app=QApplication(sys.argv)
    w=MyWindow()
    w.ui.show()

    app.exec()

实现做好ui 界面 后与python相连接

导入 相应的扫描程序 下面给出:有点缝合怪的感觉

python 复制代码
from scapy.all import *
import argparse
import logging
from scapy.layers.inet import IP, TCP
from scapy.sendrecv import sr1

def tcpScan(target,ports):
    for port in ports:
        # S 代表发送SYN报文
        send=sr1(IP(dst=target)/TCP(dport=port,flags="S"),timeout=2,verbose=0)
        if (send is None):
            continue
        # 如果是TCP数据包
        elif send.haslayer("TCP"):
            # 是否是 SYN+ACK 应答
            if send["TCP"].flags == "SA":
                # 发送ACK+RST数据包完成三次握手
                send_1 = sr1(IP(dst=target) / TCP(dport=port, flags="AR"), timeout=2, verbose=0)
                print("[+] 扫描主机: %-13s 端口: %-5s 开放" %(target,port))
            elif send["TCP"].flags == "RA":
                print("[+] 扫描主机: %-13s 端口: %-5s 关闭" %(target,port))

if __name__ == "__main__":
    logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
    # 使用方式: main.py -H 192.168.1.10 -p 80,8080,443,445
    parser = argparse.ArgumentParser()
    parser.add_argument("-H","--host",dest="host",help="输入一个被攻击主机IP地址")
    parser.add_argument("-p","--port",dest="port",help="输入端口列表 [80,443,135]")
    args = parser.parse_args()
    if args.host and args.port:
        tcpScan(args.host,eval(args.port))
    else:
        parser.print_help()
相关推荐
郑州光合科技余经理5 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
feifeigo1235 天前
matlab画图工具
开发语言·matlab
dustcell.5 天前
haproxy七层代理
java·开发语言·前端
norlan_jame5 天前
C-PHY与D-PHY差异
c语言·开发语言
多恩Stone5 天前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc
gihigo19985 天前
基于TCP协议实现视频采集与通信
网络协议·tcp/ip·音视频
QQ4022054965 天前
Python+django+vue3预制菜半成品配菜平台
开发语言·python·django
遥遥江上月5 天前
Node.js + Stagehand + Python 部署
开发语言·python·node.js
m0_531237175 天前
C语言-数组练习进阶
c语言·开发语言·算法
Railshiqian5 天前
给android源码下的模拟器添加两个后排屏的修改
android·开发语言·javascript