Saturday, January 21, 2012

When I got my Gecko travelbug from Groundspeak, I decided that I didn’t want to drop it in any ordinary cache. I decided I wanted to put it in a new puzzle cache that someone would have to work at to solve. I had an idea floating around in my head for a while, and was able to code it up in about a day. It took me the longest to go back through decoding to make sure I hadn’t made any mistakes and that it really was solvable the way I meant it to be solved.

It is published under the ID GC2YA1Z, and I named it “Witz is O9960”. I scored it as a level 4 difficulty, but I’ve been hearing from others that they would easily rate it higher. I’ve also heard that no one was able to solve it without hints. Now, I could up the rating, but I feel there are other puzzles out there that are harder, and that I’m thinking of other puzzles that I think should overall be harder, so I’m leaving it as a 4.

However, for those of you that read this article, you are about to get a whole lot of hints! I’m not only going to give you everything you need to solve my puzzle, but I’m going to go over some of the techniques to approach this type of puzzle, that might help you solve other puzzles as well!

When you first look at the cache page, you see just a little bit of writing, to give you a very minimal amount of story, and then a colored grid of numbers that looks a little like a printout (as the story tells you):

Now, on the cache page, I could have just given the data in an image, making people type the data back in. That would have been a lot of work, and if I forced you to type it in, you would probably miss some subtle clues in the data. But I was nice! I put the data as text on the page, formatted using just a little HTML (web page code) to make it come out looking a bit like a print out.

Now let me take you through some of the steps involved in decoding this cache puzzle, and show you some techniques of logically solving similar puzzles.

Looking at the data, we can get some stats on the layout:
1447 chars
664 are zeros
704 are ones

79 are O-s (capital O, not zero – notice anything yet?)

An interesting thing to note is that 1447 is a prime number. Prime numbers can be very valuable when creating encryptions. Do you think that will help you solve this puzzle, or perhaps it is one of the wrong directions that are in this puzzle.

If we look at the data as if the O-s on the outside are tractor-feed for printout paper, and only look at the data inside the O-s, we see it is a grid of 37 rows by 37 columns.

If you take 37 x 37, it gives you 1369. Lets see what happens if we try breaking the data into regular chunks, starting at 15 and going down to 3. I start by dividing, and show the result to 3 decimal places. Then, after the ‘::’, I take the result and round down, and multiple the result by the divisor, to see how many bits would be left over by subtracting the rounded amount from the original 1369 - shown as the ‘r’ value for remainder::

1369 / 15 = 91.266 :: 15*91 = 1365 r4
1369 / 14 = 97.785 :: 14*97 = 1358 r11
1369 / 13 = 105.307 :: 13*105 = 1365 r4
1369 / 12 = 114.083 :: 12*114 = 1368 r1
1369 / 11 = 124.454 :: 11*124 = 1364 r5
1369 / 10 = 136.900 :: 10*136 = 1360 r9
1369 / 9 = 152.111 :: 9*152 = 1368 r1
1369 / 8 = 171.125 :: 8*171 = 1368 r1
1369 / 7 = 195.571 :: 7*195 = 1365 r4
1369 / 6 = 228.166 :: 6*228 = 1368 r1
1369 / 5 = 273.800 :: 5*273 = 1365 r4
1369 / 4 = 342.250 :: 4*250 = 1368 r1
1369 / 3 = 356.333 :: 3*456 = 1368 r1

Now we see something interesting: many of the divisions have a remainder of 1; when we divide by 3, 4, 6, 8, 9 and 12. Why is there one left over in so many cases? We see 1368 show up a number of times. Does it suggest anything to you?

Also, looking a little closer at the numbers, we come up with some odd things: adding up the count of zeros and ones, we get: 1368. Yet when we calculated 37x37 above we came up with 1369. We also see that there are 79 O s, yet there appear to be an equal number of them on the left and the right of the grid. So what is going on?

Perhaps there is a rogue O in the puzzle, but it looks like a zero? See if you can find it! That is important in this case!

Why did I try dividing from 3 to 14? There are many possible ways that binary data could be broken up. While not all the possible explanations, here are some ideas to consider, presented in order based on the number of bits:

