Hexspeak

Last updated

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.

Contents

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.

CodeDecimalDescription
0x0000000FF1CE1044942("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).
0x00BAB10C12235020("uber (ooba) block") is used as the magic number for the ZFS uberblock.
0x1BADB002464367618("1 bad boot" [1] ) Multiboot header magic number. [2]
0x4B1D19229("forbid") was a password in some calibration consoles for developers to peer deeper into control registers outside the normal calibration memory range.[ citation needed ]
0x8BADF00D2343432205("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]
0xABADBABE2880289470("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]
0xB105F00D2969956365("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.
0xB16B00B52976579765("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 it was instead initially changed to decimal and then replaced entirely. [7]
0x0B00B135184594741("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 January 22, 2010. [9]
0xBAAAAAAD3131746989("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]
0xBAADF00D3131961357("bad food") is used by Microsoft's LocalAlloc(LMEM_FIXED) to indicate uninitialised allocated heap memory when the debug heap is used. [11]
0xBAD222223134333474("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]
0xBADDCAFE3135097598("bad cafe") is used by Libumem to indicate uninitialized memory area.
0xCAFEB0BA3405689018("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).
0xB0BABABE2965027518("boba babe") is used by pton as Host GUI Ack to QKit MFCC keyword detection response.
0xBEEFBABE3203381950("beef babe") is used by the 1997 video game Frogger to detect a stack buffer overflow.
0xB000 0xDEAD2952847021("boo dead") was displayed by PA-RISC based HP 3000 and HP 9000 computers upon encountering a "system halt" (aka "low level halt"). [12]
0xC00010FF3221229823("cool off") is used by Apple in iOS crash reports, when application was killed in response to a thermal event. [3]
C15C:0D06:F00D212601099710477("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.
0xCAFEBABE3405691582("cafe babe") is used by Plan 9's libc as a poison value for memory pools. [13] 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. [14]
0xCAFED00D3405697037("cafe dude") is used by Java as a magic number for their pack200 compression. [15]
0xCEFAEDFE3472551422("face feed") is used by Mach-O to identify flat (single architecture) object files. In little endian this reads FEEDFACE, "Feed Face".
0x0D15EA5E219540062("zero disease") is a flag that indicates regular boot on the GameCube and Wii consoles. [16] [17]
0xDABBAD003669732608("dabba doo") is the name of a blog on computer security. [18]
0xDEAD2BAD3735890861("dead too bad") was used to mark allocated areas of memory that had not yet been initialised on Sequent Dynix/ptx systems.
0xDEADBAAD3735927469("dead bad") is used by the Android libc abort() function when native heap corruption is detected.
0xDEADBABE3735927486("dead babe") is used by IBM Jikes RVM as a sanity check of the stack of the primary thread. [19]
0xDEADBEAF3735928495("dead beaf") is part of the signature code of Jazz Jackrabbit 2 tileset files. [20] Level files have less room for their signatures and use 0xBABE ("babe") instead. [21] It is also the header of campaign gamesaves used in the Halo game series.
deadbeef-dead-beef-dead-beef00000075295990755083049101712519384016336453749("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". [22]
0xDEADC0DE3735929054("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.
0xDEADDEAD3735936685("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. [23] 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, [24] as they are both called MANUALLY_INITIATED_CRASH as seen on the Microsoft Developer Network.
0xDEADD00D3735932941("dead dude") is used by Android in the Dalvik virtual machine to indicate a VM abort.
0xDEADFA113735943697("dead fall" or "dead fail") is used by Apple in iOS crash reports, when the user force quits an application. [3]
0xDEAD10CC3735883980("dead lock") is used by Apple in iOS crash reports, when an application holds on to a system resource while running in the background. [3]
0xDEADFEED3735944941("dead feed") is used by Apple in iOS crash reports, when a timeout occurs spawning a service.
0xDECAFBAD3737844653("decaf bad") is often found in coding as an easily recognized magic number when hex dumping memory.
0xDEFEC8ED3741239533("defecated") is the magic number for OpenSolaris core dumps. [25]
0xD0D0CACA3503344330("doo-doo caca") is the uninitialized value of GPIO values on the Nvidia Tegra X1.[ citation needed ]
0xE011CFD03759263696("docfile0") is used as a magic number for Microsoft Office files. In little endian this reads D0CF11E0, "docfile0". [26]
0xF0CACC1A4039822362("focaccia") the 8-letter hexspeak word in the dictionary with the highest scrabble score (scoring 17 in the English version).
0xF1AC61868("FLAC") is used as the Free Lossless Audio Codec's audio format tag. [27]
face:b00c4207849484("facebook") used in the IPv6 addresses of www.facebook.com. [28]
0xFACEFEED4207869677("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. [29]
0xFBADBEEF4222467823("bad beef") is used in the WebKit and Blink layout engines to indicate a known, unrecoverable error such as out of memory. [30]
0xFEE1DEAD4276215469("feel dead") is used as a magic number in the Linux reboot system call. [31] 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 date of Linus Torvalds and his three daughters. [32]
0xFEEDBABE4276992702("feed babe") is the magic number used to indicate the beginning of an OpenRG flash partition descriptor. [33]
0xFEEDC0DE4276994270("feed code") is used as filling pattern by the OS-9 operating system when initializing its RAM. [34]
0xFEEDFACECAFEBEEF18369614221190020847("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. [35] [36] [37]
0xFFBADD114290436369("bad DLL"): Used by Windows internally.[ citation needed ]
0xF00DBABE4027431614("food babe"): The Ledger Nano hardware cryptocurrency wallet used this magic number in the process of signing that was exploited. [38]

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.

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. [39]

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.

CodeDescription
0x1337BEEF, 0x1337F001, 0x1337BEEFFound as part of the RSX Descriptor.
0xF00DBEEFThe RSX Semaphore Value
0x1337C0D3 and 0x1337BABEBegin semaphore value and pad, from the system. [40]

See also

Related Research Articles

<span class="mw-page-title-main">Executable and Linkable Format</span> Standard file format for executables, object code, shared libraries, and core dumps.

In computing, the Executable and Linkable Format, is a common standard file format for executable files, object code, shared libraries, and core dumps. First published in the specification for the application binary interface (ABI) of the Unix operating system version named System V Release 4 (SVR4), and later in the Tool Interface Standard, it was quickly accepted among different vendors of Unix systems. In 1999, it was chosen as the standard binary file format for Unix and Unix-like systems on x86 processors by the 86open project.

In mathematics and computing, the hexadecimal numeral system is a positional numeral system that represents numbers using a radix (base) of sixteen. Unlike the decimal system representing numbers using ten symbols, hexadecimal uses sixteen distinct symbols, most often the symbols "0"–"9" to represent values 0 to 9, and "A"–"F" to represent values from ten to fifteen.

In computing, a core dump, memory dump, crash dump, storage dump, system dump, or ABEND dump consists of the recorded state of the working memory of a computer program at a specific time, generally when the program has crashed or otherwise terminated abnormally. In practice, other key pieces of program state are usually dumped at the same time, including the processor registers, which may include the program counter and stack pointer, memory management information, and other processor and operating system flags and information. A snapshot dump is a memory dump requested by the computer operator or by the running program, after which the program is able to continue. Core dumps are often used to assist in diagnosing and debugging errors in computer programs.

In software development, Make is a build automation tool that builds executable programs and libraries from source code by reading files called makefiles which specify how to derive the target program. Though integrated development environments and language-specific compiler features can also be used to manage a build process, Make remains widely used, especially in Unix and Unix-like operating systems.

INT is an assembly language instruction for x86 processors that generates a software interrupt. It takes the interrupt number formatted as a byte value.

<span class="mw-page-title-main">RGBA color model</span> RGB color model with an opacity channel

RGBA stands for red green blue alpha. While it is sometimes described as a color space, it is actually a three-channel RGB color model supplemented with a fourth alpha channel. Alpha indicates how opaque each pixel is and allows an image to be combined over others using alpha compositing, with transparent areas and anti-aliasing of the edges of opaque regions.

In computer programming, a magic number is any of the following:

Dot-decimal notation is a presentation format for numerical data. It consists of a string of decimal numbers, using the full stop (dot) as a separation character.

cmp (Unix)

In computing, cmp is a command-line utility on Unix and Unix-like operating systems that compares two files of any type and writes the results to the standard output. By default, cmp is silent if the files are the same; if they differ, the byte and line number at which the first difference occurred is reported. The command is also available in the OS-9 shell.

vmlinux Executable file containing the Linux kernel

vmlinux is a statically linked executable file that contains the Linux kernel in one of the object file formats supported by Linux, which includes Executable and Linkable Format (ELF) and Common Object File Format (COFF). The vmlinux file might be required for kernel debugging, symbol table generation or other operations, but must be made bootable before being used as an operating system kernel by adding a multiboot header, bootsector and setup routines.

<span class="mw-page-title-main">Source-code editor</span> Text editor specializing in software code

A source-code editor is a text editor program designed specifically for editing source code of computer programs. It may be a standalone application or it may be built into an integrated development environment (IDE).

In computer programming, a sigil is a symbol affixed to a variable name, showing the variable's datatype or scope, usually a prefix, as in $foo, where $ is the sigil.

Interix was an optional, POSIX-conformant Unix subsystem for Windows NT operating systems. Interix was a component of Windows Services for UNIX, and a superset of the Microsoft POSIX subsystem. Like the POSIX subsystem, Interix was an environment subsystem for the NT kernel. It included numerous open source utility software programs and libraries. Interix was originally developed and sold as OpenNT until purchased by Microsoft in 1999.

Linux began in 1991 as a personal project by Finnish student Linus Torvalds to create a new free operating system kernel. The resulting Linux kernel has been marked by constant growth throughout its history. Since the initial release of its source code in 1991, it has grown from a small number of C files under a license prohibiting commercial distribution to the 4.15 version in 2018 with more than 23.3 million lines of source code, not counting comments, under the GNU General Public License v2 with a syscall exception meaning anything that uses the kernel via system calls are not subject to the GNU GPL.

<span class="mw-page-title-main">Unicode input</span> Input characters using their Unicode code points

Unicode input is the insertion of a specific Unicode character on a computer by a user; it is a common way to input characters not directly supported by a physical keyboard. Unicode characters can be produced either by selecting them from a display or by typing a certain sequence of keys on a physical keyboard. In addition, a character produced by one of these methods in one web page or document can be copied into another. In contrast to ASCII's 96 element character set, Unicode encodes hundreds of thousands of graphemes (characters) from almost all of the world's written languages and many other signs and symbols besides.

In Unix-like operating systems, a device file or special file is an interface to a device driver that appears in a file system as if it were an ordinary file. There are also special files in DOS, OS/2, and Windows. These special files allow an application program to interact with a device by using its device driver via standard input/output system calls. Using standard system calls simplifies many programming tasks, and leads to consistent user-space I/O mechanisms regardless of device features and functions.

<span class="mw-page-title-main">Blue screen of death</span> Error screen displayed after a fatal system error on a computer running Microsoft Windows or ReactOS

The Blue Screen of Death (BSoD), Blue screen error, Blue Screen, fatal error, or bugcheck, and officially known as a Stop error, is a critical error screen displayed by the Microsoft Windows and ReactOS operating systems in the event of a fatal system error.

<span class="mw-page-title-main">Linux kernel</span> Operating system kernel

The Linux kernel is a free and open-source, monolithic, modular, multitasking, Unix-like operating system kernel. It was originally written in 1991 by Linus Torvalds for his i386-based PC, and it was soon adopted as the kernel for the GNU operating system, which was written to be a free (libre) replacement for Unix.

LEB128 or Little Endian Base 128 is a variable-length code compression used to store arbitrarily large integers in a small number of bytes. LEB128 is used in the DWARF debug file format and the WebAssembly binary encoding for all integer literals.

<span class="mw-page-title-main">Windows Subsystem for Linux</span> Compatibility layer for running Linux binary executables natively on Windows

Windows Subsystem for Linux (WSL) is a feature of Windows that allows developers to run a Linux environment without the need for a separate virtual machine or dual booting. There are two versions of WSL: WSL 1 and WSL 2. WSL 1 was first released on August 2, 2016, and acts as a compatibility layer for running Linux binary executables by implementing Linux system calls on the Windows kernel. It is available on Windows 10, Windows 10 LTSB/LTSC, Windows 11, Windows Server 2016, Windows Server 2019 and Windows Server 2022.

References

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