THE WRITER MUST EAT -> patreon.com/trn1ty <-

| \    |   | blah!
|\ | `\|\  | the rantings and ravings
|/ |(_|| | * of a depraved lunatic

<^>

2024-06-19

: decrypting a /g/ riddle

4chan /g/ No.101048862:

.section .data
key:    .byte 0x2A
msg_len: .word 140
encrypted_msg:
    .byte 0x07, 0x44, 0x1E, 0x6B, 0x73, 0x17, 0x64, 0x12, 0x27, 0x24, 0x22, 0x6
B, 0x74, 0x12, 0x21, 0x64
    .byte 0x00, 0x0B, 0x28, 0x64, 0x76, 0x00, 0x64, 0x17, 0x22, 0x0F, 0x76, 0x0
0, 0x7C, 0x17, 0x2D, 0x2B
    .byte 0x6F, 0x12, 0x64, 0x64, 0x00, 0x2A, 0x6F, 0x17, 0x22, 0x6B, 0x64, 0x1
2, 0x2C, 0x23, 0x7D, 0x73
    .byte 0x64, 0x12, 0x22, 0x6B, 0x22, 0x6B, 0x0D, 0x22, 0x73, 0x12, 0x64, 0x6
B, 0x64, 0x17, 0x7D, 0x6F
    .byte 0x22, 0x64, 0x00, 0x0A, 0x64, 0x2B, 0x0A, 0x0B, 0x64, 0x2A, 0x2F, 0x6
A, 0x64, 0x12, 0x2D, 0x17
    .byte 0x6F, 0x12, 0x64, 0x64, 0x00, 0x2A, 0x6F, 0x17, 0x22, 0x6B, 0x64, 0x1
2, 0x2C, 0x23, 0x7D, 0x73
    .byte 0x64, 0x12, 0x22, 0x6B, 0x22, 0x6B, 0x0D, 0x22, 0x73, 0x12, 0x64, 0x6
B, 0x64, 0x17, 0x7D, 0x6F
    .byte 0x22, 0x64, 0x00, 0x0A, 0x64, 0x2B, 0x0A, 0x0B, 0x64, 0x2A, 0x2F, 0x6
A, 0x64, 0x12, 0x2D, 0x17
    .byte 0x6F, 0x12, 0x64, 0x64, 0x00, 0x2A, 0x6F, 0x17, 0x22, 0x6B, 0x64, 0x1
2, 0x2C, 0x23, 0x7D, 0x73
    .byte 0x64, 0x12, 0x22, 0x6B, 0x22, 0x6B, 0x0D, 0x22, 0x73, 0x12, 0x64, 0x6
B, 0x64, 0x17, 0x7D, 0x6F
    .byte 0x22, 0x64, 0x00, 0x0A, 0x64, 0x2B, 0x0A, 0x0B, 0x64, 0x2A, 0x2F, 0x6
A, 0x64, 0x12, 0x2D, 0x17
    .byte 0x6F, 0x12, 0x64, 0x64, 0x00, 0x2A, 0x6F, 0x17, 0x22, 0x6B, 0x64, 0x1
2, 0x2C, 0x23, 0x7D, 0x73
    .byte 0x64, 0x12, 0x22, 0x6B, 0x22, 0x6B, 0x0D, 0x22, 0x73, 0x12, 0x64, 0x6
B, 0x64, 0x17, 0x7D, 0x6F
    .byte 0x22, 0x64, 0x00, 0x0A, 0x64, 0x2B, 0x0A, 0x0B, 0x64, 0x2A, 0x2F, 0x6
A, 0x64, 0x12, 0x2D, 0x17
You should be able to decrypt this.

Alright, well, all of these values are 7-bit (none of the first nybbles of the
given bytes exceed 0b0111). Do you see a pattern? It's easier because of my
blah formatting. Every cut-off line starts back in on 0x2 (0b0010), 0xA
(0b1010), or 0xB (0b1011). Every third byte of a line alternates between 0x64
(0b 0110 0100), 0x22 (0b 0010 0010), and 0x00 (all zeroes). So this sequence is
patterned in some way. Because the key is a single byte I assume this is some
sort of Caesar cypher esque secret [op] key = clear so let's start with that.

The key is 0x2A. Because it's summer and 4chan this is probably simple so let's
start with low hanging fruit.

$ ascii 2a
ASCII 2/10 is decimal 042, hex 2a, octal 052, bits 00101010: prints as `*'
Official name: Asterisk
Other names: Star, Splat, Aster, Times, Gear, Dingle, Bug, Twinkle, Glob 

