{"slug": "ghost-font-bypass-and-hardening", "title": "Ghost Font Bypass and Hardening", "summary": "A developer has published a bypass for the Ghost Font protection mechanism on Mixfont, using a non-machine-learning attack that achieves a 0.9077 IoU mask overlap and reads 'GHOST'. The same attack against a hardened version yields only 0.0761 IoU and returns 'W4 WZWJ W', demonstrating the effectiveness of the hardening. The attack and defense code are available in the repository, with browser and Python decoders provided.", "body_md": "| Before | After |\n|---|---|\n\nI built this after discovering a way to bypass the protection mechanism by identifying, aligning and removing the moving black elements. The attack uses nine frames, a small vertical-shift search, frame subtraction, thresholding and connected component analysis. It does not use machine learning.\n\nOpen the Ghost Font page [https://www.mixfont.com/ghost-font](https://www.mixfont.com/ghost-font), open the developer console, paste `code/ghost_font_browser_decoder.js`\n\nand press Enter. The script captures nine frames from the visible canvas and opens the recovered mask in an overlay.\n\nBrowser origin rules still apply. If the canvas cannot be read/download or record the animation and use the Python decoder.\n\nPython 3.12 and a system `ffmpeg`\n\nexecutable are required.\n\n```\npython -m pip install -r requirements.txt\npython code/vulnerable_ghost_font_demo.py \\\n  --output attack/ghost-vulnerable.mp4 \\\n  --report attack/ghost-attack.json \\\n  --artifacts attack/artifacts\n\npython code/recover_ghost_font.py \\\n  attack/ghost-vulnerable.mp4 \\\n  --output attack/recovered-red.png \\\n  --classical-ocr \\\n  --ocr-output attack/recovered.txt\n```\n\nThe measured mask overlap is `0.9077`\n\nIoU. The template readout is `GHOST`\n\n.\n\n```\npython code/hardened_ghost_font_demo.py \\\n  --output defense/ghost-hardened.mp4 \\\n  --report defense/ghost-defense.json \\\n  --artifacts defense/artifacts\n```\n\nThe same attack reaches `0.0761`\n\nIoU and returns `W4 WZWJ W`\n\n. This result is limited to the global vertical-registration attack implemented here.\n\n```\npython code/build_attack_figure.py --results attack --output figures\npython code/build_defense_figure.py --results defense --output figures\n```\n\nBoth figures are built from the videos and decoder outputs in this repository.", "url": "https://wpnews.pro/news/ghost-font-bypass-and-hardening", "canonical_source": "https://github.com/Sakotass/ghost-font-bypass-hardening", "published_at": "2026-08-04 00:29:59+00:00", "updated_at": "2026-08-04 00:52:35.957725+00:00", "lang": "en", "topics": ["computer-vision"], "entities": ["Mixfont", "Ghost Font"], "alternates": {"html": "https://wpnews.pro/news/ghost-font-bypass-and-hardening", "markdown": "https://wpnews.pro/news/ghost-font-bypass-and-hardening.md", "text": "https://wpnews.pro/news/ghost-font-bypass-and-hardening.txt", "jsonld": "https://wpnews.pro/news/ghost-font-bypass-and-hardening.jsonld"}}