Wiggles, part 34


Just a little ongoing story to give you something to play with until the next blog post.

I DYZ RE YEYX QKCFXZ Q WSFODY XYWSMKX. I XZQUZYK NYZZIMN ZHY IROUYXXISM ZHQZ XSRYZHIMN XDINHZYU LUINHZYU ZHQM ZHY XFUUSFMKIMN BQDDX BQX FO Q AYB RYZYUX IM AUSMZ SA RY. I ZFUMYK ZHY DINHZ SAA, QMK BQIZYK ZS XYY IA ZHYUY BQX Q NDSB WSRIMN AUSR IZ, LFZ ZHY ZFMMYD XZQEYK OIZWH LDQWG. I ZFUMYK ZHY ADQXHDINHZ LQWG SM QMK GYOZ WUQBDIMN. YIZHYU I BQX NSIMN ZS YMWSFMZYU Q KYQK YMK, SU Q Z-IMZYUXYWZISM SA XSRY GIMK. QMSZHYU RIMFZY DQZYU, I UYQDITYK I BQX NYZZIMN ZIUYK. XFLWSMXWISFXDE, I’K XOYYKYK FO ZS NYZ ZHIX SVYU BIZH. ASUZFMQZYDE, ZHQZ’X QDXS BHYM I HQK NSZZYM WDSXY YMSFNH ZS ZHY UYADYWZIVY XFUAQWY ZS ZYDD ZHQZ IZ BQX Q OSFUYK WSMWUYZY BQDD. XS, ZHQZ QMXBYUYK SMY JFYXZISM – ZHY AQU YMK SA ZHY WUYVIWY HQK LYYM XYQDYK FO BHYM ZHY XYBYU XEXZYR BQX OFZ IM. ZHQZ BQX KIXQOOSIMZIMN, LYWQFXY ZHQZ RYQMZ ZHIX BQX Q KYQK YMK QAZYU QDD.

Hanayama Nutcase Puzzle


I got this Hanayama puzzle as a late Christmas gift. Nutcase, 6 stars out of 6. It’s really tightly machined, and there are only two (kind of tricky) ways of opening it, so even if you know the solution(s), it can still be hard to take apart and reassemble (unless you practice a lot).

It is really cool, though, and it does make a challenging present if you lock a $20 bill inside before gifting it to a friend.

Thinking About Encryption, Part 37


Back when I wrote about cryptarithms, I mentioned that they are part of the “low hanging fruit” in terms of the easier CONs (cipher constructions) included in the ACA Cryptogram (Cm) newsletter. The Cm comes out every 2 months, and contains 100-106 CONs per issue. Roughly 25 CONs are Aristocrats (newspaper-style crypto-quips), 15-20 are Patristocrats (Aristocrats without the word spacing or punctuation), 15 are cryptarithms (math puzzles where letters substitute for the numbers), 20-25 are regular ciphers (rail fence, Fractionated Morse, Vigenere, etc.), 10 are xenocrypts (regular cipher types in other languages), and a few are harder cipher types that may break the rules some how. If you want to maximize the number of CONs you solve per issue, then you’ll want to focus on Aristocrats, the easier Patristocrats, and the cryptarithms. The main reason for this opinion is that these are the CONs that all follow a specific algorithm for each type, there are a bunch of them for each type, and they’re generally relatively easy. Conversely, xenos, regular ciphers and exceptions tend to be one of any given cipher type, so if you’re going to tackle the regular cipher section, that’s 20-25 DIFFERENT algorithms you have to master (the ACA recognizes 60 algorithms total) at a time. My current goal is to learn one or two new cipher algorithms every two months. Writing solvers for all 60 types is going to take a few years.

I also mentioned in an earlier article that I’d written a parser to automatically convert the digital version of the cryptarithm CONs from the ACA downloads page into the format I use with a solver I’d written in VBScript. At the time, both scripts only handled CONs in base 10. And I was happy with that, at the time. The thing is, the Cm cryptarithm CONs can be in base 5, 8, unidecimal (base 11), duodecimal (base 12), or whatever the author wants to use. They can also be double key (using two sets of letters, one set upper case, and the other lower case). I figured that I could tackle adding new bases to the solver later on when I got bored. But, as I was solving the new CONs in the Nov.-Dec. 2018 issue, I caught a bug in the parser where it choked on parsing cube root equations. I could bypass the parser and just hand-type the statements in the format the solver needed them in, but as I was doing that, I started looking at the base 5 double-key CON, and thought “I could even do this myself, with pencil and paper.”

Well, I had a pencil and some paper, plus about an hour between teaching classes, so I sat down and began working on that CON. And when I began getting really frustrated, I focused on what I’d need to do to modify my existing solver to include other bases. Eventually, I worked on modding the solver instead of hand-solving the CON. It seemed better to leave my existing solver alone, because it already runs fast on decimal CONs and I didn’t want to sacrifice that. I’m good with having a second solver specifically for non-base-10 CONs (single key), and it really didn’t take all that long to make the changes. The two key functions are “makeDeci()”, which converts a numeric string to decimal; and, “makeBase()”, which converts a decimal numeric to a string representation of the desired base. They both work on a per-digit basis. For makeBase(), if the digit is 0-9, I just convert it with cstr(). Otherwise, I use chr(65 + value) to get “A” through whatever the base system uses (for duodecimal, “A”-“B”), After implementing these two functions, I just went through the rest of the script and replaced any instances of “cstr()” and “int()” with the appropriate base converter. Including debugging, it took me maybe 1 hour to finish the script.

