paolo-trivi/gofaxyourself

GitHub: paolo-trivi/gofaxyourself

一个封装在单个 Docker 容器中的微型 SIP 蜜罐,自动接听垃圾电话并循环播放预录音频来消耗骚扰者的时间。

Stars: 1 | Forks: 0

``` +-------------------------------------------+ | ___ ___ GoFaxYourself | | / __|___ | __|_ ___ __ __ | | | (_ / _ \| _/ _` \ \/ / |_ | [.....] | | \___\___/|_|\__,_/_/\_\__/ | fax | | | ========= | +-------------------------------------------+ ``` # GoFaxYourself ### 机器人自动呼叫者打给你。它接听。配上一个困惑的老爷爷。无限循环。直到永远。 一个封装在单个 Docker 容器中的微型 SIP 蜜罐。它注册到你的电话线路上, **自动接听垃圾电话**,并播放预录的磁带内容,直到他们放弃并挂断。 你什么都不用做。他们在浪费自己的下午时间。 没有 PBX。没有数据库。没有 Web UI。没有云服务。没有外呼。只有 `baresip`, 一个容器,以及一个有着无限耐心的 WAV 文件。 ``` cp .env.example .env && docker compose up -d ``` 这就是完整的安装过程。线路现已启用并开始接听。 GoFaxYourself answering a spam call so you don't have to ## 从你的日志看,通话是什么样的 ``` $ docker compose logs -f gofax | 39XXXXXXXXXX@sip-provider: {0/UDP/v4} 200 OK () [1 binding] <- registered gofax | call: answering call on line 1 from sip:spammer@unknown with 200 gofax | aufile: loading input file '/audio/payload.wav' gofax | Call established: sip:spammer@unknown gofax | stream: incoming rtp for 'audio' established gofax | ...confused grandpa.wav plays... "Pronto? PRONTO? Chi parla?" gofax | Call terminated (duration: 94 secs) <- 94s well spent ``` **想亲耳听听吗?** [播放内置磁带](audio/it/anti-call-center.wav) — 点击它,GitHub 会打开一个内置的音频播放器。这是每次全新克隆代码库时都会附带的真实 `anti-call-center.wav` 文件。 ## 为什么它能直接运行并保持在线 单个容器,由 Docker 本身进行监管: - `restart: unless-stopped` -> 如果 baresip 崩溃,会自动重启。 - Docker 服务在开机时启动 -> 主机重启后线路会自动恢复。 - 无需保持终端开启,无需照看后台脚本。 ``` docker compose ps # status + health docker compose logs -f # live call activity docker compose restart # reload after editing .env or the WAV docker compose down # stop (and stay stopped) ``` **一条规则:** 每个电话账户只运行一个注册端。不要在同一条线路上启动第二个副本,否则两个客户端会争夺注册权,导致其停止接听。 ## 人设包 选择谁来接听你的垃圾呼叫者。脚本位于 [`personas/`](personas/) — 可以直接阅读,具有梗文化色彩,安全无害(没有真实目标,没有威胁,只有荒诞)。 | 人设 | 风格 | |---|---| | [困惑的老爷爷](personas/confused-grandpa.txt) | “喂?是关于保修的事吗?保修由我孙子负责。” | | [损坏的传真机](personas/broken-fax.txt) | 永恒的握手。请重新发送第 1 页(共 1 页)。滴————。 | | [愤怒的打印机](personas/angry-printer.txt) | PC LOAD LETTER。没有 4 号纸盒。从来没有过 4 号纸盒。 | | [合规循环](personas/compliance-loop.txt) | 为了验证您的身份,请先验证您的身份。 | 内置的默认文件(`audio/it/anti-call-center.wav`)开箱即用。 要让人设说话,请将其脚本转换为 WAV 文件,并在 `.env` 中指向它: ``` # 任意文本 -> SIP-ready WAV(需要 espeak + ffmpeg) espeak -v en -s 150 -f personas/confused-grandpa.txt --stdout \ | ffmpeg -i - -ar 8000 -ac 1 -acodec pcm_s16le audio/en/confused-grandpa.wav # 然后在 .env 中: # GOFAX_AUDIO_FILE=./audio/en/confused-grandpa.wav docker compose restart ``` 合成的 TTS 语音?那就更好了。这就是它的全部精髓。 ## 配置 一切都存放在 `.env` 中(已被 gitignore — 其中包含你的 SIP 密码): | 键 | 说明 | |---|---| | `SIP_USERNAME` / `SIP_PASSWORD` | 你的 SIP 账户 | | `SIP_DOMAIN` | 你 SIP 地址的 `@domain`(例如 `windtre.it`) | | `SIP_SERVER` | 注册器 / 代理主机(通常是同一个) | | `GOFAX_AUDIO_FILE` | 向呼叫者播放的 WAV 文件(单声道,8000 Hz,16 位 PCM) | | `DNS_SERVER` | 可选;留空 = 使用系统 DNS | | `GOFAX_LOG_ENABLED` | 可选的 CDR/SIP 日志记录至 `./logs`(包含真实号码 — 已被 gitignore) | ## 枯燥但重要的事 GoFaxYourself 是**仅限呼入且用于防御的**。它接听打*给你的*电话。 它不会拨打电话、自动拨号、枚举号码或进行自动化骚扰,而且永远都不会。 这个玩笑的目的是浪费机器人呼叫者的时间,而不是伤害任何人。保持原样。参见 [LICENSE](LICENSE)。
标签:Docker, SIP, VoIP, 安全防御评估, 红队技术, 网络调试, 自动化, 蜜罐, 证书利用, 请求拦截