Sinisterly
[Challenge] Break repeated-key XOR. - Printable Version

+- Sinisterly (https://sinister.ly)
+-- Forum: Coding (https://sinister.ly/Forum-Coding)
+--- Forum: Coding (https://sinister.ly/Forum-Coding--71)
+--- Thread: [Challenge] Break repeated-key XOR. (/Thread-Challenge-Break-repeated-key-XOR)



[Challenge] Break repeated-key XOR. - Phizo - 10-02-2013

I don't want you to use any tools already created (such as xortool) to solve this; I want you to write code to determine the key-length, analyse the key-length sized blocks and finally reverse it to plaintext. I don't expect your code to be able to analyse the blocks to the point where it's able to determine the key and utilise it to decrypt the ciphertext; manually analysing it given the output and hard-coding the reversion is sufficient.

Code:
0a103424262f5463283c2d57312a27365c223f3663492c3e7f6352363f733a5f366c212610303f3a2f5c63253c371024243c271026253c36572b6b272c102e2a382610272a372749633b212c4527657313553123323343632f212c472d223d24102a25732051376b35264237223f2a4a26397334582a2720371030253c31442a253463402239322055372e3e2c5c63273a2855632a73304431243d241025243c375222273f63402f2a2a2642633c3a2f5c632f3227543a6b23315f362f7d637636283863492c3e7d

This isn't difficult, but it will take some time to write efficient and reusable code. Good luck.
I'll post my solution after some people have solved it. If no one solves it anytime soon, I will release my solution, so you may learn from it.


RE: [Challenge] Break repeated-key XOR. - Cyanide and Cynicism - 10-02-2013

This isn't XOR, this is hex.

lol GL to anyone attempting becuz u wont be able to since ur on dis forum


RE: [Challenge] Break repeated-key XOR. - Phizo - 10-04-2013

I may post my solution in the next two days, since no one is willing to attempt it.
If you're thinking of attempting, post saying say so, and I'll allocate time for you and halt the posting of my solution.


RE: [Challenge] Break repeated-key XOR. - Oni - 10-04-2013

(10-02-2013, 03:35 PM)Cyanide and Cynicism Wrote: This isn't XOR, this is hex.

lol GL to anyone attempting becuz u wont be able to since ur on dis forum

I know of a couple of people that would be able to find the solution. Unfortunately, both are pretty busy.


RE: [Challenge] Break repeated-key XOR. - w00t - 10-04-2013

I thought about doing it the lazy way( just iterating through XORing the remainder of the text w/ the first n bytes ), but I'm unsure if I'm missing something obvious that would make it easier.


RE: [Challenge] Break repeated-key XOR. - Phizo - 10-04-2013

(10-04-2013, 03:46 PM)w00t Wrote: I thought about doing it the lazy way( just iterating through XORing the remainder of the text w/ the first n bytes ), but I'm unsure if I'm missing something obvious that would make it easier.

You could do that, but when it comes to analysing each N-sized block, you will find that it's actually counterproductive; it will take up more time rather than saving some.
You can determine the correct key-length by computing the Hamming distance between the first key-length worth of bytes and the second key-length worth of bytes. Normalise the result by dividing by key-length. This is the first step to tackling this.
If you would like anymore tips or have any questions regarding how to proceed further, feel free to ask.


RE: [Challenge] Break repeated-key XOR. - Phizo - 10-10-2013

Nobody really made an attempt, so here is my solution. I'm sure at least one person will appreciate it.

Code:
function hamdist($a, $b) { $func = function ($char) { return str_split(sprintf('%08b', ord($char))); }; $a = array_map($func, str_split($a)); $b = array_map($func, str_split($b)); for($dist = $i = 0, $len = count($a); $i < $len; $i++) { for($j = 0, $len2 = count($a[$i]); $j < $len2; $j++) if($a[$i][$j] != $b[$i][$j]) $dist++; } return $dist; } function score($string, $unique, $length, $charset, $pretty = '') { $chars = str_split($string, 2); $common = str_split($charset); foreach($unique as $char) $occur[$char] = substr_count($string, $char); arsort($occur); $occur = array_keys(array_slice($occur, 0, $length, true)); foreach($common as $test_char) { foreach($occur as $occur_char) $key_chars[] = (hex2bin($occur_char) ^ $test_char); } $key_chars = array_unique($key_chars); printf("Number of possible key-chars: %d\n\n", count($key_chars)); foreach($key_chars as $key_char) { printf("[Char = '%s' (0x%02x)]\t", $key_char, ord($key_char)); foreach($chars as $char) echo $pretty ? $pretty(hex2bin($char) ^ $key_char) : (hex2bin($char) ^ $key_char); echo PHP_EOL; } } $enc = hex2bin('0a103424262f5463283c2d57312a27365c223f3663492c3e7f6352363f733a5f366c212610303f3a2f5c63253c371024243c271026253c36572b6b272c102e2a382610272a372749633b212c4527657313553123323343632f212c472d223d24102a25732051376b35264237223f2a4a26397334582a2720371030253c31442a253463402239322055372e3e2c5c63273a2855632a73304431243d241025243c375222273f63402f2a2a2642633c3a2f5c632f3227543a6b23315f362f7d637636283863492c3e7d'); for($keysize = 2; $keysize <= 40; $keysize++) { $blockA = substr($enc, 0, $keysize); $blockB = substr($enc, $keysize, $keysize); if(strlen($blockA) != strlen($blockB)) die('Block sizes differ.'); printf("(Keysize = %d)\t%.2f\n", $keysize, (hamdist($blockA, $blockB) / $keysize)); } $keysize = 5; $enc_blocks = str_split($enc, $keysize); for($i = 0; $i < $keysize; $i++) { foreach($enc_blocks as $block) $bytes[] = bin2hex(substr($block, $i, 1)); $string = implode('', $bytes); $unique = array_unique(array_filter($bytes)); printf("\n\n-- Block %d --\n0x%s\n\n", ($i + 1), $string); score($string, $unique, $keysize, ' eta', 'bin2hex'); unset($bytes); }

Output analysis:
Spoiler:
hamdist(): notice the dips at fifth-increments; this tells us the key-length could be 5 * n.
Code:
(Keysize = 2) 4.00 (Keysize = 3) 4.00 (Keysize = 4) 3.75 (Keysize = 5) 3.00 (Keysize = 6) 3.67 (Keysize = 7) 3.43 (Keysize = 8) 3.50 (Keysize = 9) 3.33 (Keysize = 10) 2.60 (Keysize = 11) 3.73 (Keysize = 12) 3.75 (Keysize = 13) 2.15 (Keysize = 14) 2.93 (Keysize = 15) 3.20 (Keysize = 16) 4.00 (Keysize = 17) 3.06 (Keysize = 18) 3.17 (Keysize = 19) 3.79 (Keysize = 20) 2.80 (Keysize = 21) 3.57 (Keysize = 22) 3.09 (Keysize = 23) 3.70 (Keysize = 24) 3.75 (Keysize = 25) 2.80 (Keysize = 26) 3.19 (Keysize = 27) 3.67 (Keysize = 28) 3.39 (Keysize = 29) 3.52 (Keysize = 30) 2.83 (Keysize = 31) 3.13 (Keysize = 32) 3.25 (Keysize = 33) 3.15 (Keysize = 34) 3.50 (Keysize = 35) 2.66 (Keysize = 36) 3.33 (Keysize = 37) 3.54 (Keysize = 38) 2.89 (Keysize = 39) 3.31 (Keysize = 40) 2.85

score() with pretty-printing (bin2hex()'d):
Spoiler:
Code:
-- Block 1 -- 0x0a2f2d3663633a262f3727362c26272c13332c2420262a34373163202c2830243763262f273163​63 Number of possible key-chars: 16 [Char = 'C' (0x43)] 496c6e75202079656c7464756f65646f50706f6763656977747220636f6b73677420656c647​22020 [Char = '' (0x06)] 0c292b3065653c20293121302a20212a15352a2226202c32313765262a2e362231652029213​76565 [Char = '' (0x16)] 1c393b2075752c30392131203a30313a05253a3236303c22212775363a3e263221753039312​77575 [Char = ' ' (0x0c)] 0623213a6f6f362a233b2b3a202a2b201f3f20282c2a26383b3d6f2c20243c283b6f2a232b3​d6f6f [Char = '' (0x07)] 0d282a3164643d21283020312b21202b14342b2327212d33303664272b2f372330642128203​66464 [Char = 'S' (0x53)] 597c7e65303069757c6474657f75747f40607f7773757967646230737f7b63776430757c746​23030 [Char = 'I' (0x49)] 4366647f2a2a736f667e6e7f656f6e655a7a656d696f637d7e782a696561796d7e2a6f666e7​82a2a [Char = 'B' (0x42)] 486d6f74212178646d7565746e64656e51716e6662646876757321626e6a72667521646d657​32121 [Char = '' (0x17)] 1d383a2174742d31382030213b31303b04243b3337313d23202674373b3f273320743138302​67474 [Char = 'R' (0x52)] 587d7f64313168747d6575647e74757e41617e7672747866656331727e7a62766531747d756​33131 [Char = 'X' (0x58)] 5277756e3b3b627e776f7f6e747e7f744b6b747c787e726c6f693b787470687c6f3b7e777f6​93b3b [Char = '' (0x02)] 082d2f34616138242d3525342e24252e11312e2622242836353361222e2a32263561242d253​36161 [Char = 'G' (0x47)] 4d686a7124247d61687060716b61606b54746b6367616d73707624676b6f776370246168607​62424 [Char = 'W' (0x57)] 5d787a6134346d71786070617b71707b44647b7377717d63606634777b7f677360347178706​63434 [Char = 'M' (0x4d)] 4762607b2e2e776b627a6a7b616b6a615e7e61696d6b67797a7c2e6d61657d697a2e6b626a7​c2e2e [Char = 'F' (0x46)] 4c696b7025257c60697161706a60616a55756a6266606c72717725666a6e766271256069617​72525 -- Block 2 -- 0x1054575c49525f105c101057101049455543471051424a58104440555c5544105240425c545f76​49 Number of possible key-chars: 16 [Char = '0' (0x30)] 2064676c79626f206c202067202079756573772061727a68207470656c6574206270726c646​f4679 [Char = '|' (0x7c)] 6c282b20352e236c206c6c2b6c6c3539293f3b6c2d3e36246c383c292029386c2e3c3e20282​30a35 [Char = 't' (0x74)] 642023283d262b642864642364643d312137336425363e2c643034212821306426343628202​b023d [Char = 'e' (0x65)] 753132392c373a753975753275752c203026227534272f3d752125303930217537252739313​a132c [Char = 'u' (0x75)] 652122293c272a652965652265653c302036326524373f2d653135202920316527353729212​a033c [Char = '9' (0x39)] 296d6e65706b66296529296e2929707c6c7a7e29687b7361297d796c656c7d296b797b656d6​64f70 [Char = '1' (0x31)] 2165666d78636e216d212166212178746472762160737b69217571646d6475216371736d656​e4778 [Char = ' ' (0x20)] 3074777c69727f307c303077303069657563673071626a78306460757c7564307260627c747​f5669 [Char = 'd' (0x64)] 743033382d363b743874743374742d213127237435262e3c742024313831207436242638303​b122d [Char = '(' (0x28)] 387c7f74617a77387438387f3838616d7d6b6f38796a6270386c687d747d6c387a686a747c7​75e61 [Char = '!' (0x21)] 3175767d68737e317d313176313168647462663170636b79316561747d7465317361637d757​e5768 [Char = 'q' (0x71)] 6125262d38232e612d616126616138342432366120333b29613531242d2435612331332d252​e0738 [Char = '=' (0x3d)] 2d696a61746f622d612d2d6a2d2d7478687e7a2d6c7f77652d797d686168792d6f7d7f61696​24b74 [Char = '5' (0x35)] 256162697c676a256925256225257c706076722564777f6d257175606960712567757769616​a437c [Char = '$' (0x24)] 347073786d767b347834347334346d617167633475666e7c346064717871603476646678707​b526d [Char = '4' (0x34)] 246063687d666b246824246324247d716177732465767e6c247074616861702466747668606​b427d -- Block 3 -- 0x346331222c3636306324262b2e27632731632d2a3737262a302a223763633125222f63633a3636​2c Number of possible key-chars: 15 [Char = 'C' (0x43)] 772072616f757573206765686d64206472206e69747465697369617420207266616c2020797​5756f [Char = '' (0x16)] 227527343a2020267532303d3831753127753b3c2121303c263c342175752733343975752c2​0203a [Char = ' ' (0x0a)] 3e693b28263c3c3a692e2c21242d692d3b6927203d3d2c203a20283d69693b2f28256969303​c3c26 [Char = '' (0x17)] 237426353b2121277433313c3930743026743a3d2020313d273d352074742632353874742d2​1213b [Char = '' (0x02)] 366133202e343432612624292c25612533612f28353524283228203561613327202d6161383​4342e [Char = '' (0x06)] 326537242a3030366522202d2821652137652b2c3131202c362c243165653723242965653c3​0302a [Char = 'S' (0x53)] 673062717f656563307775787d74307462307e79646475796379716430306276717c3030696​5657f [Char = 'O' (0x4f)] 7b2c7e6d6379797f2c6b696461682c687e2c6265787869657f656d782c2c7e6a6d602c2c757​97963 [Char = 'R' (0x52)] 663163707e646462317674797c75317563317f78656574786278706531316377707d3131686​4647e [Char = 'G' (0x47)] 732476656b7171772463616c6960246076246a6d7070616d776d657024247662656824247d7​1716b [Char = 'B' (0x42)] 762173606e747472216664696c65216573216f68757564687268607521217367606d2121787​4746e [Char = '^' (0x5e)] 6a3d6f7c7268686e3d7a787570793d796f3d7374696978746e747c693d3d6f7b7c713d3d646​86872 [Char = 'V' (0x56)] 623567747a6060663572707d7871357167357b7c6161707c667c746135356773747935356c6​0607a [Char = 'W' (0x57)] 633466757b6161673473717c7970347066347a7d6060717d677d756034346672757834346d6​1617b [Char = 'K' (0x4b)] 7f287a69677d7d7b286f6d60656c286c7a2866617c7c6d617b61697c28287a6e69642828717​d7d67 -- Block 4 -- 0x24282a3f3e3f6c3f2524256b2a2a3b65232f22256b2239272525392e272a2424272a3c2f6b2f28​3e Number of possible key-chars: 20 [Char = ' ' (0x0a)] 2e222035343566352f2e2f612020316f2925282f6128332d2f2f33242d202e2e2d203625612​52234 [Char = '' (0x05)] 212d2f3a3b3a693a2021206e2f2f3e60262a27206e273c2220203c2b222f2121222f392a6e2​a2d3b [Char = '' (0x04)] 202c2e3b3a3b683b2120216f2e2e3f61272b26216f263d2321213d2a232e2020232e382b6f2​b2c3a [Char = '' (0x0f)] 2b272530313063302a2b2a642525346a2c202d2a642d36282a2a362128252b2b28253320642​02731 [Char = '' (0x07)] 232f2d3839386b382223226c2d2d3c62242825226c253e2022223e29202d2323202d3b286c2​82f39 [Char = 'O' (0x4f)] 6b676570717023706a6b6a246565742a6c606d6a246d76686a6a766168656b6b68657360246​06771 [Char = '@' (0x40)] 64686a7f7e7f2c7f6564652b6a6a7b25636f62652b6279676565796e676a6464676a7c6f2b6​f687e [Char = 'A' (0x41)] 65696b7e7f7e2d7e6465642a6b6b7a24626e63642a6378666464786f666b6565666b7d6e2a6​e697f [Char = 'J' (0x4a)] 6e626075747526756f6e6f216060712f6965686f2168736d6f6f73646d606e6e6d607665216​56274 [Char = 'B' (0x42)] 666a687d7c7d2e7d6766672968687927616d606729607b6567677b6c6568666665687e6d296​d6a7c [Char = '^' (0x5e)] 7a767461606132617b7a7b357474653b7d717c7b357c67797b7b677079747a7a79746271357​17660 [Char = 'Q' (0x51)] 75797b6e6f6e3d6e7475743a7b7b6a34727e73743a7368767474687f767b7575767b6d7e3a7​e796f [Char = 'P' (0x50)] 74787a6f6e6f3c6f7574753b7a7a6b35737f72753b7269777575697e777a7474777a6c7f3b7​f786e [Char = '[' (0x5b)] 7f737164656437647e7f7e307171603e7874797e3079627c7e7e62757c717f7f7c716774307​47365 [Char = 'S' (0x53)] 777b796c6d6c3f6c7677763879796836707c717638716a7476766a7d7479777774796f7c387​c7b6d [Char = 'K' (0x4b)] 6f636174757427746e6f6e206161702e6864696e2069726c6e6e72656c616f6f6c617764206​46375 [Char = 'D' (0x44)] 606c6e7b7a7b287b6160612f6e6e7f21676b66612f667d6361617d6a636e6060636e786b2f6​b6c7a [Char = 'E' (0x45)] 616d6f7a7b7a297a6061602e6f6f7e20666a67602e677c6260607c6b626f6161626f796a2e6​a6d7b [Char = 'N' (0x4e)] 6a666471707122716b6a6b256464752b6d616c6b256c77696b6b776069646a6a69647261256​16670 [Char = 'F' (0x46)] 626e6c7978792a796362632d6c6c7d23656964632d647f6163637f68616c6262616c7a692d6​96e78 -- Block 5 -- 0x263c27367f73213a3c3c3c273837217332213d73353f73203c34323e3a733d3c3f2a3a32237d38​7d Number of possible key-chars: 18 [Char = 'S' (0x53)] 756f74652c2072696f6f6f746b64722061726e20666c20736f67616d69206e6f6c796961702​e6b2e [Char = '' (0x1c)] 3a203b2a636f3d262020203b242b3d6f2e3d216f29236f3c20282e22266f21202336262e3f6​12461 [Char = '' (0x12)] 342e35246d6133282e2e2e352a25336120332f61272d61322e26202c28612f2e2d382820316​f2a6f [Char = '' (0x01)] 273d26377e72203b3d3d3d263936207233203c72343e72213d35333f3b723c3d3e2b3b33227​c397c [Char = '' (0x1a)] 3c263d2c65693b202626263d222d3b69283b27692f25693a262e28242069272625302028396​72267 [Char = '' (0x16)] 302a31206965372c2a2a2a312e21376524372b65232965362a2224282c652b2a293c2c24356​b2e6b [Char = 'Y' (0x59)] 7f657e6f262a78636565657e616e782a6b78642a6c662a79656d6b67632a64656673636b7a2​46124 [Char = 'W' (0x57)] 716b70612824766d6b6b6b706f60762465766a24626824776b6365696d246a6b687d6d65742​a6f2a [Char = 'D' (0x44)] 627863723b37657e787878637c73653776657937717b37647870767a7e3779787b6e7e76673​97c39 [Char = '_' (0x5f)] 79637869202c7e656363637867687e2c6d7e622c6a602c7f636b6d61652c62636075656d7c2​26722 [Char = '' (0x07)] 213b20317874263d3b3b3b203f30267435263a74323874273b3335393d743a3b382d3d35247​a3f7a [Char = 'H' (0x48)] 6e746f7e373b69727474746f707f693b7a69753b7d773b68747c7a76723b75747762727a6b3​57035 [Char = 'F' (0x46)] 607a61703935677c7a7a7a617e71673574677b35737935667a7274787c357b7a796c7c74653​b7e3b [Char = 'U' (0x55)] 736972632a26746f696969726d62742667746826606a26756961676b6f2668696a7f6f67762​86d28 [Char = 'N' (0x4e)] 68726978313d6f747272726976796f3d7c6f733d7b713d6e727a7c70743d73727164747c6d3​37633 [Char = ']' (0x5d)] 7b617a6b222e7c676161617a656a7c2e6f7c602e68622e7d61696f63672e60616277676f7e2​06520 [Char = '@' (0x40)] 667c67763f33617a7c7c7c677877613372617d33757f33607c74727e7a337d7c7f6a7a72633​d783d [Char = '[' (0x5b)] 7d677c6d24287a616767677c636c7a28697a66286e64287b676f69656128666764716169782​66326


score() (raw bytes):
Spoiler:
Code:
-- Block 1 -- 0x0a2f2d3663633a262f3727362c26272c13332c2420262a34373163202c2830243763262f27316363 Number of possible key-chars: 16 [Char = 'C' (0x43)] Ilnu yeltduoedoPpogceiwtr coksgt eldr [Char = '' (0x06)] )+0ee< )1!0* !*5*"& ,217e&*.6"1e )!7ee [Char = '' (0x16)] 9; uu,09!1 :01:%:260<"!'u6:>&2!u091'uu [Char = ' ' (0x0c)] #!:oo6*#;+: *+ ? (,*&8;=o, $<(;o*#+=oo [Char = '' (0x07)] (*1dd=!(0 1+! +4+#'!-306d'+/7#0d!( 6dd [Char = 'S' (0x53)] Y|~e00iu|dteut@`wsuygdb0s{cwd0u|tb00 [Char = 'I' (0x49)] Cfd**sof~neoneZzemioc}~x*ieaym~*ofnx** [Char = 'B' (0x42)] Hmot!!xdmuetndenQqnfbdhvus!bnjrfu!dmes!! [Char = '' (0x17)] 8:!tt-18 0!;10;$;371=# &t7;?'3 t180&tt [Char = 'R' (0x52)] X}d11ht}eud~tu~Aa~vrtxfec1r~zbve1t}uc11 [Char = 'X' (0x58)] Rwun;;b~wont~tKkt|x~rloi;xtph|o;~wi;; [Char = '' (0x02)] -/4aa8$-5%4.$%.1.&"$(653a".*2&5a$-%3aa [Char = 'G' (0x47)] Mhjq$$}ahp`qka`kTtkcgamspv$gkowcp$ah`v$$ [Char = 'W' (0x57)] ]xza44mqx`pa{qp{Dd{swq}c`f4w{gs`4qxpf44 [Char = 'M' (0x4d)] Gb`{..wkbzj{akja^~aimkgyz|.mae}iz.kbj|.. [Char = 'F' (0x46)] Likp%%|`iqapj`ajUujbf`lrqw%fjnvbq%`iaw%% -- Block 2 -- 0x1054575c49525f105c101057101049455543471051424a58104440555c5544105240425c545f7649 Number of possible key-chars: 16 [Char = '0' (0x30)] dglybo l g yuesw arzh tpelet bprldoFy [Char = '|' (0x7c)] l(+ 5.#l ll+ll59)?;l->6$l8<) )8l.<> (# 5 [Char = 't' (0x74)] d #(=&+d(dd#dd=1!73d%6>,d04!(!0d&46( += [Char = 'e' (0x65)] u129,7:u9uu2uu, 0&"u4'/=u!%090!u7%'91:, [Char = 'u' (0x75)] e!")<'*e)ee"ee<0 62e$7?-e15 ) 1e'57)!*< [Char = '9' (0x39)] )mnepkf)e))n))p|lz~)h{sa)}ylel})ky{emfOp [Char = '1' (0x31)] !efmxcn!m!!f!!xtdrv!`s{i!uqdmdu!cqsmenGx [Char = ' ' (0x20)] 0tw|ir0|00w00ieucg0qbjx0d`u|ud0r`b|tVi [Char = 'd' (0x64)] t038-6;t8tt3tt-!1'#t5&.<t $181 t6$&80;- [Char = '(' (0x28)] 8|tazw8t8888am}ko8yjbp8lh}t}l8zhjt|w^a [Char = '!' (0x21)] 1uv}hs~1}11v11hdtbf1pcky1eat}te1sac}u~Wh [Char = 'q' (0x71)] a%&-8#.a-aa&aa84$26a 3;)a51$-$5a#13-%.8 [Char = '=' (0x3d)] -ijatob-a--j--txh~z-lwe-y}hahy-o}aibKt [Char = '5' (0x35)] %abi|gj%i%%b%%|p`vr%dwm%qu`i`q%guwiajC| [Char = '$' (0x24)] 4psxmv{4x44s44maqgc4ufn|4`dqxq`4vdfxp{Rm [Char = '4' (0x34)] $`ch}fk$h$$c$$}qaws$ev~l$ptahap$ftvh`kB} -- Block 3 -- 0x346331222c3636306324262b2e27632731632d2a3737262a302a223763633125222f63633a36362c Number of possible key-chars: 15 [Char = 'C' (0x43)] w raouus gehmd dr nitteisiat rfal yuuo [Char = '' (0x16)] "u'4: &u20=81u1'u;<!!0<&<4!uu'349uu, : [Char = ' ' (0x0a)] >i;(&<<:i.,!$-i-;i' ==, : (=ii;/(%ii0<<& [Char = '' (0x17)] #t&5;!!'t31<90t0&t:= 1='=5 tt&258tt-!!; [Char = '' (0x02)] 6a3 .442a&$),%a%3a/(55$(2( 5aa3' -aa844. [Char = '' (0x06)] 2e7$*006e" -(!e!7e+,11 ,6,$1ee7#$)ee<00* [Char = 'S' (0x53)] g0bqeec0wux}t0tb0~ydduycyqd00bvq|00iee [Char = 'O' (0x4f)] {,~mcyy,kidah,h~,bexxieemx,,~jm`,,uyyc [Char = 'R' (0x52)] f1cp~ddb1vty|u1uc1xeetxbxpe11cwp}11hdd~ [Char = 'G' (0x47)] s$vekqqw$cali`$`v$jmppamwmep$$vbeh$$}qqk [Char = 'B' (0x42)] v!s`nttr!fdile!es!ohuudhrh`u!!sg`m!!xttn [Char = '^' (0x5e)] j=o|rhhn=zxupy=yo=stiixtnt|i==o{|q==dhhr [Char = 'V' (0x56)] b5gtz``f5rp}xq5qg5{|aap|f|ta55gsty55l``z [Char = 'W' (0x57)] c4fu{aag4sq|yp4pf4z}``q}g}u`44frux44maa{ [Char = 'K' (0x4b)] (zig}}{(om`el(lz(fa||ma{ai|((znid((q}}g -- Block 4 -- 0x24282a3f3e3f6c3f2524256b2a2a3b65232f22256b2239272525392e272a2424272a3c2f6b2f283e Number of possible key-chars: 20 [Char = ' ' (0x0a)] ." 545f5/./a 1o)%(/a(3-//3$- ..- 6%a%"4 [Char = '' (0x05)] !-/:;:i: ! n//>`&*' n'<" <+"/!!"/9*n*-; [Char = '' (0x04)] ,.;:;h;! !o..?a'+&!o&=#!!=*#. #.8+o+,: [Char = '' (0x0f)] +'%010c0*+*d%%4j, -*d-6(**6!(%++(%3 d '1 [Char = '' (0x07)] #/-898k8"#"l--<b$(%"l%> "">) -## -;(l(/9 [Char = 'O' (0x4f)] kgepqp#pjkj$eet*l`mj$mvhjjvahekkhes`$`gq [Char = '@' (0x40)] dhj~,ede+jj{%cobe+bygeeyngjddgj|o+oh~ [Char = 'A' (0x41)] eik~~-~ded*kkz$bncd*cxfddxofkeefk}n*ni [Char = 'J' (0x4a)] nb`utu&uono!``q/ieho!hsmoosdm`nnm`ve!ebt [Char = 'B' (0x42)] fjh}|}.}gfg)hhy'am`g)`{egg{lehffeh~m)mj| [Char = '^' (0x5e)] zvta`a2a{z{5tte;}q|{5|gy{{gpytzzytbq5qv` [Char = 'Q' (0x51)] uy{non=ntut:{{j4r~st:shvtthv{uuv{m~:~yo [Char = 'P' (0x50)] txzono<outu;zzk5sru;riwuui~wzttwzl;xn [Char = '[' (0x5b)] sqded7d~~0qq`>xty~0yb|~~bu|q|qgt0tse [Char = 'S' (0x53)] w{ylml?lvwv8yyh6p|qv8qjtvvj}tywwtyo|8|{m [Char = 'K' (0x4b)] ocatut'tnon aap.hdin irlnnrelaoolawd dcu [Char = 'D' (0x44)] `ln{z{({a`a/nn!gkfa/f}caa}jcn``cnxk/klz [Char = 'E' (0x45)] amoz{z)z`a`.oo~ fjg`.g|b``|kboaaboyj.jm{ [Char = 'N' (0x4e)] jfdqpq"qkjk%ddu+malk%lwikkw`idjjidra%afp [Char = 'F' (0x46)] bnlyxy*ycbc-ll}#eidc-dacchalbbalzi-inx -- Block 5 -- 0x263c27367f73213a3c3c3c273837217332213d73353f73203c34323e3a733d3c3f2a3a32237d387d Number of possible key-chars: 18 [Char = 'S' (0x53)] uote, rioootkdr arn fl sogami nolyiap.k. [Char = '' (0x1c)] : ;*co=& ;$+=o.=!o)#o< (."&o! #6&.?a$a [Char = '' (0x12)] 4.5$ma3(...5*%3a 3/a'-a2.& ,(a/.-8( 1o*o [Char = '' (0x01)] '=&7~r ;===&96 r3 <r4>r!=53?;r<=>+;3"|9| [Char = '' (0x1a)] <&=,ei; &&&="-;i(;'i/%i:&.($ i'&%0 (9g"g [Char = '' (0x16)] 0*1 ie7,***1.!7e$7+e#)e6*"$(,e+*)<,$5k.k [Char = 'Y' (0x59)] e~o&*xceee~anx*kxd*lf*yemkgc*defsckz$a$ [Char = 'W' (0x57)] qkpa($vmkkkpo`v$evj$bh$wkceim$jkh}met*o* [Char = 'D' (0x44)] bxcr;7e~xxxc|se7vey7q{7dxpvz~7yx{n~vg9|9 [Char = '_' (0x5f)] ycxi ,~ecccxgh~,m~b,j`,ckmae,bc`uem|"g" [Char = '' (0x07)] !; 1xt&=;;; ?0&t5&:t28t';359=t:;8-=5$z?z [Char = 'H' (0x48)] nto~7;irtttopi;ziu;}w;ht|zvr;utwbrzk5p5 [Char = 'F' (0x46)] `zap95g|zzza~qg5tg{5sy5fzrtx|5{zyl|te;~; [Char = 'U' (0x55)] sirc*&toiiirmbt&gth&`j&uiagko&hijogv(m( [Char = 'N' (0x4e)] hrix1=otrrrivyo=|os={q=nrz|pt=srqdt|m3v3 [Char = ']' (0x5d)] {azk".|gaaazej|.o|`.hb.}aiocg.`abwgo~ e [Char = '@' (0x40)] f|gv?3az|||gxwa3ra}3u3`|tr~z3}|jzrc=x= [Char = '[' (0x5b)] }g|m$(zaggg|clz(izf(nd({goiea(fgdqaix&c&



Plaintext (neglect the missing word, I'll be having a word with my editor about that):
Code:
$key = 'C0CKS'; foreach($enc_blocks as $block) echo ($block ^ $key);
Code:
I would congratulate you, but you're still not good enough to make daddy proud. Perhaps drowning in cat fertilizer whilst snorting paracetemol like a strong football player will daddy proud. Fuck you.



RE: [Challenge] Break repeated-key XOR. - Reiko - 10-11-2013

Well, that's a nice plaintext and I learned something today.
Thanks Phizo.