Base 5 and Base 10 CONs take very little time to solve on average, usually between 1 and 15 minutes. Things get much less good at base 12, although I did get lucky on the first try. The Nov.-Dec. 2018 Cm issue has two duodecimal CONs, the first being for addition and subtraction, the second for division. I used the first CON to test drive the new solver, and it crashed on finding the solution within 15 minutes. Turns out I’d missed putting in a call to makeBase() in the section that prints out the solution. I made that fix, changed the starting key string to the solution value, and the solution printed out correctly. After a bit more testing, I plugged in the division CON, and that took the better part of 8 hours to solve (the key was something like 31A24506B897, meaning to get to that from 0123456789AB required a LOT of time). So, yeah, the larger the base, the MUCH longer it takes to test every permutation of the key. Go ahead, ask me what happened when I tried to solve a base 15 square root…

After all that above, I returned to the base 5 double key CON. This is an ACA puzzle. If you would like to see more of them, become a member.

bASE + fiVE = ViEAS
bASE – fiVE = ibok
R * b = fE

If you’re not familiar with these kinds of puzzles/brain teasers, the first step is to identify 0, 1 and 5 (for base 10 CONs). For this specific CON, the digits 0-4 appear twice (once each for the upper case letters, and once each for lower case). If we sort the two cases, we get:

bfiok ASEVR

You can easily see that with “E – E”, k = 0.

The next step is to look at what happens with base 5 addition and multiplication.

1 + 1 = 2
1 + 2 = 2 + 1 = 3
1 + 3 = 3 + 1 = 4
1 + 4 = 4 + 1 = 10
2 + 2 = 4
2 + 3 = 3 + 2 = 10
2 + 4 = 4 + 2 = 11
3 + 4 = 4 + 3 = 12
4 + 4 = 13

1 * n = n
2 * 2 = 4
2 * 3 = 11
2 * 4 = 13
3 * 3 = 14
3 * 4 = 22
4 * 4 = 31

We won’t have to worry about leading 0s.

Notice that because 5 is prime anyway, no 2 numbers multiplied together (unless one of them is 0) will produce a 0 in the 1’s place.

With this information, we can say that no matter what b and f are, adding them together, even with a carry bit, can’t be bigger than 14. So, b + f = 1?. That is, V = 1

With R * b = fE, neither R nor b can be 0 or 1, because the result has to be 2 digits long. Also, R and b can’t both be 2 (=4).

With bASE + fiVE = ViEAS, E + E = 2*E, and S will be 1, 3 or 4. However, V is 1, so S can only be 3 or 4. (E can’t be 0 because E+E and E-E give different results, and R*b = fE can’t produce a 0 in the 1’s place.) But, if S is 3 or 4, 2*E = S means that E can only be 2 or 4. Right now, for the upper case letters, that gives us:

A = 0, 2, 3, 4
R = 2, 3, 4
E = 2, 4
S = 3, 4
V = 1

The only uppercase letter that can be 0 is A.

A = 0
R = 2, 3, 4
E = 2, 4
S = 3, 4
V = 1

Going back to R * b = fE, E can only be 2 or 4, and R can only be 2-4. And b must be bigger than f and i (bASE – fiVE = ibok; for example, if i=1, and f=2, b must be 3 or 4.) 2 * 3 = 11, 2 * 4 = 13, 3 * 3 = 14, 3 * 4 = 22 and 4 * 4 = 31. E = 2 or 4 rules out everything but 3 * 3 and 3 * 4. But, if R is 3 and b is 3, E must equal 4, leaving S = 2, and from the above table we can see that 2 is not an option for S. Therefore, either R = 3 and b = 4; or, R = 4 and b = 3. Either way, 3 * 4 = 22 = fE.

A = 0
V = 1
E = 2
R = 3, 4
S = 3, 4

And, bASE + fiVE = ViEAS implies S = 2*E = 4, therefore R = 3

A = 0
V = 1
E = 2
R = 3
S = 4

Looking at bASE – fiVE = ibok, we can’t have negative numbers, and since each lower case letter uniquely represents one and only one number, b must be larger than f and i, which means b is either 3 or 4. But now we know that k = 0, E = 2, S = 4 and V = 1. That gives 42 – 12 = (o)0, so that o = 3. By extension, b = 4.

=============================
I need to cut my blog entry short here, because the deadline for submitting the solutions for the Nov.-Dec. 2018 issue isn’t until the end of Feb. I’ll update this article in March, if I need to.
=============================

Finally, as I mentioned above, there was one base-15 square root CON in the Nov.-Dec. 2018 issue of the Cm newsletter, and that anything over base-12 would take days to solve through brute force with a VBScript. In fact, I let my solver run a full day on the base-15 CON, and it had only gotten from 0123456789ABCDE to 012E3456789ABCD. At this rate, I might not get a solution for months.

The funny thing is that for logic puzzles, there are often multiple ways to approach the problem. While the “normal” approach is to apply logic and the process of elimination as with the base-5 double key above, I prefer applying pure brute force and trying every permutation of digits until I get the correct numerical results (because I’m lazy and because this approach works for smaller bases). But, there is one more method left over.

[The following two paragraphs have been redacted because the deadline for submitting the solutions for the ND2018 Cm isn’t until the end of February. If enough people ask for it, I’ll come back to this blog entry and put the solutions back in after the deadline passes.]

