尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Python 2.7的困境:Bluto迁移Python 3的挑战与解决方案

Python 2.7的困境:Bluto迁移Python 3的挑战与解决方案 Python 2.7的困境Bluto迁移Python 3的挑战与解决方案【免费下载链接】BlutoDNS Recon | Brute Forcer | DNS Zone Transfer | DNS Wild Card Checks | DNS Wild Card Brute Forcer | Email Enumeration | Staff Enumeration | Compromised Account Checking项目地址: https://gitcode.com/gh_mirrors/bl/BlutoBluto是一款开源的DNS侦察与信息收集工具支持子域名爆破、DNS区域传送检测、通配符校验、邮箱枚举与员工信息挖掘等多项功能。然而这款工具长期基于Python 2.7开发随着Python 2.7在2020年正式停止维护Bluto迁移Python 3已成为安全研究人员绕不开的话题。本文将拆解Bluto迁移Python 3的六大核心挑战并给出可直接落地的完整解决方案帮你快速摆脱Python 2.7的困境。为什么Bluto会深陷Python 2.7的泥潭Bluto诞生于2016年前后彼时Python 2.7还是安全工具圈的主流选择。项目源码中到处是Python 2时代的标准写法官方README也明确写道the current version of Bluto does not support Python 3. It is a python 2.7.x application.——也就是说Bluto从设计之初就没有考虑过兼容Python 3。⚠️ 关键背景Python 2.7已于2020年1月1日停止官方维护不再有安全补丁。继续在Python 2.7环境下运行Bluto等于把DNS侦察工具暴露在已知漏洞之下。Bluto迁移Python 3面临哪些具体挑战通过对Bluto/bluto主程序及Bluto/modules/各模块的逐行排查可以梳理出以下六大迁移痛点挑战一print语句与raw_input输入函数Python 3中print变成了函数、raw_input被input取代。而在Bluto的各个模块里这两类写法大量存在例如Bluto/bluto主程序中就有domain raw_input(Target Domain: )Bluto/modules/general.py里还有多处raw_input交互提示迁移时必须逐一改写。挑战二Queue队列模块改名Bluto大量使用多线程并行收集数据靠队列传递结果。主程序中import Queue与Queue.Queue()在Python 3中已更名为小写queue.QueueBluto/modules/data_mine.py同样存在该问题。一个字母的大小写之差就会让程序直接启动失败。挑战三异常捕获语法变化Python 3不再支持except Exception, e:的旧式写法必须改为except Exception as e:。仅在Bluto/bluto主程序、Bluto/modules/search.py等文件中就能搜索到多处旧语法全部需要修正。挑战四urllib2等模块被拆分重构Bluto/modules/search.py和Bluto/modules/data_mine.py都import urllib2这个模块在Python 3中被拆分为urllib.request、urllib.parse等多个子模块调用方式完全不同。挑战五字典方法iteritems被移除Bluto/modules/general.py中使用tcountries_dic.iteritems()遍历国家与服务器映射表该方法在Python 3中已被删除需改为items()。挑战六第三方依赖不兼容查看setup.py的依赖清单可以发现其中pdfminer20140328是老版本完全不支持Python 3需要替换为pdfminer.six其他依赖如dnspython、termcolor、requests等则需升级到兼容Python 3的版本。Bluto迁移Python 3的完整解决方案第一步使用2to3工具自动转换Python 官方自带的2to3工具可以完成约80%的机械性转换2to3 -w Bluto/它会自动处理print语句、except语法、iteritems等基础问题并在原文件位置生成转换后的代码。第二步手工修复剩余语法自动转换无法处理的部分需要手动修整这是最关键的清单原Python 2写法迁移后的Python 3写法涉及文件import Queueimport queueBluto/bluto、data_mine.pyQueue.Queue()queue.Queue()同上raw_input(...)input(...)bluto、general.py、output.py、update.pyiteritems()items()general.pyimport urllib2from urllib import requestsearch.py、data_mine.pyexcept Exception, e:except Exception as e:bluto、search.py第三步替换不兼容的依赖包修改setup.py把老旧的pdfminer20140328替换为兼容Python 3的pdfminer.six并升级dnspython、pythonwhois等包到最新版本pip install --upgrade dnspython termcolor beautifulsoup4 requests lxml oletools pdfminer.six第四步验证与回归测试迁移完成后在Python 3环境下运行主程序依次验证Bluto/modules/get_dns.py的DNS解析、区域传送检测、Bluto/modules/search.py的搜索引擎枚举、Bluto/modules/output.py的HTML报告生成等核心流程确保每一项功能都正常输出。总结告别Python 2.7让Bluto重获新生Bluto迁移Python 3虽然涉及语法、模块、依赖三层改造但难度并不高先靠2to3自动转换再按清单手工修复最后升级依赖并回归测试即可让这款强大的DNS侦察工具在新时代安全环境下继续服役。如果你希望在自己的环境中尝试可以克隆 https://link.gitcode.com/i/ace3f268395a98cf3ddfba36cccd9f9e 仓库在迁移后的代码基础上继续二次开发。告别Python 2.7的困境从这次迁移开始 【免费下载链接】BlutoDNS Recon | Brute Forcer | DNS Zone Transfer | DNS Wild Card Checks | DNS Wild Card Brute Forcer | Email Enumeration | Staff Enumeration | Compromised Account Checking项目地址: https://gitcode.com/gh_mirrors/bl/Bluto创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表