0x64 XOR 0x2A = 'N'
0x22 XOR 0x2A = ASCII_LS1

I assume control characters besides usual whitespace won't be a part of the
input so it's not an XOR thing. Nor addition as bytes exceed 0x70 (and
therefore addition would put the values past valid ASCII). Nor subtraction as
0x00 occurs and that would underflow to either negative values (signed) or
values past 0x80 (unsigned), again, invalid ASCII.

I wanna see this better. I'm tossing the key line so remember it's 0x2A.

$ tail -n +5 | sed s:^.'*'byte.:: | tr -d ,
0x07 0x44 0x1E 0x6B 0x73 0x17 0x64 0x12 0x27 0x24 0x22 0x6B 0x74 0x12 0x21 0x64
0x00 0x0B 0x28 0x64 0x76 0x00 0x64 0x17 0x22 0x0F 0x76 0x00 0x7C 0x17 0x2D 0x2B
0x6F 0x12 0x64 0x64 0x00 0x2A 0x6F 0x17 0x22 0x6B 0x64 0x12 0x2C 0x23 0x7D 0x73
0x64 0x12 0x22 0x6B 0x22 0x6B 0x0D 0x22 0x73 0x12 0x64 0x6B 0x64 0x17 0x7D 0x6F
0x22 0x64 0x00 0x0A 0x64 0x2B 0x0A 0x0B 0x64 0x2A 0x2F 0x6A 0x64 0x12 0x2D 0x17
0x6F 0x12 0x64 0x64 0x00 0x2A 0x6F 0x17 0x22 0x6B 0x64 0x12 0x2C 0x23 0x7D 0x73
0x64 0x12 0x22 0x6B 0x22 0x6B 0x0D 0x22 0x73 0x12 0x64 0x6B 0x64 0x17 0x7D 0x6F
0x22 0x64 0x00 0x0A 0x64 0x2B 0x0A 0x0B 0x64 0x2A 0x2F 0x6A 0x64 0x12 0x2D 0x17
0x6F 0x12 0x64 0x64 0x00 0x2A 0x6F 0x17 0x22 0x6B 0x64 0x12 0x2C 0x23 0x7D 0x73
0x64 0x12 0x22 0x6B 0x22 0x6B 0x0D 0x22 0x73 0x12 0x64 0x6B 0x64 0x17 0x7D 0x6F
0x22 0x64 0x00 0x0A 0x64 0x2B 0x0A 0x0B 0x64 0x2A 0x2F 0x6A 0x64 0x12 0x2D 0x17
0x6F 0x12 0x64 0x64 0x00 0x2A 0x6F 0x17 0x22 0x6B 0x64 0x12 0x2C 0x23 0x7D 0x73
0x64 0x12 0x22 0x6B 0x22 0x6B 0x0D 0x22 0x73 0x12 0x64 0x6B 0x64 0x17 0x7D 0x6F
0x22 0x64 0x00 0x0A 0x64 0x2B 0x0A 0x0B 0x64 0x2A 0x2F 0x6A 0x64 0x12 0x2D 0x17

Oh, this is extremely patterned. I wonder what this looks like in hexdump(1)?
$ tail -n +5 | sed s:^.'*'byte.:: | tr -d ' ', | sed s:0x:'\\'x:g \
	| xargs -0 printf | hexdump -C
