phhsnews.com


phhsnews.com / Numéros magiques: les codes secrets que les programmeurs cachent dans votre PC

Numéros magiques: les codes secrets que les programmeurs cachent dans votre PC


Depuis que la première personne a écrit 5318008 sur une calculatrice, les nerds cachent des numéros secrets à l'intérieur de votre PC et les utilisent négocier des poignées de main secrètes entre applications et fichiers. Voici quelques-uns des exemples les plus amusants:

Qu'est-ce qu'un numéro magique?

La plupart des langages de programmation utilisent un type entier 32 bits pour représenter certains types de données en arrière-plan - en interne, le numéro est stocké en RAM ou utilisé par la CPU comme 32 uns et zéros, mais dans le code source, il serait écrit en format décimal régulier, ou en format hexadécimal, qui utilise les chiffres 0 à 9 et les lettres A à F.

Lorsque le système d'exploitation ou une application veut déterminer le type d'un fichier, il peut regarder au début du fichier un marqueur spécial qui indique le type du fichier. Par exemple, un fichier PDF peut commencer avec la valeur hexadécimale 0x255044462D312E33, qui est égale à "% PDF-1.3" au format ASCII, ou un fichier ZIP commençant par 0x504B, ce qui correspond à "PK", qui descend de l'utilitaire PKZip original. En regardant cette "signature", un type de fichier peut être facilement identifié même sans aucune autre méta-donnée

Les fichiers Java Class compilés commencent par CAFEBABE

Le "fichier" utilitaire Linux peut être utilisé depuis le terminal pour déterminer le type d'un fichier - en fait, il lit les nombres magiques à partir d'un fichier appelé "magie".

Lorsqu'une application veut appeler une fonction, elle peut passer des valeurs à cette fonction en utilisant des types standards comme entier, qui peut être exprimé le code source au format hexadécimal. Cela est particulièrement vrai pour les constantes, qui sont des identificateurs définis avec des noms lisibles par un humain, tels que AUTOSAVE_INTERVAL, mais ils correspondent à des valeurs entières réelles (ou d'autres types). Ainsi, au lieu d'un programmeur tapant une valeur comme 60 chaque fois qu'ils appellent la fonction dans le code source, ils pourraient utiliser la constante AUTOSAVE_INTERVAL pour une meilleure lisibilité. (Les constantes sont généralement facilement reconnaissables car elles sont écrites en majuscules.)

Tous ces exemples peuvent appartenir au terme Magic Numbers car ils peuvent nécessiter un nombre hexadécimal spécifique pour qu'une fonction ou un type de fichier fonctionne correctement. ... si la valeur n'est pas correcte, elle ne fonctionnera pas. Et quand un programmeur veut s'amuser un peu, ils peuvent définir ces valeurs en utilisant des nombres hexadécimaux qui épellent quelque chose en anglais, autrement dit hexspeak.

Fun With Magic Numbers: Quelques exemples notables

Chaque AppleScript se termine par FADEDEAD

Si vous jetez un coup d'œil dans le code source de Linux, vous verrez que l'appel système _reboot () sous Linux nécessite la transmission d'une variable "magic" qui équivaut au nombre hexadécimal 0xfee1dead. Si quelque chose tentait d'appeler cette fonction sans passer d'abord par cette valeur magique, elle retournerait simplement une erreur

. Le GUID (identifiant unique global) pour une partition de démarrage BIOS dans le schéma de partitionnement GPT est 21686148-6449-6E6F-744E -656564454649, qui constitue la chaîne ASCII "Hah! IdontNeedEFI", une allusion au fait que GPT serait normalement utilisé dans les ordinateurs qui ont remplacé le BIOS avec UEFI, mais il ne doit pas nécessairement être.

Microsoft célèbre caché 0x0B00B135 dans leur code source supportant la machine virtuelle Hyper-V soumise à Linux, ils ont changé la valeur en 0xB16B00B5, et finalement ils l'ont commutée en décimal avant qu'elle ne soit complètement supprimée du code source.

Plus d'exemples amusants:

  • 0xbaaaaaad - utilisé par iOS crash logging pour indiquer qu'un journal est une pile de tout le système.
  • 0xbad22222 - utilisé par iOS crash logging pour indiquer qu'une application VoIP a été tué par iOS parce qu'il s'est mal comporté.
  • 0x8badf00d - (Ate Bad Food) utilisé par iOS crash l ogs pour indiquer qu'une application a pris trop de temps pour faire quelque chose et a été détruite par le délai d'attente du chien de garde.
  • 0xdeadfa11 - (Dead Fall) utilisé par iOS crash logging lorsqu'une application est forcée par un utilisateur.
  • 0xDEADD00D - used par Android pour indiquer un abandon de machine virtuelle.
  • 0xDEAD10CC (Dead Lock) utilisé par iOS crash logging lorsqu'une application verrouille une ressource en arrière-plan
  • 0xBAADF00D (Bad Food) utilisé par la fonction LocalAlloc dans Windows pour le débogage.
  • 0xCAFED00D (Cafe mec) utilisé par Java pack200 compression
  • 0xCAFEBABE (Cafe babe) utilisé par Java comme identifiant pour les fichiers de classe compilés
  • 0x0D15EA5E (Maladie) utilisé par Nintendo sur le Gamecube et Wii pour indiquer un démarrage normal.
  • 0x1BADB002 (1 mauvais démarrage ) utilisé par la spécification multiboot sous la forme d'un nombre magique
  • 0xDEADDEAD - utilisé par Windows pour indiquer un crash de débogage initié manuellement, également appelé Blue Screen of Death.

Ce ne sont pas les seuls qui existent, bien sûr , mais juste une courte liste d'exemples qui semblaient amusants. En savoir plus? Dites-nous dans les commentaires.

Voir des exemples pour vous-même

Vous pouvez voir d'autres exemples en ouvrant un éditeur hexadécimal et en ouvrant un certain nombre de types de fichiers. Il existe de nombreux éditeurs hexadécimaux freeware disponibles pour Windows, OS X ou Linux - assurez-vous juste que vous êtes prudent lors de l'installation freeware pour ne pas être infecté par des logiciels espions ou crapware.

Comme exemple, des images de récupération pour les téléphones Android comme ClockworkMod commencez par "ANDROID!" si vous lisez au format ASCII.

Note: ne changez rien lorsque vous regardez autour de vous. Les éditeurs hexadécimaux peuvent casser des choses!


Pourquoi ne puis-je pas me connecter à des jeux LAN sur mon réseau domestique? Les jeux LAN

Pourquoi ne puis-je pas me connecter à des jeux LAN sur mon réseau domestique? Les jeux LAN

Cher How-To Geek, J'ai suivi votre guide de la série Minecraft avec beaucoup de succès, mais j'ai un peu d'un hoquet. Mon fils et moi l'avons traversé ensemble mais quand nous sommes arrivés aux leçons 14 et 15 (celles axées sur le multijoueur local et le multijoueur sur Internet), j'ai découvert que je ne pouvais pas me connecter à l'ordinateur de mon fils via le LAN.

(how-to)

Comment accélérer votre expérience Minecraft avec Minecraft Land Generator

Comment accélérer votre expérience Minecraft avec Minecraft Land Generator

Pendant que vous explorez votre univers Minecraft, le jeu consacre énormément de ressources à sa création autour de vous. Générer ces pièces à l'avance diminue considérablement la charge de ressources sur votre CPU tout en jouant le jeu, ce qui conduit à un jeu plus lisse avec moins de décalage. Continuez à lire pendant que nous vous montrons comment préremplir votre carte du monde pour un jeu plus rapide.

(how-to)