Hexspeak
Hexspeak, like leetspeak, 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
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 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall registry key). |
0x00BAB10C | 12235020 | ("über (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'den'") was a password in some calibration consoles for developers to peer deeper into control registers outside the normal calibration memory range. |
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.[3] |
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[4] |
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".[5] One proposal suggested changing it to 0x0DEFACED ("defaced").[6] But in actuality, it was initially changed to decimal and then replaced entirely.[7] |
0x0B00B135 | 184594741 | ("boobies") was likewise required by Microsoft's Hyper-V hypervisor to be used by a user of XEN as their user id.[8] It was removed on Jan 22, 2010.[9] |
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.[10] |
0xBAADF00D | 3131961357 | ("bad food") is used by Microsoft's LocalAlloc(LMEM_FIXED) to indicate uninitialised allocated heap memory when the debug heap is used.[11] |
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.[10] |
0xBADDCAFE | 3135097598 | ("bad cafe") is used by Libumem to indicate uninitialized memory area. |
0xBEEFBABE | 3203381950 | ("beef babe") is used by Frogger (1997 video game) to detect a stack buffer overflow. |
0xB000 0xDEAD | 2952847021 | ("boo dead") was displayed by the HP 9000 Model 840 when it crashed. |
0xC00010FF | 3221229823 | ("cool off") is used by Apple in iOS crash reports, when application was killed in response to a thermal event.[3] |
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.[12] 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.[13] |
0xCAFED00D | 3405697037 | ("cafe dude") is used by Java as a magic number for their pack200 compression.[14] |
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 Nintendo GameCube and Wii consoles.[15][16] |
0xDABBAD00 | 3669732608 | ("dabba doo") is the name of a blog on computer security.[17] |
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.[18] |
0xDEADBEAF | 3735928495 | ("dead beaf") is part of the signature code of Jazz Jackrabbit 2 tileset files.[19] Level files have less room for their signatures and use 0xBABE ("babe") instead.[20] 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. On OpenVMS running on Alpha processors, 0xDEADBEEF can be seen by pressing CTRL-T. The DEC Alpha SRM console has a background process that traps memory errors, identified by PS as "BeefEater waiting on 0xdeadbeef".[21] |
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.[22] 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 ,[23] 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.[3] |
0xDEAD10CC | 3735883980 | ("dead lock") is used by Apple in iOS crash reports, when application holds on to a system resource while running in the background.[3] |
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.[24] |
0xD0D0CACA | 3503344330 | ("doo-doo caca") is the uninitialized value of GPIO values on the Nvidia Tegra X1 |
0xE011CFD0 | 3759263696 | ("docfile0") is used as a magic number for Microsoft Office files. In little endian this reads D0CF11E0 , "docfile0".[25] |
face:b00c | 4207849484 | ("facebook") used in the IPv6 addresses of www.facebook.com.[26] |
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.[27] |
0xFBADBEEF | 4222467823 | ("bad beef") is used in the WebKit and Blink layout engines to indicate a known, unrecoverable error such as out of memory.[28] |
0xFEE1DEAD | 4276215469 | ("feel dead") is used as a magic number in the Linux reboot system call.[29] |
0xFEEDBABE | 4276992702 | ("feed babe") is the magic number used to indicate the beginning of an OpenRG flash partition descriptor.[30] |
0xFEEDC0DE | 4276994270 | ("feed code") is used as filling pattern by the OS-9 Operating System when initializing its RAM.[31] |
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.[32][33][34] |
0xFFBADD11 | 4290436369 | ("bad DLL"): Used by Windows internally. |
Alternative letters
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 aslong long
, making it possible to write "0xDEADCELL" (dead cell). In either case a U may also appear in the suffix to declare the integer asunsigned
, 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 Б3-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
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.[35]
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.[36] |
See also
References
- "Multiboot mailing list archive".
- "Multiboot specifications".
- "Technical Note TN2151: Understanding and Analyzing iPhone OS Application Crash Reports". Archived from the original on 2012-07-05.
- "Who's 0xabadbabe and why?".
- "Staging: hv: vmbus_drv: Move the content of hv.h to hyperv_vmbus.h".
- "hv: Change the guest ID value".
- https://github.com/torvalds/linux/commit/83ba0c4f3f317270dae5597d8044b795d119914c
- "Staging: hv: add the Hyper-V virtual bus".
- "Staging: hv: Remove xen legacy code and check for Hyper-V".
- https://developer.apple.com/library/ios/technotes/tn2151/_index.html
- "Win32 Debug CRT Heap Internals".
- "9front system".
- "Why Cafebabe". Artima.com. Retrieved 2009-10-01.
- "Pack200: A Packed Class Deployment Format For Java Applications". Retrieved 2010-11-03.
- "Yet Another Gamecube Documentation: Dolphin-OS Globals".
- "Wiibrew: Memory Map".
- "0xdabbad00.com".
- "DEADBABE sanity check". Retrieved 2009-10-01.
- "J2T File Format".
- "J2L File Format".
- "Jargon File entry for DEADBEEF". Catb.org. Retrieved 2009-10-01.
- "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.
- "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.
- "Opensolaris header line 45 for 0xDEFEC8ED". src.opensolaris.org. Archived from the original on 2011-09-29. Retrieved 2011-07-12.
- "Documents That Are Supported by the Office Filter".
- "Facebook casts a hex with self-referential IPv6". Retrieved 2017-10-21.
- "Technet article for 0xFACEFEED". Support.microsoft.com. 2006-11-01. Retrieved 2009-10-01.
- "Chromium Assertions.h line 133". Retrieved 2014-03-27.
- "include/linux/reboot.h".
- "OpenWrt-Devel: PATCH - add suport for Option GlobeSurfer 3". Archived from the original on 2016-03-29. Retrieved 2015-12-14.
- "OS-9 for 68K Processors OEM Installation Manual".
- "NXP Application Note: Qorivva Boot Assist Module Application" (PDF).
- "NXP Community: Censored Device - Password Known".
- "NXP Community: RAppID boot loader error".
- "RSXFIFOCommands - PS3 Developer Wiki". psdev wiki. 2014-05-20. Retrieved 2017-11-01.
- "rpc3/sys_rsx.cpp". RPCS3 on github. 2017-10-28. Retrieved 2017-11-01.