声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页B站泷羽sec
文章目录
- 前言
- 一、Zmap的主要功能
- 二、Zmap安装
- 1.部署Zmap
- 三、编写检测IP存活脚本
- 总结
前言
Zmap是一款开发的网络扫描工具,以其高速扫描能力而闻名
一、Zmap的主要功能
- 高性能扫描:Zmap能够在千兆网卡状态下,45分钟内扫描全网络IPv4地址
- 模块化设计:Zmap支持多种扫描模块,如TCP SYN扫描、ICMP、DNS查询、UPnP、BACNET等,并且可以发送大量的UDP探测
- 灵活的配置:用户可以自定义扫描参数,例如速率限制、端口范围等
- 结果导出:Zmap支持多种输出格式,便于后续分析
二、Zmap安装
下载地址:https://github.com/zmap/zmap
1.部署Zmap
更新环境依赖:
代码如下(示例):
sudo apt update
apt-get install -y build-essential cmake libgmp3-dev gengetopt libpcap-dev flex byacc libjson-c-dev pkg-config libunistring-dev

到安装包路径下cd zmap-4.2.0
创建目录buildmkdir build
进入目录cd build

如果cmake …报错,说明缺少一个C语言库的开发包或者cmake没有安装,具体可以问问ai

修改错误参考:
apt-get install libjudy-dev
libjudy-dev 是一个C语言库的开发包,它提供了创建和访问动态数组的功能
- Judy库简介:Judy是一个C语言库,它实现了动态数组。Judy数组在未被填充时声明为null指针,只有当数组被填充时才消耗内存,但可以增长以利用所有可用内存。Judy的关键优势包括可扩展性、性能、内存效率和易用性
- 数组设计:Judy数组设计为无需调整即可增长到千万亿元素范围,并且接近以O(log-base-256)的规模进行扩展
- 访问方式:Judy数组通过插入、检索和删除调用来访问数字或字符串索引。实际上不需要配置和调整。Judy提供排序、计数和邻居/空搜索功能
- 索引类型:索引可以是顺序的、聚集的、周期性的或随机的,这对算法来说并不重要。Judy数组可以层次结构化,以处理任何位模式——大索引、键集合等
- 性能比较:Judy通常比常见的数据结构(如数组、稀疏数组、哈希表、B树、二叉树、线性列表、跳表、其他排序和搜索算法以及计数函数)有所改进
- 开发包:
libjudy-dev是Judy库的开发包,它包含了编译和链接Judy库所需的头文件和库文件
这个库特别适用于需要处理大规模数据集和动态数组的场景,它的设计使得在处理大数据时具有较高的性能和内存效率

Kali Linux 系统默认情况下是带有 cmake 的,cmake 是一个跨平台的构建工具,在 Kali 这种注重安全测试和工具集成的系统中,许多软件的编译安装过程会依赖 CMake。它用于管理软件构建的过程,能够方便地生成 Makefile(在 Unix - like 系统中用于构建软件的脚本)或者其他构建系统所需的文件,帮助开发者在不同的操作系统环境下更轻松地构建和安装软件
不过,如果由于某些特殊原因(比如系统精简定制或者安装过程出现异常等),也可能会出现 CMake 没有被安装的情况
安装cmake:
apt-get install cmake

这样运行就成功了
cmake ..

编译安装:
make

make install

查看zmap安装版本
zmap --version

开放的HTTP服务(默认端口80),开始全网爬,保存到raw_ips.txt文件里
确定要扫描的端口范围。假设我们要扫描常见的代理端口 8080、3128、80 等,可以使用以下 zmap 命令(以下命令只是示例,实际操作可能需要根据网络环境和权限进行调整)
zmap -p 80,443,1080 -o raw_ips.txt

三、编写检测IP存活脚本
扫描出来的不一定全部能使用,需要进一步检测
代码如下(示例):
import requests
# 代理IP文件路径
proxy_file_path = 'XXX.txt'
# 可用代理IP输出文件路径
available_proxy_file_path = 'XXX.txt'
# 测试URL,用于验证代理IP是否可用
test_url = ''(自己填写)
# 可用代理IP列表
available_proxies = []
# 读取代理IP文件
with open(proxy_file_path, 'r') as file:
proxies = file.readlines()
# 验证每个代理IP
for proxy in proxies:
proxy = proxy.strip() # 移除行尾的换行符
if not proxy: # 跳过空行
continue
# 设置代理
proxy_dict = {
'http': f'http://{proxy}',
'https': f'https://{proxy}'
}
try:
# 发送请求,设置超时时间为5秒
response = requests.get(test_url, proxies=proxy_dict, timeout=5)
if response.status_code == 200:
print(f'代理IP {proxy} 可用')
available_proxies.append(proxy)
except requests.RequestException as e:
print(f'代理IP {proxy} 不可用: {e}')
# 将可用代理IP写入文件
with open(available_proxy_file_path, 'w') as file:
for ip in available_proxies:
file.write(f'{ip}\n')
print(f'\n可用代理IP已写入文件: {available_proxy_file_path}')
至此代理池搭建完毕
总结
匿名性和隐私保护:通过代理池,用户可以隐藏自己的真实IP地址,保护个人隐私和安全
绕过IP限制:在某些地区或网络环境中,访问特定网站或服务可能受到IP限制。使用代理池可以绕过这些限制
负载均衡:代理池可以分散请求到多个代理服务器,实现负载均衡,提高网络请求的稳定性和速度
缓存加速:代理服务器可以缓存请求内容,减少重复请求,加快访问速度
灵活性和可扩展性:代理池可以根据需要动态添加或移除代理服务器,以适应不同的使用场景和需求
故障转移和高可用性:如果某个代理服务器不可用,代理池可以自动切换到其他可用的代理服务器,保证服务的连续性
监控和维护:代理池通常配备有监控系统,可以实时监控代理服务器的状态,及时发现并处理问题
应严格遵守相关法律法规,任何违法行为均由用户自行承担责任,与本文章作者无关!

1945

被折叠的 条评论
为什么被折叠?



