Scapy 网段中ping扫描
安装scapy
pip3 install scapy-python3
交互式ip包构造
#scapy
>>> ping = sr(IP(dst='202.100.1.1')/ICMP()/b'welcome to qytang')
>>> b = IP(dst='202.100.1.1')/ICMP()/b'welcome to qytang'
>>> b.show()
>>> ping = sr1(b) #send and receive 1个包
>>> ping.show()
>>> ping.getlayer(ICMP).fields #提取ICMP的头部,并把头部字段提取出来产生一个字典
>>> ping.getlayer(ICMP).fields['id'] #提取id字段
#sr() 发送三层数据包,等待接收一个或者多个数据包的响应
#sr(1) 发送三层数据包,并仅仅只等待接收一个数据包的相应
#srp() 发送二层数据包,并且等待响应
#send() 发送三层数据包,系统会自动处理路由和二层信息
#sendp() 发送二层数据包
Scapy实现ping扫描
scapy_ping_one.py 实现一个ip地址的ping
import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import *
from random import randint
def scapy_ping_one(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 = 64,id = id_ip)/ICMP(id = id_ping,seq = seq_ping)/b'Welcome to qytang'
ping = sr1(packet,timeout = 2,verbose = False)#获取相应信息,超时为2秒,关闭详细信息
#ping.show() #被调用来扫描整个网段时候最好注释起来,不然产生大量信息
if ping:#如果又响应信息
os._exit(3)#退出码为3
if __name__ == '__main__':
scapy_ping_one('172.17.168.1')
scapy_ping_scan.py 实现整个网段的ping扫描
import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
import ipaddress
import time
import multiprocessing
from scapy_ping_one import scapy_ping_one
from scapy.all import *
def scapy_ping_scan(network):
net = ipaddress.ip_network(network)
ip_processes = {}
for ip in net:
ip_addr = str(ip)#读取网络中的每一个IP地址,注意需要str转换为字符串!
ping_one = multiprocessing.Process(target = scapy_ping_one,args=(ip_addr))
ping_one.start()
ip_processes[ip_addr] = ping_one#产生IP与进程对应的字典
ip_list = []
for ip,process in ip_processes.items():
if process.exitcode == 3:
ip_list.append(ip)
else:
process.terminate()
return sorted(ip_list)
if __name__ == '__main__':
import time
t = time.time()
active_ip = scapy_ping_scan(sys.argv[1])
print('活动IP地址如下:')
for ip in active_ip:
print(ip)
t2 = time.time()
print(t2 - t1)
Scapy 网段中ping扫描的更多相关文章
- 在 .NET 中,扫描局域网服务的实现
在最近负责的项目中,需要实现这样一个需求:在客户端程序中,扫描当前机器所在网段中的所有机器上是否有某服务启动,并把所有已经启动服务的机器列出来,供用户选择,连接哪个服务.注意:这里所说的服务事实上就是 ...
- SQL Server 执行计划中的扫描方式举例说明
SQL Server 执行计划中的扫描方式举例说明 原文地址:http://www.cnblogs.com/zihunqingxin/p/3201155.html 1.执行计划使用方式 选中需要执行的 ...
- [置顶] 如何判断两个IP大小关系及是否在同一个网段中
功能点 判断某个IP地址是否合法 判断两个IP地址是否在同一个网段中 判断两个IP地址的大小关系 知识准备 IP协议 子网掩码 Java 正则表达式 基本原理 IP地址范围 0.0.0.0- 255 ...
- linux中ping带时间及打印内容到文件
ping命令就不多说了,-i是时间间隔,-c是ping的次数 这种是每隔30秒ping一次,并在后面显示时间: ping 192.168.30.123 -i 30 | awk '{ print $0& ...
- Linux中ping不通外网
在linux中ping www.baidu.com 无法ping通 需要修改vi /etc/resolv.conf 增加如下内容: nameserver 114.114.114.114 nameser ...
- linux 中 ping的回传值
今天在学习鸟哥私房菜的过程中,不明白ping的回传值是怎么设置的,后来网上找的结果了,特此记录一下 1 题目大意是指,ping一个网段的机器,如果可以通,就显示UP,如果不通就显示Down,其中一 ...
- python多线程与多进程--存活主机ping扫描以及爬取股票价格
python多线程与多进程 多线程: 案例:扫描给定网络中存活的主机(通过ping来测试,有响应则说明主机存活) 普通版本: #扫描给定网络中存活的主机(通过ping来测试,有响应则说明主机存活)im ...
- 网络中 ping 不通 路由表
不管是在window还是在linux中,我们经常会遇到ping不通的问题. 这里的原因很多,比如不同的网段交换机做了一些限制等,这些问题是我们人工不能解决的. 但是,当你发现各自的网关是可以ping的 ...
- 【转】C#中判断扫描枪输入与键盘输入
提出问题:在收货系统中,常常要用到扫描枪扫描条码输入到TextBox,当条码无法扫描时,需要手工输入.如果是扫描枪输入时,我们将自动去判读条码,而手工输入时,最终需要加按回车键确认后判读条码.这时候我 ...
随机推荐
- OpenGL 球体世界
一.类似公自转 二.核心代码 //图形渲染 void RenderScene() { //清楚缓存区:颜色缓存区.深度缓存区.模版缓存区 glClear(GL_COLOR_BUFFER_BIT|GL_ ...
- 前端实现文件在线预览txt,pdf,doc,xls,ppt几种格式
做法就是使用iframe标签 1.text,pdf的文件预览 <iframe class="filename" :src="文件的地址" width='1 ...
- js replace 全局替换
js 的replace 默认替换只替换第一个匹配的字符,如果字符串有超过两个以上的对应字符就无法进行替换,这时候就要进行一点操作,进行全部替换. <script language="j ...
- docker save和docker export的区别
docker save保存的是镜像(image),docker export保存的是容器(container): docker load用来载入镜像包,docker import用来载入容器包,但两者 ...
- 苏州Uber优步司机奖励政策(4月24日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 12-[数据库]--图形工具Navicat
1.Navicat介绍 在生产环境中操作MySQL数据库还是推荐使用命令行工具mysql,但在我们自己开发测试时,可以使用可视化工具Navicat,以图形界面的形式操作MySQL数据库 官网下载:ht ...
- 9 ORM-高阶补充(未完成)
https://www.cnblogs.com/alice-bj/p/9195846.html#_labelTop https://www.cnblogs.com/yuanchenqi/article ...
- Storm 第四章 Storm常见问题
1.集群如何启动,任务如何执行? java -server nimbus,supervisor client--->createTopology(序列化)--->提交jar到nimbusi ...
- C# 其他的Url 文件的路径转化为二进制流
//将虚拟路径转化为文件的路径然后最后转化为文件流 public ActionResult SaveImage(string path) { var url =System.Web.HttpConte ...
- SQL语句汇总(一)——数据库与表的操作以及创建约束
首先,非常感谢大家对上篇博文的支持,真是让本菜受宠若惊,同时对拖了这么久才出了此篇表示抱歉. 前言:此文旨在汇总从建立数据库到联接查询等绝大部分SQL语句.SQL语句虽不能说很多,但稍有时间不写就容易 ...