Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | Richard Heathfield <rjh@cpax.org.uk> |
|---|---|
| Newsgroups | sci.crypt |
| Subject | Re: CHATX - a thread starter that's not as easy as it looks. |
| Date | 2021-09-25 14:21 +0100 |
| Organization | Fix this later |
| Message-ID | <sin7pb$f88$1@dont-email.me> (permalink) |
| References | <si9jk4$188$1@dont-email.me> <sin69v$4i2$1@dont-email.me> |
On 25/09/2021 13:56, Richard Harnden wrote:
> On 20/09/2021 10:17, Richard Heathfield wrote:
>> lFcrdtwo,econ you itelt nx
>> ook ohns af you sdinliofy
>> ttie aegtrxtxmxuxex xoxexcxyt
>> hhs tlxo?ixhx xsxdxtx xnxrxpx
>> tFar eat apcrexim,tc t semr poexx
>> hot cxnra prodita eua doceyctdion
>> a-t sa.dxrxtxax xtxlxoxsx xsxIxcn
>> t-ehtrxex xhxnxix xoxkx,xax x xax
>> eAed danptns yenetxig
>> vnr hop'e sah ro.hxnx
>>
>
> Here's my chatx encoder/decoder effort.
> I spent far too much time on this.
>
>
> #include <stdio.h>
> #include <stdlib.h>
> #include <string.h>
>
> #define MAX_LINE 1024
>
> typedef void (*chatx_t)(FILE *in);
>
> static int encode_read_pair(FILE *in, char *a, char *b)
> {
> int a_length;
> int b_length;
> char *z;
>
> if ( fgets(a, MAX_LINE, in) == NULL )
> return 0;
>
> z = strchr(a, '\n');
> if ( z == NULL )
> {
> fprintf(stderr, "Line too long.\n");
> exit(EXIT_FAILURE);
> }
>
> *z = '\0';
> a_length = z - a;
>
> if ( fgets(b, MAX_LINE, in) == NULL )
> b_length = 0;
> else
> {
> z = strchr(b, '\n');
> if ( z == NULL )
> {
> fprintf(stderr, "Line too long.\n");
> exit(EXIT_FAILURE);
> }
>
> *z = '\0';
> b_length = z - b;
> }
>
> if ( a_length == 0 )
> {
> a_length = 2;
> a[0] = 'x';
> a[1] = 'x';
> a[2] = '\0';
> }
> else
> {
> if ( a_length % 2 == 1 )
> {
> a[a_length++] = 'x';
> a[a_length] = '\0';
> }
> }
>
> if ( b_length == 0 )
> {
> b_length = 2;
> b[0] = 'x';
> b[1] = 'x';
> b[2] = '\0';
> }
> else
> {
> if ( b_length % 2 == 1 )
> {
> b[b_length++] = 'x';
> b[b_length] = '\0';
> }
> }
>
> if ( a_length > b_length )
> {
> for (int i=b_length; i<a_length; i++)
> b[i] = 'x';
>
> b_length = a_length;
> b[b_length] = '\0';
> }
>
> if ( b_length > a_length )
> {
> for (int i=a_length; i<b_length; i++)
> a[i] = 'x';
>
> a_length = b_length;
> a[a_length] = '\0';
> }
>
> return a_length;
> }
>
> static void chatx_encode(FILE *in)
> {
> char a[MAX_LINE];
> char b[MAX_LINE];
> char c[MAX_LINE];
> char d[MAX_LINE];
> int length;
> char p,q,r,s;
> int c_pos;
> int d_pos;
>
> while (1)
> {
> c_pos = 0;
> d_pos = 0;
>
> if ( (length = encode_read_pair(in, a, b)) == 0 )
> break;
>
> for (int i=0; i<length; i+=2)
> {
> p = a[i];
> q = a[i+1];
> r = b[i];
> s = b[i+1];
>
> c[c_pos++] = r;
> c[c_pos++] = p;
>
> d[d_pos++] = s;
> d[d_pos++] = q;
> }
>
> c[length] = '\0';
> d[length] = '\0';
>
> puts(c);
> puts(d);
> }
> }
>
> static int decode_read_pair(FILE *in, char *a, char *b)
> {
> int a_length;
> int b_length;
> char *z;
>
> if ( fgets(a, MAX_LINE, in) == NULL )
> return 0;
>
> z = strchr(a, '\n');
> if ( z == NULL )
> {
> fprintf(stderr, "Line too long.\n");
> exit(EXIT_FAILURE);
> }
>
> *z = '\0';
> a_length = z - a;
>
> if ( fgets(b, MAX_LINE, in) == NULL )
> {
> fprintf(stderr, "Expected pair of lines.\n");
> exit(EXIT_FAILURE);
> }
>
> z = strchr(b, '\n');
> if ( z == NULL )
> {
> fprintf(stderr, "Line too long.\n");
> exit(EXIT_FAILURE);
> }
>
> *z = '\0';
> b_length = z - b;
>
> if ( a_length != b_length )
> {
> fprintf(stderr, "Line pair has different lengths.");
> exit(EXIT_FAILURE);
> }
>
> if ( a_length % 2 != 0 )
> {
> fprintf(stderr,
> "Expected lines to be even number of characters.");
> exit(EXIT_FAILURE);
> }
>
> return a_length;
> }
>
> static void chatx_decode(FILE *in)
> {
> char a[MAX_LINE];
> char b[MAX_LINE];
> char c[MAX_LINE];
> char d[MAX_LINE];
> int length;
> char p,q,r,s;
> int c_pos;
> int d_pos;
>
> while (1)
> {
> c_pos = 0;
> d_pos = 0;
>
> if ( (length = decode_read_pair(in, a, b)) == 0 )
> break;
>
> for (int i=0; i<length; i+=2)
> {
> p = a[i];
> q = a[i+1];
> r = b[i];
> s = b[i+1];
>
> c[c_pos++] = q;
> c[c_pos++] = s;
>
> d[d_pos++] = p;
> d[d_pos++] = r;
> }
>
> c[length] = '\0';
> d[length] = '\0';
>
> puts(c);
> puts(d);
> }
> }
>
> int main(int argc, char *argv[])
> {
> chatx_t chatx = chatx_encode;
>
> if ( argc > 2 )
> {
> fprintf(stderr, "Usage: %s [-d]\n", argv[0]);
> return EXIT_FAILURE;
> }
>
> if ( argc == 2 )
> {
> if ( strcmp(argv[1], "-d") == 0 )
> chatx = chatx_decode;
> else
> {
> if ( strcmp(argv[1], "-e") == 0 )
> chatx = chatx_encode;
> else
> {
> fprintf(stderr, "Usage: %s [-d]\n", argv[0]);
> return EXIT_FAILURE;
> }
> }
> }
>
> chatx(stdin);
>
> return 0;
> }
>
I tried it on the puzzle ciphertext and came across an oddity.
rjh@here$ ./hdc < t3.cipher
olkcodnw ,ac noy udineitfn
oF rhtso efoy uos itllo yx
htsit xe?txxxxxxxxxxxxxxxxxxxt
ht elaogirht msudet onercpyxx
httac naa pporixameta d ceyrtpienx
oF rxert arcdeti ,uc tosemc dooxxx
taettsx.xxxxxxxxxxxxxxxxxxxxxxxxxn
--h raed rhtnai tolko,sa s Iacxx
vereh paepsnh re.exxxg
nA dod'n tas yonhtnixx
rjh@here$ cat t3.cipher | wc -l
10
rjh@here:~/alldata/dev/crypto/sqspin/harndendecrypt$ ./hdc -d < t3.cipher
For those of you still oxy
lockdown, can you identinf
Expected lines to be even number of characters.
Last I checked, 10 is even. :-)
NO! For heaven's sake don't waste time fixing it on my account. My
decoder's screwed too and I'm letting it go.
--
Richard Heathfield
Email: rjh at cpax dot org dot uk
"Usenet is a strange place" - dmr 29 July 1999
Sig line 4 vacant - apply within
Back to sci.crypt | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
CHATX - a thread starter that's not as easy as it looks. Richard Heathfield <rjh@cpax.org.uk> - 2021-09-20 10:17 +0100
Re: CHATX - a thread starter that's not as easy as it looks. MM <mrvmurray@gmail.com> - 2021-09-20 07:00 -0700
Re: CHATX - a thread starter that's not as easy as it looks. Richard Heathfield <rjh@cpax.org.uk> - 2021-09-20 15:17 +0100
Re: CHATX - a thread starter that's not as easy as it looks. MM <mrvmurray@gmail.com> - 2021-09-20 10:52 -0700
Re: CHATX - a thread starter that's not as easy as it looks. Richard Heathfield <rjh@cpax.org.uk> - 2021-09-20 19:10 +0100
Re: CHATX - a thread starter that's not as easy as it looks. Max <maxturv26@gmx.net> - 2021-09-20 20:36 +0200
Re: CHATX - a thread starter that's not as easy as it looks. Richard Heathfield <rjh@cpax.org.uk> - 2021-09-20 19:42 +0100
Re: CHATX - a thread starter that's not as easy as it looks. Max <maxturv26@gmx.net> - 2021-09-20 20:50 +0200
Re: CHATX - a thread starter that's not as easy as it looks. Richard Heathfield <rjh@cpax.org.uk> - 2021-09-20 21:02 +0100
Re: CHATX - a thread starter that's not as easy as it looks. Max <maxturv26@gmx.net> - 2021-09-20 22:24 +0200
Re: CHATX - a thread starter that's not as easy as it looks. Richard Heathfield <rjh@cpax.org.uk> - 2021-09-20 22:08 +0100
Re: CHATX - a thread starter that's not as easy as it looks. wizzofozz <oxxxxxxxxxxxs@gmail.com> - 2021-09-20 21:43 +0200
Re: CHATX - a thread starter that's not as easy as it looks. Max <maxturv26@gmx.net> - 2021-09-20 21:50 +0200
Re: CHATX - a thread starter that's not as easy as it looks. Phil Carmody <pc+usenet@asdf.org> - 2021-09-21 17:00 +0300
Re: CHATX - a thread starter that's not as easy as it looks. Richard Heathfield <rjh@cpax.org.uk> - 2021-09-21 15:22 +0100
Re: CHATX - a thread starter that's not as easy as it looks. Max <maxturv26@gmx.net> - 2021-09-21 23:31 +0200
Re: CHATX - a thread starter that's not as easy as it looks. Richard Heathfield <rjh@cpax.org.uk> - 2021-09-21 23:03 +0100
Re: CHATX - a thread starter that's not as easy as it looks. Max <maxturv26@gmx.net> - 2021-09-22 00:22 +0200
Re: CHATX - a thread starter that's not as easy as it looks. wizzofozz <oxxxxxxxxxxxs@gmail.com> - 2021-09-25 13:29 +0200
Re: CHATX - a thread starter that's not as easy as it looks. Phil Carmody <pc+usenet@asdf.org> - 2021-09-26 14:39 +0300
Re: CHATX - a thread starter that's not as easy as it looks. Richard Harnden <richard.nospam@gmail.com> - 2021-09-21 15:07 +0100
Re: CHATX - a thread starter that's not as easy as it looks. Richard Heathfield <rjh@cpax.org.uk> - 2021-09-21 15:18 +0100
Re: CHATX - a thread starter that's not as easy as it looks. Phil Carmody <pc+usenet@asdf.org> - 2021-09-21 21:43 +0300
Re: CHATX - a thread starter that's not as easy as it looks. Richard Heathfield <rjh@cpax.org.uk> - 2021-09-21 20:41 +0100
Re: CHATX - a thread starter that's not as easy as it looks. wizzofozz <oxxxxxxxxxxxs@gmail.com> - 2021-09-25 02:24 +0200
Re: CHATX - a thread starter that's not as easy as it looks. Richard Heathfield <rjh@cpax.org.uk> - 2021-09-25 05:24 +0100
Re: CHATX - a thread starter that's not as easy as it looks. Richard Harnden <richard.nospam@gmail.com> - 2021-09-25 13:56 +0100
Re: CHATX - a thread starter that's not as easy as it looks. Richard Heathfield <rjh@cpax.org.uk> - 2021-09-25 14:21 +0100
Re: CHATX - a thread starter that's not as easy as it looks. Richard Heathfield <rjh@cpax.org.uk> - 2021-09-25 14:28 +0100
Re: CHATX - a thread starter that's not as easy as it looks. wizzofozz <oxxxxxxxxxxxs@gmail.com> - 2021-09-25 16:11 +0200
csiph-web