python實現多程序ping掃瞄

2021-10-10 04:35:22 字數 1881 閱讀 5156

注意

* scapy在windows下需要安裝npcap,**使用的python版本是3.8

**如下

首先匯入所需要的模組

import ipaddress

import multiprocessing

import time

from scapy.

allimport

*from random import randint

先定義乙個具體的ping方法

def

scapy_ping

(host)

: id_ip = randint(1,

65535

)# 隨機產生ip id位

id_ping = randint(1,

65535

)# 隨機產生ping id位

seq_ping = randint(1,

65535

)# 隨機產生ping序列號位

# ping指令會使用icmp傳輸協議,icmp報文中要封裝ip頭部

packet = ip(dst=host, ttl=64,

id=id_ip)

/ icmp(

id=id_ping, seq=seq_ping)

/ b'welcome'

res = sr1(packet, timeout=

2, verbose=

false

)if res:

print

('[*] '

+ host +

' is active'

) os._exit(

3)

啟用多程序執行ping方法

def

scapy_ping_scan

(network)

: net = ipaddress.ip_network(network)

ip_processes =

for ip in net:

ip_addr =

str(ip)

ping_one = multiprocessing.process(target=scapy_ping, args=

(ip_addr,))

ping_one.start(

) time.sleep(

0.1)

# 防止程序速度過快,目標不執行

# ip_processes[ip_addr] = ping_one

'''ip_list =

for ip,process in ip_processes.items():

if process.exitcode == 3:

else:

process.terminate()

return sorted(ip_list)'''

主程式呼叫

if __name__ ==

'__main__'

: t1 = time.time(

) alive_ip = scapy_ping_scan(sys.ar**[1]

)# 1.0.0.0/24

for ip in alive_ip:

print(ip)'''

t2 =time.time(

)print

(t2-t1)

測試結果

Python實現多程序

python可以實現多執行緒,但是因為global interpreter lock gil python的多執行緒只能使用乙個cpu核心,即乙個時間只有乙個執行緒在執行,多執行緒只是不同執行緒之間的切換,對多核cpu來說,就是巨大的浪費。如4核cpu,實際上只利用了乙個核,cpu利用率只有25 要...

python 實現多程序

方法一 from urllib import request from multiprocessing import process import os def url,kwargs print 當前程序id os.getpid os.getppid os.getpid 獲取當前程序id,os.ge...

python多程序 python多程序

當有多個非相關任務需要處理時,並行能大大提高處理速度。這裡簡要介紹python的multiprocessing模組。簡單多程序編寫 當我們任務數量確定而且比較少的時候,可以手動為每個任務指定乙個程序來執行。import multiprocessing as mp def f a print a if...