python埠掃瞄的兩個小指令碼

2021-08-20 22:24:31 字數 2852 閱讀 6166

為了加深自己對埠掃瞄的理解,寫了兩個小的指令碼

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