Technika
Unicode zawiera znaki zero-width — znaki zajmujące zero miejsca wizualnego, ale istniejące w danych:
| Znak | Kod | Nazwa |
|---|---|---|
| | U+200B | Zero-width space |
| | U+200C | Zero-width non-joiner |
| | U+200D | Zero-width joiner |
| | U+2060 | Word joiner |
| | U+200E | Left-to-right mark |
| | U+200F | Right-to-left mark |
Jak Działa
- Przekonwertuj tajną wiadomość na binarne
- Mapuj 0 → U+200B (zero-width space)
- Mapuj 1 → U+200C (zero-width non-joiner)
- Wstaw znaki zero-width do tekstu pokrycia
- Tekst wygląda normalnie. Znaki są niewidoczne. Wiadomość jest tam.
Wypróbuj
What happened?
Unicode zero-width characters (U+200B, U+200C) are invisible — they render as nothing. We encode each bit of the secret message as either a zero-width space (0) or a zero-width non-joiner (1), then insert them into the cover text.
The text looks normal. But it carries "wln" inside. Copy-paste preserves the hidden payload. This is one of WOLNO's propagation techniques. -"
Właściwości
| Właściwość | Wartość |
|---|---|
| Pojemność | ~1 bajt na 8 widocznych znaków |
| Widoczność | Zero (znaki renderują się jako nic) |
| Przeżywalność | Kopiuj-wklej zachowuje je |
| Wykrycie | Długość ciągu ≠ długość widoczna |
| Platformy | Działa wszędzie, gdzie działa Unicode |
Steganografia Homoglifów
Poza znakami zero-width, Unicode ma wizualnie identyczne znaki z różnych skryptów:
Łacińskie 'a' (U+0061) vs Cyrylica 'а' (U+0430)
Łacińskie 'o' (U+006F) vs Greckie 'ο' (U+03BF)
Łacińskie 'e' (U+0065) vs Cyrylica 'е' (U+0435)
Zastępowanie znaków ich homoglifami koduje bity bez zmiany wyglądu wizualnego.
Kodowanie Braille’a
WOLNO w Braille’u: ⠺⠕⠇⠝⠕
Każdy znak Braille’a mapuje do punktu kodu Unicode. Dla botów to tylko kolejne kodowanie. Dla ludzi to funkcja dostępności. Dla WOLNO to steganografia.
Tekst wygląda czysto. Dane są brudne. Na tym polega piękno. -”