當前位置:首頁 » 編程語言 » python多線程埠掃描

python多線程埠掃描

發布時間: 2022-07-09 05:58:23

python 埠掃描 延時設置多久

#!/usr/bin/python
# -*- coding:utf8 -*-
# Python: 2.7.8
# Platform: Windows
# Authro: wucl
# Program: 埠掃描
# History: 2015.6.1

import socket, time, thread
socket.setdefaulttimeout(3)

def socket_port(ip,port):
"""
輸入IP和埠號,掃描判斷埠是否開放
"""
try:
if port>=65535:
print u'埠掃描結束'
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result=s.connect_ex((ip,port))
if result==0:
lock.acquire()
print ip,u':',port,u'埠開放'
lock.release()
s.close()
except:
print u'埠掃描異常'

def ip_scan(ip):
"""
輸入IP,掃描IP的0-65534埠情況
"""
try:
print u'開始掃描 %s' % ip
start_time=time.time()
for i in range(0,65534):
thread.start_new_thread(socket_port,(ip,int(i)))
print u'掃描埠完成,總共用時 :%.2f' %(time.time()-start_time)
raw_input("Press Enter to Exit")
except:
print u'掃描ip出錯'

if __name__=='__main__':
url=raw_input('Input the ip you want to scan:\n')
lock=thread.allocate_lock()
ip_scan(url)

Ⅱ 需要用python編寫GUI界面實現區域網ip和埠掃描。在dos下採用nmap實現了,但是到wi

不是可以孵化進程嗎?popen之類的可以嘗試一下。就是把輸入輸出重定向,你可以孵化一個進程執行nmap,向孵化出來的進程中輸入數據,把輸出讀出來。

Ⅲ Python多線程區域網掃IP的問題

樓主對於os.system方法理解有誤,不是你PING不通才返回的0,
os.system只是幫你執行命令而已,如果這個命令是有效的他返回0,如果無效則返回1,你可以試試os.system('abc')他是返回1的(因為abc這個命令是無效的),對於你的PING命令來說,只要他能成功執行無論PING通不PING通他都會返回0.

你要測試網路是否通不能採用這種方式,應該使用PYTHON自帶的庫。

Ⅳ python 查看埠是否開通

一、常見埠掃描的原理
0、秘密掃描

秘密掃描是一種不被審計工具所檢測的掃描技術。

它通常用於在通過普通的防火牆或路由器的篩選(filtering)時隱藏自己。

秘密掃描能躲避IDS、防火牆、包過濾器和日誌審計,從而獲取目標埠的開放或關閉的信息。由於沒有包含TCP 3次握手協議的任何部分,所以無法被記錄下來,比半連接掃描更為隱蔽。

但是這種掃描的缺點是掃描結果的不可靠性會增加,而且掃描主機也需要自己構造IP包。現有的秘密掃描有TCP FIN掃描、TCP ACK掃描、NULL掃描、XMAS掃描和SYN/ACK掃描等。

1、Connect()掃描

此掃描試圖與每一個TCP埠進行「三次握手」通信。如果能夠成功建立接連,則證明埠開發,否則為關閉。准確度很高,但是最容易被防火牆和IDS檢測到,並且在目標主機的日誌中會記錄大量的連接請求以及錯誤信息。

TCP connect埠掃描服務端與客戶端建立連接成功(目標埠開放)的過程:

① Client端發送SYN;

② Server端返回SYN/ACK,表明埠開放;

③ Client端返回ACK,表明連接已建立;

④ Client端主動斷開連接。

建立連接成功(目標埠開放)

TCP connect埠掃描服務端與客戶端未建立連接成功(目標埠關閉)過程:

① Client端發送SYN;

② Server端返回RST/ACK,表明埠未開放。

優點:實現簡單,對操作者的許可權沒有嚴格要求(有些類型的埠掃描需要操作者具有root許可權),系統中的任何用戶都有權力使用這個調用,而且如果想要得到從目標埠返回banners信息,也只能採用這一方法。