00000000  07 44 1e 6b 73 17 64 12  27 24 22 6b 74 12 21 64  |.D.ks.d.'$"kt.!d|
00000010  0a 00 0b 28 64 76 00 64  17 22 0f 76 00 7c 17 2d  |...(dv.d.".v.|.-|
00000020  2b 0a 6f 12 64 64 00 2a  6f 17 22 6b 64 12 2c 23  |+.o.dd.*o."kd.,#|
00000030  7d 73 0a 64 12 22 6b 22  6b 0d 22 73 12 64 6b 64  |}s.d."k"k."s.dkd|
00000040  17 7d 6f 0a 22 64 00 0a  64 2b 0a 0b 64 2a 2f 6a  |.}o."d..d+..d*/j|
00000050  64 12 2d 17 0a 6f 12 64  64 00 2a 6f 17 22 6b 64  |d.-..o.dd.*o."kd|
00000060  12 2c 23 7d 73 0a 64 12  22 6b 22 6b 0d 22 73 12  |.,#}s.d."k"k."s.|
00000070  64 6b 64 17 7d 6f 0a 22  64 00 0a 64 2b 0a 0b 64  |dkd.}o."d..d+..d|
00000080  2a 2f 6a 64 12 2d 17 0a  6f 12 64 64 00 2a 6f 17  |*/jd.-..o.dd.*o.|
00000090  22 6b 64 12 2c 23 7d 73  0a 64 12 22 6b 22 6b 0d  |"kd.,#}s.d."k"k.|
000000a0  22 73 12 64 6b 64 17 7d  6f 0a 22 64 00 0a 64 2b  |"s.dkd.}o."d..d+|
000000b0  0a 0b 64 2a 2f 6a 64 12  2d 17 0a 6f 12 64 64 00  |..d*/jd.-..o.dd.|
000000c0  2a 6f 17 22 6b 64 12 2c  23 7d 73 0a 64 12 22 6b  |*o."kd.,#}s.d."k|
000000d0  22 6b 0d 22 73 12 64 6b  64 17 7d 6f 0a 22 64 00  |"k."s.dkd.}o."d.|
000000e0  0a 64 2b 0a 0b 64 2a 2f  6a 64 12 2d 17 0a        |.d+..d*/jd.-..|

The 0x0As here are from the input formatting itself. Let's ditch 'em.
$ tail -n +5 | sed s:^.'*'byte.:: | tr -d ' \n', | sed s:0x:'\\'x:g \
	| xargs -0 printf | hexdump -C
