先給出代碼
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 代表發(fā)送SYN報(bào)文
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數(shù)據(jù)包
elif send.haslayer("TCP"):
# 是否是 SYN+ACK 應(yīng)答
if send["TCP"].flags == "SA":
# 發(fā)送ACK+RST數(shù)據(jù)包完成三次握手
# send_1 = sr1(IP(dst=target) / TCP(dport=port, flags="AR"), timeout=2, verbose=0)
self.textBrowser.append( "[+] 掃描主機(jī): %-13s 端口: %-5s 開(kāi)放" % (self.target, port))
self.textBrowser.repaint()
elif send["TCP"].flags == "RA":
self.textBrowser.append("[+] 掃描主機(jī): %-13s 端口: %-5s 關(guān)閉" % (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()
實(shí)現(xiàn)做好ui 界面 后與python相連接?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-796678.html
導(dǎo)入 相應(yīng)的掃描程序? 下面給出:有點(diǎn)縫合怪的感覺(jué)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-796678.html
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 代表發(fā)送SYN報(bào)文
send=sr1(IP(dst=target)/TCP(dport=port,flags="S"),timeout=2,verbose=0)
if (send is None):
continue
# 如果是TCP數(shù)據(jù)包
elif send.haslayer("TCP"):
# 是否是 SYN+ACK 應(yīng)答
if send["TCP"].flags == "SA":
# 發(fā)送ACK+RST數(shù)據(jù)包完成三次握手
send_1 = sr1(IP(dst=target) / TCP(dport=port, flags="AR"), timeout=2, verbose=0)
print("[+] 掃描主機(jī): %-13s 端口: %-5s 開(kāi)放" %(target,port))
elif send["TCP"].flags == "RA":
print("[+] 掃描主機(jī): %-13s 端口: %-5s 關(guān)閉" %(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="輸入一個(gè)被攻擊主機(jī)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()
到了這里,關(guān)于基于pyqt5+scapy 根據(jù)ip 具體端口 進(jìn)行掃描 的程序的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!