Skip to main content

Solving the SETI Decrypting Challenge

I spotted a challenge to decode a message received from a star 50 light years away. Well, at least a message that pretends to be from a star 50 light years away. The idea is if we were to receive a message like this would we be able to understand it. 

The message is 1,902,341 binary digits. Clearly that needs chopping up in some way so I factored it and its prime factorization is 7 × 359 × 757. I suspected that the message was either an image or multiple images. After a bit of fiddling around (initially I thought it might be a single image made of 7 colours overlaid) it turned out to be 7 images of size 359 × 757.

The code I used to generate the images below is here.

The first image confirmed that we were going to see 7 images of size 359 × 757 as it has a horizontal white bar at the top spanning the width and a vertical column on the right giving the height. This first image is a sort of 'frame' indicating that correct way to view the images.

The second image has the number 0 to 756 encoded as binary (white is a 1, black is a 0) down the left hand side. Perhaps the alien is telling us that it will use binary encoding for all numbers.

The third image has another sequence of binary numbers. In this case these are the first 757 prime numbers. I'm not clear why the alien wanted us to know that other than telling us that they know about primes.

Each of the subsequent images has two binary numbers encoded in the first two rows (zoom into this image to see them).

The third fourth image shows a wave. The transmission was received on a frequency of 452.12919 MHz from a star/planet 50 light years away. Working on the assumption that this wave is meant to represent the transmission itself I guessed that the two binary numbers at the start represent a distance and a time period as a reference point.

The two numbers are

00000000000000000000000000000000000000000000000000000000b = 16368191637088910834159098202685440


000000000000000000000000000000000000000000000000000000000b = 11677159761321922952849403009790256654968431476473856

I guessed that the first number represents (in some units that the alien uses) the wavelength of the transmission (66.31cm)  and that the second number was the time it would have taken the transmission to reach Earth (50 years). With those as a basis for distance and time measurements it's then able to calculate the other information requested.

The next image shows the alien itself with two binary numbers:

= 60479561273104168652304174731493376


= 42037775140758923161949049149211273119409177427443712

Assuming the first is the height of the alien then that would be

66.31 cm × 60479561273104168652304174731493376 / 16368191637088910834159098202685440

which is 245.01 cm. So the alien stands about 2.45m tall.

Assuming the second number is the lifespan of the alien was get

50 years × 42037775140758923161949049149211273119409177427443712 / 11677159761321922952849403009790256654968431476473856

That's 180 years. So perhaps this particular alien is 180 years old, or they generally live that long.

The next image shows what appears to be a large area covered in radio telescopes. I guess this is the source of the transmission. I'm pretty sure that this is actually a picture of the proposed Square Kilometre Array in Australia taken from Wikipedia.

Anyhow the two numbers are 

= 2468553521351190513386359178720371015680


0000000000000000000000000b = 2335431952264384665006648365913340213606881670994067456

Assuming the first is the size of the array then it's

66.31 cm × 2468553521351190513386359178720371015680 / 16368191637088910834159098202685440

which is 100km. So perhaps this is a square array 10km x 10km.

The second number might be how long they've been trying to talk to us.

50 years × 2335431952264384665006648365913340213606881670994067456 / 11677159761321922952849403009790256654968431476473856

which is 10,000 years. Sorry it took us so long to answer the phone.

Finally we get some information about where the alien lives. I think this depicts a very large planet with three moons (or perhaps it's a sun with three planets). The two numbers at the top are:

= 948909505053876287754040784031183263414353920


00000000000000000000000000000000000000000000b = 1401259171358630776572575392119740616658474880694279974420480

Assuming the first number is a size of the solar system (or planet, perhaps) we get

66.31 cm × 948909505053876287754040784031183263414353920 / 16368191637088910834159098202685440

which is 3.8442×10^7 km (roughly 55 times larger than our sun). So I'm going to guess that might be the size of the sun that they are orbiting.

The other number might be how long their solar system has existed:

50 years × 1401259171358630776572575392119740616658474880694279974420480 

So, 6 billion years. Longer than our solar system has been around but not an unreasonable time frame.


Popular posts from this blog

Your last name contains invalid characters

My last name is "Graham-Cumming". But here's a typical form response when I enter it:

Does the web site have any idea how rude it is to claim that my last name contains invalid characters? Clearly not. What they actually meant is: our web site will not accept that hyphen in your last name. But do they say that? No, of course not. They decide to shove in my face the claim that there's something wrong with my name.

There's nothing wrong with my name, just as there's nothing wrong with someone whose first name is Jean-Marie, or someone whose last name is O'Reilly.

What is wrong is that way this is being handled. If the system can't cope with non-letters and spaces it needs to say that. How about the following error message:

Our system is unable to process last names that contain non-letters, please replace them with spaces.

Don't blame me for having a last name that your system doesn't like, whose fault is that? Saying "Your last name …

Importing an existing SSL key/certificate pair into a Java keystore

I'm writing this blog post in case anyone else has to Google that. In Java 6 keytool has been improved so that it now becomes possible to import an existing key and certificate (say one you generated outside of the Java world) into a keystore.

You need: Java 6 and openssl.

1. Suppose you have a certificate and key in PEM format. The key is named host.key and the certificate host.crt.

2. The first step is to convert them into a single PKCS12 file using the command: openssl pkcs12 -export -in host.crt -inkey host.key > host.p12. You will be asked for various passwords (the password to access the key (if set) and then the password for the PKCS12 file being created).

3. Then import the PKCS12 file into a keystore using the command: keytool -importkeystore -srckeystore host.p12 -destkeystore host.jks -srcstoretype pkcs12. You now have a keystore named host.jks containing the certificate/key you need.

For the sake of completeness here's the output of a full session I performe…

More fun with toys: the Ikea LILLABO Train Set

As further proof of my unsuitability to be a child minder (see previous post) I found myself playing with an Ikea LILLABO 20-piece basic set train.

The train set has 16 pieces of track (12 curves, two straight pieces and a two part bridge) and 4 pieces of train. What I wondered was... how many possible looping train tracks can be made using all 16 pieces?

The answer is... 9. Here's a picture of the 9 different layouts.

The picture was generated using a little program written in Processing. The bridge is red, the straight pieces are green and the curves are blue or magenta depending on whether they are oriented clockwise or anticlockwise. The curved pieces can be oriented in either way.

To generate those layouts I wrote a small program which runs through all the possible layouts and determines which form a loop. The program eliminates duplicate layouts (such as those that are mirror images of each other).

It outputs a list of instructions for building loops. These instructions con…