Reply To: Programming
A Tale of 2 Secrets › Forums › T.E.M.P.E.S.T. › Programming › Reply To: Programming
@Scarlett
Hi, I’d say it depends on how much experience you already have with ciphers. For a lot of the challenge, you can genuinely get pretty far without much coding at all, it’ll be slow and a bit tedious, but absolutely doable. That said, just because we can solve everything by hand doesn’t mean we should.
My first two of years doing the Cipher Challenge I barely knew how to code, so I relied on very simple tools like:
– reading from a text file
– finding and replacing characters
– String manipulation
– frequency analysis
You can also use a spreadsheet or any text editor to do this. But the above are just a few lines of Python each, and you can learn them as you go.
When dealing with any programming problem, the hard part is usually knowing what to do rather than how to do it. The ‘how’ comes with time and practice, but once you know what type of cipher/problem you’re dealing with, things become more manageable.
For example, if you’re working with a transposing cipher, you can abstract the problem by thinking of it as just picking a key length, splitting the ciphertext into rows of that length, and ordering the columns and seeing if it looks more or less like English, and making small tweaks in your row/column layout as you go along. You can do all of that using a spreadsheet without writing a single line of code. But once you understand the process of solving that cipher, you can look up how to implement something like a hill-climbing attack to automate the tweaking and speed up the decryption process.
It’s absolutely possible to learn quickly, but it depends on how much time/energy you have to expend. I wouldn’t suggest you spend all day everyday coding as that’s a quick way to burn out. But what you can do is pick one section, like learning how to write a script to calculate IoC for a text, and do that. Consistency > Intensity. Writing your own solvers is honestly a brilliant way to learn programming, and it’s also really satisfying to see them in action!
My team and I just worked through Madness’ book over a few months which gave us a structured way to build from decrypting simple ciphers with known keyword to writing automated solvers. There are plenty of programming tasks in that book that you can play around with.
Challenges will inevitably get harder, and they’re deliberately designed to stretch you, confuse you, make you question your life choices, and as I’m sure other people can attest to, send you spiralling into existential dread… But that’s all part of the fun of doing something challenging like this! So do enjoy the process!
One other important thing – you don’t need to do everything at once. It may feel daunting, so just try and focus on implementing one concept, one solver, or learning one skill at a time. Everyone starts somewhere, so if you’re not sure where to start, just start with some basics Python tasks. In terms of resources, I’m sure there will be lots of people who can recommend their favourite programming book/website. I quite like Cracking codes with Python, which is like an online textbook you can work through.
Hope this helps!