Hexspeak

Hexspeak is a novelty form of variant English spelling using the hexadecimal digits. Created by programmers as memorable magic numbers, hexspeak words can serve as a clear and unique identifier with which to mark memory or data.

Hexadecimal notation represents numbers using the 16 digits 0123456789ABCDEF. Using only the letters ABCDEF it is possible to spell several words. Further words can be made by treating some of the decimal numbers as letters - the digit "0" can represent the letter "O", and "1" can represent the letters "I" or "L". Less commonly, "5" can represent "S", "7" represent "T", "12" represent "R" and "6" or "9" can represent "G" or "g", respectively. Numbers such as 2, 4 or 8 can be used in a manner similar to leet or rebuses; e.g. the word "defecate" can be expressed either as DEFECA7E or DEFEC8.

Notable magic numbers

[edit]

Many computer processors, operating systems, and debuggers make use of magic numbers, especially as a magic debug value.

Code Decimal Description
0x0000000FF1CE 1044942 ("office") is used as the last part of product codes (GUID) for Microsoft Office components (visible in registry under the HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall registry key).
0x00BAB10C 12235020 ("uber (ooba) block") is used as the magic number for the ZFS uberblock.
0x1BADB002 464367618 ("1 bad boot"[1]) Multiboot header magic number.[2]
0x4B1D 19229 ("forbid") was a password in some calibration consoles for developers to peer deeper into control registers outside the normal calibration memory range.[citation needed]
0x50FFC001 1358938113 ("soff[t] cool") was used as a macintosh debug value to help identify nil references, and later to cause bus failures.[3][4]
0x8BADF00D 2343432205 ("ate bad food") is used by Apple in iOS crash reports, when an application takes too long to launch, terminate, or respond to system events.[5]
0xABADBABE 2880289470 ("a bad babe") was/is used by Microsoft's Windows 7 to trigger a debugger break-point, probably when a USB device is attached[6]
0xB105F00D 2969956365 ("BIOS food") is the value of the low bytes of last four registers on ARM PrimeCell compatible components (the component_id registers), used to identify correct behaviour of a memory-mapped component.
0xB16B00B5 2976579765 ("big boobs") was required by Microsoft's Hyper-V hypervisor to be used by Linux guests as their "guest signature".[7] One proposal suggested changing it to 0x0DEFACED ("defaced"),[8] but it was instead initially changed to decimal and then replaced entirely.[9]
0x0B00B135 184594741 ("boobies") was likewise required by Microsoft's Hyper-V hypervisor to be used by a user of XEN as their user id.[10] It was removed on January 22, 2010.[11]
0xBAAAAAAD 3131746989 ("baaaaaad") is used by Apple's iOS exception report to indicate that the log is a stackshot of the entire system, not a crash report.[12]
0xBAADF00D 3131961357 ("bad food") is used by Microsoft's LocalAlloc(LMEM_FIXED) to indicate uninitialised allocated heap memory when the debug heap is used.[13]
0xBAD22222 3134333474 ("bad too repeatedly") is used by Apple's iOS exception log to indicate that a VoIP application has been terminated by iOS because it resumed too frequently.[12]
0xBADDCAFE 3135097598 ("bad cafe") is used by Libumem to indicate uninitialized memory area.
0xCAFEB0BA 3405689018 ("cafe boba") is used by datp as canned return value for QKit MFCC keyword detection for Host GUI development since his colleague likes coffee (and maybe boba, too).[citation needed]
0xB0BABABE 2965027518 ("boba babe") is used by pton as Host GUI Ack to QKit MFCC keyword detection response.
0xBEEFBABE 3203381950 ("beef babe") is used by the 1997 video game Frogger to detect a stack buffer overflow.
0xB000 0xDEAD 2952847021 ("boo dead") was displayed by PA-RISC based HP 3000 and HP 9000 computers upon encountering a "system halt" (aka "low level halt").[14]
0xC00010FF 3221229823 ("cool off") is used by Apple in iOS crash reports, when application was killed in response to a thermal event.[5]
C15C:0D06:F00D 212601099710477 ("cisco dog food") used in the IPv6 address of www.cisco.com on World IPv6 Day. "Dog food" refers to Cisco eating its own dog food with IPv6.
0xCAFEBABE 3405691582 ("cafe babe") is used by Plan 9's libc as a poison value for memory pools.[15] It is also used by Mach-O to identify Universal object files, and by the Java programming language to identify Java bytecode class files. It was originally created by NeXTSTEP developers as a reference to the baristas at Peet's Coffee & Tea.[4]
0xCAFED00D 3405697037 ("cafe dude") is used by Java as a magic number for their pack200 compression.[16]
0xCEFAEDFE 3472551422 ("face feed") is used by Mach-O to identify flat (single architecture) object files. In little endian this reads FEEDFACE, "Feed Face".
0x0D15EA5E 219540062 ("zero disease") is a flag that indicates regular boot on the GameCube and Wii consoles.[17][18]
0xDABBAD00 3669732608 ("dabba doo") is the name of a blog on computer security.[19]
0xDEAD2BAD 3735890861 ("dead too bad") was used to mark allocated areas of memory that had not yet been initialised on Sequent Dynix/ptx systems.
0xDEADBAAD 3735927469 ("dead bad") is used by the Android libc abort() function when native heap corruption is detected.
0xDEADBABE 3735927486 ("dead babe") is used by IBM Jikes RVM as a sanity check of the stack of the primary thread.[20]
0xDEADBEAF 3735928495 ("dead beaf") is part of the signature code of Jazz Jackrabbit 2 tileset files.[21] Level files have less room for their signatures and use 0xBABE ("babe") instead.[22] It is also the header of campaign gamesaves used in the Halo game series.
deadbeef-dead-beef-dead-beef00000075 295990755083049101712519384016336453749 ("dead beef") is the GUID assigned to hung/dead virtual machines in Citrix XenServer.
0xDEADBEEF 3735928559 ("dead beef") is frequently used to indicate a software crash or deadlock in embedded systems. 0xDEADBEEF was originally used to mark newly allocated areas of memory that had not yet been initialized—when scanning a memory dump, it is easy to see the 0xDEADBEEF. It is used by IBM RS/6000 systems, Mac OS on 32-bit PowerPC processors, and the Commodore Amiga as a magic debug value. On Sun Microsystems' Solaris, it marks freed kernel memory. The DEC Alpha SRM console has a background process that traps memory errors, identified by PS as "BeefEater waiting on 0xdeadbeef".[23]
0xDEADC0DE 3735929054 ("dead code") is used as a marker in OpenWrt firmware to signify the beginning of the to-be created jffs2 filesystem at the end of the static firmware.
0xDEADDEAD 3735936685 ("dead dead") is the bug check (STOP) code displayed when invoking a Blue Screen of Death either by telling the kernel via the attached debugger, or by using a special keystroke combination.[24] This is usually seen by driver developers, as it is used to get a memory dump on Windows NT based systems. An alternative to 0xDEADDEAD is the bug check code 0x000000E2,[25] as they are both called MANUALLY_INITIATED_CRASH as seen on the Microsoft Developer Network.
0xDEADD00D 3735932941 ("dead dude") is used by Android in the Dalvik virtual machine to indicate a VM abort.
0xDEADFA11 3735943697 ("dead fall" or "dead fail") is used by Apple in iOS crash reports, when the user force quits an application.[5]
0xDEAD10CC 3735883980 ("dead lock") is used by Apple in iOS crash reports, when an application holds on to a system resource while running in the background.[5]
0xDEADFEED 3735944941 ("dead feed") is used by Apple in iOS crash reports, when a timeout occurs spawning a service.
0xDECAFBAD 3737844653 ("decaf bad") is often found in coding as an easily recognized magic number when hex dumping memory.
0xDEFEC8ED 3741239533 ("defecated") is the magic number for OpenSolaris core dumps.[26]
0xD0D0CACA 3503344330 ("doo-doo caca") is the uninitialized value of GPIO values on the Nvidia Tegra X1.[citation needed]
0xE011CFD0 3759263696 ("docfile0") is used as a magic number for Microsoft Office files. In little endian this reads D0CF11E0, "docfile0".[27]
0xF0CACC1A 4039822362 ("focaccia") the 8-letter hexspeak word in the dictionary with the highest scrabble score (scoring 17 in the English version).
0xF1AC 61868 ("FLAC") is used as the Free Lossless Audio Codec's audio format tag.[28]
face:b00c 4207849484 ("facebook") used in the IPv6 addresses of www.facebook.com.[29]
0xFACEFEED 4207869677 ("face feed") is used by Alpha servers running Windows NT. The Alpha Hardware Abstraction Layer (HAL) generates this error when it encounters a hardware failure.[30]
0xFBADBEEF 4222467823 ("bad beef") is used in the WebKit and Blink layout engines to indicate a known, unrecoverable error such as out of memory.[31]
0xFEE1DEAD 4276215469 ("feel dead") is used as a magic number in the Linux reboot system call.[32] Other magic numbers to reboot the machine are 672274793, 85072278, 369367448 and 537993216 which in hex translate respectively to 0x28121969, 0x5121996, 0x16041998 and 0x20112000, the birth dates of Linus Torvalds and his three daughters.[33]
0xFEEDBABE 4276992702 ("feed babe") is the magic number used to indicate the beginning of an OpenRG flash partition descriptor.[34]
0xFEEDC0DE 4276994270 ("feed code") is used as filling pattern by the OS-9 operating system when initializing its RAM.[35]
0xFEEDFACECAFEBEEF 18369614221190020847 ("feed face cafe beef") is the magic number used to send as a password via serial wire to rescue some NXP created controller devices from boot failures.[36][37][38]
0xFFBADD11 4290436369 ("bad DLL"): Used by Windows internally.[citation needed]
0xF00DBABE 4027431614 ("food babe"): The Ledger Nano hardware cryptocurrency wallet used this magic number in the process of signing that was exploited.[39]

