Als u ooit hebt geprobeerd om een leeg bericht in Telegram te sturen, dan heb je waarschijnlijk ontdekt dat noch het spatieteken, noch het newline teken (Alt + Enter) zijn verzonden - het invoerveld is gewoon gewist. Tegelijkertijd kon je zien dat andere mensen je letterlijk een lege ruimte sturen,en ze slagen. Waar is de magie hier? Als je een kort antwoord wilt – ze voegen Het "broken" teken u+3164 in. U kunt het kopiëren van de haakjes en gebruik:"ㅤㅤㅤ". Als u een meer gedetailleerd antwoord wilt, zullen we u hieronder vertellen waar de onzichtbare tekst vandaan komt, hoe u het kunt krijgen en gebruiken, waarom u het niet in de code moet gebruiken en welke andere tekens er zijn.

Onzichtbaar symbool-Hoe werkt het?

Laten we de uitleg beginnen met tabellen met tekens en coderingen. Elke computer op hardwareniveau begrijpt 2 karakters: 0 en 1. Dit is niet handig voor mensen, omdat we nog steeds meer gewend zijn aan letters die worden gevormd in woorden, zinnen, alinea ' s, enzovoort. Om zonder problemen met deze letters te werken, hebben we een heel eenvoudig schema bedacht – we nemen de letters in volgorde en geven ze unieke cijfers: a = 1, b = 2, c = 3 enzovoort. We geven ook unieke cijfers aan hoofdletters, tekens (punt, komma, vraagteken en ga zo maar door), witruimte en cijfers – een lijst weefgetouwen een unieke identificatie die wordt toegewezen aan elk mogelijk teken. Deze lijst wordt de tekencodetabel genoemd, en de eerste codetabel wordt herkend was ASCII:

De tweede helft is leeg. Het is bedoeld voor regionale karakters. De tabel zelf is als een referentie-informatie. Er is ook een codering - een set van instructies voor het decoderen van deze tabel. Coderingen verschenen vanwege regionale standaarden. Ze zijn nodig om tekens "correct" te lezen. Als we de codering nemen die op dat moment gebruikelijk was in het CIS, dan zal er een instructie in staan: "om de letter "г" te krijgen gebruik 8x3 in ASCII"; als we de codering nemen die op dat moment in Duitsland werd gebruikt, dan zal het worden geschreven: "om de letter "β" te krijgen gebruik 8x3".



Omdat het erg lastig was vanwege de lokalisatie in verschillende talen, werd een nieuwe karaktertabel, Unicode, uitgevonden en gestandaardiseerd. Unicode kan meer dan 1.000.000 tekens bevatten. Op dit moment zijn ongeveer 100.000 tekens toegevoegd aan Unicode – dus nog eens 90% van de cellen zijn beschikbaar. Een universele UTF-codering werd uitgevonden voor Unicode om het voor ontwerpers gemakkelijker te maken om lettertypen te tekenen (Ja, voor elke afzonderlijke codering moeten ontwerpers een apart lettertype tekenen).

Dat is genoeg achtergrond - nu is het tijd om uit te vinden waar het onzichtbare karakter vandaan komt. Het draait allemaal om de bugs van Unicode: sommige speciale (controle en witruimte) tekens gedragen zich niet zoals bedoeld. De meest interessante groep bugs voor ons is het onzichtbare karakter. Het punt is dat het teken speciaal moet zijn en moet worden weergegeven als een zeer kleine witruimte, maar de codering ziet het als een volwaardig teken (zoals een letter of een nummer) en geeft het als een grote ruimte. U hebt misschien al geraden hoe het onzichtbare gebied als een volwaardig teken kan worden gebruikt-om een ruimte in te voegen waar het niet is voorzien.

Onzichtbare tekst - hoe te kopiëren en plakken?

Om te beginnen, zullen we u op de hoogte van het trieste nieuws: zelfs deze codering bugs worden geleidelijk opgelost. Eerder (in 2012) was een truc populair in "Vkontakte" – het was mogelijk om een newline control character in te voegen in de status, en de status was verdeeld in 2 regels. Nu kunt u dit niet doen - de site verwerkt de gegevensuitvoer correct, en een dergelijke inscriptie breekt niet langer de string:

