bikemazzell/telegram-processor
GitHub: bikemazzell/telegram-processor
一个面向 Telegram 频道的自动化文件采集、解压、去重与窃密日志处理 Python CLI 工具,专为威胁情报分析师设计。
Stars: 0 | Forks: 1
# Telegram 频道处理器
用于从 Telegram 频道收集文件、提取压缩包、对结果进行去重并生成频道级别输出的 Python CLI 工具。它支持使用已知静态密码的频道,也支持在 Telegram 帖子本身中写有压缩包密码的漏斗频道。
## 功能
- 使用 `tdl` 的顺序频道下载工作流
- 使用 `7z` 进行压缩包提取
- 通过 `password`、`password1`、`password2` 及类似的 CSV 列提供静态密码
- 通过 `password_source=password_in_post` 获取从帖子提取的密码
- 为漏斗频道提供同消息密码匹配
- 使用 `rdfind` 进行跨频道和频道内的去重
- 文本聚合和排序后的唯一组合输出
- 可选的窃密日志(stealer-log)处理,生成 `credentials.csv` 和 `autofills.csv`
- 频道验证模式,可以注释掉不活跃的 CSV 行
## 环境要求
### Python
- Python 3.10+
- 可选:`tqdm`(用于显示进度条)
### 外部工具
- `tdl`
- `7z`
- `rdfind`
- `sort`
在正常处理模式下,这四个工具都是必需的。在 `--process-only` 模式下不需要 `tdl`,因为脚本仅处理已存在于下载目录中的文件。
## 用法
### 处理频道
```
python3 telegram_processor.py \
--input channels.csv \
--start 01-04-2026 \
--end 22-04-2026
```
实用选项:
- `--output-dir`:最终结果的输出目录
- `--download-dir`:用于存放下载和提取的频道文件的目录
- `--settings`:`settings.json` 的路径
- `--verbose`:记录 `tdl` 和提取命令的详细信息
- `--process-only`:跳过 Telegram 下载,仅处理已在 `--download-dir` 中的文件
- `--auto-clean`:无需提示即可删除已处理的频道目录
### 仅检查频道
```
python3 telegram_processor.py \
--input channels.csv \
--check-channels
```
要原地注释掉不活跃的行:
```
python3 telegram_processor.py \
--input channels.csv \
--check-channels \
--comment-missing
```
`--check-channels` 不需要 `--start` 或 `--end`。
不活跃的频道会根据 `tdl` 的输出分类为:
- `not_found`:频道用户名或目标不再存在
- `inaccessible`:私密、被禁止或当前账户无法访问
- `error`:检查时发生意外故障
使用 `--comment-missing` 时,不活跃的行将被重写如下:
```
# SomeChannel,@somechannel,secret # 无法访问
```
## 输入 CSV 格式
CSV 必须以以下列开头:
- `name`
- `channel`
支持的可选列:
- `password_source`
- `password`、`password1`、`password2`,以及 `channel` 之后的任何其他密码列
静态密码示例:
```
name,channel,password
Channel1,@channel1,password123
Channel2,@channel2,
```
漏斗频道示例:
```
name,channel,password_source
OnlyLogsCloud,@OnlyLogsCloud,password_in_post
```
### `password_in_post` 行为
- 处理器会读取每个已下载压缩包对应的导出 Telegram 消息。
- 它只接受与压缩包文件在同一消息中找到的密码。
- 它会查找不区分大小写的 `pass` 或 `password` 标记,后跟如 `:`、`=`、`-` 或空格等分隔符。
- 支持的示例包括:
- `pass: 123`
- `Password: @OnlyLogsCloud`
- `Password FULL LOGS - @BurnCloudLogs`
- 未标记的推广链接和备用频道链接将被忽略。
- 如果一条消息包含多个压缩包和一个匹配的密码,该密码将应用于该消息中的每个压缩包。
- 当设置 `password_source=password_in_post` 时,将忽略静态密码列。
- 如果未找到同消息密码,或者提取仍然失败,将跳过该压缩包并继续处理。
已被注释的 CSV 行会被频道检查器忽略。
## 处理流程
1. 从 CSV 加载频道定义。
2. 在正常模式下,使用 `tdl chat export` 导出频道消息并下载匹配的文件。
3. 使用 `rdfind` 对跨频道的已下载文件进行去重。
4. 使用 `7z` 提取压缩包。
5. 对于有密码的压缩包,尝试以下顺序:
- 配置的静态密码,然后尝试无密码
- 或在启用 `password_in_post` 时使用同消息的帖子密码
6. 在每个频道目录内对提取的文件进行去重。
7. 当存在压缩包时,处理窃密日志输出。
8. 将排序后的唯一文本输出合并到 `*-combo.csv` 文件中。
9. 将最终结果文件移动到输出目录。
10. 可选地清理频道工作目录。
## 输出文件
根据频道内容,脚本可能会生成:
- `{channel_name}-{month-year}-combo.csv`
- `{channel_name}-{month-year}-credentials.csv`
- `{channel_name}-{month-year}-autofills.csv`
所有最终输出都将写入配置的输出目录。
## 配置
`settings.json` 控制下载、提取、排序和子进程的行为。此仓库中跟踪的文件是一个示例配置;如果您使用该集成,请为您的机器更新 `stealer_log_processor.path`。
当前部分:
- `stealer_log_processor`
- `tdl`
- `sort`
- `archive`
- `processing`
- `logging`
- `subprocess`
重要键值:
- `tdl.max_parallel_downloads`
- `tdl.export_channel_threads`
- `tdl.excluded_extensions`
- `archive.extract_patterns`
- `archive.supported_extensions`
- `archive.extract_timeout`
- `archive.max_parallel_extractions`
- `sort.temp_dir`
- `processing.max_workers`
## 备注
- `channels.csv` 已被刻意设置在 gitignore 中,并被视为本地操作员数据。
- 如果未安装 `tqdm`,脚本仍可正常运行;它只会回退到普通日志记录。
标签:7z, CLI, HTTP工具, Python, rdfind, RedTeaming, tdl, Telegram, URL抓取, WiFi技术, 信息窃密, 去重, 威胁情报, 安全测试, 密码提取, 开发者工具, 归档解压, 攻击性安全, 数字取证, 数据抓取, 数据泄露, 数据聚合, 文件下载, 无后门, 暗网情报, 渠道监控, 窃密木马, 组合文本, 网络犯罪, 自动化爬虫, 自动化脚本, 账号密码, 黑产