img src=puzzle2.png id=puzzle-image script * Pink (white) 232,3,138 Blue (black) 58,185,229 * window.addEventListener(load, function() var image = document.getElementById(puzzle-image), canvas = document.createElement(canvas), context = canvas.getContext(2d); canvas.width = image.width; canvas.height = image.height; context.drawImage(image, 0, 0, image.width, image.height); Test 1 – rle (function() var rle = , prev = null, count = 0; for (let y = 0; y image.height; y++) for (let x = 0; x image.width; x++) let pd = context.getImageData(x, y, 1, 1).data; if (prev === null) prev = pd; if (pd == prev) count++; else rle.push(count); count = 1; prev = pd; var r1 = ; for (let i = 0; i rle.length; i++) r1 += String.fromCharCode(rle[i]); console.log(r1); var r2 = ; for (let i = 0; i r1.length; i += 3) r2 += String.fromCharCode(parseInt(r1[i] + r1[i + 1], 16)); console.log(r2); ()); , false); script(Where puzzle2.png is the image in black & white)
That is most likely just a hint, or misdirection. Id be greatly disappointed if its not a multi layered puzzle.
Example: Take the PNG, convert it to another lossless format. Then convert that lossless format back to PNG.
3. XOR that chunk against the corpus with a sliding window;
Yan Lei who suffer㫍Qie ې Da Cheng ruin Fenghun rope䇤throat Fengchui O destroyed ʍϢU Yu 䰢Ren Ju scabbard 뭡 Lun 뫶
Clearly the horizontal span lengths , between each fixed height step, encode a useful sequence.
Congratulations, you solved the puzzle! Why dont you apply to join our team? mi5.gov.ukcareers
Im betting hn will solve when post is 49 minutes old
Still, my solution (in JS) was a little more verbose than yours…
5. Read the top outputs and see if anything makes sense.
A bit of guess work and trial and error, and I have the following bash one-liner:
Yes. It would appear that their main criteria are actually mental stability and reliability.
As I read, numbers I see. Twould be a shame not to count this art among the great texts of our time
Code-golf anyone? Heres my bash one-liner:
!binsh wget https: convert puzzle.png puzzle.xpm Convert the image to XPM with ImageMagick. Here is what the contents of puzzle.xpm looks like: 0PySSAXx. The spaces represent one color and the dots the other. Well replace the spaces with underscores for readability. puzzle.xpm tr _ \ tr -d \n \ sed -e s,g; s^.*\*; s.*$ Remove metadata, C framing. \ sed -e s_\._\n.g; s\._.\n_g New line on color change. \ awk printf %c, length($0) \ xxd -r -pThe XPM image file format wikiX_PixMap) is great for doing things like this. I find it easier to read and to edit by hand than the Netpbm format family. It seems ImageMagick cant write XPM2, though, which makes extra preprocessing necessary.
…and I definitely have a tendency to use sed when I should be using tr.
3. Strip the PBM header lines and remove newlines so that its just 0s and 1s.
As I read, numbers I see. Twould be a great shame not to count this art among the great texts of our time – count this art among the great texts… its a one time pad, isnt it.
As I read, numbers I see.
There may well be a lot more to this puzzle than first meets the eye!
As I read, numbers I see. Twould be a shame not to count this art among the great texts of our time2. Threshold so some of the pixels are black and others are white. Save as ASCII PBM.
pngtopnm converts the image to an uncompressed bytestream format (pnm) xxd converts the bytes to hex representation -s14 skips the pnm header -p gives plain hex output -c groups by 3 byte values (RGB pixel values) uniq -c counts the run length encoding of the hex triplets awk printf %c converts the RLE count to an ascii value xxd -r reverses the hex dump to the final encoded message
Im always of the opinion that these tests are not necessarily to find someone that can solve the puzzle, its to find those that can solve it and arent egotistical enough to brag that they solved it online.
What do you mean about the compressed size?
I did HEX ASCII BASE64 Decode… Got this.
43-6F-6E-67-72-61-74-75-6C-61-74-69-6F-6E-73-2C-20-79-6F-75-20-73-6F- 6C-76-65-64-20-74-68-65-20-70-75-7A-7A-6C-65-21-20-57-68-79-20-64-6F- 6E-92-74-20-79-6F-75-20-61-70-70-6C-79-20-74-6F-20-6A-6F-69-6E-20-6F- 75-72-20-74-65-61-6D-3F-20-6D-69-35-2E-67-6F-76-2E-75-6B-2F-63-61-72- 65-65-72-73-205. This smells like ASCII, lets decode it with tr -d – xxd -p -r
Thats the comment at the end of the file, but is this even the challenge? Because it take takes less than 5 seconds to find it, i think this is a hint not the solution.
Twould be a shame not to count this art among the great texts of our time makes me think part of the file is a one-time pad against part of some famous book (based on the phrasing, and the Britishness of MI5, probably some 19th century British literary author, maybe Dickens or Austen). Assuming thats the case, the solution would be:
With some editing out of characters…
Uncompressed its just a binary message of 2 pixel colours, so unless that comment at the end is pointing somewhere else then its not got much depth…
I think there is maybe a couple more steps to it but interesting to see what you guys come up with.
The count-the-pixels thing is too obvious, and doesnt explain why this is a compressed png thats almost twice the size of what you get when you decompress it.
Somehow I doubt thats the solution either, you can get to that same link by just using the Careers menu item.
I checked incase something was hidden in the DEFLATE encoding itself (e.g. using sub-optimal block encoding selection) but this round-trips exactly, so I dont think it can be.
So i doubt there is much more to it 😉
The IDAT chunk (which makes up most of the file) is DEFLATE-d but uses full color (rather than palettized color, which would have saved lots of space, and might be how youd get 40% compression). It also doesnt use any row filtering.
I would thinkhope its a bit more complicated than that.
Can you spoil the latest Bourne film for me as well please?
Im not sure the sed -e sABA\nBg bit is optimal, but it was the first thing I thought of…
Looking at the challenge one of the things that has me wondering is why do they repeat the same text twice, but with different font sizes. This suggests some kind of fraction that is somehow relevant to get further in the puzzle.
EDIT: Use gimp to save it as ASCII portable bitmap wikiNetpbm_format), strip the headers and all the junk and you get a message that links to mi5.gov.ukcareers.
Thought theyd make this challenge more challenging but I reckon anyone who does solve this is pretty smart and worth hiring for them. Remember its government so they arent getting or even looking for the best of the best… they dont pay enough for the best.
There are no hidden chunks in the file, and the image data chunk when inflated is 60147 bytes, vs 1270 compressed.
1. Figure out which text theyre referring to, or get the text of as many books as possible;
Edit: Youre right though. Using imagemagick to clone it like so:
Its not like its a particularly complex puzzle. If you dont want spoilers, dont read it.
Okay what if rearranging the red strips so their edges are flush encodes a transposition. Key for the cipher.
I have a coding challenge for them. Sadly, its a really easy one that they missed on so far: Do a better-than-random shuffle so the did-you-know questions lower down on that page dont repeat so often.
If we move the comma, this becomes: As I read Numbers, I see…
Perhaps Im just hoping for more than there is to it :).
Iterate over the personal information of 5000 citizens using a for loop and violate their rights by calling the violateHumanRights() function which takes a single parameter which is the personal identification number attribute of the citizen.
Somehow this whole thing reminds me of Egyptian fractions
4. Score each sample based on number of english words found in the output, keeping the top 10 as you go (or do some mapreduce crap because this would take a while);
pngtopnm puzzle.png xxd -s14 -p -c3 uniq -c awk printf %c, $1 xxd -r -pExplanation:
I got that far too. I dont believe it – there has to be more to it than that. Therell be something else in that file thats better hidden, for sure, and Im pretty sure it wont be plain ASCII and hex. 🙂
If anyone wants to try it, this might be a good start:
I ran `convert -compress None puzzle.png` and the output was ~800 bytes. Clearly thats optimizing the image too, but basically the image seems wastefully large, and that makes me suspicious theres something going on there.
Im a bit disappointed there arent any hidden chunks that take advantage of the PNG format 🙁
You could have written this up in a Gist or PasteBin, provided a link and a spoiler message.
include stdio.h main() int c, l=0, n=1; while(EOF != (c=getchar())) if(c == l) n++; else putchar(n); n=1; l = c; putchar(\n); return 0; Output is the following:
Numbers. Or an offset sequence. If its a simple cipher recovery should be quick.
convert puzzle.png puzzle2.pngresults in an image thats at least 40% smaller. It might just be better compression, but there might be another layer of steganography going on.
I unpacked the chunks and there doesnt look to be much more (or its subtle).
This would also explain why the file is a bit longer than youd think it should be based on its visual contents.
It does seem too obvious, and the comment seems to be pointing somewhere else like you say.
Huh. So who benefits from you posting the solution here?
4. Now feed it through this program:
OK, so, the obvious congratulations messages aside, whatsreallyin that file?
I did, my comment is about the edit. It feels that there should be more to it than that. I would at least expect the result to point to something you cant get at by just browsing around.
Im a little disappointed that I was able to solve it so quickly, I thought it was going to be a big multi-stage puzzle where the color values and image dimensionsrow boundaries would all be important factors…
Different file size, right? OK, the comment accounts for about 120 bytes.. but what about the rest? Why is it that much bigger?
I am very surprised by the amount of spoilers here. You ruined my fun
Congratulations, you solved the puzzle! Why dont you apply to join our team? mi5.gov.ukcareers
Its but read the edit, the solution isnt much more complicated than that either 🙂 this is very basic steganography.
How long will hn take to solve if we work together
Im fairly certain thats just a hint.
pngtopnm puzzle.png pnmtoplainpnm tail -n +4 sed -e s232 3 138Ag -e s58 185 229Bg tr -d \n sed -e sABA\nBg -e sBAB\nAg awk .* printf %x, length(); xxd -r -p sed -e s-g xxd -r -p
Not sure if Im on to something but was interesting seeing the Chinese characters.
1. Open PNG in text editor, see comment:
2. Take the chunk of the file between the PNG headers and the Comment;
OTP on wikiBook_of_Numbers, perhaps?