📚 docs: Update README

This commit is contained in:
2026-07-13 21:10:24 +07:00
parent 68f9154939
commit dee0de9d9b
3 changed files with 87 additions and 2 deletions
+86 -1
View File
@@ -1,3 +1,88 @@
# 💀 TrollSSH # 💀 TrollSSH
Fake SSH server designed to troll with ASCII video A fake SSH server that accepts any login and plays ASCII video at whoever
connects to it
![SSH Demo](assets/ssh.webp)
# Features
- **Accept any credentials**
- **ASCII video playback** - resized live to the client's terminal
- **Multiple frame sets** - clients get a random one, arrow keys switch between
them (configurable)
- **Honeypot extras** - optional credential logging, per-IP and global
connection limits, handshake timeout, customizable banner / fake login /
goodbye text
## Quick start
Generate a frame set from a video through container image
```sh
docker run --rm -v ./video.mp4:/home/app/video.mp4 -v ./frames:/home/app/frames \
ghcr.io/yuzuzensai/trollssh:latest trollssh --generate --video video.mp4
```
This writes `frames/<name>.tsf`, a simple container of JPEG frames plus the
source fps. You can drop as many `.tsf` files into `frames/` as you like. The server will
loads all of them.
Run the server with [`docker-compose.yaml`](docker-compose.yaml)
```sh
cp .env.example .env
docker compose up -d
```
`./data` persists host keys and text assets.
`./frames` holds the `.tsf` frame sets.
Then try it:
```sh
ssh anyone@localhost
```
## Configuration
Configuration is via environment variables, loaded from a `.env` file if one
exists (see [`.env.example`](.env.example) for the full annotated list).
Durations are in milliseconds.
Host keys (`data/id_rsa`, `data/id_ed25519`) are generated on first run and
reused afterwards.
## Customization
Optional text files in `data/` (created next to the binary):
| File | Shown |
| -------------------- | --------------------------------------------------- |
| `data/banner.txt` | As the SSH banner, before authentication |
| `data/fakelogin.txt` | Right after "login", before playback |
| `data/goodbye.txt` | When the session ends after `MAX_LOOP` playthroughs |
## Development
Requirements: Go 1.25+ and `ffmpeg` / `ffprobe` on `PATH` (only for
`--generate`).
```sh
go run ./src --generate --video video.mp4
go run ./src
```
Or build a binary:
```sh
go build -o trollssh ./src
./trollssh
```
## License
See [LICENSE](LICENSE)
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 11 MiB

+1 -1
View File
@@ -8,7 +8,7 @@ services:
env_file: env_file:
- .env - .env
volumes: volumes:
# Host keys + banner/fakelogin/goodbye text assets (persisted). # Host keys + banner/fakelogin/goodbye text assets
- ./data:/home/app/data - ./data:/home/app/data
# Pre-generated frame sets # Pre-generated frame sets
- ./frames:/home/app/frames - ./frames:/home/app/frames