And, that’s to anagram the letters of the puzzle. Granted, the letters are already partially anagrammed (bASE fiVE), but the key to the digit order (0-9, 1-0, 9-0 or 0-1) will produce a different word or combination of words. For the base-5 double key, it’s ********** (0-4, 0-4, upper case then lower case). For the base-15 square root CON, the letters in the puzzle are “***************” (I’m not going to reprint the full CON here). Running the letters through an online anagram solver gives “***************”, along with a whole bunch of other words. I’m inclined to write another script to take these words and run them against the full letter list to see what other letters aren’t covered by the anagram. For the Nov.-Dec. 2018 CON, the hint was that the key formed two words. So, whatever letters aren’t in the first anagram must form a second word.

Knowing the sense of humor of the ACA people, I was immediately attracted to “***********”, and the missing 4 letters were “****”. From that I got “****”, which is a legal word. The question remaining was, “is the key ‘***************’ or ‘***************’?” Because the number order for the CON was E-0, I first assigned EDCBA9876543210 to choice 1 and plugged that into my brute force solver. That failed, so I tried EDCBA9876543210 = choice 2, and the solution popped right out. If that had also failed, I would have needed to go to the 9-letter anagrams, and try those one at a time. Something of a pain, but I’d still get my solution within a day or two, instead of after a couple months.

Anyway, by going back to the cryptarithms and tackling non-base-10 CONs, I was able to get 4 more solves within just a few days. That’s a much better return on my time than if I tried mastering 4 all-different cipher types for the regular cipher exchange section of the newsletter. As of this writing, I’ve solved 51 of the 106 CONs, and I have solvers for 4-5 more CONs that I haven’t gotten to checking yet. If I can solve 50 CONs per issue, I’m happy.

 

Wiggles, part 33


Just a little ongoing story to give you something to play with until the next blog post.

JX EZP JEZPW ZLXT, Y GLD DEYRR LE EZP ARJJW RPSPR JA EZP MKYRTYXQ’D MLDPCPXE, LXT EZP VRKCMYXQ AJW EZLE GJKRT MP KXTPW CP ZLRA L CPEPW JW DJ. VWPDKCLMRU, EZPX, EZLE VRKCMYXQ DZJKRT MP CJWP EJ CU RPAE LXT L RYEERP MYE TJGX. DJCPZJG, EZP BJXDEWKBEYJX VRLXXPW CKDE ZLSP FXJGX LMJKE EZYD BWPSYBP, LXT UPE ZLT BZJDPX EJ MJEZ XJE KDP YE, LXT LRDJ XJE AYRR YE YX. LRR JA EZYD GPXE EZWJKQZ CU ZPLT VWPEEU ALDE LD Y BJXEYXKPT CU BWLGR, DYXBP Y TYTX’E ZLSP LRR EZLE CKBZ PRDP EJ AJBKD JX, LXT Y TYT GLXE DJCP FYXT JA QJLR LZPLT JA CP KV EZPWP DJCPGZPWP. LAEPW L BJKVRP CYXKEPD, Y EWYPT CJSYXQ EZP ARLDZRYQZE LWJKXT EJ AYXT EZP MPDE VRLBP AJW ZJRTYXQ YE GZYRP VPPWYXQ AJWGLWT YXEJ EZP DZLTJG EJ QPE L MPEEPW YTPL JA GZLE GLD LZPLT JA CP. EZP MPDE VJDYEYJX GLD GYEZ CP VWJVVPT JX CU WYQZE AJWPLWC LXT CU RPAE ZLXT KV LMJSP CP, LXT EZP ARLDZRYQZE ZPRT L RYEERP GLUD MLBF DJ EZP QRLWP AWJC EZP RYQZE TYTX’E YXEPWAPWP GYEZ GZLE Y GLD RJJFYXQ LE.

ROKR Mars Rover Kit


This is the third kit I got for Christmas. It had been shipped after the other two, and I didn’t get it until the beginning of January. In a way, this was a good thing because otherwise I might have started with this one, and that could have been a very confusing thing. But, after having experienced building the other two first, I was more prepared to take on the Rover. It’s got 4 sheets of pre-lasercut plywood, a few steel pins, 20 plastic spacers, a couple plastic gears, 2 wooden dowels, and a tiny sheet of sandpaper (the box photo shows 2 sheets). There’s also the solar panel and motor assembly. The instructions claimed that there was also supposed to be a tube of wood glue, but that was missing. Fortunately, I still had the tube I’d bought for the Airship. I had no need for the sandpaper, and instead used a cutter knife for smoothing out nubs on the wooden pieces, when needed.

The packaging says the finished kit is 175x85x100mm (6.9″ x 3.4″ x 3.9″). It’s small, but it’s cute. You will need a cutter knife, a cutting pad, and wood glue.

Pieces for two of the spacer stands, and for the motor drive shaft.
Again, there were 4 stands for properly aligning the various spacers on the metal pins. Unfortunately, the instructions were not very good this time. One illustration referenced the wrong space stand. Another picture was missing the part number for one of the tire pieces. And, quite a few of the pictures indicating that you’re supposed to glue stuff together didn’t actually show where the glue is to go. It’s not that hard to figure out through trial and error, but it did add to the amount of time I took to finish the kit.

Finished stands, and the gear shaft.

Pieces for the gear box.

Finished gear box, plus pieces for the chassis left panel.

