渗透测试利器 FalconToolbox开发从0到1(含各种问题解决过程)
字数 1132 2025-08-29 08:30:12
FalconToolbox 渗透测试工具开发教程
前言
FalconToolbox 是一个集成多种渗透测试功能的工具箱,旨在解决渗透测试过程中数据处理繁琐、工具使用复杂的问题。本教程将详细介绍从零开始开发 FalconToolbox 的全过程,包括各种问题的解决思路和方法。
功能结构
FalconToolbox 采用模块化设计,主要目录结构如下:
FalconToolbox/
│── myapp/
│ ├── cache/ # 缓存数据存储
│ ├── routes/ # Flask 路由文件
│ ├── templates/ # HTML 模板文件
│ ├── utils/ # 工具函数
│── input.txt # 输入数据文件
│── result.txt # 结果输出文件
│── run.py # Flask 入口文件
核心功能实现
1. URL 处理功能
URL 处理逻辑
在 utils/url_utils.py 中实现基础的 URL 处理功能:
import re
def add_http(url):
"""如果 URL 没有 http:// 或 https://,则添加 http://"""
if not url.startswith(("http://", "https://")):
return "http://" + url
return url
def remove_http(url):
"""去掉 URL 的 http:// 或 https://"""
return re.sub(r"^https?://", "", url)
路由实现
在 routes/url_tools.py 中实现 URL 处理的路由:
from flask import Blueprint, request, render_template
from myapp.utils.url_utils import add_http, remove_http
url_bp = Blueprint("url_tools", __name__)
@url_bp.route("/tools", methods=["GET", "POST"])
def url_tools():
selected_tool = request.form.get("tool", "") # 选择的功能
original = request.form.get("url", "") # 输入的 URL
modified = ""
# 处理 URL
if request.method == "POST" and original:
if selected_tool == "add_http":
modified = add_http(original)
elif selected_tool == "remove_http":
modified = remove_http(original)
return render_template("index.html", selected_tool=selected_tool,
original=original, modified=modified)
前端模板
在 templates/index.html 中实现用户界面:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>URL 处理工具</title>
</head>
<body>
<h2>URL 处理工具</h2>
<form action="/url/add_http" method="post">
<input type="text" name="url" placeholder="请输入 URL" required>
<button type="submit">添加 http</button>
</form>
<form action="/url/remove_http" method="post">
<input type="text" name="url" placeholder="请输入 URL" required>
<button type="submit">去除 http</button>
</form>
{% if original is not none %}
<p>原始 URL: {{ original }}</p>
<p>处理后 URL: {{ modified }}</p>
{% endif %}
</body>
</html>
解决模板问题
在 run.py 中需要显式指定模板目录:
from flask import Flask, render_template
from myapp.routes.url_tools import url_bp
app = Flask(__name__, template_folder="myapp/templates") # 显式指定模板目录
app.register_blueprint(url_bp, url_prefix="/url")
@app.route("/")
def home():
return render_template("index.html")
if __name__ == "__main__":
app.run(debug=True)
2. 解决缓存问题
为了解决页面跳转后数据丢失的问题,采用文件缓存方式:
- 修改路由逻辑,增加文件读写功能
- 优化界面,增加缓存保存功能
3. ICP 备案查询功能集成
集成 ICPSearch 工具,实现企业备案信息查询功能。
功能特点:
- 通过域名、URL 或企业全称查询 ICP 备案信息
- 支持批量处理多个域名或企业名称
- 自动生成备案信息报告
实现步骤:
-
调用 ICPSearch 工具:
- 定位到 exe 文件
- 执行查询并读取生成的输出文件
-
解决编码问题:
- 发现查询不到数据的问题是由于编码不一致导致
- 添加 UTF-8 编码参数解决
-
数据处理:
- 从混乱的输出中提取关键信息(备案号、主域名)
- 对输出结果进行分类整理
查询优化:
-
三要素关联查询:
- 备案号、域名、公司名称三者关联
- 输入任一要素可查询其他两个
-
批量输入支持:
- 修改前端支持多行输入
- 后端批量处理逻辑
-
纯 IP 处理:
- 识别并单独处理纯 IP 地址
- 避免遗漏重要资产
前端优化:
-
工具栏持久化:
- 解决页面跳转后工具栏消失的问题
- 保持界面一致性
-
结果显示优化:
- 分类显示查询结果
- 提高可读性
开发经验总结
-
模块化设计:
- 路由、功能、模板分离
- 便于维护和扩展
-
问题解决思路:
- 模板问题:显式指定路径
- 数据丢失:引入文件缓存
- 编码问题:统一使用 UTF-8
- 批量处理:优化前端输入和后端逻辑
-
用户体验优化:
- 保持界面一致性
- 提供批量处理能力
- 完善错误处理和结果展示
后续改进方向
- 增加更多渗透测试常用功能
- 优化性能,特别是批量处理时的效率
- 增强错误处理和日志记录
- 提供API接口供其他工具调用
通过本教程,您已经掌握了 FalconToolbox 的核心开发过程和关键问题解决方法。这个工具展示了如何将多个渗透测试功能集成到一个统一的平台中,大大提高了渗透测试的效率。