為了加深自己對埠掃瞄的理解,寫了兩個小的指令碼
1、使用python socket 模組多執行緒進行tcp埠掃瞄
2、使用python-nmap 模組進行埠探測
綜合來看,還是更喜歡masscan,如上,開源位址
**如下:
import argparse
import socket
from socket import *
from threading import *
screenlock = semaphore(value=1)
def connscan(tgthost,tgtport):# 這個主要是進行埠掃瞄,進行tcp鏈結,獲取一些資訊
try:
connskt = socket(af_inet,sock_stream)# 建立乙個socket 物件family的取值通常是af_inet。type 的取值通常是sock_stream(用於定向的連線,可靠的tcp連線)或sock_dgram(用於udp)
connskt.connect((tgthost,tgtport))
connskt.send('hello word\r\n')
result = connskt.recv(100)
screenlock.acquire()
print "{} open and found {}".format(tgtport,result)
except:
screenlock.acquire()
print "sorry, {} closed".format(tgtport)
finally:
screenlock.release()
connskt.close()
def portscan(tgthost,tgtports):# 這個主要是進行主機名的變換,並且多執行緒呼叫connscan函式
try:
tgtip = gethostbyname(tgthost)#gethostbyname(name) 嘗試將給定的主機名解釋為乙個ip位址。
except:
print 「cannot resolve {}」.format(tgthost)
return
try:
tgtname = gethostbyaddr(tgtip)#gethostbyaddr() 由ip 位址得到dns 資訊,返回乙個類似gethostbyname_ex()的3 元組。
state = nmscan[tgthost][『tcp』][int(tgtport)][『state』]#獲取主機 埠(tcp)的狀態 (open|closed|filter)
print 「{} found {}」.format(tgthost,state)
def main():
parser = argparse.argumentparser()
parser.add_argument(『host』,help=』input ip you want to scan』)
parser.add_argument(『port』,help=』scan port』)
args = parser.parse_args()
tgthost = args.host
tgtports = str(args.port).split(',')
for tgtport in tgtports:
nmapscan(tgthost,tgtport)
ifname== 「main「:
main()
python實現埠掃瞄
一 import socket import multiprocessing def ports ports service 獲取常用埠對應的服務名稱 for port in list range 1,100 143,145,113,443,445,3389,8080 try ports servi...
python指令碼 埠掃瞄
記錄在b站學習的知識 利用tcp原理,通過編寫python指令碼,來檢測某個主機的埠開放情況,下面介紹兩種掃瞄,syn掃瞄和fin掃瞄 實驗環境 準備工作 展示from scapy.layers.inet import ip,tcp from scapy.sendrecv import sr syn...
Python 內網埠掃瞄
import socket,threadpool ports def scan poort port ip 192.168.1.131 s socket.socket socket.af inet,socket.sock stream socket.socket 建立socket 例項 af ine...