Sinds de eerste persoon 5318008 op een rekenmachine heeft geschreven, hebben nerds geheime nummers verborgen op uw pc en ze gebruikt om te onderhandelen over geheime handshakes tussen applicaties en bestanden. Vandaag bekijken we een paar van de leukere voorbeelden.
De meeste programmeertalen gebruiken een 32-bits geheel getal om bepaalde soorten gegevens achter de schermen weer te geven - intern wordt het nummer opgeslagen in RAM of gebruikt door de CPU als 32 enen en nullen, maar in de broncode zou het worden uitgeschreven in een regulier decimaalformaat, of als hexadecimaal formaat, dat de getallen 0 tot en met 9 en de letters A tot en met F gebruikt.
Wanneer het besturingssysteem of een applicatie het type bestand wil bepalen, kan deze naar het begin van het bestand kijken voor een speciale markering die het type van het bestand aangeeft. Een PDF-bestand kan bijvoorbeeld beginnen met de hexadecimale waarde 0x255044462D312E33, wat overeenkomt met "% PDF-1.3" in ASCII-indeling, of een ZIP-bestand begint met 0x504B, wat gelijk is aan "PK", die afstamt van het oorspronkelijke PKZip-hulpprogramma. Door naar deze 'handtekening' te kijken, kan een bestandstype gemakkelijk worden geïdentificeerd, zelfs zonder andere metadata.
Gecompileerde Java Class-bestanden beginnen met CAFEBABE
Het Linux-hulpprogramma "bestand" kan worden gebruikt vanaf de terminal om het type te bepalen van een bestand - in feite leest het de magische getallen uit een bestand genaamd "magie".
Wanneer een toepassing een functie wil aanroepen, kan hij waarden doorgeven aan die functie met behulp van standaardsoorten zoals integer, die kunnen worden uitgedrukt in de broncode in hexadecimale indeling. Dit geldt met name voor constanten, dat zijn identificatiegegevens die zijn gedefinieerd met door mensen leesbare namen zoals AUTOSAVE_INTERVAL, maar ze verwijzen naar werkelijke waarden voor geheel (of ander) type. Dus in plaats van dat een programmeur een waarde van 60 uittypt telkens wanneer deze de functie in de broncode aanroept, kunnen ze de constante AUTOSAVE_INTERVAL gebruiken voor een betere leesbaarheid. (Constanten worden meestal gemakkelijk herkend omdat ze in hoofdletters worden geschreven.)
Al deze voorbeelden kunnen vallen onder de term Magic Numbers, omdat ze een specifiek hexadecimaal getal kunnen hebben om een functie of bestandstype correct te laten werken ... als de waarde niet klopt, werkt deze niet. En wanneer een programmeur wat plezier wil hebben, kunnen ze deze waarden definiëren met hexadecimale getallen die iets in het Engels spellen, ook wel hexspeak genoemd.
Elke AppleScript eindigt met FADEDEAD
Als u snel de Linux-broncode bekijkt, ziet u dat voor de aanroep van het systeem _reboot () onder Linux een "magische" variabele moet worden doorgegeven die gelijk is aan het hexadecimale getal 0xfee1dead. Als iets probeert die functie aan te roepen zonder eerst die magische waarde door te geven, wordt er gewoon een fout geretourneerd.
De GUID (globally unique identifier) voor een BIOS-opstartpartitie in het GPT-partitioneringsschema is 21686148-6449-6E6F-744E -656564454649, dat de ASCII-reeks "Hah! IdontNeedEFI" vormt, een toespeling op het feit dat GPT normaal gesproken zou worden gebruikt op computers die het BIOS met UEFI vervangen, maar dat hoeft niet noodzakelijk.
Microsoft verborg ogenschijnlijk 0x0B00B135 in hun Hyper-V virtuele machine ondersteunende broncode ingediend bij Linux, veranderden ze de waarde in 0xB16B00B5 en uiteindelijk schakelden ze over naar decimaal voordat het helemaal uit de broncode werd verwijderd.
Nog meer leuke voorbeelden zijn:
Voorbeelden voor jezelf bekijken
Als een toegevoegd voorbeeld, herstelafbeeldingen voor Android-telefoons zoals ClockworkMod start met "ANDROID!" indien gelezen in ASCII-formaat.
Opmerking:
ga niets veranderen terwijl u rondkijkt. Hex-editors kunnen dingen breken!
Waarom werd 80 gekozen als de standaard HTTP-poort en 443 als de standaard HTTPS-poort?
Hoewel velen van ons bekend zijn met verschillende poorten die worden toegewezen voor specifieke doeleinden of gebruik, weten we misschien niet de specifieke reden waarom ze werden gekozen. De SuperUser Q & A-post van vandaag biedt de antwoorden op de vragen van een nieuwsgierige lezer. De vraag- en antwoordsessie van vandaag komt tot ons dankzij SuperUser - een onderdeel van Stack Exchange, een community-driven groep van Q & A-websites.
Het optische station verwijderen uit een oudere iMac uit 2007-2009
Of u nu het optische station moet vervangen of het moet vervangen door een SSD-station, hier ziet u hoe u de dvd verwijdert rijden vanaf een oudere iMac. Nadat de optische drive in mijn iMac van 2008 was gestorven, besloot ik deze gewoon helemaal te verwijderen en heb ik daar gewoon een lege schijfruimte, in de hoop op een betere luchtstroom.