Finished left panel, plus pieces for the motor holder and chassis right panel.

Finished holder and side panels. Piece for the top motor brace, plus the motor/solar panel assembly.

Finished side panels/motor assembly. Pieces for the chassis rear and bottom panels.

Finished chassis box bottom.

Pieces for the left suspension system, plus front and back wheel axels. This is the first point I really got confused as to what I was supposed to be gluing together. Turns out, the two blocks of knobby pieces get glued together to make sideways stacks of spacers. The disks are more-or-less aligned to look like one wide gear, even though the stacks don’t rotate on the axel.

Finished left suspension system.

Left suspension system mounted on the chassis bottom. Pieces for the right suspension system. Same comments as above.

Pieces for two of the wheels. These two have the square plastic inserts that fit into the hub gap. These two are mounted on the motor drive shaft, and are the ones that actually propel the rover forward when/if the panel gets enough light. The spokes do have an “alignment”, and it looks better if all the wheels are mounted to have identical alignments (spokes angled frontward or rearward).

Chassis bottom with the first two wheels mounted. Plus pieces for the other four wheels. These are just popped into the support holes in the suspension frames, and are free-turning. Again, a lot more gluing. The instructions state that the gear teeth for the three disks for each wheel be staggered from each other. I guess this is for traction.

Finished wheels mounted in the suspension frames. Plus pieces for the rear solar panel support frame.

Pieces for the front headlights, and the primary front probe arm.

Finished front chassis panel, mounted, with headlights and probe arm. The rear solar panel support frame is also mounted, and the solar panel is double-sided taped to the support frame.

I’d started making this kit at 9:30 PM, and at 12:30 AM, I figured I’d reached a good stopping point for the night.

The assembly instructions don’t name the various subassemblies, so I’ve been kind of guessing at what to call things. I’ve run out of ideas here. These are the pieces for one of the camera/instrument boxes that goes on the top chassis plate.

Finished instrument box, plus pieces for the hatch cover arm. I decided to leave the “fiber strips/flashing” on the pieces for this photo. The kit description on the Amazon page suggested an assembly time of 4 to 6 hours, and I was really hoping to zip through this one in 3 hours because I had a bit of experience already with the Treasure Box and Airship kits. But, I was spending an inordinate amount of time on removing flashing from all the pieces, and in gluing parts together, plus ensuring that they were all aligned right. Also, I was getting to the point where I had to cut pieces from the wooden dowels, and then push them through the holes in various parts. The holes were generally too small, and I had to bore them open with a Phillips head driver. Even so, there was a lot of pushing and force involved in getting the pins to go into position correctly. Fortunately, nothing shattered up to this stage.

Finished hatch cover arm and pieces for the big camera box arm.

Finished arm, and pieces for the camera box base section.

Finished camera box base, and pieces for the box itself.

Rover top plate instrument components so far.

Finished camera box, and pieces for instrument section 2.
This is where I finally shattered something. I’d been boring out the holes in the places where the pins go before inserting them, and up to this point that had worked ok. But now, the smaller pieces were less forgiving of pressure like that, and I wasn’t able to bore as much. I had to apply a massive amount of force on the two pins on the upper arms of the camera assembly, while constantly struggling to keep the arms aligned for the pins to go through each one after the other. I ended up losing my grip and the assembly twisted in my hand, snapping the smaller, lower arm right at the base of the assembly. I checked the backup sheet, and fortunately there was an extra for that arm. I completed the work on the larger arms in mounting the camera, then I popped the pin out of the base of the assembly, fitted the replacement small arm, and replaced the pin. I finally gave up on using the wooden dowels for the pins, and chopped up the round toothpick I was using for applying glue to stuff. The toothpick segment worked perfectly, and I highly recommend using toothpicks for the pins on the camera, at a minimum.

I was getting impatient, so I just started putting the finished instrument assemblies on the chassis top plate as I got them done. Note that the box camera and the hatch cover arm have locking plates underneath the chassis top plate, allowing both assemblies to swivel. The hatch under the cover arm can swivel up and down. To keep the hinge pieces from pulling out, I glued them down, although the instructions don’t say anything about this.

Note also that the instructions say that you’re to glue the thing that looks like an airplane propeller to the top plate before mounting the big camera box. But, in trying to get the locking plate in place under the big camera box mounting, I hit the propeller and broke the glue bond before it had completely dried. I’d suggest mounting the big camera first, and then gluing the propeller in place afterward.

Finished instrument deck.

The almost-finished rover chassis, the finished instrument deck, and the piece for the front nose plate.

The finished rover, left side view. The big box camera and hatch cover arms are swiveled a bit, and the hatch is open. The two side panels can also swivel up and down, but the hinges aren’t glued in place yet. The instructions don’t say to do this, and I haven’t gotten around to it. Maybe later.

Right side view.

Rear view. I’ve taken the protective sheeting off the solar panel, but the indoor lighting isn’t strong enough to power the motor. After finishing this kit, I had to wait a full week for the sun to come out during the day. When it finally did, I aimed the panel at the sun and the motor started running, One day, the sky was really clear, and I took the kit outside. The motor ran fine even when the panel wasn’t aimed directly at the sun. In fact, I was carrying the kit in a thin convenience store plastic shopping bag, and it ran with the light getting through the bag. I walked down to a community center with tinted windows. The motor ran weakly if the panel was aimed directly at the sun through the glass, but it stopped when I set the rover down on the carpet. It won’t run if the sunlight is blocked by clouds at all.

