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!


Qu'est-ce que Microsoft .NET Framework et pourquoi est-il installé sur mon PC?

Qu'est-ce que Microsoft .NET Framework et pourquoi est-il installé sur mon PC?

Si vous utilisez Windows depuis très longtemps, vous avez probablement déjà entendu parler de Microsoft. NET, probablement parce qu'une application vous a demandé de l'installer, ou vous l'avez remarqué dans votre liste de programmes installés. Sauf si vous êtes un développeur, vous n'avez pas besoin de beaucoup de connaissances pour l'utiliser.

(how-to)

Comment ouvrir et créer des fichiers Zip sur un appareil Android

Comment ouvrir et créer des fichiers Zip sur un appareil Android

Avec tout ce que les smartphones et les tablettes peuvent faire de nos jours, nous avons tendance à y mettre toutes sortes de fichiers. Être capable de compresser des fichiers avant de les transférer sur et hors de votre appareil faciliterait les choses. Nous vous avions montré comment ouvrir les fichiers zip sur un iPhone ou un iPad.

(how-to)