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. linux下查看进程(ps命令)

      转自:http://www.jb51.net/LINUXjishu/151851.html   Linux […]...

  2. 全面了解golang string

    string我们每天都在使用,可是对于string的细节问题你真的了解吗? 今天我们先以一个问题开篇。 你能猜 […]...

  3. 实用程序包utils – 基于Rollup打包输出各模块文件(二)

    上一次,我们讲到了如何去搭建一个前端工具库的工程,那么今天我们来聊一聊如何去将其打包输出。 需求 事情是这个样 […]...

  4. python 如何将ppt和word转化为txt文档

      最近做了关于计算文档中关键词的程序,使用Tf-idf方法去提取,其中需要使用python读取MS word […]...

  5. [Abp 源码分析]七、仓储与 Entity Framework Core

    0.简介 Abp 框架在其内部实现了仓储模式,并且支持 EF Core 与 Dapper 来进行数据库连接与管 […]...

  6. 一定有你需要收藏的网站!

    一、找资源利器 西林街://www.xilinjie.com/ 胖次://www.panc.cc/ EV搜索: […]...

  7. Keil C51学习 5 定时器/计数器

           定时器/计数器 应用场合:定时或延时控制、对外部事件的检测、计数等。 计数器 就是对外部输入脉冲 […]...

  8. 查询功能,测试点总结

    黑盒测试的测试点先从以下几点考虑: UI, 易用性,功能,容错性,安全,性能,兼容性   下列是有关查询功能的 […]...

展开目录

目录导航