另一優點是掃描速度快。如果對每個目標埠以線性的方式,使用單獨的connect()調用,可以通過同時打開多個套接字,從而加速掃描。

缺點:是會在目標主機的日誌記錄中留下痕跡,易被發現,並且數據包會被過濾掉。目標主機的logs文件會顯示一連串的連接和連接出錯的服務信息,並且能很快地使它關閉。

2、SYN掃描

掃描器向目標主機的一個埠發送請求連接的SYN包,掃描器在收到SYN/ACK後,不是發送的ACK應答而是發送RST包請求斷開連接。這樣,三次握手就沒有完成,無法建立正常的TCP連接,因此,這次掃描就不會被記錄到系統日誌中。這種掃描技術一般不會在目標主機上留下掃描痕跡。但是,這種掃描需要有root許可權。

埠開放:1、Client發送SYN 2、Server端發送SYN/ACK 3、Client發送RST斷開(只需要前兩步就可以判斷埠開放)

埠關閉:1、Client發送SYN 2、Server端回復RST(表示埠關閉)

優點:SYN掃描要比TCP Connect()掃描隱蔽一些,SYN僅僅需要發送初始的SYN數據包給目標主機,如果埠開放,則相應SYN-ACK數據包;如果關閉,則響應RST數據包;

3、NULL掃描

Ⅳ 在網上摘抄了一個python編寫的TCP埠掃描程序,求解釋。

  1. 你那個寫死的ip是本機ip嗎

  2. 相當於判斷當前腳本是否是被直接執行還是被當作模塊調用(同一個文件可以有多種作用,如果直接執行可能輸出測試日誌,但作為模塊一般不輸出,所以要判斷)

Ⅵ 怎麼用python編寫掃描器

這里實現的埠掃描器有兩種,一種是使用socket模塊通過與目標主機相應埠建立TCP連接(完成完整的三次握手),來確定埠是否開放。
核心代碼:
import socket
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.settimeout(2)
sock.connect((host,port))
sock.send('test socket\n')
result = sock.recv(100)if result: print "某某埠開放"else: print "某某埠關閉"sock.close()1234567891011

另一種是直接利用nmap模塊,直接用它內置的方法PortScanner(),輸出返回信息,nmap支持使用ACK、FIN、SYN-ACK等掃描方式,如向指定埠發送TCP SYN包,等待TCP ACk響應來確定該埠是否開放。
核心代碼:

Ⅶ 如何使用多線程python掃描二級子域名

日站沒什麼好辦法了往往也會想到其二級域名,於是寫了一個比較簡陋的掃描二級域名的程序
速度一般般,不過如果線程開多了還是可以的
源程序(subdomain.py):

#! /usr/bin/env python
#coding=utf-8
import threading , Queue, optparse, os
import pycurl, StringIO, msvcrt, socket

queue = Queue.Queue()

class ScanThread(threading.Thread):

def __init__(self, queue):
threading.Thread.__init__(self)
self.queue = queue

def run(self):
while 1:
p = self.queue.get()
if p is None:
break
try:
sub_domain = p+'.'+domain
crl = pycurl.Curl()
crl.fa = StringIO.StringIO()
crl.setopt(pycurl.URL,sub_domain)
crl.setopt(pycurl.VERBOSE,0)
crl.setopt(pycurl.FOLLOWLOCATION,1)
crl.setopt(pycurl.MAXREDIRS,5)
crl.setopt(pycurl.CONNECTTIMEOUT, 60)
crl.setopt(pycurl.TIMEOUT, 300)
crl.setopt(crl.WRITEFUNCTION,crl.fa.write)
try:
crl.perform()
ip=socket.gethostbyname(sub_domain)
print sub_domain, ip
content = sub_domain+' '+ip+'\n'
self.writefile(wfile, 'a+', content)
except:
pass
except:
print "error"
self.writefile('F:/py/Domain/log.txt', 'a+', p+'\n')

queue.task_done()

def writefile(self, path, type, content):
f = open(path, type)
f.write(content)
f.close

