使用pyhton制作扫描ipv6网段的脚本

目前现网我没有找到类似fping的ipv6地址段扫描存活工具,所以想到用python自己制作一款脚本,用于扫描ipv6地址段存活地址。

这个脚本需要以下的脚本和工具

1、Python 3.6+: 由于脚本使用了Python 3.6的语法和功能,因此需要安装Python 3.6或更新版本。测试内部环境是自带Python 2.7.5 版本的 需要升级到python3.6(内部环境 centos7.9)

yum install centos-release-scl -y    //启用Software Collections (SCL)仓库,因为CentOS 7默认的YUM仓库中没有Python 3.6。
]yum install rh-python36 -y    //下载python3.6
scl enable rh-python36 bash    //当前会话启用python3.6

//每次启动shell时都自动启用Python 3.6
echo 'source scl_source enable rh-python36' >> ~/.bashrc
source ~/.bashrc

python --version    //查看python当前版本



2、pip: pip是Python的包管理工具,用于安装和管理Python包。通常在安装Python时会默认安装pip,现在需要升级pip版本,才能运行脚本

pip install --upgrade pip    //升级pip

//使用的是Software Collections (SCL)环境,可能需要使用以下命令来确保正确升级pip
scl enable rh-python36 bash
python -m pip install --upgrade pip

pip --version
pip 24.1 from /path/to/pip (python 3.6)    //显示类似这样的内容说明升级成功

3、 scapy是一个强大的Python库,用于网络数据包的创建、修改和发送。在安装了Python和pip后,可以使用以下命令安装scapy:

pip install scapy
  

4、编写脚本文件 scanipv6.py

import sys
import ipaddress
from scapy.all import *
import readline

def ping_ipv6_address(address):
    """
    Ping an IPv6 address and return True if it is alive, otherwise False.
    """
    icmpv6_packet = IPv6(dst=address)/ICMPv6EchoRequest()
    response = sr1(icmpv6_packet, timeout=2, verbose=0)
    
    if response and ICMPv6EchoReply in response:
        print(f"{address} is alive")
        return True
    return False

def scan_ipv6_network(network):
    """
    Scan a network of IPv6 addresses and return a list of addresses that are alive.
    """
    net = ipaddress.IPv6Network(network)
    alive_addresses = []

    for ip in net:
        ping_ipv6_address(str(ip))
    
    return alive_addresses

def main():
    print("Enter the IPv6 network to scan (e.g., 2449:8C38:80:220::/125):")
    while True:
        try:
            network = input("Network: ")
            ipaddress.IPv6Network(network)  # Validate input
            break
        except ValueError as ve:
            print("Invalid input, please enter a valid IPv6 network (e.g., 2449:8C38:880:220::/125):")

    scan_ipv6_network(network)

if __name__ == "__main__":
    main()

5、在你报仇scanipv6.py文件的目录下运行脚本即可

python scanipv6.py

在Network输入你要扫描的ipv6网段即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值