實現端口掃描的python腳本

0x00:端口掃描原理

利用python內置函數socket
解析ip地址,對一定的端口進行掃描,設定響應時間和利用多線程加快掃描速度。

0x01:python腳本

from socket import *
import threading
lock = threading.Lock() #調用lock對象
openNum = 0
threads = []
def portScanner(host,port):
    global openNum #定義公共變量
    try:
        s = socket(AF_INET,SOCK_STREAM) #調用socket解析域名,ipv4
        s.connect((host, port))
        lock.acquire()   #使用acquire,release 讓中間的變量每次只能被一個線程更改,防止變量混亂,保證線程同步
        openNum += 1
        print("[+] %d open" % port)
        lock.release()
        s.close()
    except:
        pass
def main():
    hosts = str(input())
    l = int(input())
    setdefaulttimeout(1) #設定響應時間
    for p in range(1,l):
        t = threading.Thread(target=portScanner,args=(hosts,p)) #調用多線程,傳入函數和參數
        threads.append(t) #將t加入線程
        t.start()
    for t in threads:
        t.join() #保證線程的同時完成
    print('[*] The scan is complete!')
    print('[*] A total of %d open port' % (openNum))

if __name__ == '__main__':
    main()

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章