(3-bits) can be binary for the numbers 0-7
(4-bits) 0-9 decimal, with 6 unused combinations (can be BCD when 2x in a byte)
(5-bits) 32 combinations - could be an offset on the English alphabet or could be Baudot code used on early teletypes
(6-bits) 64 combinations – enough for upper and lower case letter and numbers, one possible is the Fieldata, also used by a couple of models of teletypes
(7-bits) which is the base version of ASCII, was the character code used in the most common teletypes (which used 7-hole papertape) and the basis text encoding on most computers these days (though ASCII is usually is stored in 8 bits, or a byte).
(8-bits) could be 8-bit ASCII; or EBCDIC a mainframe text/number coding scheme; or any other standard use of a Byte, including 0 to 255 or -128 to 127
(9-bits) a byte with a parity bit, as used in serial communication and memory storage
(10-bits) 1024 combinations – could be used to code 000-999; or communication mode used with modems via RS232
(11-bits) A version of RS232 if adding 2 stop bits or adding parity to 8-bit code
(12-bits) [IBM] punch cards use 12-columns based on Hollerith code
(13-bits) EAN-13 European bar code related to UPC bar codes
(14-bits) EFM CD Rom coding per byte

Maybe there is a clue in the name of the cache? O9660 sounds like a zip code. But doing a search on 09660, it does not appear to be a valid zip code. But wait, look closely at the characters on the lines above – the zip code looks a dash different that the characters from the name of the cache! Once again we see that one of those characters is an alpha O instead of a zero.

In fact, the part after “Witz” would be: “is O9660”, when taking out the space, we get “ISO9660” or “ISO 9660”. This is a CD-Rom encoding method! Doing a bunch of research might give you some of this information:

http://en.wikipedia.org/wiki/Eight-to-fourteen_modulation
Data on a CD is coded for both resilience to defects on the surface and to assist with the tracking and speed of the rotation. Data is encoded by having pits and lands, where it alternates between being in focus to the read head and being out-of-focus. To make sure it knows the speed and stays on track, the data never spends much time out of focus, and limits the number of bits that are out of focus. It does this by encoding 8-bits into a special 14-bit encoding, know as EFM. http://www.physics.udel.edu/~watson/scen103/efm.html

Now, if the cache puzzle was coded using EFM, we would expect that it would be divisible by 14. But looking at the list of divisions, it does not look likely, unless there was a bunch of left over bits. It sounds like the puzzle could be sending you down another dead end towards the solution.

Now, back to the extra O in the puzzle: did you find it? The placement could well suggest a CD-Rom or a record album (33 1/3 style). Information on both CD-Rom and albums are encoded in a spiral: meaning one continuous line wrapped like a piece of paper around a stick, and just looking at the edge. Could the data be coded in a spiral?

If it were a spiral, that leaves the question of in-to-out or out-to-in, clockwise or counter-clockwise, and which point starts the data. If it were like a record album, we would expect the data to start on the outside and work in; if it were like a CD, it would start in the middle and work out.

The ISO9660 reference in the title suggests it is like a CD. So we would expect the data to go counter-clockwise, unless the data was considered to be on a master-disk. Also, starting could be any one of the 8 points from the middle, though the 4 cardinal points make the most sense (up, down, right and left – similar to north, south, east and west).

Based on the length of the data, and on an assumption of 1368 digits, we can give a try guessing that the data is coded in an 8-bit character format, spelling out a bunch of words. That would give 171 characters, which sounds like enough words to spell out coordinates and a bit more.

Now, it turns out that Witz is known as a mainframe programmer, so he might have used EBCDIC code to make the puzzle harder. If it is letters, and it is EBCDIC, we would expect the bytes to start with 11. If it is ASCII, we would expect that the bytes would start with 01 (assuming they are letters, or 00 if numbers or most other characters).

Let’s look at the options using the 4 cardinal directions and 2 directions of rotation:

Counter Clockwise

Down
Left
Up
Right

Clockwise

Down
Left
Up

Right