00000000  07 44 1e 6b 73 17 64 12  27 24 22 6b 74 12 21 64  |.D.ks.d.'$"kt.!d|
00000010  00 0b 28 64 76 00 64 17  22 0f 76 00 7c 17 2d 2b  |..(dv.d.".v.|.-+|
00000020  6f 12 64 64 00 2a 6f 17  22 6b 64 12 2c 23 7d 73  |o.dd.*o."kd.,#}s|
00000030  64 12 22 6b 22 6b 0d 22  73 12 64 6b 64 17 7d 6f  |d."k"k."s.dkd.}o|
00000040  22 64 00 0a 64 2b 0a 0b  64 2a 2f 6a 64 12 2d 17  |"d..d+..d*/jd.-.|
00000050  6f 12 64 64 00 2a 6f 17  22 6b 64 12 2c 23 7d 73  |o.dd.*o."kd.,#}s|
00000060  64 12 22 6b 22 6b 0d 22  73 12 64 6b 64 17 7d 6f  |d."k"k."s.dkd.}o|
00000070  22 64 00 0a 64 2b 0a 0b  64 2a 2f 6a 64 12 2d 17  |"d..d+..d*/jd.-.|
00000080  6f 12 64 64 00 2a 6f 17  22 6b 64 12 2c 23 7d 73  |o.dd.*o."kd.,#}s|
00000090  64 12 22 6b 22 6b 0d 22  73 12 64 6b 64 17 7d 6f  |d."k"k."s.dkd.}o|
000000a0  22 64 00 0a 64 2b 0a 0b  64 2a 2f 6a 64 12 2d 17  |"d..d+..d*/jd.-.|
000000b0  6f 12 64 64 00 2a 6f 17  22 6b 64 12 2c 23 7d 73  |o.dd.*o."kd.,#}s|
000000c0  64 12 22 6b 22 6b 0d 22  73 12 64 6b 64 17 7d 6f  |d."k"k."s.dkd.}o|
000000d0  22 64 00 0a 64 2b 0a 0b  64 2a 2f 6a 64 12 2d 17  |"d..d+..d*/jd.-.|
000000e0

As cool as it is to actually /see/ the data this hasn't gotten us anywhere
closer to solving the riddle. By the way, this is my first time doing something
like this and I have entirely no clue what I'm doing. I think I'm barking up
the right tree because, ignoring addresses <0x20, every column has at most
three unique values.

I asked a roommate and it said it didn't know and asked why I was wasting my
time on /g/ riddles.

The message length is 140d bytes but the encrypted length is 0xE0 (224d) bytes.
The first two rows don't fit the pattern so perhaps they're a 32d byte header.
That would be 192d bytes for a 140d byte message?

Does this repeat?

00000000  07 44 1e 6b 73 17 64 12  27 24 22 6b 74 12 21 64  |.D.ks.d.'$"kt.!d|
00000010  00 0b 28 64 76 00 64 17  22 0f 76 00 7c 17 2d 2b  |..(dv.d.".v.|.-+|

00000020  6f 12 64 64 00 2a 6f 17  22 6b 64 12 2c 23 7d 73  |o.dd.*o."kd.,#}s|
00000030  64 12 22 6b 22 6b 0d 22  73 12 64 6b 64 17 7d 6f  |d."k"k."s.dkd.}o|
00000040  22 64 00 0a 64 2b 0a 0b  64 2a 2f 6a 64 12 2d 17  |"d..d+..d*/jd.-.|

00000050  6f 12 64 64 00 2a 6f 17  22 6b 64 12 2c 23 7d 73  |o.dd.*o."kd.,#}s|
00000060  64 12 22 6b 22 6b 0d 22  73 12 64 6b 64 17 7d 6f  |d."k"k."s.dkd.}o|
00000070  22 64 00 0a 64 2b 0a 0b  64 2a 2f 6a 64 12 2d 17  |"d..d+..d*/jd.-.|

00000080  6f 12 64 64 00 2a 6f 17  22 6b 64 12 2c 23 7d 73  |o.dd.*o."kd.,#}s|
00000090  64 12 22 6b 22 6b 0d 22  73 12 64 6b 64 17 7d 6f  |d."k"k."s.dkd.}o|
000000a0  22 64 00 0a 64 2b 0a 0b  64 2a 2f 6a 64 12 2d 17  |"d..d+..d*/jd.-.|

000000b0  6f 12 64 64 00 2a 6f 17  22 6b 64 12 2c 23 7d 73  |o.dd.*o."kd.,#}s|
000000c0  64 12 22 6b 22 6b 0d 22  73 12 64 6b 64 17 7d 6f  |d."k"k."s.dkd.}o|
000000d0  22 64 00 0a 64 2b 0a 0b  64 2a 2f 6a 64 12 2d 17  |"d..d+..d*/jd.-.|

000000e0

Hm. I'm a little stumped. I went back to the thread and checked for clues. One
anon XORed and gave up and the others are discussing whether trans people
deserve to live. I hate summer vacation. All the small children have come off
/pol/ and are thirsty for blood.

0x2A is 0b 0010 1010. Maybe the alternating 01s is a clue. Actually, I don't
care anymore.

: 2 years of blahbbing

Today is Juneteenth and also the second anniversary of my blah. In the last two
years I went from being an 18 year old depressed burger serf who spent all her
time writing and programming deranged shit to being a 20 year old depressed
burger serf who spends all its time sleeping and working, but also on the other
side of the country and with some more friends now. Still, I am tired, and you
must forgive me if one day I give up on trying to get to the point where I
don't have to work so much.

I don't remember an awful lot of these last two years but I remember the
people. Usagi, M--, another person, and on-line Emma Tebibyte and the rest of
Tebibyte Media, Veronika, the administrators of murderu.us (and especially
suika who does basically all of the work on the server). Helping others is why
I keep going and I hope I've had some sort of positive impact. There are a lot
of people I miss.

My blah has been perused by hopefully less than two dozen people which makes it
special to me as a novel-length mostly nonsensical and often incoherent &rt;700K
obscure Internet oddity that I have created. It hasn't been posted anywhere on
social media (though, feel free to share it on Hacker News, but anywhere more
popular is off limits) and even my close friends haven't read all of it. This
is indexed on DuckDuckGo which I should figure out how to prevent but not on
Google so hopefully I've not been violated in passing by corporate scraper
scum.

I don't have much more to say. I'm gonna start celebrating the blah anniversary
("celebrating") on 06-20 to avoid the collision with Juneteenth. Also happy
anniversary to the creation of X Windows. okbye

<^>

No rights reserved, all rights exercised, rights turned to lefts, left in this
corner of the web.