There’s a lot of scrap left over from these kits. Pictured here are all the spare parts. That’s one really nice thing – ROKR does plan ahead just in case something does break, either because of flaws in the wood, or mistakes on the builder’s side. Or, if something drops on the floor and disappears in the vastness of infinite space (which happened with one of the dowel pins I’d cut to length). Also, pieces A57 and A58 look very Aztec.

Thinking About Encryption, Part 36


Every time I think I’ve run out of transposition cipher types to play with, I encounter one more. This time, the Nov.-Dec., 2018, ACA Cm newsletter had an article discussing the Fixed Distance Transposition cipher. I haven’t seen it show up in the CONs section of the archived newsletters, and there’s a bit of overlap with other periodic cycle transposition types. But, there is enough to make it stand on its own as a cipher type to justify discussing it here.

Effectively, Fixed Distance Transposition works by stepping through the plaintext multiple times at a step size that is not a factor of the plaintext length. If we have the text:

thisisatestmessage

the length is 18 characters. If we pick a key of 5, then we start by recording the first character, and then every 5th character after that:

tstaiteeisshamgses

There’s a variation on this theme, where we count first, and then record the letter:

isshamgseststaitee

In the first version, the first letter is the same in both the plain and cipher text. In the second version, the last letter is the same.

The ACA article describes FDT as asymmetric, in that we don’t use the same key for enciphering and deciphering. To get the step size for deciphering, we want to find the modulus of different multiples (n) of the string length, plus 1. If “e” is the encipher key, and “d” is the decipher key, then

(e * d) mod (length * n) = 1

In the above example, length = 18 and e is 5. We may need to use different values of n to determine d.

5 * 4 mod 18 = 2
5 * 8 mod 36 = 4
5 * 11 mod 54 = 1  <– This is one possible solution

This means that to decrypt the ciphertext, we record the first letter in the string, then every 11th letter after that, giving us

thisisatestmessage

again.

Cracking Fixed Distance Transposition ciphers through brute force is almost insanely easy. Because we don’t know the encryption key, we need to find all the factors of n + 1. Then, we plug those factors in one at a time and see if the results out are readable plaintext.

len = 18, and 18 + 1 = 19 is prime.
18 * 2 + 1 = 37 is also prime
18 * 3 + 1 = 55 gives 5 and 11  <— Try using d = 5, and 11
18 * 4 + 1 = 73 is prime again

Solving FDT can be made a little harder by applying it to longer strings, and adding padding to get a length with a larger number of factors. Such as 119:

119 * 1 + 1 = 120 gives 2, 3, 4, 5, 6, 8, 10, 12, 20, 24, 30, 40 and 60
119 * 2 + 1 = 239 is prime
119 * 3 + 1 = 358 gives 2 and 179
119 * 4 + 1 = 477 gives 3, 9, 53 and 159
119 * 5 + 1 = 596 gives 2, 4, 149 and 298

As long as the encryption key is relatively prime compared to the string length, anything can be used, and the larger the value the better.

Note that if you try to crack a version 2 FDT while treating it as a version 1, it is likely to produce some amount of readable plaintext. That can be an indication that you’ve got the right key, but the wrong version of the algorithm.

Note also that the author of the ACA article on Fixed Distance Transposition states that panel three of the Kryptos sculpture uses version 2, and starts with the “S” at position 192. e is 251.

Summary:
1) Fixed Distance Transposition is a very simple cipher type to break if the text string is short.
2) There are two versions of this type: Record then count, and Count then record.
3) The decryption key is related to the encryption key through (e * d) mod (len * n) = 1
4) FDT can be easily broken through brute force.
5) While FDT is not a common cipher type, it is used on panel 3 of the Kryptos sculture.

Wiggles, part 32


Just a little ongoing story to give you something to play with until the next blog post.

YQ ZWMHSBC’Q AX QMM ZHIJIYZYCR QM SXOIC QWOQ NOJOC WOZ O SMQ MV XOIQWUHOLXZ, OCB QWOQ ZMPX MV QWXP TOC AX EXID BXEOZQOQYCR. DMH POD XEXC WOEX WXOIB OAMHQ QWX QZHCOPYZ – QWX AYR QYBOS KOEXZ QWOQ MTXOC-TXCQXIXB XOIQWUHOLXZ TOC TOHZX. QWX QZHCOPY TIXOQXB AD QWX RIXOQ CMIQWXOZQ XOIQWUHOLX MV 2011 CXOISD KYJXB MHQ PYDOLM TYQD, KYQW QWX KOEXZ IXOTWYCR O WXYRWQ MV OSPMZQ 38 PXQXIZ (124 VXXQ) OAMEX ZXO SXEXS. VMI PX, YQ’Z CMIPOS QM ZXX ZYRCZ XEXIDKWXIX VMI XOIQWUHOLX ZWXSQXI OIXOZ, RXCXIOSSD JOILZ OCB MJXC VYXSBZ, KYQW WXYRWQ POILXIZ YCBYTOQYCR WMK VOI OAMEX ZXO SXEXS QWOQ OIXO YZ. MV OSS QWX ZYRCZ Y IXPXPAXIXB CMQYTYCR YC QWYZ TYQD, QWX VOIQWXZQ HJ QWX SOCB YZ KOZ PODAX 6 QM 8 PXQXIZ. Y TMHSBC’Q AX ZHIX, AHQ Y WOB QWX VXXSYCR QWOQ Y KOZ OQ PODAX QWX 1-2 PXQXI JMYCQ. OCB Y WOB CM YBXO WMK QWYZ KMHSB IXSOQX QM PD VYCBYCR O ZXKXI SYCX, WMK AYR YQ KMHSB AX, MI WMK QWXD KMHSB WOCBSX RXQQYCR IOYCKOQXI IHCMVV VIMP QWX TXCQXI MV QWX TYQD QM QWX MTXOC O VXK LYSMPXQXIZ QM QWX XOZQ.

