[KongchangAI]
· 3 min read· 1,638 words

ColorSpace Steganography: How to Hide 117 Characters in a Single Space

ColorSpace Steganography: How to Hide 117 Characters in a Single Space

A calligrapher hides 117 characters in a single space using gradient color encoding in rich text formatting.

ColorSpace is an open-source steganography project by calligrapher ChronicRhyno that encodes 117 characters within a single rich text space using 63 gradient color format values. By reverse-engineering Office XML structures and exploiting the Format Painter to bypass Microsoft's VBA restrictions, the project demonstrates how document format metadata can serve as a hidden data channel — raising both artistic and security implications.

When Calligraphy Meets Steganography

In the digital age, steganography is typically associated with images, audio, or network protocols. The word itself derives from Greek — "steganos" (covered, hidden) and "graphein" (writing) — and its core philosophy differs fundamentally from cryptography. Cryptography lets adversaries see ciphertext but prevents them from decoding it; steganography prevents adversaries from even knowing the secret message exists. From ancient Greeks tattooing messages on slaves' scalps to modern techniques embedding data in the least significant bits (LSB) of image pixels, the carriers of steganography have continuously evolved. Yet a self-described calligrapher (GitHub user ChronicRhyno) achieved astonishing data concealment in a place we most easily overlook — a single "space" in a document — successfully encoding 117 characters within one rich text space.

The project is called ColorSpace, and its original motivation wasn't security or encryption — it was an artistic pursuit. While contemplating "how to give visual splendor to punctuation marks, especially the space character," the author stumbled upon this technical pathway. He views it as "a logical evolution of Concrete Poetry" and a modern form of medieval manuscript "Illumination."

Concrete Poetry was an avant-garde poetry movement that emerged in Brazil, Switzerland, and Germany in the 1950s. Its core principle was liberating text from being a purely semantic vehicle, making the visual arrangement and spatial layout of letters and words an integral part of the poem's meaning. From Apollinaire arranging words into shapes of raindrops and the Eiffel Tower in his "calligrams," to Augusto de Campos's extreme explorations of spatial relationships between letters, Concrete Poetry broke the linear mode of traditional reading. Medieval manuscript illumination, meanwhile, involved incorporating sumptuous visual elements painted with gold leaf and mineral pigments into texts — like the intricate decorated initials and vine ornaments in the Book of Kells. These weren't merely aesthetic pursuits; they carried additional narrative information within the "gaps" of the text. ColorSpace combines both and pushes them to the extreme: the poem's content is not conveyed through visual shapes but entirely hidden in an invisible formatting layer, forming a kind of "negative-space concrete poem."

reddit source: Calligrapher here: I hid 117 characters in one space using color

The ultimate goal is rather romantic: the author wanted to hide the complete first quatrain of his favorite poem inside one of the poem's own spaces — making text truly "self-contained."

Technical Principles: Encoding Characters Through Rich Text Format Values

The Ingenuity of 63 Format Values

The core idea behind this steganographic technique exploits the fact that the format attributes a character can carry in rich text are far richer than the character itself. A visible letter can express only one unit of information, but a space can carry vast amounts of invisible format metadata.

The author used 63 format values — most of which are gradient colors — for encoding. Each "gradient pin" (gradient stop) can have precisely set color values, positions, and transition parameters. In the underlying XML of Office documents, gradient fills are defined through <a:gradFill> elements containing <a:gsLst> (gradient stop lists), where each <a:gs> child element represents a gradient stop that can specify position values between 0 and 100000, along with precise color values based on RGB, HSL, theme colors, and other color models. By mapping these parameters to binary or multi-radix data, a single space gains information density far exceeding its visual appearance.

In other words, 117 characters were decomposed and mapped to combinations of these format attributes. For ordinary readers, the screen shows just a space; but for a program that knows the decoding rules, a complete passage of text is hidden there. This shares the same spirit as traditional image steganography (embedding data in the least significant bits of pixels), but the carrier has shifted from image pixels to text format attributes — a previously almost unexplored domain.

From Concrete Poetry to Digital Illumination

The author deliberately emphasizes the artistic nature of the work. Concrete Poetry conveys meaning through the typography and shapes of words, while medieval manuscript illumination infuses gorgeous visual elements into text. Just as medieval scribes painted miniatures with gold leaf and mineral pigments in the margins of the Très Riches Heures du Duc de Berry, ColorSpace uses "invisible color data" as a new poetic carrier — the meaning of text lies not only in its literal content but lurks within the gaps of its formatting. The difference is that medieval illumination made text more sumptuously visible, while ColorSpace's "digital illumination" is completely invisible, revealing itself only to those who know the decoding rules.

Reverse Engineering to Bypass Microsoft's Restrictions

