tcp埠掃瞄 使用Python進行TCP埠掃瞄

2021-10-11 23:29:49 字數 3316 閱讀 4336

首先我們供給一台主機,要進行的步驟就是對其主機埠的掃瞄,檢視其中開放的埠。

我們建立乙個tcp的全連線的掃瞄器,使用socket來建立聯結器。

#測試當前主機和埠是否開放,直接使用socket連線def connscan(host,port):    try:        connskt = socket.socket(socket.af_inet, socket.sock_stream)         connskt.connect((host,port))        print("tcp open port:" + str(port))    except:        print('tcp closed:'+str(port))
def portscan(tgthost, tgtports):        try:                tgtip = socket.gethostbyname(tgthost)      except:                print("[-] cannot resolve '%s': unknown host" % tgthost)                return       try:                tgtname = socket.gethostbyaddr(tgtip)   print('\n[+] scan results for: ' + tgtname[0])    except:                print('\n[+] scan results for: ' + tgtip)    socket.setdefaulttimeout(1)        for tgtport in tgtports:                print('scanning port ' + str(tgtport))        connscan(tgthost, int(tgtport))
portscan('www.baidu.com', [80,443,3389,1433,23,445])
[+] scan results for: 61.135.169.125scanning port 80tcp open port:80scanning port 443tcp open port:443scanning port 3389tcp closed:3389scanning port 1433tcp closed:1433scanning port 23tcp closed:23scanning port 445tcp closed:445
為了從捕獲我們的目標主機的應用標識,我們必須首先插入額外的驗證**到 connscan函式中。一旦發現開放的埠,我們傳送乙個字串資料到這個端 口然後等待響應。收集這些響應並推斷可能會得到執行在目標主機埠上的應 用程式的一些資訊。

#測試當前主機和埠是否開放,直接使用socket連線def connscan(host,port):    try:        connskt = socket.socket(socket.af_inet, socket.sock_stream)         connskt.connect((host,port))        connskt.send('python\r\n')        results = connskt.recv(100)        print("tcp open port:" + str(port))        print('[+] ' + str(results))     except:        print('tcp closed:'+str(port))def portscan(tgthost, tgtports):        try:                tgtip = socket.gethostbyname(tgthost)      except:                print("[-] cannot resolve '%s': unknown host" % tgthost)                return       try:                tgtname = socket.gethostbyaddr(tgtip)               print('\n[+] scan results for: ' + tgtname[0])    except:                print('\n[+] scan results for: ' + tgtip)    socket.setdefaulttimeout(1)        for tgtport in tgtports:                print('scanning port ' + str(tgtport))                connscan(tgthost, int(tgtport))portscan('www.qq.com', [22,80,443,3389,1433,23,445])
因為每乙個socket都有時間延遲,每乙個socket掃瞄都將會耗時幾秒鐘,雖 然看起來無足輕重,但是如果我們掃瞄多個埠和主機延遲時間將迅速增大。理想情況下,我們希望這些socket按順序掃瞄。引入python執行緒。執行緒提供 了一種同時執行的方式。在我們的掃瞄中利用執行緒,只需將 portscan()函式的迭代改一下。請注意,我們可以把每乙個connscan()函式都 當做是乙個執行緒。在迭代的過程中產生的每乙個執行緒將在同時執行。

python使用nmap埠掃瞄

coding utf 8 usr bin env python import nmap import optparse def nmapscan tgthost,tgtport 建立nmap掃瞄器,初始化portscanner模組 class portscanner init self,nmap s...

TCP埠掃瞄器

乙個基於python3的tcp埠掃瞄器 原理 就是和不同的埠進行tcp連線,能連線成功就表示此埠是開放的,不能連線成就表示此埠是關閉的。import socket import re import threading import time lock threading.lock threads l...

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...