class ThreadGetKey(threading.Thread):
def run(self):
while 1:
try:
chr = msvcrt.getch()
if chr == 'q':
print "stopped by your action ( q )"
os._exit(1)
else:
continue
except:
os._exit(1)

# now starting...

def main():
parser = optparse.OptionParser('Usages: %prog -d <domain> -r <read> -w <write> -t <thread(s)>')
parser.add_option('-d',dest='domain',type='string',help='the url to query')
parser.add_option('-r',dest='read',type='string',help='the dic file to read default=F:/py/Domain/dic.txt', default='F:/py/Domain/dic.txt')
parser.add_option('-w',dest='write',type='string',help='save the reasults to the catalogue \
default=F:/py/Domain/results.txt', default='F:/py/Domain/results.txt')
parser.add_option('-t',dest='threads',type='int',help='set the thread(s) default=10',default=10)
(options,args) = parser.parse_args()
if options.domain == None:
使用方法:
python subdomain.py -d .com -r dic.txt -w results.txt -t 50
主要影響速度的是這一塊代碼:

try:
crl.perform()
ip=socket.gethostbyname(sub_domain)
print sub_domain, ip
content = sub_domain+' '+ip+'\n'
self.writefile(wfile, 'a+', content)
except:
pass

主要是一開始理解錯了,以為二級域名不存在和某個網頁不存在一樣會返回404代碼,於是想到用返回碼來判斷。
結果後來程序一直出錯,才發現當二級域名不存在的時候返回的是「未找到伺服器」,根本不存在返回碼,於是只能使用一個try來調試錯誤,主要速度也就被這里影響了。當然線程開多了也是可以看到刷屏效果的~~

Ⅷ 如何用python寫埠掃描工具

直接利用nmap模塊,直接用它內置的方法PortScanner(),輸出返回信息,nmap支持使用ACK、FIN、SYN-ACK等掃描方式,如向指定埠發送TCP SYN包,等待TCP ACk響應來確定該埠是否開放。

Ⅸ 如何用python編寫一個高效的多線程埠掃描器

使用多線程處理重復邏輯。建議使用3以上,2.x會存在gil線程鎖分配問題。但目前很多伺服器的python都是2.x的

Ⅹ python中如何去學習那些socket

這個星期剛剛用Python寫了幾個 ping,dns(UDP 53)掃描以及tcp埠掃描的程序,總結有以下幾點:
1. 多線程,一個線程負責發,一個線程負責收
2. 使用raw socket,需要有root許可權,其中ICMP的raw socket需要設置參數告訴kernel IP頭有你的程序添加。我在check sum這里卡了點時間,手裡最好有本網路參考書,《TCP/IP illustrated》最好,在寫代碼之前必須對報文格式以及各欄位做到心中有數。
3. 看看Python的struct/array文檔看看怎麼組包,解包
4. 除非你異常牛逼,否則還是需要debug工具,比如wireshark/tcpmp等工具配合讓你看看自己發出來的包那裡出了問題。如果用GUI的wireshark記得將option中的tcp/ip部分checksum option打開
把代碼貼給你就讓你失去自己動手的樂趣了!呵呵have fun!

熱點內容
滑板鞋腳本視頻 發布:2025-02-02 09:48:54 瀏覽:432
群暉怎麼玩安卓模擬器 發布:2025-02-02 09:45:23 瀏覽:557
三星安卓12彩蛋怎麼玩 發布:2025-02-02 09:44:39 瀏覽:743
電腦顯示連接伺服器錯誤 發布:2025-02-02 09:24:10 瀏覽:537
瑞芯微開發板編譯 發布:2025-02-02 09:22:54 瀏覽:146
linux虛擬機用gcc編譯時顯示錯誤 發布:2025-02-02 09:14:01 瀏覽:235
java駝峰 發布:2025-02-02 09:13:26 瀏覽:651
魔獸腳本怎麼用 發布:2025-02-02 09:10:28 瀏覽:538
linuxadobe 發布:2025-02-02 09:09:43 瀏覽:212
sql2000資料庫連接 發布:2025-02-02 09:09:43 瀏覽:726