生成单一c段或者连续c段范围内的所有ip地址+生成范围内C段脚本

news2025/1/12 16:14:16

1.  背景

马上有电子政务外网攻防演练要处理ip

2.  脚本1

生成c段和连续c段所有ip地址.py

用处:生成单一c段或者连续c段范围内的所有ip地址。

用法:ipc.txt  放入 ip段或者两个ip段范围:如:

192.168.3.0/24
172.16.1.0/24-172.16.3.0/24
192.168.1.0/24

结果保存到ip.txt

优缺点:单个c段不会生成.0 和 .255,连续c段范围会生成.0 和 .255 广播地址。

python38   生成c段和连续c段所有ip地址.py:

import ipaddress  
  
def generate_ips_from_cidr(cidr):  
    """生成单个CIDR的所有IP地址"""  
    network = ipaddress.ip_network(cidr, strict=False)  
    return [str(ip) for ip in network.hosts()]  
  
def generate_ips_from_range(start_cidr, end_cidr):  
    """生成CIDR范围的所有IP地址"""  
    start_network = ipaddress.ip_network(start_cidr, strict=False)  
    end_network = ipaddress.ip_network(end_cidr, strict=False)  
      
    # 计算CIDR范围的起始和结束IP地址  
    start_ip = int(ipaddress.IPv4Address(start_network.network_address) + 1)  
    end_ip = int(ipaddress.IPv4Address(end_network.broadcast_address))  
      
    # 生成范围内的所有IP地址  
    all_ips = []  
    current_ip = start_ip  
    while current_ip <= end_ip:  
        all_ips.append(str(ipaddress.IPv4Address(current_ip)))  
        current_ip += 1  
      
    return all_ips  
  
def process_cidrs_and_save_unique_ips(input_file, output_file):  
    """处理CIDR和CIDR范围,去重后保存IP地址到文件"""  
    with open(input_file, 'r') as file:  
        lines = file.readlines()  
      
    all_ips = set()  # 使用集合来自动去重  
    for line in lines:  
        line = line.strip()  
        if '-' in line:  
            # 处理CIDR范围  
            start_cidr, end_cidr = line.split('-')  
            all_ips.update(generate_ips_from_range(start_cidr, end_cidr))  
        else:  
            # 处理单个CIDR  
            all_ips.update(generate_ips_from_cidr(line))  
      
    # 将去重后的IP地址写入文件  
    with open(output_file, 'w') as file:  
        for ip in sorted(all_ips):  # 对IP地址进行排序  
            file.write(ip + '\n')  
      
    print(f"Saved {len(all_ips)} unique IP addresses to {output_file}")  
  
# 定义输入和输出文件名  
input_file = 'ipc.txt'  
output_file = 'ip.txt'  
  
# 处理文件并保存结果  
process_cidrs_and_save_unique_ips(input_file, output_file)

3. 脚本2

生成范围内C段.py

用处:如果多个c段范围,要自己手工,用的肯定不多,还是为了偷懒。

用法:两个ip段范围:如:

172.16.1.0/24-172.16.3.0/24
192.168.8.0/24-192.168.30.0/24

python38  生成范围内C段.py

import ipaddress  
  
def generate_c_blocks(start_cidr, end_cidr):  
    """生成从start_cidr到end_cidr范围内的所有C段"""  
    start_network = ipaddress.ip_network(start_cidr, strict=False)  
    end_network = ipaddress.ip_network(end_cidr, strict=False)  
      
    c_blocks = []  
    current_network = start_network  
    while current_network <= end_network:  
        c_blocks.append(str(current_network))  
        current_network = ipaddress.ip_network(f"{current_network.network_address + 256}/{current_network.prefixlen}", strict=False)  
      
    return c_blocks  
  
