Posted: Sat Mar 03, 2007 1:11 am
It's not too hard after a bit of practice. Of course you can recognize binary and hex at a glance, and base 64 is just as evident. But when you only have numbers the first thing that comes to mind is decimal ascii.trainer101 wrote:EDIT TO ADD: Deagol, it amazes me how quickly you recognize and identify the patterns to these codes.
The hard thing with that is when the code isn't spaced showing you how to break each character code, like this one. So, you play a little bit with how many digits to group at a time trying to get valid characters. However, with this code, nothing works! lol ...that is, if you insist on decoding decimal ascii. Here's the thing, normal character codes in decimal ascii go from 32 to 127. Right from the start on those numbers you can see it doesn't work, unless you go into extended ascii characters which go up to 255:
131153040... can't start with 13, so take 131, then you have to go with 153 and then 040. Using extended ascii gives you Ī( ...not good, so you look at the string some more, and notice a lot of 040 and other 3-digit numbers repeating. So, you suspect the 3-digit spacing is right, but doing the whole thing in extended ascii gives you gibberish.
So, what now? Here's when some experience and actually paying attention to stuff pays off when doing these, instead of just plugging code and hitting a button: after doing quite a bunch of these, I've come to notice that normal english text in decimal ascii code should have mostly high numbers in the 90's-110's for the letters, some 32's for spaces, and perhaps a few mid-range codes (40's-60's) for punctuation. But here we get 040 repeated quite a bit, a couple 056's and the rest is mostly well into the 100's, up to 172.
So you can see there is a pattern after all, which looks like it must map to decimal ascii, with the spaces likely being 040 (which should map to 32 in decimal). Of course, for this one I already knew it was octal the moment I saw those 040's and recognized them as spaces, but the first time I bumped into octal code I didn't recognize it, I had to use a base converter and try bits of the code with base6, base7, base8, etc. Now I just remember that 32 is 40 in octal (32 = 8^1*4 + 8^0*0).
Only later I found, doing a little bit of research, that ascii tables sometimes come with the octal equivalent. So now I don't use the base converter number by number, but look at the table and decode letter by letter directly. I wish there was a tool like the ones for decimal ascii to do whole strings at a time though. If you find one please let me know.
Well that's a pretty long explanation but it's not as hard as it looks, really. I hope this isn't greek to you and you and others can get something out of it.