乙個用python寫的簡單的埠掃瞄器,python環境為 3.7.0,windows系統掃瞄給定主機是否開放了指定的埠tcp連線掃瞄是利用tcp的三次握手來確定主機的埠是否開放。確定主機埠開放之後,給埠傳送訊息,接收埠返回的訊息,然後判斷該埠執行的服務。
使用時,-h 引數可以提供主機的網域名稱或者ip位址,-p/-p 寫要掃瞄的埠,多個埠用逗號分隔
'''
@author:yw
'''import optparse
from socket import *
import threading
threadlock = threading.lock() #例項化threadlock物件
def conn_scan(host, port):
try:
conn = socket(af_inet,sock_stream)
conn.connect((host, port))
#conn.send('ywboy'.encode('utf-8')) #傳送測試
#results = conn.recv(100) #接收主機返回的資訊
threadlock.acquire() #加鎖
print("[+]%d/tcp open" % port)
#print('[+]'+results.decode('utf-8'))
conn.close()
except exception as e:
threadlock.acquire() #釋放鎖
print('[-]%d/tcp closed' % port)
finally:
threadlock.release()
conn.close()
def port_scan(host, ports):
try:
ip = gethostbyname(host) ##獲得對應主機的ip位址
except:
print("[-] cannot resolve '%s':unknow host" % host)
return
try:
name = gethostbyaddr(host) ##獲得對應主機的資訊,返回主機名、主機別名列表、主機ip位址列表
print("\n[+] scan result for:"+name[0])
except:
print("\n[+] scan results for:"+ip)
setdefaulttimeout(1)
for port in ports:
print("scan port:"+port)
conn_scan(host, int(port))
def main():
usage = "usage %prog -h -p/-p "
parse = optparse.optionparser(usage)
parse.add_option('-h', dest='host', type='string', help='target host')
parse.add_option('-p','-p', dest='ports', type='string', help='scan port')
(options, args) = parse.parse_args()
host = options.host
ports = str(options.ports).split(',')
if (host==none)|(ports==none):
print(parse.usage)
exit(0)
port_scan(host,ports)
if __name__ == '__main__':
main()
上述**,因為我只是做了埠掃瞄,所以注釋掉的判斷埠掃瞄服務的**埠掃瞄器編寫 python
今天來編寫乙個 埠掃瞄器,掃瞄某個主機 開放的埠 對某個埠進行 socket 連線,如果連線成功,則代表 該埠有效,可以根據埠,判斷 是 哪個服務,很多情況下,都是很準確的。一共有 1 65535 個埠 其實0也可以用 coding utf 8 import socket socket.setdef...
TCP埠掃瞄器
乙個基於python3的tcp埠掃瞄器 原理 就是和不同的埠進行tcp連線,能連線成功就表示此埠是開放的,不能連線成就表示此埠是關閉的。import socket import re import threading import time lock threading.lock threads l...
埠掃瞄器(masscan)
s.exe號稱史上最快 3分鐘掃完全網 掃瞄器小巧而精緻,大小僅僅8k,但是使用上有諸多限制,例如僅支援再winserver2003 上無條件使用,放到其它系統上就要對系統做一些配置,不然無法支援syn方式掃瞄,這顯然不夠友好。nmap掃瞄器,能探知系統型別是否存活等,但是同時獲得更詳細的資訊也就意...