Naast &nsbp, hebben sociale netwerken en boodschappers alle controle – en speciale tekens geknipt-u kunt de tekst niet ondersteboven of achteruit weergeven als deze in eerste instantie niet door de taal wordt geleverd. Er zijn diensten zoals https://textinvert.ru/, waarmee u de tekst kunt wijzigen, maar ze zetten hem niet ondersteboven, maar halen soortgelijke letters in andere talen op. Het vereist een speciaal algoritme. Het is extreem moeilijk om nu een grote lege tekst te maken (hoewel het nog steeds mogelijk is), maar de onzichtbare emoji ' s en het lege set-teken dat veel lettertypen brak, zijn nu ook opgelost. Alles wat overblijft is om lege berichten zoals deze te sturen:

Unicode u + 3164 voor het invoegen van een onzichtbaar teken

Dus, het meest bruikbare is een onzichtbare ruimte, aka een "lege string". In feite zijn er 3 van deze tekens, hier zijn hun codes:

Code van het teken

Karakter

U+115F

U + 1160

U + 3164

Om het karakter te zien, dubbelklik erop in de tabel. "Woord", door de manier, licht het symbool in het grijs.

Wat de rest van de karakters betreft, zijn er nog steeds witruimtes met adressen in het gebied van &#8192 – &#8202, maar we hebben ze getest en ontdekt dat boodschappers ze als gewone spaties zien – daarom zijn ze niet interessant. Als je ze toch nodig hebt of als je ze zelf wilt testen in verschillende services - hier zijn nog een paar spaties en control characters:

Code van het teken

Wat betekent het?

Karakter

U + 00A0

Ruimte zonder spleet

 

U + 2003

Em-ruimte

U + 2007

Krullende ruimte (wat dat ook betekent)

U + 2008

Interpunctie-ruimte

U + 2009

Smalle ruimte

U+205F

Gemiddelde Rekenruimte

U + 3000

Ideografische ruimte

 

Wat betreft de drie bovenstaande karakters, in eerste instantie zijn ze placeholders voor overlappende Koreaanse karakters. Ze worden beschouwd als volwaardige personages, hoewel ze vulstoffen zijn. Misschien is dit gedrag te wijten aan het feit dat wanneer een plaatshouder wordt gebruikt, de hiëroglief niet moet worden overgebracht naar een nieuwe lijn. Als het teken wordt beschouwd als een witruimte, kan er een overdracht plaatsvinden (dit hangt af van andere besturingskarakters). Hoe dan ook, u kunt een leeg teken uit de tabel kopiëren en plakken waar u maar wilt. Maar waar het kan worden ingevoegd-laten we hieronder kijken.

Onzichtbare tekst in WhatsApp, VK, Instagram, onenigheid en games

Zoals we al hebben gezegd, alle grote platforms hebben ervoor gezorgd dat controle, speciale en andere "niet-standaard" tekens worden uitgesneden tijdens de verwerking. Daarom is het toepassingsgebied van dergelijke symbolen zeer beperkt, hoewel ze op sommige plaatsen nog steeds kunnen worden gebruikt.

WhatsApp, Viber, Telegram:

Als u een gewone witruimte invoegt, dan staat WhatsApp, net als andere boodschappers, u niet toe om dit bericht te verzenden – de knop "Verzenden" verschijnt niet. U + 3164 kan verzonden worden. Het resultaat is een leeg bericht.

VK, Facebook Messenger:

Er is dezelfde situatie als met boodschappers - u kunt lege berichten naar privéberichten sturen. Trouwens, u kunt ook u+3164 in de VK-status zetten – het wordt weergegeven als een lege regel. Als u een normale spatie plaatst, wordt de status verwijderd en wordt de inscriptie "Status instellen" zichtbaar.

TikTok, Instagram: Er is geen optie om de verborgen ruimte te gebruiken. Beide platforms beschouwen het verborgen ruimte karakter als een reguliere ruimte.

Onenigheid:

Discord kunt u lege berichten te sturen. Tegelijkertijd, als je probeert om een kanaal te maken met een lege naam, zal Discord je niet toestaan om dit te doen:

GESTELDE

Als ik een onzichtbaar teken in Skype zet, is de status dan "offline"?

Nee, U kunt elke tekst in de accountstatusbalk schrijven (inclusief een verborgen ruimte), de status "online" of "offline" verandert niet.

