Author Topic: codegroup - encode / decode binary file as five letter codegroups  (Read 2327 times)

0 Members and 1 Guest are viewing this topic.

Offline crypton

  • Elite
  • *****
  • Posts: 1699
  • Karma: +10/-0
    • View Profile

Five-Letter Codegroup Filter

Quote
For decades, spies have written their encoded messages in groups of five letters.

codegroup encodes any file into this form, allowing it to be transmitted through any medium, and decodes files containing codegroups into the original input. Encoded files contain a 16-bit cyclical redundancy check (CRC) and file size to verify, when decoded, that the message is complete and correct. Files being decoded may contain other information before and after the codegroups, allowing in-the-clear annotations to be included.

codegroup makes no attempt, on its own, to prevent your message from being read. Cryptographic security should be delegated to a package intended for that purpose, such as pgp. codegroup can then be applied to the encrypted binary output, transforming it into easily transmitted text. Text created by codegroup uses only upper case ASCII letters and spaces. Unlike files encoded with uuencode or pgp's "ASCII armour" facility, the output of codegroup can be easily (albeit tediously) read over the telephone, broadcast by shortwave radio to agents in the field, or sent by telegram, telex, or Morse code.

To illustrate the difference, here are the first few lines of a binary file encoded by:

Quote
To illustrate the difference, here are the first few lines of a binary file encoded by:

base64:

    H4sICFJ9MzYAA2EudGFyAOxba3faSNKer+lf0SezO3YmgLnY2I6TyQIGgwOGBTtOYjuJEMJo
    DJJGF1+ys//9rarulpqLHRi/mdk9G84JIKGuqq579eNkNn745q9sNru9tcXhs5gtFPAzm83l
    xad88WyxmNssbhe3sps8m8ttZ/M/8K1vL9oPP0RBaPggypU1vrad+59zosj0HqAj9xF//pe8
    WsaVNbTH1rfkAfoobm7ea//cZn4rtv/mNtq/kM9t/cCz31Io9foftz9nnW77oMdfcdMdWJe+

uuencode:

    begin 644 data.bin
    M'XL("&7._R  VUO;V /9U+FN2XSF3G6H5OA1(?HOB<=/<7__X7TN<PJ[L&
    M=?-&1;I+) B8 0;P?_Z'?WY_-=7Q"T_JSZ_6)X9?&"$OU9[N'A[A%^L^6=
    M?^M[OOV+:9=UM9J^] MAS_ ;X0O]U];(Z?<WWE9_[/]ZMMOO[CG'^2MM
    M_G(+,US/LWKZE1#C^YO?D_;O#G[7][2R^+0>XJ^&PI/[?7-7U]KU=]SSWQ?

pgp:

    -----BEGIN PGP MESSAGE-----
    Version: 2.6.2i

    hIwCCb8iTku3pBUBA/9oSDlfk/On9bwjmTnB98Eejr6agkPSi3n6hd8JkAtJd33f
    kzFq18Jo0xzRUWZ7Di6Jq/FXpeI1yztVDqispbcYOP0aDv4JZOSF1kRsmJ9xK9Bo
    Cv4a967IXPkkRsjIAkx0B39dYxCzf8kHUn4THmyV/b2qLUZ0cc+mr8hxFfFpuYSM

codegroup:

    ZZZZZ YBPIL AIAIG FMOPP CPAAA DGNGP GPGPA ADNJN ELJKO ELIMO
    GEOHF KIFGP IFBCB PKCPI YJMHE PHBHP PPOBH NCOHD AKLLL AGHFP
    DEGEF LKELC EAIJI ABAGP AHPPO IHHPH OHPDF YNFPB ALEPO KMPKP
    NGCHI GFPBI CBDML PFGHL LIHPC BOOBB HOLDO FJNHP OLHLL OPNIL

Only codegroup conforms to the telegraphic convention of all upper case letters, and passes the "telephone test" of being readable without any modifiers such as "capital" and "lower-case". Avoiding punctuation marks and lower case letters makes the output of codegroup much easier to transmit over a voice or traditional telegraphic link.

http://www.fourmilab.ch/codegroup/