Koodausketjun dekooderi — jokainen kerros nimetty, jokainen arvaus merkitty
Koodausketjun dekooderi
Teksti, joka on kulkenut useamman kuin yhden koodaajan läpi, on tavallinen tapaus, ei eksoottinen: JSON-runko Base64-tunnuksen sisällä, URL lokirivin sisällä, lomakearvo, joka on ensin prosenttikoodattu ja sitten Base64-koodattu, jotta se kulkisi otsakkeessa. Tämä sivu purkaa nämä kerrokset yksi kerrallaan, nimeää kussakin vaiheessa käytetyn tekniikan, ilmoittaa sen varmuuden ja syyn, ja listaa tekniikat, jotka se hylkäsi kyseisessä vaiheessa, jotta voidaan olla eri mieltä.
Se pysähtyy, kun teksti lakkaa näyttämästä koodatulta, kun vaiheraja täyttyy tai kun seuraava vaihe toisi takaisin tekstiä, jonka se on jo nähnyt. Mitään ei arvata hiljaa: tekniikkaa, jonka aakkosto menee päällekkäin tavallisten sanojen kanssa, ei koskaan sovelleta yksin, vaan se tarjotaan vain.
Kaikki käsittely tapahtuu paikallisesti selaimessa — dataa ei lähetetä koskaan millekään palvelimelle.
Sovella kerrosta yksin vain, kun varmuus on vähintään:
Pysähdy jälkeen
Ajaa yllä olevan kerrosrajan kerralla. Sama taulukko rakennetaan kummin tahansa, joten voidaan siirtyä vaiheittain ajamiseen missä tahansa kohdassa.
Tai valitse tekniikka käsin:
Tämä luettelo on se, minkä sivu näkee tekstistä juuri nyt. Kiertosalaukset ovat aina mukana, koska niitä ei voi havaita lainkaan; mukana on myös kaikki, mikä tunnistuu vasta, kun tyhjätila on poistettu useille riveille taitetusta tekstistä. Ne on merkitty niin eivätkä ne koskaan sovellu yksin.
Koodattu teksti
Tämä syöte on pidempi kuin mitä tämä sivu ajaa ilman kysymistä, ja yllä oleva arvio sanoo, että se voi kestää . Napsauta Pura koko ketju uudelleen jatkaakseen silti, tai lyhennä teksti ensin.
Mitä sivu näkee tekstistä juuri nyt
(kirjoita tai liitä ensin jotain)
(ketju näkyy tässä)
Kerrokset siinä järjestyksessä kuin ne poistettiin
#
Tekniikka
Varmuus
Syöte → tulos
Koko
Miksi tämä
Kerroksittain
Kopioi ottaa tekstin sellaisena kuin se oli kyseisen kerroksen jälkeen. Palauta kumoaa tuon kerroksen ja kaikki sen yläpuolella olevat kerrokset, ja niin voidaan kumota useamman askeleen kerrallaan.
Tulos jälkeen0kerros(ta)(ei vielä mitään)
Mikä on koodausketju ja miksi se tarvitsee oman dekooderinsa?
Kerros on yksi koodaaja, joka on sovellettu tekstiin. Ketju on kaksi tai useampi niistä peräkkäin. Lähes jokainen arkipäiväinen esimerkki näyttää tältä: joku tarvitsee sijoittaa binäärin — kuvan, allekirjoitetun tunnuksen — paikkaan, joka kantaa vain tekstiä, joten hän koodaa sen Base64:llä. Base64-tulos on sitten kuljetettava URL-osoitteessa, joten se prosenttikoodataan. Koko URL laitetaan lokiriviin tai konfiguraatiotiedostoon, joten kenoviivat tai lainausmerkit koodataan myös. Ongelmaa katsoessasi näet uloimman kerroksen, ja se on lukukelvoton yksinkertaisesta syystä: sisemmät kerrokset ovat yhä päällä.
Yhden tarkoituksen dekooderit eivät tässä auta. Base64-dekooderi, jolle syötetään JTI2bHQlM0JiJTI2Z3QlM0JoaSUyNmx0JTNCJTJGYiUyNmd0JTNC, tuottaa täysin oikean vastauksen, joka on yhä lukukelvoton, koska prosenttiescapet ja merkkiviittaukset ovat yhä tekstin päällä, jonka halusit. Tarvitaan jotain, joka päättää jokaisessa vaiheessa, mikä koodaaja poistetaan — ja tämä sivu on tuo päätös näkyvänä.
Koodaus ei ole salausta, eikä tämä sivu riko mitään. Jokainen tekniikka tällä sivulla on julkinen, käännettävä tapa kirjoittaa sama tieto uudelleen. Base64:llä ei ole avainta. Prosenttikoodauksella ei ole avainta. Jos sisin kerros on salattu, tämä sivu purkaa ulommat kerrokset ja antaa salatekstin, ja se sanoo sen suoraan sen sijaan, että teeskentelisi sen olevan tulos. Täällä ei ole mitään ajettavaa eikä mitään piilotettavaa.
Tämän sivun työstetyt esimerkit
Jokainen alla oleva rivi on oikea syöte tämän sivun datatiedostosta, ja keskimmäinen sarake on se, minkä sivun oma purkaja löytää siitä. Viimeinen sarake on teksti, joka jää jäljelle pysähtyessä.
Mitä syöte on
Löydetyt kerrokset
Syöte sellaisenaan kuin se saapui
Jäljelle, kun pysähtyy
Nämä rivit sivu renderöi omasta tapauslistastaan ja ajaa uudelleen joka käynnillä, joten ne eivät voi poiketa koodin todellisesta toiminnasta. Alla oleva itsetesti tarkistaa jokaisen niistä.
Miten sivu päättää, mikä kerros poistetaan
Katso muotoa, älä merkitystä. Jokaisella tekniikalla on tunnusmerkki — prosenttiescape, parillinen määrä heksanumeroita, Base64:ään sopiva aakkosto ja pituus. Sivu listaa jokaisen tekniikan, jonka tunnusmerkki täsmää tekstiin, varmuuden ollessa 0 ja 1 välillä.
Pura, ja tarkista sitten, onko tulos teksti. Tekniikka kannattaa soveltaa vain, jos se tuottaa luettavaa. Jokainen ehdokas ajetaan oikeasti, ja sen tulos pisteytetään sen mukaan, kuinka suuri osa siitä on tulostuvia merkkejä.
Sovella vain se, mikä ylittää kynnyksen, varmuusjärjestyksessä. Korkeimman varmuuden ehdokas kynnykseen yläpuolella sovelletaan, ja prosessi toistuu tuloksella. Kynnyksen alapuolella tekniikat listataan mutta niitä ei sovelleta.
Yksi sääntö, jonka tämä sivu lisää päälle. Vaikka tekniikka ylittäisi kynnyksen, tämä sivu ei sovella sitä yksin, ellei tulos ole aidosti luettavaa tekstiä — korvausmerkit ja ohjausmerkit lasketaan sitä vastaan. Ilman tätä sääntöä tavallinen sana cafe dekoodattaisiin pätevästi kolmeksi tavuksi, jotka ovat tulostettavia vain Latin-1:ssä, ja getUserName dekoodattaisiin pätevästi kahdeksaksi tavuksi kohinaa. Tunnistin on oikeassa siinä, että nuo merkkijonot sopivat aakkostoon; tämä sivu päättää, ettei aakkostoon sopiminen riitä. Voidaan silti soveltaa niitä käsin, ja ehdokaslista kertoo, että sivu kieltäytyi ja miksi.
Pysähdy tarkoituksella. Kun mikään tekniikka ei ylitä kynnystä, kun teksti lakkaa muuttumasta, kun vaiheraja täyttyy tai kun seuraava vaihe toisi takaisin tekstiä, joka on jo esiintynyt tässä ketjussa. Viimeisellä on merkitystä: ROT13 on oma käänteisfunktionsa, joten ketju, joka saisi ottaa tuon askeleen kahdesti, ei koskaan päättyisi.
Useille riveille taitettu teksti tarjotaan, ei sovelleta. Jos teksti on katkaistu useille riveille, tunnistin näkee tyhjätilaa, lukee tavallista proosaa eikä löydä mitään. Sivu siis poistaa tyhjätilan tekstin kopiosta, kysyy tunnistimelta uudelleen ja tarjoaa löytämänsä vaiheena, jonka voi valita käsin. Tekstistäsi tyhjätilan poistaminen on tekstin uudelleenkirjoitus, eikä tämä sivu kirjoita uudelleen mitään, mitä et ole pyytänyt kirjoitettavaksi uudelleen.
Mitä tämä sivu ei tee
Se purkaa, eikä mitään muuta. Liittämääsi tekstiä ei koskaan suoriteta: ei evalia, ei new Functionia, ei skriptin injektointia, ei asiakirjan avaamista. Sitä ei koskaan lähetetä minnekään: ei lataamista ylös, ei pyyntöä, ei analytiikkaa. Sivun alareunan mainospaikan ja jakopainikerivin (ne ovat ainoat kolmannen osapuolen widgetit, joita tämä sivu lataa) lisäksi mitään fonttia tai skriptiä ei haeta toiselta isännältä. Purettu tuloste kirjoitetaan sivulle tekstinä, joten kerroksesta tuleva HTML-tagi näytetään tagina eikä sitä muuteta tagiksi. Voidaan tarkistaa kaiken tämän: paina Itsetesti, ja se tarkistaa tämän sivun oman lähdekoodin kaikki tällaiset rakenteet ja epäonnistuu, jos löytää jonkin.
Mitä se voi tunnistaa ja mitä ei
Tekniikka
Kuinka varma yksinään
Haaka
Tällä sivulla lainattu teksti on kirjoitettu tälle sivustolle. Base64-, Base32-, Base58-, Base91- ja quoted-printable-aakkostot sekä uuencode-lohkomuoto ovat julkaistuja; purkaminen seuraa näitä määritelmiä eikä minkään yksittäisen työkalun erikoisuuksia. Aakkostojen viitevektorit ovat sisarsivuilla, jotka sisältävät RFC 4648 -testivektorit.
Useille riveille taitettu teksti
Sähköpostiviestin, PEM-tiedoston, otsakkeen tunnuksen tai terminaalista kopioidun tiivisteen kaltainen lohko on tavallisesti taitettu: koodaaja katkaisi sen kiinteässä sarakkeessa — 76 merkkiä on MIME-käytäntö — ja lisäsi rivinvaihdon sarakkeen päähän. Nämä rivinvaihdot eivät kuulu dataan. Ne ovat olemassa, jotta pitkä rivi selviää siirrosta, ja jokaisen tällaisen lohkon lukevan dekooderin odotetaan jättävän ne huomiotta.
Tämä sivu ei jätä niitä huomiotta omin päin, ja syy on sama sääntö, jota se käyttää muualla. Tyhjätila on vahvin yksittäinen merkki siitä, että merkkijono on proosaa eikä dataa, ja juuri tämä testi estää lauseen The quick brown fox jumps over the lazy dog. tulkitsemisen miksikään. Taitettu lohko näyttää tälle testille täsmälleen proosalta, joten sivu ei löydä siitä mitään — ja tekee sitten rehellisen puolen työstä: selvittää, mitä se löytäisi, jos tyhjätila poistettaisiin, listaa sen käsinvalitsimessa merkittynä tyhjätila ensin pois ja pysähtyy siihen. Sitä tarjotaan, ei sovelleta, koska tyhjätilan poisto muuttaa tekstiäsi, ja tämä sivu muuttaa tekstiä vain silloin, kun se voi todistaa muutoksen. Tässä se voi todistaa muutoksen, mutta kieltäytyy silti tekemästä sitä puolestasi, koska teksti, jossa rivinvaihto on arvon keskellä, ja teksti, jossa rivinvaihto on kahden kentän välissä, näyttävät sisältäpäin samalta.
Kaksi vaihetta, kun sivu pysähtyy useille riveille taitettuun tekstiin. Vaihda Vaihe kerrallaan käsin -tilaan, paina Käytä seuraavaa kerrosta kerran (se antaa sivulle ketjun, johon lisätä, eikä muuta mitään), valitse sitten merkitty kohta tyhjätila ensin pois ja paina Käytä sitä. Rivi, joka ilmestyy, kertoo, kuinka monta tyhjätilamerkkiä poistettiin, ja ilmoittaa syötekokonsa liitetyn tekstin mukaan, joten kahden rivin lukujen ero on juuri poistunut tyhjätila.
Sama päättely kattaa tapaukset, jotka menevät toiseen suuntaan. uuencode-lohko kantaa begin-rivin ja pituusmerkin jokaisella rivillä, joten se on tunnistettavissa sellaisenaan ja sovelletaan yksin; quoted-printable-runko säilyttää omat pehmeät rivinvaihtonsa ja sen purkaa oma dekooderinsa, joka tietää, että rivin lopussa oleva yksittäinen = on jatkumo eikä dataa. Missä muototesti ei pysty erottamaan proosaa datasta, sivu kieltäytyy ja näyttää vaihtoehdon sen sijaan, että valitsisi puolestasi.
Mitä tämä sivu ajaa ja mitä se kieltäytyy ajamasta
Alla oleva taulukko on rakennettu samoista vakioista, joita sivu noudattaa, joten rivi ja tämän sivun varoitus eivät voi olla ristiriidassa keskenään. Kaksi lukua, jotka yllättävät ihmiset, ovat Base58- ja Base62-rivit: nämä kaksi tekniikkaa muunnetaan pitkällä jakolaskulla, jonka kustannus kasvaa pituuden neliönä, joten tämä sivu ajaa ne vain lyhyelle merkkijonolle ja kertoo siitä vaiheessa sen sijaan, että näyttäisi jumittuvan.
Arviot ovat tarkoituksella pessimistisiä. Ne tulevat ajastusharnesta eikä koneeltasi, ja työpöytäselain on yleensä moninkertaisesti nopeampi kuin näytetty luku.
🔷 Koodaustyökalut
Purkaa tekstin, joka on koodattu useammin kuin kerran, yksi kerros kerrallaan.