ROKR Airship


I actually ended up getting 3 wooden build-it kits by the Chinese company, ROKR. The first one was the Treasure Box, and this one is the Airship. It’s advertised as being 300 mm x 215 mm x 250 mm (approx. 11.75″ x 8.5″ x 9.5″), so it’s fairly large for what you get. ROKR makes a big deal about the kit containing 7 sheets of pre-cut plywood, but the seventh sheet is pretty small and almost shouldn’t be considered part of the count. There’s also a small collection of steel pins, plastic caps and spacers, a wind-up spring and spring key. I’d guess that the package started out weighing at least 2 pounds (Amazon shows the shipping weight at 2.9 pounds, so I’m not too far off).

I got about 10 minutes in on the dirigible assembly before I remembered to take a process photo. See that stack of disks and pieces to the left, above? That’s all scrap.

Notice the ruler at the top, and the weird stand thing to the left. This kit has a LOT of support tools used in the building of this thing, that aren’t part of the finished airship. The ruler lets you check the lengths of the steel pins and push pieces together, and the stand is used for placing the spacers at the correct distances from the ends of the pins. There are 5 stands of varying height, plus one simple flat disk, for space placement. There’s also a 2-layer plate assembly used at the end for supporting the paddlewheel centers when mounting them on the axels. Pictured above are the parts used for making the dirigible nose propeller.

Finished propeller, plus airframe skeleton disk parts.

Finished prop gear subassembly.

Airframe drive gear parts.

Finished drive gear subassembly.

Nose subassembly, with propeller and airframe supports and drive gear.

Dirigible assembly, with nose subassembly and drive gear fixed in place.

Dirigible with the top, bottom, left and right outer skeleton frames in place, along with the tail ladder. The strips will be inserted through slots in the ribs to make the assembly look more like a balloon.

Finished airballoon assembly. The instructions state that it’s ok to use wood glue to fasten down loose parts. And, one of the strips kept pulling out of its notch in the nose rib. Otherwise, all the strips and other pieces forcefit into place just fine. It took me 3 hours to get this far, largely because I was making beginner-level mistakes and having to disassemble part of my work and reassemble it to fix my errors. I’d started at 10 PM, and decided to quit for the night at 1 AM. (That, and I wanted to go to the store to get some wood glue.)

Starting back up the next day. A lot of these pieces require significant force to slide the tabs into the notches. That, and serious patience (especially those long, thin strips for the dirigible body). I did manage to crack one of the tail fins on the dirigible, but I was lucky in that the crack isn’t noticible unless you know where to look. Otherwise, I’m extremely surprised that I didn’t snap stuff in two with all the pushing I was doing. My fingers still hurt two days later.

Shown above, the ship front left body plate, front wheel assembly, and part of the upper deck.

There are literally a boat-load of gears for this thing, and most of them have to be assembled before doing anything further on the boat body. Above, gear assembly 1. Note that the two smaller gear pieces are not mirror-reverse images of each other. It is possible to put them on the gear shaft wrong so that the teeth are not direct aligned with each other. If this happens, flip one of the gears over and try again.

Parts for gear assembly 2.

Finished gear. This one connects to the two big paddlewheels, later.

This is my favorite part – the ratchet box assembly. Unfortunately, when the cover plate is snapped in place on the box, the ratchet (the 4-armed thing in the lower right corner) gets hidden.

Finished ratchet box, with spring pin.

Parts for gear assembly 3.

Finished gear. Notice the positioning of the spacers. This is what all those little adjustment stands are for.

Parts for the main spoke gear. This is the biggie that drives a lot of the other gears.

Finished main spoke gear, plus spacer spacing stand 4.

Parts of the rear wheel and rudder subassembly.

Finished tail.

Tail drive gear assembly parts. Note that the half-gear disks are strictly ornamental, and don’t actually turn or anything.

Finished tail drive gear subassembly.

Parts for the tail propeller.

Finished tail propellor, plus the tail drive gear and tail wheel subassemblies.

All three pieces set together in position.

Taking the above body plate, mounting the tail assembly, paddlewheel gear, and spring in place.

Now, with the ratchet box on top of the spring. This was kind of tricky, in that the notch in the end of the spring pin needed to hook into place on the spring as the box was set in place.

All of the other gear assemblies are now in place. One of the things I was surprised by for this kit is that while it includes a small tin of wax, there are no indications anywhere in the manual that any of the moving parts need to be waxed at all. I did use candle wax on the paddlewheel gear plate and the matching hole in the body plate, above, but otherwise the kit didn’t seem to need waxing, and I didn’t bother doing it to any of the other gears or surfaces.

Ship body, with the upper front and back deck subassemblies in place (see below for placement).

The ship main body, with the right body side plate snapped in place. This step took some time, because the pins and tabs of the gears and decks didn’t want to align with the side plate notches.