Alternative letters

[edit]

Many computer languages require that a hexadecimal number be marked with a prefix or suffix (or both) to identify it as a number. Sometimes the prefix or suffix is used as part of the word.

  • The C programming language uses the "0x" prefix to indicate a hexadecimal number, but the "0x" is usually ignored when people read such values as words. C also allows the suffix L to declare an integer as long, or LL to declare it as long long, making it possible to write "0xDEADCELL" (dead cell). In either case a U may also appear in the suffix to declare the integer as unsigned, making it possible to write "0xFEEDBULL" (feed bull).
  • In the (non-Unix) Intel assembly language, hexadecimal numbers are denoted by a "h" suffix, making it possible to write "0beach" (beach). Note that numbers in this notation that begin with a letter must be prefixed with a zero to distinguish them from variable names. A Unix-style assembler uses C language convention instead (but non-Unix-style assemblers are also available on x86 Unix-type OSes).
  • Visual Basic and all previous Microsoft BASICs such as QuickBasic, GWBasic, BASICA and ColorBASIC, use a &H prefix, for example, "&HEADED" (headed) and "&HADC0FFEE" (had coffee).
  • In Pascal and several assembly languages (6502,6809,...), hexadecimal numbers are denoted by a "$" prefix. This allows for words starting with the letter "S", for example "$EED" (seed).
  • In B3-34 programmable calculators, an alternative hexadecimal alphabet was used, where the symbols "−", "L", "C", "Г", "E", and " " (space) were used instead of Latin letters. Using these, it was possible to display messages like "EГГ0Г" (error).

