YuzuZensai/TrollSSH

GitHub: YuzuZensai/TrollSSH

一个伪 SSH 服务器,接受任意登录并在终端中播放彩色 ASCII 字符画视频,附带可选的蜜罐功能。

Stars: 3 | Forks: 0

# 👻 TrollSSH 一个虚假的 SSH 服务器,接受任何登录请求,并向连接到它的客户端播放彩色 ASCII/Unicode 字符画视频 ![SSH 演示](https://raw.githubusercontent.com/YuzuZensai/TrollSSH/main/assets/ssh.webp) ## 功能 - **接受任何凭据** - **彩色 ASCII/Unicode 视频播放** - 实时缩放以适应客户端的 终端,使用可配置的字符灰度,默认使用 Unicode 块字符预设 - **自动颜色检测** - 根据连接客户端报告的支持情况,渲染 24-bit 真彩色、256 色或 普通灰度 - **多种帧集** - 客户端会随机获取一个,方向键可在它们之间切换 (可配置) - **蜜罐附加功能** - 可选的凭据记录、基于 IP 和全局的 连接限制、握手超时、可自定义的 banner / 虚假登录 / 告别文本 ## 快速开始 通过容器镜像从视频生成帧集 ``` docker run --rm -v ./video.mp4:/home/app/video.mp4 -v ./frames:/home/app/frames \ ghcr.io/yuzuzensai/trollssh:1.2.0 trollssh --generate --video video.mp4 --resolution 512 ``` 这会生成 `frames/.tsf`,这是一个简单的容器,包含彩色 JPEG 帧以及 源 fps。您可以根据需要在 `frames/` 目录中放入任意数量的 `.tsf` 文件。 服务器会加载所有这些文件。 使用 [`docker-compose.yaml`](docker-compose.yaml) 运行服务器 ``` cp .env.example .env docker compose up -d ``` `./data` 用于持久化主机密钥和文本资产。 `./frames` 用于存放 `.tsf` 帧集。 然后尝试一下: ``` ssh anyone@localhost ``` ## 配置 服务器配置通过环境变量进行,如果存在 `.env` 文件则会从中加载 (有关完整的注释 列表,请参见 [`.env.example`](.env.example))。持续时间以毫秒为单位。 主机密钥(`data/id_rsa`, `data/id_ed25519`)在首次运行时生成,并在 之后重复使用。 帧生成通过标志进行配置: | 标志 | 默认值 | 描述 | | -------------------- | ------- | -------------------------------------------------- | | `--generate`, `-g` | | 生成 `.tsf` 帧集而不是提供服务 | | `--video`, `-v` | | 源视频路径 | | `--resolution`, `-r` | `512` | 存储帧的最大像素尺寸。值越高 = 画面越清晰,但 `.tsf` 文件越大且渲染越慢 | ## 自定义 `data/` 目录中的可选文本文件(在二进制文件旁边创建): | 文件 | 显示时机 | | -------------------- | --------------------------------------------------- | | `data/banner.txt` | 作为 SSH banner,在身份验证之前 | | `data/fakelogin.txt` | 紧接在 "login" 之后,在播放之前 | | `data/goodbye.txt` | 在 `MAX_LOOP` 次播放后会话结束时 | ## 开发 要求:Go 1.25+ 以及 `PATH` 中的 `ffmpeg` / `ffprobe`(仅用于 `--generate`)。 入口点位于 [`cmd/trollssh`](cmd/trollssh);它所组装的包位于 [`internal/`](internal)(`config`、`logx`、`render`、`tsf`、 `sshserver`)。 ``` go run ./cmd/trollssh --generate --video video.mp4 --resolution 512 go run ./cmd/trollssh ``` 或者构建一个二进制文件: ``` go build -o trollssh ./cmd/trollssh ./trollssh ``` CI 在每次推送时运行以下检查: ``` gofmt -l . # format go vet ./... # vet golangci-lint run ./... # lint, see https://golangci-lint.run go test ./... # tests ``` 要在每次提交前自动运行它们,请安装 [lefthook](https://github.com/evilmartians/lefthook) 和 `golangci-lint`,然后执行: ``` lefthook install ``` ## 许可证 [MIT](LICENSE)
标签:ASCII艺术, EVTX分析, PB级数据处理, SSH服务, 安全运维, 日志审计, 蜜罐, 视频处理, 证书利用, 请求拦截