Other side of the current subassembly process.

Parts for the air duct thingie that ships have. Again, the half-gear piece is only for decoration.

Finished thingie subassembly.

Finished paddlewheels, and mounting support plate. I didn’t bother taking process photos for this step, because I figured I already had too many photos by now. The mounting support plate is set under the center of the paddlewheel first, then the ship is set above the wheel so that the wheel axel tabs can be put into place in the wheel. Otherwise, pushing down on the axel would damage the center of the wheel spoke piece.

Putting the dirigible on the ship main body. Note that there are only two sticks supporting the dirigible on the ship decks. This means you have to be careful while handling the airship to prevent snapping those sticks in half. Note also the white plastic ribbon. I’d glued the loose end of the one strip into its notch in the nose of the dirigible, but it was just taking too long for the glue to dry and I was bored with having to sit there holding the strip in place for an hour. So, I took the ribbon (which is used as string in Japan) and tied the strip down against the nose this way. I also took the opportunity to apply glue to all the other strip ends as well, just to make them less likely to pull free later on.

The tail wings. The two little disk pins on each wing are notched off-center, so the wing pieces look like they’re slightly downwardly curved. I think this is a nice touch.

And, we’re done. One thing I’m not as happy with regarding the instructions is that there’s nothing showing how to wind up the spring, how to hold the wheels to keep them from moving as you turn the key, or how many turns to make without damaging the spring. All the parts move freely, so that’s good. I’ve been able to turn the key 5 full rotations, and that gives me a running time of about 5 seconds, with a full distance of over 10 feet (I can’t be precise here, because my apartment is small, and the airship runs into the wall before the spring fully unwinds. I’m thinking that it might be able to cover 20 feet before stopping.) There’s a little wooden lever at the left of the back deck, but I’m not sure what it’s for. It seems to engage and disengage one of the gears, but I’ve tried sliding it back and forth while letting the airship run and I haven’t noticed it having any kind of effect on anything.

The ship took another four hours to build, so all-total I’d say this was a 7-8 hour project. If I tried it again, I might be able to bring that down to 6 hours. As I say, there wasn’t any need for the tin of wax, or the little scrap of sandpaper. There were a lot of extra parts in case something broke or got lost along the way, but I didn’t need any of them. There was also a HUGE amount of scrap wood left over – maybe 1 pound worth. But, it was fun to build, and I’m waiting for my English classes to start up so I can show it off to a few of my students.

This airship is a novelty item, and doesn’t have a lot of replay value. Just put it on a shelf and show it off to your friends at parties. Although, you can run some LEDs through the dirigible, if that’s something that appeals to you, and use it as a Christmas decoration for next year.

“Look! On the ground! It’s a dog! It’s a shoe! No, it’s super shoedog!”

Thinking About Encryption, Part 35


For some reason, I’d been hesitating on tackling Morbit because I’d somehow thought that it was going to be too difficult for me right now. But, the Nov.-Dec. 2018 ACA Cm newsletter just arrived in the mail (I’m typing this up on Oct. 31st), and it contained an incredibly useful article on how to attack a Morbit CON without a crib. After reading that article, I decided to look at this cipher type a little closer. I’m not finding much on Morbit in a yahoo search, other than a handleful of solvers, and the descriptions from the ACA pages. I’m thinking that this may be an algorithm original to the ACA.

The name can be thought of as “MORse BIT.” It’s based on Morse code, and is actually a simplified version of Fractionated Morse. There are three places where Morbit differs from FM.

1) Fractionated Morse uses a 3-digit trinary system:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
. . . . . . . . . - - - - - - - - - X X X X X X X X
. . . - - - X X X . . . - - - X X X . . . - - - X X
. - X . - X . - X . - X . - X . - X . - X . - X . -

Morbit uses a 2-digit trinary system:

1 2 3 4 5 6 7 8 9
. . . - - - X X X
. - X . - X . - X

2) As illustrated above, FM uses the letters “A-Z” to represent each triplet within the ciphertext. The Morse code for “COME QUICKLY WATSON”, is:

"-.-.X---X--X.X--.-XX..-X..X-.-.X-.-X.-..X-.--XX.--X.-X-X...X---X-."

And in FM, that becomes (no keyword):

KHOOI MPFXK HFDHE YOFPC NV

With Morbit, we have:

4 4 8 5 8 6 3 5 2 9 1 6 1 8 2 3 4 6 2 1 8 2 6 7 5 7 6 6 1 3 5 6 4
- - X - X - . - . X . - . X . . - - . . X . - X - X - - . . - - -
. . - - - X X - - X . X . - - X . X - . - - X . - . X X . X - X .

Or, (no key): 44858 63529 16182 34621 82675 76613 564

3) The keyword in FM can be relatively short, maybe 4-7 letters long (no duplicates), and then the rest of the alphabet is just added to give 26 letters for the triplet assignments. Ex (Key = graham):

X Y Z G R A H M B C D E F I J K L N O P Q S T U V W
. . . . . . . . . - - - - - - - - - X X X X X X X X
. . . - - - X X X . . . - - - X X X . . . - - - X X
. - X . - X . - X . - X . - X . - X . - X . - X . -

But with Morbit, we only have two trinary digits per column, and 9 columns. The general rules say that you’re supposed to pick a 9-letter key and number that in alphabetical order (don’t bother worrying about duplicated letters):

