Dekodér řetězů kódování — každá vrstva pojmenována, každý odhad označen
Dekodér řetězců kódování
Text, kterým prošlo více kodérů, je běžný případ, ne výjimka: tělo JSON uvnitř tokenu Base64, URL uvnitř řádku logu, hodnota formuláře, která byla nejprve procentově escapována a poté zakódována Base64, aby mohla putovat v hlavičce. Tato stránka rozbaluje tyto vrstvy jednu po druhé, u každého kroku pojmenuje použitou techniku, vypíše, jak moc si je jistá a proč, a vypíše techniky, které v tom kroku odmítla, abyste s ní mohli nesouhlasit. Zastaví se, když text přestane vypadat zakódovaně, když dosáhne limitu kroků, nebo když by další krok vrátil text, který už se objevil. Nic se neodhaduje tiše: technika, jejíž abeceda se překrývá s běžnými slovy, se nikdy nepoužije sama o sobě, nabídne se pouze. Veškeré zpracování probíhá lokálně ve vašem prohlížeči — vaše data se nikdy nenahrávají na žádný server.
Použít vrstvu samostatně, jen když je jistota alespoň:
Zastavit po
Spustí výše uvedený limit vrstev najednou. Stejná tabulka se postaví tak či onak, takže můžete kdykoli přepnout na krok po kroku.
Nebo vyberte techniku ručně:
Tento seznam je to, co stránka v textu právě vidí. Rotační šifry v něm jsou vždy, protože je vůbec nelze detekovat; je v něm i cokoli, co se stane rozpoznatelným až po odstranění mezer ze zalomeného textu, což je označeno jako takové a nikdy se to nepoužije samo o sobě.
Zakódovaný text
Tento vstup je delší, než tato stránka ráda běží bez dotazu, a odhad výše říká, že může trvat . Klikněte znovu na Rozbalit celý řetěz, chcete-li pokračovat, nebo nejprve text zkraťte.
Co stránka v textu právě vidí
(nejprve něco napište nebo vložte)
(řetěz se zobrazí zde)
Vrstvy v pořadí, v jakém byly sejmuty
#
Technika
Jistota
Vstup → výsledek
Velikost
Proč právě tato
Podle vrstvy
Kopírovat vezme text tak, jak vypadal po této vrstvě. Vrátit zpět zahodí tuto vrstvu a každou vrstvu nad ní, což je způsob, jak vrátit více než jeden krok najednou.
Výsledek po0vrstev(zatím nic)
Co je řetěz kódování a proč potřebuje vlastní dekodér?
Vrstva je jeden kodér aplikovaný na text. Řetěz je dvě nebo více takových aplikací za sebou. Téměř každý každodenní příklad vypadá takto: někdo potřebuje umístit kus binárních dat — obrázek, podepsaný token — do místa, které nese jen text, takže to zakóduje do Base64. Výsledek Base64 pak musí putovat v URL, takže se procentově escapuje. Celá URL se pak vloží do řádku logu nebo konfiguračního souboru, takže se escapují i zpětná lomítka nebo uvozovky. To, na co narazíte, je nejvnější vrstva a je nečitelná z jednoduchého důvodu: vnitřní vrstvy jsou stále na místě.
Dekodéry s jedním účelem zde nepomohou. Dekodér Base64, který dostane JTI2bHQlM0JiJTI2Z3QlM0JoaSUyNmx0JTNCJTJGYiUyNmd0JTNC, vyprodukuje zcela správnou odpověď, která je přesto nečitelná, protože procentuální escapy a znakové odkazy jsou stále nad textem, který jste chtěli. Potřebujete něco, co na každém kroku rozhodne, který kodér sejmout — a tato stránka je toto rozhodnutí zviditelněné.
Kódování není šifrování a tato stránka nic neprolamuje. Každá technika na této stránce je veřejný, vratný způsob zápisu téže informace. Base64 nemá klíč. Procentuální escapování nemá klíč. Pokud je nejvnitřnější vrstva zašifrována, tato stránka rozbalí vnější vrstvy a předá vám šifrotext, což řekne přímo, místo aby předstírala výsledek. Není tu nic ke spuštění a nic se neskrývá.
Propracované příklady na této stránce
Každý řádek níže je skutečný vstup z datového souboru této stránky a prostřední sloupec je to, co v něm najde vlastní rozbalovač stránky. Poslední sloupec je text, který zůstane, když se zastaví.
Co je vstup
Nalezené vrstvy
Vstup, citovaný tak, jak přišel
Zůstalo po zastavení
Tyto řádky vykresluje stránka ze svého vlastního seznamu případů a při každé návštěvě je znovu spouští, takže se nemohou odchýlit od toho, co kód dělá. Samotný test níže každý z nich kontroluje.
Jak stránka rozhodne, kterou vrstvu sejmout
Dívejte se na tvar, ne na význam. Každá technika má signaturu — procentuální escape, sudý počet hexadecimálních číslic, abecedu a délku, které odpovídají Base64. Stránka vypíše každou techniku, jejíž signatura odpovídá textu, s jistotou mezi 0 a 1.
Dekódujte, pak zkontrolujte, zda je výsledek text. Technika stojí za použití jen tehdy, pokud vyprodukuje něco čitelného. Každý kandidát se skutečně spustí a jeho výstup se ohodnotí podle toho, kolik z něj tvoří tisknutelné znaky.
Použijte jen to, co projde hranicí, v pořadí podle jistoty. Použije se kandidát s nejvyšší jistotou nad vaším prahem a postup se opakuje na výsledku. Pod prahem jsou techniky vypsány, ale nepoužity.
Jedno pravidlo, které tato stránka přidává navíc. I když technika projde prahem, tato stránka ji sama o sobě nepoužije, pokud výsledek není skutečně čitelný text — náhradní znaky a řídicí znaky se počítají proti němu. Bez tohoto pravidla by se běžné slovo cafe platně dekódovalo jako tři bajty, které jsou tisknutelné jen v Latin-1, a getUserName jako osm bajtů šumu. Detektor má pravdu, že tyto řetězce abecedě odpovídají; tato stránka rozhodla, že odpovídání abecedě nestačí. Ručně je použít můžete, a seznam kandidátů vám řekne, že je odmítl, a proč.
Zastavit se, záměrně. Když žádná technika nepřekoná hranici, když se text přestane měnit, když je dosažen limit kroků, nebo když by další krok vrátil text, který se už v tomto řetězu objevil. Ten poslední bod je důležitý: ROT13 je sám sobě inverzní, takže řetěz, který by mohl tento krok udělat dvakrát, by nikdy neskončil.
Zalomený text se nabízí, nikdy neaplikuje. Je-li text přerušen přes několik řádků, detektor vidí mezery, čte běžnou prózu a nic nenajde. Stránka proto odstraní mezery z kopie textu, detektor se zeptá znovu a cokoli najde, nabídne jako krok, který vyberete ručně. Odstranění mezer z vašeho textu je přepsání vašeho textu a tato stránka nepřepisuje nic, o co jste nepožádali.
Co tato stránka nedělá
Pouze dekóduje, nic jiného. Vložený text se nikdy nespustí: žádné eval, žádné new Function, žádné vkládání skriptů, žádné otevírání dokumentu. Nikam se neodesílá: žádné nahrávání, žádný požadavek, žádná analytika. Kromě reklamního místa na konci stránky a řádku tlačítek sdílení (to jsou jediné dva widgety třetích stran, které tato stránka načítá) se žádné písmo ani skript nenačítá z jiného hostitele. Dekódovaný výstup se zapisuje na stránku jako text, takže značka HTML, která vznikne z vrstvy, se zobrazí jako značka, a ne jako skutečná značka. To všechno si můžete ověřit: stiskněte Samotest a stránka zkontroluje vlastní zdrojový kód na jakékoli takové konstrukce a při nálezu selže.
Co dokáže rozpoznat a co ne
Technika
Jak moc si je jistá samo o sobě
Úskalí
Text citovaný na této stránce je napsán pro tento web. Abecedy Base64, Base32, Base58, Base91 a quoted-printable a formát bloků uuencode jsou zveřejněné standardy; dekódování se řídí těmito definicemi, nikoli zvláštnostmi konkrétního nástroje. Referenční vektory abeced jsou na sesterských stránkách, které obsahují testovací vektory RFC 4648.
Text zalomený přes několik řádků
Blob, kterým prošla e-mailová zpráva, soubor PEM, token v hlavičce nebo hash vložený z terminálu, je obvykle zalomený: kodér ho přerušil na pevném sloupci — 76 znaků je konvence MIME — a vložil zalomení řádku tam, kde sloupec skončil. Tato zalomení nejsou součástí dat. Existují proto, aby dlouhý řádek přežil přenos, a každý dekodér, který takový blob čte, je má ignorovat.
Tato stránka je sama neignoruje a důvod je pravidlo, které používá všude jinde. Mezera je nejsilnější jediný znak, že řetězec je próza a ne data, a právě tento test brání tomu, aby The quick brown fox jumps over the lazy dog. bylo čteno jako cokoli. Zalomený blob vypadá tomuto testu přesně jako próza, takže stránka v něm nic nenajde — a pak udělá poctivou polovinu práce: zjistí, co by našla, kdyby se mezery odstranily, vypíše to ve výběru ručně označeném nejprve odstranit mezery a tam se zastaví. Je vypsán, ne aplikován, protože odstranění mezer mění váš text, a tato stránka mění text jen tehdy, když umí dokázat, jaká je změna. Zde to dokázat umí, a přesto ji za vás neprovede, protože text se zalomením uprostřed hodnoty a text se zalomením mezi dvěma poli vypadají zevnitř stejně.
Dva kroky, když se stránka zastaví u zalomeného textu. Přepněte na Krok po kroku ručně, jednou stiskněte Použít další vrstvu (to dá stránce řetěz, ke kterému může přidávat, a nic nemění), pak vyberte položku označenou nejprve odstranit mezery a stiskněte Použít. Řádek, který se objeví, uvede, kolik mezer bylo odstraněno, a jako velikost vstupu uvede text, který jste vložili, takže rozdíl mezi oběma počty v tom řádku je přesně počet mezer, které odpadly.
Stejná úvaha platí i pro případy opačným směrem. Blok uuencode nese na každém řádku řádek begin a znak délky, takže je rozpoznatelný i tak, jak je, a použije se sám o sobě; tělo quoted-printable si udržuje vlastní měkká zalomení řádků a dekóduje ho vlastní dekodér, který ví, že samostatné = na konci řádku je pokračování, a ne data. Tam, kde test tvaru nedokáže rozlišit próza a data, stránka odmítne a ukáže vám alternativu, místo aby vybírala za vás.
Co tato stránka spustí a co odmítne
Tabulka níže je postavena ze stejných konstant, které stránka vynucuje, takže řádek a varování na této stránce si nemohou odporovat. Dvě čísla, která lidi překvapí, jsou řádky Base58 a Base62: tyto dvě techniky se převádějí dlouhým dělením, jehož náklad roste s druhou mocninou délky, takže je tato stránka spouští jen na krátkém řetězci a říká to přímo v kroku, místo aby vypadala, že se zasekla.
Odhady jsou záměrně pesimistické. Pocházejí z časového měření, nikoli z vašeho počítače, a stolní prohlížeč je obvykle několikrát rychlejší, než ukazuje zobrazená hodnota.
🔷 Nástroje pro kódování
Rozbaluje text, který byl zakódován vícekrát, po jedné vrstvě.