Challenge 10B
A Tale of 2 Secrets › Forums › T.E.M.P.E.S.T. › Challenge 10B
- This topic has 274 replies, 92 voices, and was last updated 1 week ago by _madness_.
-
AuthorPosts
-
9th January 2026 at 4:42 pm #115135Robb27Participant
@BobD
This was my approach too, as the advantage BobD mentions is really useful.For those interested, I used SUMPRODUCT to find the Row and Column of each of the two cards:
-The cells to the side of the table, that is 0-9 running down the rows = row range.
-The cells to the above the table, that is 0-9 running across the top = column range.
-The cells covering all the cards, AC through to KS = card range
-Arrange the cards in groups of 4 running down a spreadsheet e.g.
7CXS
3H6S
7CKS etcYou can then extract “7C” with Left(card pair,2) and CX with Right(card pair,2). I have type 7C below for ease.
– The row is given by SUMPRODUCT((“7C”=card range)*(row range))
– The column is given by SUMPRODUCT((“7C”=card range)*(column range))Using BobD’s table: Card 7C is row 1 and column 0, and Card XS is row 9 and column 6.
You can then use INDEX to extract the decrypted pair of letters ‘RE’
– the R is INDEX(card range, 9, 0). This is the row of XS and the column of 7C.
– and E is INDEX(card range, 1, 6). This is the row of 7C and the column of XS.You can then just copy these INDEX formula down all the card pairs. Finally you can join the decrypted text together to extract it as a text block to put in to words and sentences.
Note: Just be careful to make sure the references to the ‘row range’, ‘column range’ and ‘card range’ are ‘fixed’ correctly so that they always reference the card table.
9th January 2026 at 7:14 pm #115136TParticipantRegarding my attempt at solving 10B as a 16×36 grid – I think I have gone as far as I can and am left with 5 letters that don’t match the plaintext and I cannot fix without using patterns in the key or if I referred to the plaintext (99.85% solved). The key pair I ended up with is:
KEY1 =
“SUADOGSHMDAWSKADCWSHUDOWSHXDOWGHBBOISFGDOVSHLDOWSLAEOWSMAMOPSHADOCSYPDOWPBADOMSHADOWSUMDOGSGADOAUMAYWSHDSNSKSIHDGWSHADOWTKACOMUVADOWSNADOLTCAKRHLFEFLIBCEFGIBFEVLIBCEFGDBCEFGIBTEKGIBCEFMIBCEFGIPNEFXIDCERXIYTEFHIATELLIXXEQGIOCEFGIRREMGILQEPKIWUDPHGXSEAMXVCAFGAMCEFGIYXELGIXPETGIPCEQGIBGEFGUKSTNKXKLMNPXKYMOMVKLMNPTBLVNPUMNSNBHXLHNQQKLMNPAFAONVKHLFNKKHBMPPPQVQNYQQLXNPYQUMBPHVLMNFQXRVNPVQABYGFMWPXXXVIBNVKKLMNFUWLINDNWLOUQQQLVNCWBLBNPQSTKDWYRTMVQYRVQXWYRTUVHYRTWVBYXMUFQIRTOVOGRTUPDYRCUUXYRFHVEFRCUWHYWTWPCARTUVBQRTULXYRXQQCYRTHVUYCQKWKKFKUHNBRTCBYCRTUCVYRKXCTYRVUXWYRTUBPYRTPQHK”KEY2 =
“FEFFFYEEVEIEBYBBPBIIHIIIOOHOOOVBCNVXUNQUUSAAPAAACHCHCCKCKLKDPPPPPVWKGWWFMMLLLFRRRRRRDMODDUMWMMMUDWQQSGNYLQNMHISHCHTTTTTTBNGYGGGHNNNNSNSSSCVLYWVHQSFFWFEEEEEEBGBYMBIIIIIGOOOOOOVQVQMVUUUUSUAAAAAAUPCCTCCKKFOKUKPPMPHGWBRWNSLRLLBRRRRRQWDUDDFPMHRMMQVSLPEYXWQGDHVHHDHTTTTTXFGVGGQXNPNNQSSOSSYFYYBOFQNFAREEEEEVBVBYYTIIIIIDSOAOOFMBVVTWWUYUGULAAAAXLOHCFXCKWKOSUPPWPTLGKWYEFLLLLWHYRXRKQDDDBYBXXMBNQEKLXDNPCKYMRHQHPCTTTTQWYGYGXRQNQUBCMSLSGUDYHYYSXFPQDFEEKEVEBWXIVBIIIIQIOOXOGOAXXXNQUUXUEKAAANKACWCVCCKKFBQMPXPGXPKWCVQALLLCLIRRRXDRDUATFDMMGKBMMWGLHUVKKDXFHHBWHCTTTNVTGVXDXGNMNPWNSSSRFSYYKDVD”The methods I used would have worked if the plaintext had been longer, but with the plaintext being less than three times the length of the total key length it was always going to be questionable as to whether a full solution would be possible limited by the strict criteria I had set myself.
11th January 2026 at 2:02 pm #115140LW_8S_31ParticipantThat’s what I did!
12th January 2026 at 9:00 am #115085ChinchinchillaParticipantAfter finishing 10B on the 2nd January, I would just like to share the exacerbating journey that I went through to complete the cipher. At first, since this is my first time in the cipher challenge and since I was an individual participant, I would like to confess that I underestimated the difficulty of the cipher challenge, mainly 9B and 10B, which were the challenges were I didn’t get all the points. In 10B, I initially calculated the index of coincidence, which led me to think that it was a polyalphabetic cipher. The first alphanumeric cipher that came to my mind was a modified 6 by 6 playfair cipher, which would have the letters A-Z and the digits 0-9, and I tried to decrypt the cipher with frequency analysis and hill climbing. I kept thinking that until I saw case file 10.5, which led me to the conclusion that I was dealing with a modified foursquare cipher. After some more case files were released, especially the ones with the digraphs, I was able to fully complete the whole grid and create a code to decipher by the 26th January. However, after putting in the ciphertext and trying to decrypt it, I got an error. After that, I queried my grid and although it was actually right, I doubted myself, so I took a break for a couple of days. When I returned to the cipher with a fresh mind on the 2nd January, I realised that I had made a terrible mistake: I forgot to split the ciphertext into bigraphs! After splitting it into bigrams and decrypting the ciphertext, I had a fully complete decryption of the ciphertext, into a grammatically correct plaintext! Overall, despite regretting the mistakes I had initially made, I found the whole cipher challenge fun, and I cannot wait for the next challenge’s 10B cipher. Thank you to all those who made solving the cipher a fun experience. However, I am just curious how on earth one was supposed to decrypt the cipher without the first 7 case files, which I where I need your level of expertise Harry. If there was any participant who decrypted the cipher BEFORE CASE FILE 10.2 was released, then could you please explain on the forum your methods of reasoning and how you got there in the end.
12th January 2026 at 12:00 pm #115073_madness_Participant@tahausman, are you suggesting that Cipher Challenge create its own YouTube channel and post tutorials on cipher-cracking? I myself cannot contribute, because my ugly face breaks any camera lens that points at it.
What I can do is offer you this explanation of how @AspiringPenguin figured it out. It is not how Harry expected the cipher to be solved, so it gives a different and interesting perspective. Here’s how s/he did it:
First, notice that the characters come in pairs, and the first of each pair is from A23456789XJQK, while the second is from CDHS. Remember all the stuff about playing cards at the beginning of the season? These character sets should pop out as playing cards, if we take the reasonable assumption that X = 10. OK, so they are all playing cards. In the Bridge ordering of the deck, cards run AC, 2C, …, XC, JC, QC, KC, AD, 2D, …, KD, AH, …, KH, AS, …, KS. Number them from 0 to 51. Now the ciphertext is a long list of numbers.
Next, notice that once again things come in pairs. The first number of each pair is in the range 0-35, while the second is in the range 36-51. That second range has length 16, so let’s subtract 36 from each of them to get numbers in the range 0-15.
At this point, the Penguin notices that numbers in the range 0-35 are two-digit numbers when expressed in base 6, and numbers 0-15 are two-digit numbers when expressed in base 4. For each pair of numbers, replace them with their base-6 and base-4 equivalents; call them AB and CD for the heck of it, where A and B are in the range 0-5, and C and D in the range 0-3.
Now, we must remember that 24 is one of Harry’s favo(u)rite numbers. And an alphabet with 24 letters is usually big enough, if the plaintext does not contain J and Z, for example. Well, 24 = 6 x 4. So we can shuffle the digits A, B, C, and D to make two numbers in the range 0-23. There are several ways to do this, but the one that puts the pairs in the right order and lines up the alphabets so that the keywords stand out is this:
X = B + 6xC
Y = D + 4xADo this calculation for each pair of numbers AB(base6) and CD(base4), and replace them with X and Y. Or replace X and Y with letters (A=0, B=1, …, Z=25). Either way, what remains is a polyalphabetic substitution cipher with period 2. This can be solved by hill-climbing or by clever trial-and-error.
When you are finished, you will find that the two substitution keys are gibberish, but if you invert them, you get
SHADOWBCEFGIKLMNPQRTUVXYJZ
FULHEARTBCDGIKMNOPQSVWXYJZ
Lop off the JZ at the ends because you need 24-letter keys for this cipher. The keywords are now evident.12th January 2026 at 8:48 pm #115158F6EXB_the_frenchyParticipantI had put a Python program to help reconstruct the grid. Was it not approved by the moderators?
Not while the challenge was still live! Harry
14th January 2026 at 9:10 pm #115170AspiringPenguinParticipant@Chinchinchilla
To expand upon Madness’s excellent explanation of my final method, I thought I would add this regarding how I found it:One of the key ideas that drove me towards a solution is that in the ciphers used here, it is typically the case that every pattern and detail is important and should be accounted for, not ignored.
How very gratifying! Harry
That got me as far as the numbers 0-35 and 0-15 as it helped steer me away from some of the blind alleys I went down. From there the final steps to solve were generally more apparent (in a relative sense) than the previous ones as it was a case of generate text based on a hypothesis and test the resultant text, especially once I had the realisation how to split them up…
14th January 2026 at 9:12 pm #115164F6EXB_the_frenchyParticipantSorry,
I thought it was possible because ILL posted a program that gave the complete decryption the day before.
#114952Not a problem, and sorry to disappoint, but we thought that some people might still be trying to code/amend their code to get it to work even after the key was published. Harry
16th January 2026 at 5:29 pm #115185_madness_Participant20th January 2026 at 2:04 pm #115139_madness_ParticipantIf we are all bragging about our Python coding, here is something that will decrypt 10B:
Clearly we are NOT bragging! That would be outside the spirit of the forum!! Sharing our wisdom, knowledge and experience for the benefit of others, however … Harry
c = "7CXS3 H6S7C KSXDA S2CKS...".replace(" ","") p = "" for i in range(len(c)//4): n = ["A23456789XJQK".index(c[4*i+2*j+0]) + 13*"CDHS".index(c[4*i+2*j+1]) - 36*j for j in [0,1]] p += "SHADOWBCEFGIKLMNPQRTUVXY"[(n[0]%6) + 6*(n[1]//4)] + "FULHEARTBCDGIKMNOPQSVWXY"[(n[1]%4) + 4*(n[0]//6)] print(p)I will not be taking questions at this time.
21st January 2026 at 11:34 am #115196F6EXB_the_frenchyParticipantWhen you’ve sweated blood and tears to painstakingly write a 90-line program and then you come across message #115139… you feel very small.
Respect.21st January 2026 at 5:15 pm #115190pi_enthusiastParticipantI’m still baffled as to what XD KS AS 2C was representing. They aren’t even consistent with how we get letters from the grid (AS2C is reversed order of the pair of cards to what I would expect). Curious if anyone has figured out that cryptic clue.
21st January 2026 at 5:15 pm #115245Crackerjack_404ParticipantI once had a friend who made it his personal mission to complete every programming assignment in a single line of code much to the annoyance of our teacher. In that spirit, and inspired by @madness’ even more efficient approach, I offer the following one line monstrosity with slight additions to the code above:
print((lambda c: "".join(("SHADOWBCEFGIKLMNPQRTUVXY"[(("A23456789XJQK".index(c[i]) + 13*"CDHS".index(c[i+1]))%6)+6*((("A23456789XJQK".index(c[i+2]) + 13*"CDHS".index(c[i+3]) - 36))//4)] + "FULHEARTBCDGIKMNOPQSVWXY"[((("A23456789XJQK".index(c[i+2]) + 13*"CDHS".index(c[i+3]) - 36))%4)+4*((("A23456789XJQK".index(c[i]) + 13*"CDHS".index(c[i+1]))//6))]) for i in range(0,len(c),4)))("7CXS3 H6S7C...".replace(" ", "")))The code is great, but I would love to see the comments it needs for future maintainers! And couldn’t you get it down to binary if you really tried? Harry
21st January 2026 at 7:49 pm #115246_madness_Participant@Crackerjack_404 takes the prize. Kudos!
Wow, Kudos from Madness! Definitely something for the CV. Harry
21st January 2026 at 7:49 pm #115247_madness_Participant@F6EXB_the_frenchy, but your code shows how the cipher was meant to be understood.
Don’t think less of it, or of yourself. Remember what the dormouse said. -
AuthorPosts
- You must be logged in to reply to this topic.