Python 协议攻击脚本(三): ICMP扫描

本文介绍了使用Python进行ICMP协议扫描的方法,包括ICMP协议的基础知识,如ICMP的类型,以及如何通过发送ICMP回显请求来判断主机是否活跃。通过Scapy库创建ICMP请求和响应的示例,逐步演示了从基础脚本到加入子网扫描、参数选项和多线程的代码改进过程。
摘要由CSDN通过智能技术生成

ICMP协议

互联网控制消息协议(英语:Internet Control Message Protocol,缩写:ICMP)是互联网协议族的核心协议之一。它用于网际协议(IP)中发送控制消息,提供可能发生在通信环境中的各种问题反馈。通过这些信息,使管理者可以对所发生的问题作出诊断,然后采取适当的措施解决。

Type

ICMP的类型

  • 0 回显请求 Echo Request
  • 8 回显应答 Echo Reply
  • 3 目标不可达 Destination Unreachable
  • 11 超时消息 Time Exceeded
  • 5 重定向消息 Redirect

ICMP扫描

利用ICMP协议来判断存活的主机

原理

对需要扫描的ip发送icmp回显请求Echo Request,如果收到回显应答Echo Reply则判断该ip处于活动状态,简单来说就是ping别人,以是否ping得通来判断是否存活

数据包分析

ping网关

# ping 网关 -c 1 

mark

可以看到封装为Ether/IP/ICMP,ICMP的类型为8 (Echo Request)

mark

答复的数据包ICMP类型为0(Echo Reply)

mark

>>> ls(ICMP)
type       : ByteEnumField                       = (8) #ICMP类型
code       : MultiEnumField (Depends on type)    = (0)
chksum     : XShortField                         = (None)
id         : XShortField (Cond)                  = (0)
seq        : XShortField (Cond)                  = (0)
[...]

编写脚本

1.Scapy中ICMP的请求和答复

>>> packet =Ether()/IP(src='192.168.1.113',dst='192.168.1.1')/ICMP()
>>> packet.show()
###[ Ethernet ]### 
  dst= 88:25:93:d2:6e:fa
  src= 00:0c:29:62:44:de
  type= 0x800
###[ IP ]### 
     version= 4
     ihl= None
     tos= 0x0
     len= None
     id= 1
     flags= 
     frag= 0
     ttl= 64
     proto= icmp
     chksum= None
     src= 192.168.1.113
     dst
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值