The Breakthrough After VBA Was Blocked

What truly demonstrates technical depth is the author's process of bypassing software limitations. He originally planned to use VBA (Visual Basic for Applications) to read and set gradient stops. VBA is an embedded programming language Microsoft introduced in 1993 that interacts with applications through Office's Object Model — for example, modifying font properties via Range.Font or accessing paragraph structure through Document.Paragraphs. However, Office's Object Model doesn't fully expose all underlying functionality, and Microsoft — for security reasons or engineering priorities — blocked the ability to manipulate gradient pins through VBA.

Facing this obstacle, the author took a reverse engineering approach:

  • Reverse-parsing XML data: Since Microsoft Office 2007, Office documents (like .docx) use the Open XML format, which is essentially a ZIP archive containing multiple XML files — renaming any .docx file to .zip allows you to extract and inspect it. Core formatting information is stored within <w:rPr> (run properties) tags in word/document.xml. The author studied the underlying XML structure describing formatting in depth, writing the required gradient parameters directly at the data level, bypassing the application-layer API restrictions. Since Word simply parses XML and renders it when opening a file, it doesn't care whether the XML was generated by an API or handcrafted.
  • Format Painter exploit: He discovered that the Format Painter feature could serve as a "backdoor window" to covertly apply hand-crafted formatting to the target space. The Format Painter merely copies format attributes from one selection and applies them to another — it doesn't check whether those format attributes "should" exist, making it a channel for injecting unconventional formatting into documents.

This approach of "going for the data format when the API is blocked" is a classic paradigm in reverse engineering and steganographic research. It reveals an important fact: application-layer restrictions are often just surface-level locks; the underlying data structures are the real battlefield. This principle appears repeatedly in security research — from bypassing DRM protection to exploiting file format parsers, attackers and researchers are always looking for cracks between application-layer abstractions and underlying data.

Open Source and Licensing

The author's open attitude toward the project is commendable. The entire project is publicly available on GitHub (github.com/ChronicRhyno/ColorSpace) and uses clear dual licensing:

  • Code is under the GPLv3 license: The GNU General Public License version 3, released by the Free Software Foundation (FSF) in 2007, is a strong copyleft license. Its core is the "viral" clause — any derivative work based on this code must also be released under GPLv3 and open-sourced. Compared to GPLv2, version 3 added provisions against hardware lockdown ("Tivoization") and patent retaliation, providing more comprehensive legal protection for open source code.
  • White paper is under CC BY-ND 4.0: A Creative Commons license designed for non-software creative works. BY requires attribution, and ND (No Derivatives) prohibits publishing modified versions of the work — allowing free sharing in its original form but forbidding adaptation or taking out of context. This reflects the author's insistence on the integrity of his academic/artistic exposition.

This "permissive code, strict documentation" licensing combination is not uncommon in the open source community. It encourages technical reuse and improvement (you can fork the code and create your own implementation) while protecting the original vision (no one can modify the white paper to distort the author's original intent).

Expanding the Boundaries of Steganography and Security Implications

Format Metadata: The Overlooked Dark Matter of Information

ColorSpace reminds us that carriers for data hiding can be far more subtle than we imagine. While we habitually focus on a file's visible content, the "dark matter" layer of format metadata is often completely overlooked. Existing document security scanning tools primarily check for known threat vectors like macro code, embedded objects, and external links, but virtually no tool audits whether a space character's gradient stop parameters carry encoded data. This represents both a new dimension of artistic expression and a profound security insight — seemingly harmless spaces in documents can theoretically carry far more hidden information than expected.

From a defensive perspective, this means Data Loss Prevention (DLP) systems and document sanitization tools may need to consider a new threat surface: the format attribute channel. A "sanitized" document that only removes macros and metadata tags but preserves rich text formatting could still serve as a covert data exfiltration channel.

The Intersection of Art and Technology

Perhaps what's most moving is the motivation behind this project. The author isn't showing off technical prowess or seeking profit — he wants a poem to "hide within itself." This kind of creation, combining deep craft skills, reverse engineering capability, and a purely poetic pursuit, is especially precious.

It tells us: the boundaries of technology are often pushed by those "useless but beautiful" obsessions. A calligrapher's fixation on the space character ultimately gave birth to an ingenious encoding technique — which is itself a piece of "concrete poetry" for the digital age. Just as many important discoveries in computer science originated from pure curiosity (from Conway's Game of Life to the visualization of the Mandelbrot set), ColorSpace may never become a mainstream steganographic tool, but it expands the boundaries of our imagination regarding the fundamental question: "Where can information be hidden?"

Key Takeaways

#steganography#ColorSpace#rich text steganography#hidden data in documents#gradient color encoding#Office XML reverse engineering#data hiding techniques
Share:

Related articles