Wat zijn de problemen met het null-teken in het programmeren?

Je moet ze niet gebruiken in je code als je het niet wilt verpesten. Als je een teken moet gebruiken voor opslag of uitvoer, schrijf het dan naar een variabele of naar de uitvoer met een Unicode-code. Waarom is het beter om het niet te gebruiken? Hier is een voorbeeld voor u:

Zoals je kunt zien, hebben we een variabele gedeclareerd die spaties in de naam heeft, wat Python verbiedt. Tegelijkertijd waarschuwt PyCharm dat er iets mis is met deze variabele:

Niet alleen overtreedt u de regels van de taal, u plaatst ook een spaak in uw wielen: om toegang te krijgen tot een variabele, moet u de naam handmatig kopiëren en plakken. Als je een project voor jezelf doet en je leven wilt compliceren, kun je dergelijke ruimtes gebruiken, maar als je aan een serieus project werkt, probeer dit niet eens te doen, anders zul je in de problemen komen.

Kan een speciaal teken de lay-out verbreken?

In theorie is dit mogelijk op voorwaarde dat de lay-out scheef wordt gedaan of slechte patronen erft. Het is beter om dergelijke tekens niet te gebruiken in de lay-out, als u dat niet wilt als u niet wilt dat alles op een dag wordt afgebroken.

Is het mogelijk om deze symbolen te gebruiken voor hacking?

Technisch, een van de controle tekens - '\0 ' - kan worden gebruikt om het systeem te hacken door middel van een programma geschreven in C. Een null terminator geeft aan het programma dat de lijn is beëindigd, en kwaadaardige code kan worden geschreven na de terminator. Maar dit is erg moeilijk, want ten eerste, je nodig hebt om een programma dat incorrect verwerkt inkomende lijnen te vinden, en dan kunt u ook kwaadaardige code uit het geheugen van iemand anders uit te voeren. Ongeveer 15 jaar geleden was het een populaire manier van hacken, nu is het meer als een museum tentoonstelling van hacken.

GESTELDE

Als ik een onzichtbaar teken in Skype zet, is de status dan "offline"?

Nee, U kunt elke tekst in de accountstatusbalk schrijven (inclusief een verborgen ruimte), de status "online" of "offline" verandert niet.

Wat zijn de problemen met het null-teken in het programmeren?

Je moet ze niet gebruiken in je code als je het niet wilt verpesten. Als je een teken moet gebruiken voor opslag of uitvoer, schrijf het dan naar een variabele of naar de uitvoer met een Unicode-code. Waarom is het beter om het niet te gebruiken? Hier is een voorbeeld voor u:

Zoals je kunt zien, hebben we een variabele gedeclareerd die spaties in de naam heeft, wat Python verbiedt. Tegelijkertijd waarschuwt PyCharm dat er iets mis is met deze variabele:

Niet alleen overtreedt u de regels van de taal, u plaatst ook een spaak in uw wielen: om toegang te krijgen tot een variabele, moet u de naam handmatig kopiëren en plakken. Als je een project voor jezelf doet en je leven wilt compliceren, kun je dergelijke ruimtes gebruiken, maar als je aan een serieus project werkt, probeer dit niet eens te doen, anders zul je in de problemen komen.

Kan een speciaal teken de lay-out verbreken?

In theorie is dit mogelijk op voorwaarde dat de lay-out scheef wordt gedaan of slechte patronen erft. Het is beter om dergelijke tekens niet te gebruiken in de lay-out, als u dat niet wilt als u niet wilt dat alles op een dag wordt afgebroken.

Is het mogelijk om deze symbolen te gebruiken voor hacking?

Technisch, een van de controle tekens - '\0 ' - kan worden gebruikt om het systeem te hacken door middel van een programma geschreven in C. Een null terminator geeft aan het programma dat de lijn is beëindigd, en kwaadaardige code kan worden geschreven na de terminator. Maar dit is erg moeilijk, want ten eerste, je nodig hebt om een programma dat incorrect verwerkt inkomende lijnen te vinden, en dan kunt u ook kwaadaardige code uit het geheugen van iemand anders uit te voeren. Ongeveer 15 jaar geleden was het een populaire manier van hacken, nu is het meer als een museum tentoonstelling van hacken.