【Pyhacker編寫指南】埠掃描器
阿新 • • 發佈:2022-05-13
這節課是巡安似海PyHacker編寫指南的《埠掃描器編寫》
主要是以Nmap舉例編寫,其中涉及的協議暫不過多討論
喜歡用Python寫指令碼的小夥伴可以跟著一起寫一寫呀。
編寫環境:Python2.x
00x1:
需要用到的模組如下:
import socket
import ipaddr
00x2:
首先我們先進寫一個簡單的通訊
先建立socket物件
sockect = socket.socket()
因為主要就是進行埠掃描,不需要等待對方回覆通訊,所以我們需要再用異常處理
Ok,沒毛病
00x3:
我們接下來處理ip,當輸入一個 127.0.0.1/24 讓他自動分成ip
這就要用到ipaddr
ip = raw_input('\nIP:')
ips = ipaddr.IPNetwork(ip)
for ip in ips:
print ip
自動生成C段ok,當然你輸入B段也是可以的,他會自動處理
強制轉換為字串,不然無法執行
ip = str(ip)
00x4:
我們來測試一下,以百度為例:
速度有點慢,有的可能會超時,我們再限制一下超時時間
try: sockect.settimeout(0.2) sockect.connect((ip,port)) print "\n[+]%s open %s"%(ip,port) except: sockect.close()
修改後快了很多
00x5:
我們來設定掃描的埠
portlist = [21,80,445,3306,27017,6379.139,135]
ok,這就完成了一個埠掃描器
當然你可以自定義埠,以及根據自己的需求來編寫
00x6:
完整程式碼:
#!/usr/bin/python #-*- coding:utf-8 -*- import socket import ipaddr def portscan(ip,port): sockect = socket.socket() try: sockect.settimeout(0.2) sockect.connect((ip,port)) print "[+]%s open %s"%(ip,port) except: sockect.close() portlist = [21,80,443,445,3306,27017,6379] if __name__ == '__main__': ip = raw_input('\nIP:') print "" ips = ipaddr.IPNetwork(ip) for ip in ips: for port in portlist: portscan(str(ip),port)
喜歡的朋友們點個關注叭~