pip install scapy
-----------------------------------------------
import scapy
'''
介绍:
Scapy 是一个强大的操纵报文的交互程序。
它可以伪造或者解析多种协议的报文,还具有发送、捕获、匹配请求和响应这些报文以及更多的功能。
Scapy 可以轻松地做到像扫描(scanning)、路由跟踪(tracerouting)、探测(probing)、单元测试(unit tests)、攻击(attacks)和发现网络(network discorvery)这样的传统任务。
它可以代替hping,arpspoof,arp-sk,arping,p0f 甚至是部分的Namp,tcpdump和tshark 的功能
'''
-----------------------------------------------
中文文档:https://www.ctolib.com/docs-scapy-doc-c-Introduction.html
demo:
from scapy.all import *
from scapy import all
from scapy.layers.inet import IP,ICMP
import logging
from random import randint
'''
介绍:
Scapy 是一个强大的操纵报文的交互程序。
它可以伪造或者解析多种协议的报文,还具有发送、捕获、匹配请求和响应这些报文以及更多的功能。
Scapy 可以轻松地做到像扫描(scanning)、路由跟踪(tracerouting)、探测(probing)、单元测试(unit tests)、攻击(attacks)和发现网络(network discorvery)这样的传统任务。
它可以代替hping,arpspoof,arp-sk,arping,p0f 甚至是部分的Namp,tcpdump和tshark 的功能
中文文档:https://www.ctolib.com/docs-scapy-doc-c-Introduction.html
'''
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
def start(host):
id_ip = randint(1,65535)#ip_id
id_ping = randint(1,65535)#ping_id
seq_ping = randint(1,65535)#ping序列号
#构造ping数据包
packet = IP(dst=host,ttl=1,id=id_ip,)/ICMP(id=id_ping,seq=seq_ping)/b'hello man'
#获取响应信息,超时2秒,开启详细信息。
ping = sr1(packet,timeout=2,verbose=True)
#sr1:发送三层数据包,只等待接受一个数据包响应
if ping:
ping.show()
os._exit(3)
if __name__ == '__main__':
start(sys.argv[1])
import ipaddress
import time
from multiprocessing import Process,Queue
import sys
from Scapy_demo.ping_demo import start
def more_start(network):
net = ipaddress.ip_network(network)
ip_process = {}
for ip in net:
ip_addr = str(ip)
ping_one = Process(target=start,args=(ip_addr,))
# ping_one.join()
ping_one.start()
ip_process[ip_addr] = ping_one
ip_list = []
for ip,process in ip_process.items():
if process.exitcode == 3 :
ip_list.append(ip)
else:
process.terminate()
return sorted(ip_list)
if __name__ == '__main__':
begin = time.time()
active_ip = more_start(sys.argv[1])
print("*****ACTIVE IP*****")
for ip in active_ip:
print(ip)
end = time.time()
print(end-begin)
更多内容需要对照官方文档自学