Skip to content
Back to skills

Ghostfont Crack

ASecurity

Ghost Font(반모션 랜덤닷 anti-AI 폰트)로 인코딩된 텍스트를 optical-flow 복원으로 크랙한다. 글자 안쪽 점이 배경과 반대로 흐르는 random-dot kinematogram — 단일프레임은 노이즈지만 프레임간 모션을 누적하면 글자가 떠오른다. 입력 3형태 자동판별: 영상파일 (.mp4/.mov/.gif 등) · URL(원격영상/유튜브식) · 라이브 화면캡처. "고스트폰트 크랙/디코드", "ghost font 풀어", "이 반모션 영상 글자 뭐냐", "화면에 뜬 고스트폰트 읽어", "/ghostfont-crack" 시 호출. 방어연구/CTF/자기텍스트 복원용.

  • 7 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 22, 2026
ai-agentspythonbash

Works with

  • cli

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 22, 2026

npx -y skills add jsb4702-glitch/verification-harness --skill ghostfont-crack --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ghostfont Crack?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ghostfont Crack
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/jsb4702-glitch-ghostfont-crack/badge)](https://www.skillsdirectory.com/skills/jsb4702-glitch-ghostfont-crack)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ghostfont-crack
description: >-
  Ghost Font(반모션 랜덤닷 anti-AI 폰트)로 인코딩된 텍스트를 optical-flow 복원으로
  크랙한다. 글자 안쪽 점이 배경과 반대로 흐르는 random-dot kinematogram — 단일프레임은
  노이즈지만 프레임간 모션을 누적하면 글자가 떠오른다. 입력 3형태 자동판별: 영상파일
  (.mp4/.mov/.gif 등) · URL(원격영상/유튜브식) · 라이브 화면캡처. "고스트폰트 크랙/디코드",
  "ghost font 풀어", "이 반모션 영상 글자 뭐냐", "화면에 뜬 고스트폰트 읽어", "/ghostfont-crack"
  시 호출. 방어연구/CTF/자기텍스트 복원용.
---

# Ghost Font Cracker

Recovers text hidden in an anti-motion random-dot clip via dense optical-flow
accumulation, then reads the reconstructed still (Tesseract + local vision model).
Self-contained, offline (except URL fetch / vision model on localhost).

## When to use
- User points at a Ghost-Font-style clip (file / URL / on-screen) and wants the text.
- Defensive research, CTF, or recovering your own known phrase.

## Input modes (auto-detected; force with `--mode`)
| mode | trigger | how |
|------|---------|-----|
| `file` | local path ending in a video ext | `cv2.VideoCapture` |
| `url`  | `http(s)://…` | ffmpeg direct copy → yt-dlp fallback |
| `live` | no source given, or `--mode live` | screen grab (mss → ffmpeg avfoundation) |

## Run
```bash
# activate the bundled deps (opencv, pytesseract, mss, yt-dlp) — reuse the poc venv
source ~/ghostfont-poc/.venv/bin/activate

python ~/.claude/skills/ghostfont-crack/crack.py ghost.mp4
python ~/.claude/skills/ghostfont-crack/crack.py "https://site/ghost.mp4"
python ~/.claude/skills/ghostfont-crack/crack.py --mode live --seconds 3 --region 400,300,900,300
```
Options: `--axis x|auto|both` (motion axis; `auto`=PCA on flow, handles non-horizontal),
`--winsize N` (fix Farneback window, else auto-scan 7/9/13), `--model <ollama vlm>`
(`''` to skip vision), `--save PREFIX` (writes `PREFIX_recon.png`).

## Output
```
Tesseract : 'CATCN WE'
Vision    : 'CATCH ME'
```
Plus `PREFIX_recon.png` — the reconstructed text image (human-verifiable).

## How it works
1. **Load frames** from the chosen input.
2. **Optical flow** (`calcOpticalFlowFarneback`) between consecutive frames.
3. **Sign-vote accumulation** per pixel along the motion axis — coherent
   letter/background drift accumulates, random noise cancels.
4. **Auto-scan** winsize × axis × polarity; pick the reconstruction whose blob
   structure looks most letter-like (no ground truth on real clips).
5. **Reconstruct** (threshold → morphology close → hole-fill → stroke dilate).
6. **Read** with Tesseract and a local ollama vision model (default
   `qwen2.5vl:7b`; 3b is faster but higher-variance).

## Limits & notes (honest)
- **Readout tracks reconstruction fidelity.** Clean/short text → exact; longer or
  low-SNR clips → partial but the saved `*_recon.png` is human-readable. Always
  show the user the reconstruction, not just the string.
- **Motion-speed cliff:** dense Farneback can't track drift beyond ≈ winsize/2
  px/frame. Fast clips need a larger `--winsize` (raise pyramid too if needed).
- **Live mode:** needs macOS **Screen Recording permission** for the running
  process, and the ghost clip actually visible on screen. Pass a tight
  `--region x,y,w,h` around the text (full-screen dilutes the signal). On Retina
  displays, region coords are **physical pixels** (2× logical).
- **Tesseract is the weak reader** on these grungy glyphs; the vision model is
  the primary readout. Vision needs `ollama serve` + the model pulled.
- Per-glyph *randomized* drift directions (each letter a different vector) are
  not handled by simple sign-split — would need flow-vector k-means clustering.
- Scope: defensive/research/own-content. Not for defeating accessibility or
  consent protections.

## Real-world validation (2026-07-18)
Cracked the canonical REAL sample — ghostfont.org / mixfont's own
`only-a-human.mp4` (188f, 1280×720): single frame = unreadable noise;
reconstruction = **"ONLY A HUMAN CAN READ THIS"**; `qwen2.5vl:7b` read it
verbatim. Two things made the real clip work where my synthetic tuning didn't:
- **Motion is VERTICAL** on real Ghost Font (dots drift up/bg down), not
  horizontal. `--axis auto` (PCA on mean flow) detected it automatically.
  Confirmed by vertical striping in the temporal mean. Always use `auto`/`both`
  on unknown clips.
- **Polarity flip** — real clip is black-dots-on-white (inverse of synthetic);
  the polarity scan handled it.
- **Decoy defense bypassed:** Ghost Font embeds a static DECOY so frame-by-frame
  AI reports the wrong message. Because this tool keys on *motion*, it recovers
  the REAL message, not the decoy — that's the core reason it beats multimodal
  LLMs.

Note: live browser-capture of ghostfont.org in a headless/sandboxed pane is
throttled (hidden-tab rAF pause) — decode the downloaded/recorded file instead.

## Provenance
Self-authored from the `~/ghostfont-poc/` PoC (2026-07-17), which measured the
attack end-to-end (single-frame OCR=`''`; flow-reconstruction IoU 0.55–0.68;
vision char-acc 1.000 on clean phrases). See that dir's README for the data.

Files in this skill

  • SKILL.md5.2 KB
  • crack.py12.3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.