def process_cidr_ranges(input_file, output_file):  
    """处理CIDR范围并保存到输出文件"""  
    with open(input_file, 'r') as file:  
        for line in file:  
            line = line.strip()  
            if not line or line.startswith('#'):  # 忽略空行和注释行  
                continue  
              
            # 假设每行包含一个CIDR范围,用"-"分隔  
            start_cidr, end_cidr = line.split('-')  
            c_blocks = generate_c_blocks(start_cidr, end_cidr)  
              
            # 将C段写入输出文件  
            with open(output_file, 'a') as out_file:  
                for c_block in c_blocks:  
                    out_file.write(c_block + '\n')  
  
# 调用函数处理ipc.txt文件并将结果保存到ip.txt  
process_cidr_ranges('ipc.txt', 'ip.txt')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1531232.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

罐头鱼AI视频混剪矩阵获客系统|批量剪辑定时发送

罐头鱼AI视频混剪矩阵获客系统 随着数字化时代的来临&#xff0c;视频内容已经成为各行业吸引用户关注和提升品牌形象的重要方式之一。为了帮助用户更便捷、高效地进行视频制作和推广&#xff0c;罐头鱼AI推出了全新的视频混剪矩阵获客系统&#xff0c;为您的视频营销增添智能利…

使用Python读取一个文本文件并计算其中每个单词出现的次数

import re import matplotlib.pyplot as plt from collections import Counter word_counts {} with open(E:\自然语言处理\Hamlet(2).txt) as f:for line in f:words line.strip().lower().split()for word in words:word re.sub(r[^a-zA-Z],,word)if word in word_counts:…

【链表】Leetcode 2. 两数相加【中等】

两数相加 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c; 并且每个节点只能存储 一位 数字。请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外&#xff0c;这两个数都不…

网速监控,实时网络速度监控

带宽与网速 现在&#xff0c;对高带宽的需求空前高涨&#xff0c;而且网络&#xff08;包括标准的内部部署&#xff09;以及公共、私有和混合环境都变得更加复杂。 虽然带宽和网速经常互换使用&#xff0c;但它们并不总是相同的。网速更多的是与延迟有关&#xff0c;而不是与…

文件上传基础篇

文件上传基础篇 文件上传漏洞原理 ​ 目标网站存在文件上传接口&#xff0c;但是对用户上传的文件没有做仔细甄别&#xff0c;导致黑客可以根据此功能点直接上传木马到网站服务器&#xff0c;造成危害 文件上传存在点 ​ 通常有头像上传&#xff0c;pdf上传 文件上传防护 …

Vue 计算属性和监视属性

Vue 计算属性和监视属性 computed computed 计算属性 规则&#xff1a; 用已有的属性计算不存在的属性默认调用一次get()只有值不发生改变的时候才可以使用简写&#xff08;函数&#xff09;&#xff1b;值发生改变 使用对象式写法&#xff0c;才可以配置set()方法底层原理使…

har的编译及引用

1.创建HAR 选择文件->新建->模块&#xff0c;然后再下一个页面选择static library,之后在接下来的页面设置模块名字&#xff0c;然后下一步直到完成。 2.创建成功后在新建的模块下编写自己的代码内容。 3.编译HAR 编译默认是从Index.ets文件下进行导出&#xff0c;如果…

Flink:使用 Faker 和 DataGen 生成测试数据

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

用图解说明mysql 行锁加锁规则

加锁原则 原则 1&#xff1a;加锁的基本单位是 next-key lock。希望你还记得&#xff0c;next-key lock 是前开后闭区间。原则 2&#xff1a;查找过程中访问到的对象才会加锁。优化 1&#xff1a;索引上的等值查询&#xff0c;给唯一索引加锁的时候&#xff0c;next-key lock …

Linux---基本操作命令之用户管理命令

1.1useradd 添加新用户 root用户&#xff1a;/root 普通用户&#xff1a;/home/ 创建的用户还是david&#xff0c;只是在dave文件夹下 1.2 passwd 设置密码 给用户tony设置密码: 123456 1.3 id 查看用户是否存在 查看有没有这个用户&#xff1a;id 名字 gid&#xff1a;用…