PlayStation 3 RSX

[edit]

In reverse engineering aspects of the Sony PlayStation 3, a number of hexspeak codes were found to either trigger, affect or were present in aspects of communicating to and through the PlayStation 3 Hypervisor in communication to its GPU, the RSX Reality Synthesizer.[40]

These projects were largely born out of PS3 homebrew operating on the PS3's OtherOS which allowed Linux to be installed, initially with extremely limited GPU access.

Code Description
0x1337BEEF, 0x1337F001, 0x1337BEEF Found as part of the RSX Descriptor.
0xF00DBEEF The RSX Semaphore Value
0x1337C0D3 and 0x1337BABE Begin semaphore value and pad, from the system.[41]

See also

[edit]

References

[edit]
  1. ^ "Multiboot mailing list archive".
  2. ^ "Multiboot specifications".
  3. ^ "Macintosh Technical Notes 1992" (PDF).
  4. ^ a b "Why Cafebabe". Artima.com. Retrieved 2009-10-01.
  5. ^ a b c d "Technical Note TN2151: Understanding and Analyzing iPhone OS Application Crash Reports". Archived from the original on 2012-07-05.
  6. ^ "Who's 0xabadbabe and why?". 28 October 2011.
  7. ^ "Staging: hv: vmbus_drv: Move the content of hv.h to hyperv_vmbus.h".
  8. ^ "hv: Change the guest ID value".
  9. ^ "Drivers: Hv: Cleanup the guest ID computation · torvalds/Linux@83ba0c4". GitHub.
  10. ^ "Staging: hv: add the Hyper-V virtual bus". GitHub.
  11. ^ "Staging: hv: Remove xen legacy code and check for Hyper-V". GitHub.
  12. ^ a b "Apple Developer Documentation".
  13. ^ "Win32 Debug CRT Heap Internals".
  14. ^ "MPE Error Messages (page 30-66)" (PDF).
  15. ^ "9front system".
  16. ^ "Pack200: A Packed Class Deployment Format For Java Applications". Retrieved 2010-11-03.
  17. ^ "Yet Another Gamecube Documentation: Dolphin-OS Globals".
  18. ^ "Wiibrew: Memory Map".
  19. ^ "0xdabbad00.com".
  20. ^ "DEADBABE sanity check". Retrieved 2009-10-01.[permanent dead link]
  21. ^ "J2T File Format".
  22. ^ "J2L File Format".
  23. ^ "DEADBEEF". Jargon File. Retrieved 2009-10-01.
  24. ^ "Bug Check 0xDEADDEAD: MANUALLY_INITIATED_CRASH, MSDN". msdn.microsoft.com. 2009-10-01. Archived from the original on October 2, 2009. Retrieved 2009-10-13.
  25. ^ "Bug Check 0xE2: MANUALLY_INITIATED_CRASH, MSDN". msdn.microsoft.com. 2009-10-01. Archived from the original on July 31, 2009. Retrieved 2009-10-13.
  26. ^ "Opensolaris header line 45 for 0xDEFEC8ED". src.opensolaris.org. Archived from the original on 2011-09-29. Retrieved 2011-07-12.
  27. ^ "Documents That Are Supported by the Office Filter".
  28. ^ "Audio Subtype GUIDs - Win32 apps". Microsoft. 2018-05-31. Retrieved 2021-03-06.
  29. ^ "Facebook casts a hex with self-referential IPv6". Retrieved 2017-10-21.
  30. ^ "0xFACEFEED". Technet. Microsoft. 2006-11-01. Retrieved 2009-10-01.
  31. ^ "Chromium Assertions.h line 133". Retrieved 2014-03-27.
  32. ^ "reboot.h « linux « uapi « include - kernel/git/torvalds/linux.git - Linux kernel source tree". git.kernel.org. Retrieved 2022-11-10.
  33. ^ Isaac; Isaac (2015-08-04). "Patricia Torvalds: the successor to her father's legacy?". Linux Adictos. Retrieved 2022-11-10.
  34. ^ "OpenWrt-Devel: PATCH - add suport [sic] for Option GlobeSurfer 3". Archived from the original on 2016-03-29. Retrieved 2015-12-14.
  35. ^ "OS-9 for 68K Processors OEM Installation Manual". January 2008.
  36. ^ "NXP Application Note: Qorivva Boot Assist Module Application" (PDF).
  37. ^ "NXP Community: Censored Device - Password Known". 30 October 2014.
  38. ^ "NXP Community: RAppID boot loader error". 25 June 2014.
  39. ^ "LiveOverflow@YouTube: Hardware Wallet Hack: Ledger Nano S". YouTube. 28 December 2018. Archived from the original on 2021-12-12.
  40. ^ "RSXFIFOCommands - PS3 Developer Wiki". psdev wiki. 2014-05-20. Retrieved 2017-11-01.
  41. ^ "rpc3/sys_rsx.cpp". RPCS3 on github. 2017-10-28. Retrieved 2017-11-01.
[edit]