So, looking at the numbers:

Direction - Start

Binary

ASCII

EBCDIC

CC-Down

01001110

N>

+

CC-Left

10010011

l

CC-Up

11100100

ä

U

CC-Right

00111001

9

***

Cw-Down

00111001

9

***

Cw-Left

11100100

ä

U

Cw-Up

10010011

l

Cw-Right

01001110

N

+

*** - non-displayable or undefined character

It is interesting to see that the same characters repeat. It seems that the binary digit is some sort of anagram. That could make it a little harder to determine which is the correct solution.

We can throw away the EBCDIC for CC-Right/Cw-Down, as that is an invalid character. And unless the data uses extended ASCII, we can throw away the ASCII that starts with 1 in the left-most position: CC-Up/Cw-Left and CC-Left/Cw-Up.

That leaves us ‘N’ and ‘9’ from ASCII and lower-case ‘l’, ‘U’ and ‘+’ from EBCDIC. Certainly the ‘U’, ‘N’ and ‘9’ all look the most promising.

Ok, let’s look at the next character:

Direction - Start

Binary

ASCII

EBCDIC

CC-Down

11101100

ì

***

CC-Left

11011110

Þ

***

CC-Up

10011101

***

***

CC-Right

11001001

É

I

Cw-Down

11110111

÷

7

Cw-Left

01110010

r

***

Cw-Up

00100110

&

ETB***

Cw-Right

01101111

o

?

*** - non-displayable or undefined character

So, going in order of the first and second character, there are only 2 cases that do not have go into unprintable or extended characters: (1) ASCII Cw-Right ‘No’; and (2) EBCDIC Cw-Right ‘+?’. The characters ‘+?’ don’t look very promising as compared to ‘No’.

The next byte from Cw-Right 01110010, gives us a pretty good feeling we are on the right track. We can rule out EBCDIC, as Cw-Right gives us an undefined character. But for ASCII, it is ‘r’, which goes on to make ‘Nor’. This is the beginning of a number of words.

The 4th byte this way is 01110100, which comes out as ‘t’ in ASCII. Added to the 3 other characters, we are up to ‘Nort’, which seems to work well towards spelling North – a word that works very well with decoding coordinates!

Now, I’m not going to do all the work for you here. I’ve done the complex part by giving you the secrets of the puzzle, but you will still have to do the manual work of decoding the binary. Make sure you always start on a Zero. If you need a binary-to-ASCII table, you can start with: http://en.wikipedia.org/wiki/ASCII

Now, as you get through the puzzle, everything should look nice, giving you words for coordinates. The words do not have any spaces, so you will have to figure out how to break the words apart yourself. However, this should be very easy to do, as the words should easily stand out, each on their own.

That is, until right after you finish decoded the coordinates. There are still more characters. But all of a sudden, they look garbled! Did you do something wrong? No you didn’t! It seems that there is a code within the code!

However, this code is very easy! It is the encrypted hint. And how is the encrypted hint normally encoded on a cache page? They are in ROT13. This code is the same, except you have to decode it without clicking on the decrypt option on the cache page. You will have to manually decode the ROT13 (or find a site to help you decode the string). The hint gives you information about the physical hide. So, I suggest you take the encrypted hint with you and only decode it onsite if you are having trouble with the hide.

Overall, with this write-up I’ve taken a puzzle that is at least a 4 difficulty and brought it down to about a 1.5-2 difficulty. I’ve also given you some more techniques for approaching puzzles in general. Finishing solving this puzzle will require some diligence and time to accurately decode the whole puzzle.

I hope this article is something you have enjoyed and that the puzzle will be a favorite of yours. In fact, I would be most honored to hear that it has inspired you to solve more puzzles or place more puzzles! And I’d be glad to hear that you want to borrow some ideas from the puzzle. I’d even be glad to see others use the exact same method to hide a puzzle cache in a new area! I can’t wait to find “GenericCacher is O9660” (or similar) in another area or state!

© 2011,2012 Keith, aka WitzAbout

1 comment:

Keri said...

Now I need 2 Excedrin. Thanks ;)