A L P H A B E T S
1 6 7 5 2 3 4 9 8
. . . - - - X X X
. - X . - X . - X

I’m not seeing a lot of reason for picking a keyword first, because there’s no way to recover the keyword once you’ve solved the CON. It’d be just as easy to pick a random sequence for the digits 1-9 directly, and then use that.

[Edit: Having just finished writing a solver for the Myszkowski transposition cipher, I ended up having to write a word search program that finds words with repeating letters, and in a specific letter sequence. If I find the numeric key for Morbit, I can use the Myszkowski word finder to print out potential original Morbit keywords.]

Anyway, with this new key, the ciphertext becomes:

5 5 9 2 9 3 7 2 6 8 1 3 1 9 6 7 5 3 6 1 9 6 3 4 2 4 3 3 1 7 2 3 5
- - X - X - . - . X . - . X . . - - . . X . - X - X - - . . - - -
. . - - - X X - - X . X . - - X . X - . - - X . - . X X . X - X .

Or, 55929 37268 13196 75361 96342 43317 235

On the other hand, I could also add “X” padding at the front and end of the plaintext Morse code to get:

"X-.-.X---X--X.X--.-XX..-X..X-.-.X-.-X.-..X-.--XX.--X.-X-X...X---X-.X"

And that would completely change the ciphertext output (the recipient would need to know about the padding if it’s optional).

In all other respects, Morbit and Fractionated Morse are identical. This means that the deciphering, and solving steps are the same.

But, because Morbit uses a 9-digit key instead of a 26-character alphabet, it is MUCH, MUCH more prone to falling under a pure brute force attack. Yes, if you have a crib, you can try placing it in the cipher text as you would with FM. However, I repurposed my FM solver to handle Morbit with very little effort (that took about 1 hour, including testing and debug), and was able to solve 3 separate Morbit CONs in under 15 minutes each (my solver found the solutions to 2 of the CONs in less than 5 minutes each) through brute force. I did use the cribs to test the output results and only print those strings that contained the correct crib text, but that’s not that big a time saver.

The reason is that a brute force approach usually generates illegal strings. These strings either have 3 or more X’s in a row, or produce sequences of dots and dashes that don’t exist in the Morse code table. I just fail the loop if I encounter an illegal condition, and increment the key to the next value. Only a fraction of the key permutations produce legal, although unreadable, text out, and of that text, I can scan for real English words for use in a more precise crib string. That is, even if I don’t have a crib, I can just run the solver and print out all legal strings. If one of those strings includes something like “always”, then I’ll stop the solver, specify “always” for my crib and restart it. If I chose correctly, then the solver will output only one string, which will be the actual solution for that CON. And the solution will come out in no more than 5 minutes, usually.

Summary:
1) Morbit is a simpler form of Fractionated Morse.
2) It uses 2-digit trinary codes, where FM uses 3-digit trinary.
3) Morbit also uses a straight-forward 9-digit key (no repeating digits).
4) All of the rules for placing a crib in FM also work for Morbit.
5) Morbit’s key search space is so small (9!), it can be solved through brute force on the key in 15 minutes.
6) By itself, Morbit isn’t very secure, but it can be hardened by adding a transposition (Redefence, or Sequence Transposition) step.

Wiggles, part 31


Just a little ongoing story to give you something to play with until the next blog post.

OYTYM RD UYZH BT WF EBMZKHZD WF RDGYMZD, UWDJ WF NERVE YKH TKHJJL DUYGG YMZ FYK YNYL FKWU JEH UYRM FWBK. JEH GYKAHDJ WMH RD EWMDEB, EWUH WF JWQLW, WDYQY YMZ QLWJW. XBJ, BMGHDD LWB’KH DWUH ZRDJYMVH RMGYMZ FKWU JEH VWYDJ GRMH, UWDJ WF JEH VRJRHD WM EWMDEB YKH AWRMA JW XH TKHJJL VGWDH JW DHY GHIHG. HIHM DW, JWQLW EYD DWUH IHKL ZHHT DBXNYL GRMHD. JERD UYQHD JERMAD RMJHKHDJRMA ZBKRMA JEH XRAAHK JLTEWWMD RM JEH DBUUHK, NEHM HIHKLJERMA AHJD FGWWZHZ. JEH JWQLW VRJL AWIHKMUHMJ TBJ RM Y ARAYMJRV VRDJHKM, JEH UHJKWTWGRJYM YKHY WBJHK BMZHKAKWBMZ ZRDVEYKAH VEYMMHG, NERVE EYD TBUTD JEYJ VYM UWIH 200 JWMD WF NYJHK THK DHVWMZ (JEYJ’D YXWBJ JEH IWGBUH WF Y 25-UHJHK DNRUURMA TWWG). MWJ HIHKL VRJL WK JWNM RM OYTYM EYD JEYJ UBVE UWMHL, WK JEYJ UBVE MHHZ FWK Y XHGWN-AKWBMZ RMFKYDJKBVJBKH. JEH JWNM R NYD RM NYD OBDJ XRA HMWBAE JW OBDJRFL EYIRMA 3 DJWTD WM JEH UYRM JKYRM GRMH, YMZ MW DBXNYL DLDJHU. XBJ, R’Z MHIHK KHYGGL DJWTTHZ JW JERMQ YXWBJ NEYJ’D KHYDWMYXGH FWK Y DHNHK DLDJHU RM Y DUYGGRDE VRJL YJ DHY GHIHG.