ICMP主机探测过程

Xanyang 2021-04-08 原文


ICMP主机探测过程


#1
from scapy.all import * from random import randint from optparse import OptionParser

  

#2 对用户输入的参数进行接收和批量处理,并将处理后的ip地址传入Scan函数.
def main():
    parser = OptionParser("Usage:%prog -i <target host> ")   #输出帮助信息
    parser.add_option('-i', type='string', dest='IP', help='specify target host')
            #获取IP地址参数
    options, args = parser.parse_args()
    print("Scan report for " + options.IP + "\n")
    #判断是单台还是多台主机
    #IP中存在-,说明是要扫描多台主机
    if '-' in options.IP:
# 代码举例:192.168.1.1-120
# 通过" - " 进行隔离,把192.168.1.1和120分开
# 把192.168.1.1通过" , "进行隔离,取最后一个数作为range 函数的start ,然后把120+1作为range 函数的stop
# 这样循坏遍历出需要扫描的IP地址
        for i in range (int(options.IP.split('-')[0].split('.')[3]),int
            (options.IP.split('-' )[1]) + 1):
             Scan(
            options.IP.split('.')[0] + '.' + options.IP.split('.')[1] + '.' +
                options.IP.split('.')[2] + '.' + str(i))
            time.sleep (0.2)
    else:
         Scan(options.IP)
         print("\nScan finished!...\n")
if __name__ == "__main__":
         try:
            main()
         except KeyboardInterrupt:
             print('interrupted by user, killing all threads...')
#3 Scan函数通过调用ICMP, 构造好的请求包发送到目的地址.目的地址的应答数据判断目标是否存活,打印存活的主机IP地址"ip.ip.ip.ip"----"Host is up" 对于不存活的主机打印出"ip.ip.ip.ip"---"host is down"
def Scan(ip):
    ip_id =randint(1, 65535)
    icmp_id = randint(1, 65535)
    icmp_seq = randint(1, 65535)
    packet=IP(dst=ip, ttl=64, id=ip_id)/ICMP(id=icmp_id, seq=icmp_seq)/b'rootkit'
    result = sr1(packet, timeout=1, verbose=False)

    if result:
       for rcv in result:
           scan_ip = rcv[IP].src
           print(scan_ip + '--->' 'Host is up')
    else:
        print(ip + '--->' 'host is down')

  

 

发表于
2021-04-08 20:45 
安杨 
阅读(0
评论(0
编辑 
收藏

 

版权声明:本文为Xanyang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Xanyang/p/14634755.html

ICMP主机探测过程的更多相关文章

随机推荐

  1. MongoDB(一)环境搭建与初始配置

    前言   最近的项目中需要用到MongoDB,所这段时间需要学习知道怎么去使用这个数据库。   这里我先简单的 […]...

  2. MATLAB之数据处理+公式拟合

    由试验得到一组数据(三个自变量,一个因变量),对该组数据进行处理,作图分析,分析各变量的关系,期望得到拟合公式 […]...

  3. 高防服务器如何选择性价比最高?

    什么是高防服务器?   高防服务器主要是指独立单个机器硬防防护为100G,300G,500G,900G等。这种 […]...

  4. 你应该知道Go语言的几个优势

    要说起GO语言的优势,我们就得从GO语言的历史讲起了…… 本文由腾讯技术工程官方号发表在腾讯云+社区 2007 […]...

  5. 九度OJ 1057:众数

    题目地址:http://ac.jobdu.com/problem.php?id=1057 题目描述: 输入20 […]...

  6. HihoCoder – 1419 后缀数组四·重复旋律4

    时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi平时的一大兴趣爱好就是演奏钢 […]...

  7. 微信小程序-实现扫码自动连接wifi(android)

    项目实路 饭店,商铺存在共享的wifi的地方,只需要贴出二维码,用户扫描后自动连接 小程序 缺点:androi […]...

  8. lxc man page

    NAME lxc - linux containers QUICK START You are in a hu […]...

展开目录

目录导航