{'fraction_non_alphanumeric': 0.020195439739413682, 'fraction_numerical': 0.0, 'mean_word_length': 5.047244094488189, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Embedding a secondary communication channel transparently within a cyclic redundancy check (CRC)

Techniques are proposed for transparently recapturing part of the capacity of a cyclic redundancy check (CRC) and using the recaptured capacity to carry a secondary communication channel. To do this, a transmitter induces CRC violations in outbound packets of a primary channel according to a set of error templates that are known to both the transmitter and the receiver, and that map one-to-one onto a set of secondary-channel-data words. The receiver corrects the errors by constrained trial and error to deduce which template the transmitter used, and consequently the intended secondary data. Imposing a P-bit-per-packet secondary channel is shown to reduce the performance of the primary channel's CRC as though the degree of the generator polynomial had been reduced by P, where P is an integer. The technique is extended to recapture CRC capacity in fractional-bit increments by permitting only certain codewords to bear the secondary channel. A further extension uses a set of generators mapped one-to-one onto the set of secondary-channel words and known a priori to both the transmitter and receiver. A secondary channel is provided by selecting each packet's primary-channel CRC generator in response to a desired secondary-channel word. A variant of this technique improves the performance of the CRC by selecting the generator according to transmission performance or packet length rather than carrying a secondary channel.