crackmesone/crackmesone_python

GitHub: crackmesone/crackmesone_python

crackmes.one 平台的后端源代码,使用 Python/Flask 和 MongoDB 构建的逆向工程挑战分享与解决社区。

Stars: 9 | Forks: 3

# Crackmes.one [crackmes.one](https://crackmes.one) 的源代码,这是一个用于分享和解决逆向工程挑战的平台。使用 Python 和 Flask 构建。 ## 环境要求 - Python 3.8+ - MongoDB 4.0+ - `zip` 命令(用于在批准提交时创建受密码保护的压缩包) ## 安装 1. 创建虚拟环境: ``` python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate ``` 2. 安装依赖: ``` pip install -r requirements.txt ``` 3. 配置应用程序: - 编辑 `config/config.json` 配置你的设置 - 设置 MongoDB 连接详情 - 如果需要,配置 reCAPTCHA(设置 `Enabled: true`) - 配置 Discord webhook 用于通知(可选) - 为会话设置安全的 `SecretKey` ## 运行 ### 开发环境 ``` python run.py ``` ### 生产部署 #### 首次设置 1. 在你的服务器上克隆代码库: ``` cd /home/crackmesone git clone crackmesone_python cd crackmesone_python ``` 2. 运行设置脚本: ``` chmod +x deploy/setup.sh ./deploy/setup.sh ``` 3. 配置应用程序: ``` cp config/config.json.example config/config.json nano config/config.json # Edit with your settings ``` 4. 更新 nginx 以反向代理到 Python 应用程序: ``` upstream python_backend { server 127.0.0.1:8081; } location / { proxy_pass http://python_backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } ``` 5. 启动服务: ``` sudo systemctl start crackmesone sudo systemctl status crackmesone ``` #### 后续部署 ``` ./deploy/deploy.sh ``` 或手动执行: ``` git pull source venv/bin/activate pip install -r requirements.txt --quiet deactivate sudo systemctl reload crackmesone ``` #### 常用命令 ``` # 检查状态 sudo systemctl status crackmesone # 查看 logs sudo journalctl -u crackmesone -f tail -f /var/log/gunicorn/error.log # 重启(如果 reload 不起作用) sudo systemctl restart crackmesone ``` ## 项目结构 ``` crackmesone_python/ ├── app/ │ ├── __init__.py # Flask app factory │ ├── controllers/ # Route handlers │ ├── models/ # Database models │ └── services/ # Shared services ├── config/ │ └── config.json # Configuration file ├── deploy/ │ ├── gunicorn.conf.py # Gunicorn configuration │ ├── crackmesone.service # Systemd service file │ ├── setup.sh # First-time setup script │ └── deploy.sh # Deployment script ├── review/ # Reviewer tool (moderation interface) │ ├── routes.py # Reviewer Flask blueprint │ ├── users.json # Reviewer credentials │ └── templates/ # Reviewer templates ├── script/ # Utility scripts │ └── generate_reviewer_password_hash.py # Password hash generator ├── templates/ # Jinja2 templates ├── static/ # Static files (CSS, JS, images) ├── tmp/ # Upload staging area ├── requirements.txt # Python dependencies ├── run.py # Entry point └── README.md ``` ## 功能 - 用户注册和身份验证 - 上传 crackmes(逆向工程挑战) - 上传解决方案/writeup - 对 crackmes 进行评论 - 评分系统(难度和质量) - 搜索功能 - RSS 订阅源 - 通知 - 内容审核(用于批准/拒绝提交的审核工具) ## 配置 编辑 `config/config.json`: - **Database.URL**: MongoDB 连接字符串(默认:`mongodb://127.0.0.1:27017`) - **Database.Name**: 数据库名称(默认:`crackmesone`) - **Server.Host**: 要绑定的主机(默认:`127.0.0.1`) - **Server.Port**: 要运行的端口(默认:`8081`) - **Session.SecretKey**: 用于会话签名的密钥(在生产环境中务必更改!) - **Session.CookieName**: 会话 cookie 名称 - **Recaptcha.Enabled**: 启用/禁用 reCAPTCHA - **Recaptcha.SiteKey**: 你的 reCAPTCHA 站点密钥 - **Recaptcha.Secret**: 你的 reCAPTCHA 密钥 - **Discord.Enabled**: 启用/禁用新提交的 Discord 通知 - **Discord.WebhookURL**: 你的 Discord webhook URL(从 Discord 频道设置 → 集成 → Webhook 获取) - **Reviewer.Enabled**: 启用/禁用审核工具(用于审核提交的内容) - **Reviewer.PasswordSalt**: 用于审核员密码哈希的 salt(在生产环境中务必更改!) ### 审核工具 审核工具是一个独立的身份验证系统,供站点管理员批准/拒绝 crackme 和解决方案的提交。可以通过 `/review` 访问。 #### 启用审核工具 1. 在 `config/config.json` 中将 `Reviewer.Enabled` 设置为 `true` 2. 为 `Reviewer.PasswordSalt` 设置一个安全的随机字符串 #### 审核员凭证 (`review/users.json`) 审核员账户存储在 `review/users.json` 中,格式如下: ``` { "username": { "password_hash": "sha256-hash-of-password-plus-salt", "is_admin": false } } ``` - **password_hash**: 密码与配置中的 `PasswordSalt` 拼接后的 SHA256 哈希值 - **is_admin**: 如果为 `true`,则该用户拥有管理员权限(可以删除已批准的内容、管理审核员、删除用户) #### 创建审核员账户 使用密码哈希生成器脚本来创建密码哈希: ``` python script/generate_reviewer_password_hash.py ``` 然后将用户名和哈希值添加到 `review/users.json` 中: ``` { "newreviewer": { "password_hash": "", "is_admin": false } } ``` 或者,现有的管理员可以通过 `/review/managereviewers` 的 Web 界面添加新的审核员。 #### 审核员与管理员权限对比 | 操作 | 审核员 | 管理员 | |--------|----------|-------| | 批准/拒绝待处理的 crackmes | 是 | 是 | | 批准/拒绝待处理的解决方案 | 是 | 是 | | 删除已批准的 crackmes | 否 | 是 | | 删除已批准的解决方案 | 否 | 是 | | 删除评论 | 否 | 是 | | 删除用户账户 | 否 | 是 | | 重置用户密码 | 否 | 是 | | 管理审核员账户 | 否 | 是 | ## 常见问题 **如何报告安全漏洞?** 请查看 [SECURITY.md](SECURITY.md) 了解有关报告安全问题的说明。 ## 之前的代码库 该站点最初使用 Go 编写。旧的代码库归档于 [crackmesone/crackmes.one](https://github.com/crackmesone/crackmes.one)。
标签:Flask, MongoDB, Python, Web平台, 云资产清单, 无后门, 社区, 逆向工具, 逆向工程