当人工智能无处不在

以下文章来源&#xff1a;新华社 2024年度的“西南偏南”多元创新大会和艺术节8日至16日在得克萨斯州首府奥斯汀举行。在今年的数百场讲座或沙龙讨论中&#xff0c;热度最高、讨论最多的前沿话题不难猜——人工智能&#xff08;AI&#xff09;。 焦点高度发散。从太空探索到音乐…

【windows】Python文件打包成dll文件及遇见的问题

最近需要将py文件转为dll&#xff0c;特此记录。 操作步骤来自于&#xff1a;将Python文件发布成DLL并调用 写一个py文件 文件名&#xff1a;test_numpy.py import numpy as npdef func(my_list1, my_list2):list_np1 np.array(my_list1)list_np2 np.array(my_list2)retur…

Visual Studio 2013 - 输出窗口一闪而过问题解决

Visual Studio 2013 - 输出窗口一闪而过问题解决 1. Visual Studio Console 一闪而过问题解决1.1. set Debug1.2. set Release References 1. Visual Studio Console 一闪而过问题解决 工程 -> 属性 -> 配置属性 -> 链接器 -> 系统 -> 子系统 -> 下拉框 -&g…

机器视觉系统选型-镜头参数

镜头参数&#xff1a; 光圈&#xff1a;光圈是一个用来控制镜头通光量的装置 &#xff0c;表示光圈大小我们是用光圈值&#xff08;F值&#xff09; &#xff0c;如F1.4&#xff0c;F2&#xff0c;F2.8 焦距&#xff08;Focus&#xff09;&#xff1a;透镜中心到其焦点的距离 景…

crossover虚拟机 crossover软件干嘛的 虚拟机软件的使用方法 mac虚拟机装windows

与传统的虚拟机软件&#xff08;如VMware、VirtualBox&#xff09;相比&#xff0c;CrossOver具有更高的运行效率和更好的用户体验。因为它并不创建一个完整的Windows虚拟机&#xff0c;而是仅模拟应用程序所需的运行环境。这使得CrossOver在启动和运行Windows应用程序时更加快…

平衡计分卡:企业/产品绩效管理的金钥匙

一、摘要 在企业管理领域&#xff0c;有一个广为流传的箴言&#xff1a;“衡量什么&#xff0c;得到什么。”这句话道出了衡量与结果之间的紧密关系。企业若想要取得理想的绩效&#xff0c;就必须建立科学、合理的衡量体系。而平衡计分卡&#xff0c;正是这样一套能够全面、系…

#Ubuntu(修改root信息)

&#xff08;一&#xff09;发行版&#xff1a;Ubuntu16.04.7 &#xff08;二&#xff09;记录&#xff1a; &#xff08;1&#xff09;命令行终端&#xff1a; a.右键&#xff0c;open terminal b.快捷键 ctrlaltt &#xff08;2&#xff09;进行root修改 sudo passwd &a…

【09】进阶JavaScript事件循环Promise

一、事件循环 浏览器的进程模型 何为进程? 程序运行需要有它自己专属的内存空间,可以把这块内存空间简单的理解为进程 每个应用至少有一个进程,进程之间相互独立,即使要通信,也需要双方同意。 何为线程? 有了进程后,就可以运行程序的代码了。 运行代码的「人」称之…

【web世界探险家】HTML5 探索与实践

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &…

【MySQL | 第五篇】MySQL事务总结

文章目录 5.MySQL事务5.1什么是事务&#xff1f;5.2什么是数据库事务&#xff1f;5.3数据库事务四大特性5.4并发事务带来的问题及解决方案&#xff1f;5.4.1脏读/不可重复读/幻读5.4.2不可重复读和幻读有什么区别&#xff1f;5.4.3解决并发事务带来的问题&#xff08;1&#xf…