python使用socket實現多執行緒埠掃瞄

2021-08-01 21:46:39 字數 2042 閱讀 8115

使用socket主要是判斷是否埠能否聯通

socket《詳情參考》

1.socket.connect() 檢測埠,若埠不能聯通,則會丟擲異常,若無異常,則埠存活,使用try-except異常捕獲處理,進而進行埠掃瞄

這裡將使用100個執行緒,每個埠連線都要檢查是否超過65535

#coding=utf8

import socket

import threading

defscan

(host,cport):

for x in range(660):

p=x+660*cport

try:

if p < 65535:

s = socket.socket(socket.af_inet, socket.sock_stream)

s.connect((host, p))

s.settimeout(0.1)

print

"local open port : %d"%p

s.close()

else :

break

except exception:

pass

list =

for i in range(100):

t = threading.thread(target=scan,args=('localhost',i,))

t.start()

for threadinglist in list:

threadinglist.join()

輸出:

local

open port : 22

local

open port : 111

local

open port : 34172

local

open port : 49716

local

open port : 51078

2.socket.connect_ex() 若聯通則返回為0,否則返回為非0

依據connect_ex返回值判斷埠是否存活

import socket 

import threading

from queue import queue

defscan

(port):

s = socket.socket()

s.settimeout(1)

if s.connect_ex(('localhost', port)) == 0:

print

"local open port : %d"%port

s.close()

defworker

():while

not q.empty():

port = q.get()

try:

scan(port)

finally:

q.task_done()

if __name__ == '__main__':

q = queue()

map(q.put,xrange(1,65535))

threads = [threading.thread(target=worker) for i in xrange(100)]

map(lambda x:x.start(),threads)

q.join()

輸出:

local

open port : 22

local

open port : 25

local

open port : 111

local

open port : 631

local

open port : 35156

local

open port : 38929

local

open port : 51078

python實現socket收發資料的實現

1.建立套接字 2.使用套接字收 發資料 3.關閉套接字 import socket def main 建立套接字 udp socket socket.socket socket.af inet,socket.sock dgram 繫結資訊 這裡繫結的資料是乙個元組 udp socket.bind ...

socket 使用select 非阻塞方式實現

select函式原型如下 int select int maxfds,fd set readfds,fd set writefds,fd set exceptfds,struct timeval timeout select系統呼叫是用來讓我們的程式監視多個檔案控制代碼 socket 控制代碼 的狀...

python中Socket的使用

前一段時間學習python網路程式設計,完成簡單的通過python實現網路通訊的功能。現在,將python中socket 通訊的基本實現過程做乙個記錄備份.python 中的socket通訊較為簡單,僅需要幾行 就可實現。和一般的網路通訊一樣,通訊方式分為udp和tcp兩種方式,兩種方式的處理也略有...