# Escaping Printable Encoded Streams to Embed Out-of-Band Data
## 3 Related Works  
In the first part of this section, we will recall some printable encodings, giving emphasis to those that have unused configurations that can be exploited to represent extra data. Then, given that the present proposal is concerned to the employment of printable sequences to stuff extra data, the second part will discuss some works that embed payload information into textual data. One of the most widely used printable encodings is Base64 [3], which represents three binary octets with four base 64 symbols, also dealing with an input length not multiple of three using the special symbol \"-\". The same paper [3] presents a base 32 encoding that represents five octets with a sequence of eight symbols taken from an alphabet of 33 (32 plus \"=\" that is used for padding when the input sequence has a length that is not a multiple of five). Furthermore, [PERSON]. [3] discussed the base 16 that is essentially the well-known hexadecimal representation. The use of base 41 is the core of [1; 2; 4]. The proposed encodings emplxoy two different alphabets of 41 symbols; moreover, [PERSON]. [1; 2] also discussed bit strings of arbitrary length, i.e., not necessarily having a length of a multiple of eight. In particular, [PERSON]. [1; 2] encoded a pair of octets, a single octet, and a string of length from 0 to 7 bits with three Base41 symbols and, as previously cited, leaves 3385 free (unused) printable Base41 strings. Base 45 iswas used in [5] for encoding data to be represented by QR codes. The proposed method expresses a pair of binary octets with three symbols from an alphabet of 45. A special coding is reserved for a single octet in case the original stream has an odd number of octets. This code uses only \(2^{16}=65\),536 triplets of the \(45^{3}=91\),125 available: this redundancy was used in [6; 7] to reversibly embed data in a Base45 encoded stream. Base 85 was used in two works: Ref. [8] used an alphabet of 85 printable symbols to obtain an efficient and compact representation of IPv6 addresses, while [9] used the alphabet made of 85 ASCII characters, from code 33 to code 117, to define an encoding called Ascii85 that represents a quadruple of octets with five Base85 symbols. Given themapping performed by [9], there are \(85^{5}-2^{32}=142,085,829\) unused configurations for this encoding. Ninety-one printable characters are employed in two Base91 encodings [10; 11]. The software available at [10] encodes blocks of 13 bits with pairs of symbols from a Base91 alphabet: given that \(91^{2}=8281\) Base91 pairs exceed by 89 the configurations of 13 bits (\(2^{13}=8192\)), if the block has a value not greater than 88, then one more bit is encoded; in this way, all the \(91^{2}\) Base91 pairs are used for encoding a bit stream in printable form. On the other hand, Ref. [11] encoded groups of 13 bits with two Base91 characters but used 12 pairs of the exceeding 89 to indicate the length of the last group of bits (in case it has a length different from 13): in this encoding, \(89-12=77\) pairs are left unused. With the proposal of this paper, any of the printable encodings that leave unused configurations may be utilized to embed out-of-band data. In the field of data hiding in textual data many works have been developed to store a payload into a text written with a word processor: in general, non-printable and empty characters or various kinds of white spaces are used to encode binary information. For example, [PERSON]. [12] developed UniSpaCh that works on Microsoft(r) Word documents, inserting different Unicode spacing characters between words, sentences, and paragraphs: this method adds (non-visible) characters to the file increasing its size as our method does. The feature of change tracking in Microsoft(r) Word documents was exploited in [13] to hide a secret message for steganographic communication.