So i read a bit about the gif format and decided i will do some "puzzles" using gifs.
Warning: For this puzzles you need to be able to code or now how to use the correct tool for the job.
It will be quite easy at the beginning, but will get harder over time.

Rules

I will post images, which will lead to an password in one way or another.
I will (from now on) always post two images with data stored in a similar kind.
There is a game for both solved images, but it have to be two different people.
Kind of like a first and second price, but both can choose a game.

To get your game post the hidden password in this thread.
After both puzzles are solved feel free to post the solution, hints and whatever in this thread.
Before both are solved, little hints are welcome, but please don't spoil the fun.
All tips and writeups have to be inside spoilers (Between two ~ symbols like this)

All games are steam redeamable and almost all are leftovers from bundles.

For the later (and maybe earlier, too) puzzles you may want to read this and maybe this too. Or if you want a more technical view here

List of games
140 [HB]
18 Wheels of Steel: Extreme Trucker [KEY]
A Valley Without Wind [CARDS] [KEY]
Aaru's Awakening [IG]
About Love, Hate and the other ones [CARDS] [IG]
Alchemy Mysteries: Prague Legends [CARDS] [IG]
Alchemy Mysteries: Prague Legends [CARDS] [IG]
APOX [IG]
Atonement: Scourge of Time [KEY]
Avencast: Rise of the Mage [KEY]
Aveyond: Lord of Twilight [HB]
Battlepaths [CARDS] [KEY]
Bermuda [CARDS] [IG]
Biodrone Battle [KEY]
BlazeRush [CARDS] [IG]
BloodNet [IG]
Build 'n Bump [KEY]
Canyon Capers [CARDS] [KEY]
Canyon Capers [CARDS] [KEY]
Cargo Commander [CARDS] [IG]
Cargo Commander [CARDS] [IG]
Clickr [CARDS] [KEY]
Cobi Treasure Deluxe [KEY]
Company of Heroes [HB]
Crab Cakes Rescue [KEY]
Crayon Chronicles [CARDS] [IG]
Crayon Chronicles [CARDS] [KEY]
Crazy Cars - Hit the Road [IG]
Crimzon Clover WORLD IGNITION [CARDS] [HB]
Crystals of Time [CARDS] [KEY]
Damnation City of Death [IG]
Damnation City of Death [IG]
Dark Shadows - Army of Evil [KEY]
Dark Shadows - Army of Evil [KEY]
DarkBase 01 [CARDS] [IG]
David. [CARDS] [IG]
Dead Space™ 2 [HB]
Divekick [CARDS] [IG]
DogFighter [IG]
Down To One [IG]
Dragon Age: Origins [HB]
Drew and the Floating Labyrinth [IG]
Eidolon [IG]
Eleusis [IG]
Escape Machines [IG]
Final Dusk [CARDS] [IG]
Final Dusk [CARDS] [KEY]
Final Dusk [CARDS] [KEY]
Flix The Flea [CARDS] [KEY]
Frozen Synapse Prime [CARDS] [HB]
Global Ops: Commando Libya [IG]
Goats On A Bridge [CARDS] [HB]
God Mode [CARDS] [HB]
Gunship! [IG]
Home [IG]
Home [IG]
Hypt [IG]
Imperial Glory [IG]
Insecticide Part 1 [IG]
Ionball 2: Ionstorm [KEY]
Ionball 2: Ionstorm [KEY]
Jamsouls [CARDS] [KEY]
Jones On Fire [KEY]
Knights of Pen and Paper +1 Edition [CARDS] [HB]
Knock-knock [CARDS] [IG]
Labyrinthine Dreams [CARDS] [HB]
Last Knight: Rogue Rider Edition [CARDS] [IG]
Legendary [IG]
Legendary [IG]
Leona's Tricky Adventures [IG]
Leona's Tricky Adventures [KEY]
Lightfish [KEY]
Lilly and Sasha: Curse of the Immortals [CARDS] [KEY]
Lilly and Sasha: Curse of the Immortals [CARDS] [KEY]
Lilly and Sasha: Curse of the Immortals [CARDS] [KEY]
Lumino City [HB]
Magicka [CARDS] [HB]
Magicka: Horror Props Item Pack [HB]
Magicka: The Other Side of the Coin [HB]
Magnetic By Nature [CARDS] [IG]
Majestic Nights [CARDS] [IG]
Make it indie! [CARDS] [IG]
Make it indie! [CARDS] [KEY]
Metrocide [HB]
Motorama [IG]
Munin [CARDS] [KEY]
Mushroom Men: Truffle Trouble [CARDS] [IG]
NaissanceE [IG]
Ninja Guy [IG]
Numba Deluxe [KEY]
Obludia [CARDS] [KEY]
OCEAN CITY RACING [KEY]
Orborun [KEY]
Paranautical Activity: Deluxe Atonement Edition [CARDS] [IG]
PeriAreion [IG]
Pid [KEY]
Pixel Piracy [CARDS] [IG]
Plazma Being [CARDS] [IG]
Praetorians [IG]
Primal Carnage [CARDS] [HB]
Project Green Beat [KEY]
Project Night [CARDS] [KEY]
Project Night [CARDS] [KEY]
Proxy Blade Zero [IG]
QuestEvent [IG]
QuestRun [KEY]
R.O.O.T.S [KEY]
R.O.O.T.S [KEY]
Rabbit Hole 3D: Steam Edition [CARDS] [KEY]
Racer 8 [CARDS] [KEY]
Racer 8 [CARDS] [KEY]
Real Boxing™ [CARDS] [IG]
Real Boxing™ [CARDS] [IG]
Remnants Of Isolation [CARDS] [HB]
Restaurant Empire II [IG]
Retro/Grade [CARDS] [IG]
Rex Nebular and the Cosmic Gender Bender [IG]
Rooks Keep [CARDS] [IG]
Rooms: The Main Building [CARDS] [KEY]
Rotieer [IG]
Runaway, A Road Adventure [IG]
Runaway, The Dream of The Turtle [IG]
Runaway: A Twist of Fate [IG]
Rush Bros. [CARDS] [KEY]
Rush Bros. [CARDS] [KEY]
Rush Bros. [CARDS] [IG]
samurai_jazz [IG]
Savant - Ascent [IG]
SCHAR: Blue Shield Alliance [CARDS] [IG]
Shadow Ops: Red Mercury [IG]
Shadows of War [CARDS] [IG]
Shattered Haven [KEY]
SickBrick [CARDS] [KEY]
Siege of Inaolia [KEY]
Siege of Turtle Enclave [IG]
Sinister City [CARDS] [IG]
Sinister City [CARDS] [IG]
Slave Zero [IG]
Space Station Alpha [IG]
Speedball 2 HD [CARDS] [KEY]
Stacking [HB]
Starlaxis Supernova Edition [CARDS] [IG]
Steel Storm: Burning Retribution [KEY]
Stonerid [CARDS] [KEY]
Super Furball [IG]
Super Splatters [CARDS] [HB]
Supreme League of Patriots - Episode 2: Patriot Frames [CARDS] [KEY]
Survivor Squad [CARDS] [IG]
Sword of Asumi [CARDS] [KEY]
Tales From Space: Mutant Blobs Attack [CARDS] [IG]
Terra Incognita ~ Chapter One: The Descendant [CARDS] [IG]
Terrian Saga: KR-17 [CARDS] [IG]
The Culling Of The Cows [CARDS] [KEY]
The Culling Of The Cows [CARDS] [KEY]
The Defenders: The Second Wave [CARDS] [IG]
The Detail [CARDS] [IG]
The Joylancer: Legendary Motor Knight [IG]
The Language Game [KEY]
The Lost City Of Malathedra [KEY]
The Novelist [CARDS] [HB]
The Old City: Leviathan [IG]
The Original Strife: Veteran Edition [CARDS] [KEY]
The Undying Plague [CARDS] [IG]
Tidalis [KEY]
Trauma [IG]
Treeker: The Lost Glasses [CARDS] [IG]
Trine 2: Complete Story [CARDS] [HB]
Tryst [IG]
Turba [IG]
Ubinota [KEY]
Velvet Assassin [IG]
Velvet Assassin [IG]
Vessel [IG]
Victim of Xen [CARDS] [KEY]
Viscera Cleanup Detail: Santa's Rampage [IG]
Volstead [KEY]
Volt [CARDS] [KEY]
VVVVVV [HB]
War of the Roses: Kingmaker [CARDS] [HB]
Warhammer® 40,000: Dawn of War® - Game of the Year Edition [IG]
Warhammer® 40,000™: Dawn of War® II [IG]
Woolfe - The Red Hood Diaries [CARDS] [IG]
X-COM: Enforcer [KEY]
X-COM: Interceptor [KEY]
Yury [CARDS] [KEY]
Zack Zero [CARDS] [KEY]

Other stuff and packs:
Skara Starter Package
Company of Heroes Complete Pack I am not 100% sure. HB says it is "Company of Heroes™ Complete Edition"
Company of Heroes™ 2 - The Western Front Armies Oberkommando West This is a DLC, but can be played as a standalone version, too.
thanks Jagdtiger for the info

Also i have a whole lot of Desura games. If there is any interest i could generate a list of them.

9 years ago*

Comment has been collapsed.

Yay, the first one not solved within some minutes :)
mini hint: read about steganography..

9 years ago
Permalink

Comment has been collapsed.

I went and got a program that's supposed to find the hidden files in those for me, but it requires a password and none that I can think of work.

Also, Company of Heroes™ 2 - The Western Front Armies Oberkommando West is a standalone DLC. It'll add that army if you have the base game, and allow you to play only that army if you don't.

9 years ago
Permalink

Comment has been collapsed.

Well, i guess just using a tool without knowing what it does won't help for this one. ;)

Thanks for the info about Company of heroes. Will update it.

9 years ago
Permalink

Comment has been collapsed.

One day, I'm going to find an easy way to win one of these despite not having any coding knowledge whatsoever. And on that day I will feel complete.

No problem :D

9 years ago
Permalink

Comment has been collapsed.

Here, have a key for Make it indie (if you are fast enough)
0BXC4-JAGD-TIGER-9TQJM-8XPWN
Remove your nick ;)

9 years ago
Permalink

Comment has been collapsed.

I was and thank you so much, it's a game I actually wanted! :)

Not that that's gonna stop me from trying to win these :p

9 years ago
Permalink

Comment has been collapsed.

Any chance we can get a bigger hint? No one seems to be getting this. The fish is simple... but it seems like there's probably something hidden with some tool in one of the images...

View attached image.
9 years ago
Permalink

Comment has been collapsed.

All these challenges are produced with a tool i am writing at the moment.
So it is strongly plausible that there is no tool available which can just extract the required information (at least for this challenge).

Some more hint: Maybe read something about how the image blocks are saved and in what form and think about where and how i could hide data in there.

9 years ago
Permalink

Comment has been collapsed.

eh i tired for 2 hours to find it, no luck at all. free bump 4 u m8 maybe someone else can find it

9 years ago
Permalink

Comment has been collapsed.

My head hurts.

9 years ago
Permalink

Comment has been collapsed.

i don't understand

9 years ago
Permalink

Comment has been collapsed.

My guess is: NETSCAPE2.0!

9 years ago
Permalink

Comment has been collapsed.

Or pHYsöútIME‹ TiTXtCommentCreated with GIMPd.e IDATx

So, maybe Physic Out Time? .... or Out of time? Or Chad really wants to win.... D:

9 years ago
Permalink

Comment has been collapsed.

The password is "DontTrustRedFish".

Waited a little to give someone else a chance, but hell, there's over 180 prizes, I'm not ashamed to ask for a third :) And I think the others could use some hint to get on the right track ... I'll be happy to post spoilers, just waiting for SleepGamer's ok on that

9 years ago
Permalink

Comment has been collapsed.

And that is ofc correct again :)
I would love to have some writeups (esp now when the challenges are getting harder).
Just please use spoilers in case someone want to try it first without tips.

I have some more ideas, but no clue when i find the time. Lets say ETA for the next one is between 10 and 30 hours (need to implement some stuff and sleep and such ;))

9 years ago
Permalink

Comment has been collapsed.

I wouldn't carea about some spoilers, fell free to add me and message me, if you want.

9 years ago
Permalink

Comment has been collapsed.

Ok, so here's how to solve the red fish one ...

When you watch the gif closely, you may notice there's some pixel junk in the first two animation frames (images below).

With the right tools or some coding you can extract those frames (I guess anyone who found the fish can do that). You won't find anything in the raw data from the GIF file tho, not quite there yet.

Image data in GIFs is compressed. Once you decode the first frame's image data, you'll actually find plain text instructions on how to get the password from the second frame. I guess you could get up to this point with the right tools; to follow the instructions, you'll need do to some (easy) coding.

View attached image.
View attached image.
9 years ago
Permalink

Comment has been collapsed.

I was in the right direction. I just didn't finish removing the sub block size bytes. Is there a tool that removes them? Doing it manually takes a lot of time.

9 years ago
Permalink

Comment has been collapsed.

c version: http://pastebin.com/AYa21ddL
python version: http://pastebin.com/Dx891Mjh
Both are not really intensive tested but should work.
Use it like python read_subs.py <GIF_FILE> <OFFSET> for py and read_subs <GIF_FILE> <OFFSET> for the c version.
The offset has to be correct and pointing at the first byte in the "dynamic length data". Have fun :)

edit: Both version write to the standard output, so redirect it if you want it in a file.

9 years ago
Permalink

Comment has been collapsed.

So I was doing it right, but in the worng file (and probably with the worng language, PHP in my case)

9 years ago
Permalink

Comment has been collapsed.

Ah, ok, my thinking direction was quite correct then...

9 years ago
Permalink

Comment has been collapsed.

Extract is trivial, the difficult part is decompress.
And lzw module for python isn't available for version 3 :_(

9 years ago
Permalink

Comment has been collapsed.

Yeah, i had some troubles implementing it properly on my side.
Hint: i cheated and used PIL(low):
decoder = Image._getdecoder("P", "gif", (lzw_minimum_code_size, interlace_flag), ())
decoder.setimage(img.im, (0, 0, img_width, img_height))
decoder.decode(image_data)
# and so forth. Not really nice, but it works. You should be able to reuse an image just to let the decoder store the data in it.

9 years ago
Permalink

Comment has been collapsed.

I was thinking in installing PIL and tesseract-ocr for having an OCR tool to work. Maybe I implement it in that way too

9 years ago
Permalink

Comment has been collapsed.

I posted a more complete dirty snippet some posts further down using PIL (in case you are interested).

9 years ago
Permalink

Comment has been collapsed.

Thanks for the heads up and the help. Please next time put just the link to the gif, not attach it. The page takes too much time to load.

9 years ago
Permalink

Comment has been collapsed.

I thought, due to the fact user had to click the "View attached image" thingy, that wouldn't be a problem, sorry.
I will use plain links for now on.
Also the next gifs might be a little bit smaller (probably, maybe, i don't know)

9 years ago
Permalink

Comment has been collapsed.

I didn't really understand but I actually found a tool that does the job. How do I decode it now?

9 years ago
Permalink

Comment has been collapsed.

well i tought something like that is going on but i didnt have the right "tools"

9 years ago
Permalink

Comment has been collapsed.

I still don't understand one thing in this. The frame does indeed has "pixel junk" and there is nothing in the raw data, because it's compressed. Yet, wouldn't decompression just result in the colour indices for the image?

9 years ago
Permalink

Comment has been collapsed.

Yes it would. One 8-bit index per pixel. Which you can interpret as an ASCII character code -- or you could just write the decompressed data to a file and conveniently read it in Notepad ;)

9 years ago
Permalink

Comment has been collapsed.

Ah, I've just tried that with the image you posted (which is png), so it didn't work. Now having done the same with the gif I see the instructions, thanks.

9 years ago
Permalink

Comment has been collapsed.

Yeah, I used a PNG there on purpose to not give away too much :D

9 years ago
Permalink

Comment has been collapsed.

Still in this thread: happy cake day!

9 years ago
Permalink

Comment has been collapsed.

Oh ... thanks ... I would have missed it! I would have missed my chance to desperately try to fit in :D Thank god you reminded me.

9 years ago
Permalink

Comment has been collapsed.

Happy cake day!!

View attached image.
9 years ago
Permalink

Comment has been collapsed.

Yeah and thanks to you too :) I created one of those mandatory fun things, there's a DeadCore to be won if you don't have it yet ...

9 years ago
Permalink

Comment has been collapsed.

Another one. Sorry its a little bit harder again (i hope) ;)
Also it looks like i messed something up at encoding, or maybe not ?
Feel free to ask for tips, but give it a try first ;)

Hint 1: It is more as one step involved

View attached image.
9 years ago*
Permalink

Comment has been collapsed.

Too soon for me :(
Also I hare read that PIL is dead, so maybe I will use Pillow instead

9 years ago*
Permalink

Comment has been collapsed.

Good choice afaik. I never bothered to install it, but it is the way to go (at least instead of PIL).

9 years ago
Permalink

Comment has been collapsed.

Well I have added a decompress feature to script but I'm getting an error :\ ValueError: cannot decode image data
I'm using gif format in the decompress function: Image.frombytes('P',size,data_array,'gif'), with data_array being the lzw frames (without the length bytes)
Image Data Block C2 01 7C 01 00 08 FF 00 15 08 1C C8 80 81 82 82 19... => Data array 00 15 08 1C C8 80 81 82 82 19...

9 years ago
Permalink

Comment has been collapsed.

Ok I just realized... I need to specify the palette in some place :S xddd I will read more documentation

9 years ago
Permalink

Comment has been collapsed.

Oh man I was looking forward to this :) can't wait to have a go at it when I get home from work

9 years ago
Permalink

Comment has been collapsed.

Anyone know if extracting the frames with imagemagick works?

9 years ago
Permalink

Comment has been collapsed.

It may. Looking at the individual frames can give you a clue about how the password was hidden. But I don't know if ImageMagick can save the frames in a way that you can actually use them (that is, without changing pixel format or data order).

9 years ago
Permalink

Comment has been collapsed.

That's exactly what I'm not sure, if the data order or pixel format are modified or not. I can saved the frames in any format I want, but I don't know if imagemagick removes "unnecesary" information

9 years ago
Permalink

Comment has been collapsed.

The password is "ProjectGutenberg".

9 years ago
Permalink

Comment has been collapsed.

This is technically correct, the best kind of correct..
I feeled so clever with this one, and you just solve it like it was nothing XD
It is possible that i got some new games, i'll write you in some minutes on steam.
.
Please don't post tips yet. (See my next post))

9 years ago
Permalink

Comment has been collapsed.

From now one i will always publish two images with data hidden in a similar way.
But both must be solved by different people.
Kind of like a first and second place, but both get the price for the first :)

I will soon post a similar one to the last challenge. So if you are able to get the password from the last one you will find the second one easy ;)

This also means, please only post writeups after both puzzles are solved.

9 years ago
Permalink

Comment has been collapsed.

Here is the "second place image" .
Meaning: The password is hidden in (almost) the same way and mandrill can't win this one :P, as he won the "first place" of this kind.
<small>Ofc, he can still tell me the password per steam ;)</small>

More hints:
Hint 1: Sometimes the small things matter.
Hint 2: Ignore things you can't see.

ETA: for the next two is about 24 hours, can't do puzzles all day long ;)


It looks much nicer, doesn't it ?

View attached image.
9 years ago*
Permalink

Comment has been collapsed.

Ok, here is a little (and quite dirty) way to get the gifs data with the python module PIL (It might work with PILLOW too, but i have no clue)

 from PIL import Image
 img = Image.open("somefile.gif")
 # PIL can't just jump to the nth frame (why ever), you have to iterate over all frames till you are at the nth
 # Lets say we want the 5th frame,
 for i in range(5): img.seek(i) 
 # For getting the pixel i had to use this dirty trick. Maybe you do not need this and the crop call in between with your version.
 # My PIL version ignored different frames with different offset, this fix that.
 # anyway, if it is required it has to be saved directly after the call to seek, as some function calls (like show) seem to overwrite this.
 size = img.tile[0][1]

 # Lets show the image.
 img.show()

 # This will return the pixel(color indices) as enflated version.
 # You might not need the crop call in between, but it shouldn't harm (i hope).
 pix = list(img.crop(size).getdata())
 # To be able to access pixel directly (and do splicing and stuff AFAIR)
 some_pixel = img.crop(size).load()[(some_x_value, some_y_value)]

 #save it like this
 img.save("somotherefile.gif") # or whatever image filetype you want

Feel free to post other/easier ;), solutions to get the image frames in here.

9 years ago*
Permalink

Comment has been collapsed.

I rewrote my LZW decompression in Python, just to get some exercise ... While this is way longer than using PIL for the job, it may be interesting/helpful, so here it is: http://pastebin.com/TkS34f2K

I didn't code anything in Python for a while, so this may not be the fastest way to do things. The "recursive" way in which non-literals are stored and looked up may seem convoluted, but it did make the decoding algorithm somewhat clearer (at least to me); as a bonus it brought execution time down by some 30% (which may just be my Python clumsiness).

While this does not yet parse GIF files or extract blocks from them, I'm sure you can puzzle it together with the block extraction SleepGamer posted before :)

9 years ago
Permalink

Comment has been collapsed.

That code looks pretty good imho, thanks for posting.
I finally got the compression working on my side.
Funny thing: not only does Pil(low) does not compress at all, it somehow even managed to make the files (noticeable) larger as if encoded without compression (using the index as code).

Anyway after compression is done (and ported to c) i will implement the decompression, too and post some snippets/benchmarks(?).

Btw, i learned quite a lot from reading the (java) sources here (decompression, Project page)

Sorry, no challenge today (well maybe sometime tonight, but i am not sure).

edit: In case someone is interested here my current fastest python compression for gifs lzw blocks (about 211 KB/s on my system).
edit2: C compression version here (about 2491 KB/s on my system)

9 years ago*
Permalink

Comment has been collapsed.

Ok, i finally found the time to give it a look (sry).
Some minor things i found:

  • It is not working for me (py2.7), it doesn't find the first clear code and crashes because of that (The data should be valid, it is working with other decompression functions). using py 2.7 (Def. not impossible i messed something up, though)
  • You assume the first byte is the clear code. Maybe check it or just initialize your dict before even reading the first byte ?
  • You used the build in (in py 2.x at least) symbol buffer, as variable name. This isn't a good idea (i fall for this all the time, too, as if i want a buffer var i call it buffer, damn it :) )

I still haven't gotten to implement my own decompression, so i'll give more feedback when i finally did ;)

9 years ago*
Permalink

Comment has been collapsed.

hm yeah, should have said I used Python 3.4 so that may be a problem ... maybe something with bytes vs. bytearray? I don't really know.
Didn't know "buffer" way a reserved name; it didn't cause any problems for me, so that might again be different in 3.4.

About that clear code ... I guess I could assume an "implicit clear" if the stream begins with something else. But since the documentation stated that the LZW has to start with clear, I just didn't care to try and degrade gracefully there ... as long as the code just errors out (it does, I hope?) instead of producing garbage, I'm fine with that :)

9 years ago
Permalink

Comment has been collapsed.

Sorry it took me so long. But here are the next two (first and second place).
The last one is still not solved, so there is still a game for that ;).

Some more tips (for this and the last one):
Again, read about steganography and think about how it could be used in terms of gifs.
Jul qbrf gur pbybe gnoyr pbagnva fb znal qhcyvpngrf ?

You need to know how to code to solve some parts of the puzzles. I don't think there is a tool which does what you need (but i may be wrong).

I hope its ok that i attached the images again, as they are really small anyway.
Anyway,, have fun :)

View attached image.
View attached image.
9 years ago
Permalink

Comment has been collapsed.

That was so. much. fun. I feel a little weird for enjoying this so much. Password for the first (greenish background) is "Ook.Ook!"

9 years ago
Permalink

Comment has been collapsed.

Correct. You are pretty good at this.

Just in case you doesn't know the site. https://www.wechall.net/ has a bunch of it sec/crypto/steganography related challenges and a bunch of links to other sites. Also a "global" ranking.
I spend so much time on some off this, so i guess you are not that weird after all or i am weird too :)

For the others: If there is still someone else there following along, feel free to ask for tips.

9 years ago*
Permalink

Comment has been collapsed.

Should I know? What if not? :/

9 years ago
Permalink

Comment has been collapsed.

Well you could theoretically do all this by hand with some hex editor, but that would be a ridiculous amount of work ;)

9 years ago
Permalink

Comment has been collapsed.

Wrong post, sorry :S
I'm going for the part that tells you that you know what to do

9 years ago*
Permalink

Comment has been collapsed.

I guess you are talking about the hint embedded in this challenge ?
Think about how gifs save data and where a minimum value would be required.

edit: Btw, there is still a price for the last one, too ;)

9 years ago
Permalink

Comment has been collapsed.

Ok, I suppose it has something to do with compress/decompress lzw data, so I give up (your codes don't work for me)

9 years ago*
Permalink

Comment has been collapsed.

You might want to try mandrill code, with python 3.x, (PIL might have problems with this as it needs to know the size of the decoded part afaik) .
Remember there is one thing missing in his code

9 years ago
Permalink

Comment has been collapsed.

The error in his code is other thing (CodeTable has not attribute codes defined, line 67. I suppose it has to be a list defined in CodeTable as self.codes = [] ) I will try it (and attribute last_code I suppose it is eod_code ???)

9 years ago*
Permalink

Comment has been collapsed.

I had the same problem with the code and i think it is because i used python 2.7, are you sure you are using python 3.x ?
The error occurs btw when the decoder doesn't read the clear_code as first code. Most probably this means something is wrong with the encoding (py2.7 vs 3 problem), or you are supplying invalid data.

I start to write my version of an decoder today (at least that is planed ;)), will post results in here.

9 years ago
Permalink

Comment has been collapsed.

well, he is using attributes not declared in the class constructor, that is the error. It has nothing to do with the Python version :/

9 years ago
Permalink

Comment has been collapsed.

yep ... that was an accident for self.codes but deliberate for self.last_code, see below :)

9 years ago
Permalink

Comment has been collapsed.

Oh ... I must have introduced that when I refactored for readability ... that "self.codes" actually has to be "self.non_literals".

last_code is not the same as eod_code. last_code is initialized when clear() is invoked for the first time. As SleepGamer noted above, this causes errors when the LZW stream does not start with a clear code (but in GIFs, it always does -- if it doesn't, my guess is that you didn't remove the sub block length bytes.)

Yeah, documentation would really help with that snippet. I didn't really feel like writing any, sorry :)

9 years ago
Permalink

Comment has been collapsed.

oh I thought it was a clean lzw data. Thanks for the help. I wrote a script to join lzw blocks time ago, let's see if it still works.
EDIT: I'm in the next stage now. This makes me lol

9 years ago*
Permalink

Comment has been collapsed.

Congratulations, you are almost there now :)

9 years ago
Permalink

Comment has been collapsed.

Nah my brain just said: fuck this :/

9 years ago*
Permalink

Comment has been collapsed.

It is easier from now on (only 2 + 1/2 steps remaining ;) ). Esp . as you seem to know what the stuff is you see there :)

9 years ago
Permalink

Comment has been collapsed.

I was doing the greenish (the one that mandrill solved), and now I have tried the blackish and I noticed 2 lost bytes in the lwz stream, is that possible? It marks 122 bytes but there is only 120 bytes left
EDIT: I will try filling the entry with zeros
EDIT: It seems it works

So I am now in the same steap I reached yesterday :/ Searching again for a proper script

9 years ago*
Permalink

Comment has been collapsed.

Seem to be correct on my system. I get the 122, followed by 122 bytes, followed by a zero
It still possible i messed something up somewhere (but i guess not).

If you are at that stage i think you are, almost every script should work. It is kind of the default implementation. But don't expect the output to by readable text. You should know the format, though.

9 years ago
Permalink

Comment has been collapsed.

I got the 122, followed by 121 bytes, followed by, you know, zeros (CE7181800000)
What I'm looking for is a way to print, not the ascii code of the cells, but the cell value. It seems I will have to edit some code (it seems all are for python < 3..)

EDIT: Using another tools, next step..

9 years ago*
Permalink

Comment has been collapsed.

lolololoooool amazing sleepgamer, amazing

9 years ago
Permalink

Comment has been collapsed.

I had so much fun creating this puzzle :) Solved it ?

9 years ago
Permalink

Comment has been collapsed.

Yep, the password is "Ook!"
And I must confess I had a lot of fun solving it too, despite the fact I usually hate steganography (mostly because it hates me). It would have been impossible without mandrill's and your help. I have learned a lot thanks to both of you, thanks!

9 years ago
Permalink

Comment has been collapsed.

Congratulations :)
I am not really the stego guy (more into reversing/crackme/warbox challenges), either, but i loved creating this puzzles.
One does learn so much better when doing stuff for fun.

Did you already choose a game ?
New ones not in the current list:
Collisions
Flesh Eaters
Stranded In Time
"Glow Ball" - The billiard puzzle game
Yury [CARDS]

I will update the list after you selected your game.

9 years ago
Permalink

Comment has been collapsed.

Worked perfectly, thanks

9 years ago
Permalink

Comment has been collapsed.

My little feedback.
Started this series of puzzles with the 'Field' gif and got stuck.
I've been fiddling with pixels for 3 days now. Seems like I can split gif into frames perfectly fine (i'm using python 3.3+Pillow, tried mandrill's code, it gave same results as Pillow, so I guess I'm ok with splitting).
Since more than 1 step involved it's quite possible that it is impossible :O to understand if you are going in the right direction.

The 'ladle' gif was fine in the sense it gave you indication as to what to do. I tried quite a lot of things (byte and bitwise) but truly it's a needle in a hay at the moment :).

Ok, ok, I may be truly blind...

9 years ago*
Permalink

Comment has been collapsed.

I hope I didn't misunderstand, but you are trying to solve the "second field" one, right? ... don't know if you already did that, but you might try to solve the "first field" -- it uses the same tricks, but they seem not to be hidden as well, so you might find it easier to get the right ideas there. (At least that's what I understood; didn't solve the second one myself).

9 years ago
Permalink

Comment has been collapsed.

Thanks for the advice.
As a a matter of fact I was trying to solve the first one. Which does seem to be "crying out" something but I don't understand what :). I'll keep on digging.

9 years ago
Permalink

Comment has been collapsed.

Awesome, i thought mandrill and perrolijo where the last two left :)

The first step for both field and "numbergrid" images is basically the same (The second field one has the difference in the second hint).
Both tips for the numbergrid thingies are valid for the second field gif, too (Did you managed to read the second hint ?, It is quite easy).

Also i had some troubles with the Pil(low) version somehow, but it worked in my tests with mandrills decoding version
If you are still stuck feel free to ask for more specific hints.

9 years ago
Permalink

Comment has been collapsed.

Not the only ones, but the ones quite ahead, I guess :)

I have no Idea what too search for in the "fields" at the moment and can't make sense out of the hidden hint in the "numbergrid" one (I see there is a hint, but can't read it at the moment).

9 years ago
Permalink

Comment has been collapsed.

Good to know :)
About the hint, its is basically the first thing one learns when starting with encryption. Its so old it could have defeated hordes of barbarians.

9 years ago
Permalink

Comment has been collapsed.

Thank you.
Ah, that hint, that resulted in a question was easy, but it seems to me there is also a hint embedded in the file (or I'm confusing the hint with the solution) - that's the one I can't read yet.

9 years ago
Permalink

Comment has been collapsed.

Oh that one. Yes the numbergrids contain a little hint too.
Basically if you can read it, you are done with the first step. (The second hint from the numbergrid post is relevant ;))

9 years ago
Permalink

Comment has been collapsed.

Having read the comments by perrolijo about the solution progress it seems I might have been off the path.
I got something like RVX`^V} and so on and it did not fit anywhere.
Maybe I should switch to the "field" one then.

9 years ago
Permalink

Comment has been collapsed.

Well you were not really off, just stuck I guess ... That RVX stuff was an awful lot of different letters for just two colors, wasn't it?

... but I guess it's moot now. If you ever feel like solving this just for fun, this step will be easier once you solved the "field" one :)

9 years ago
Permalink

Comment has been collapsed.

I gave a little hint to chour about the field one ... don't know if it will even help, but just to be fair I thought I should bump it for you :)

9 years ago
Permalink

Comment has been collapsed.

mandrill and perrolijo solved the last one.
So there is still the second field puzzle waiting to get solved.

ATM: i don't really have any good idea for another challenge, but i guess some when there will be a new one. But i can't give you any ETA (sry)

9 years ago
Permalink

Comment has been collapsed.

Decided to crack first "field" image before venturing forth :),
So some questions:
1.Does the number of frames mean anything?
2.Is number 2995 (or 5,495) meaningful or meaningless?

9 years ago
Permalink

Comment has been collapsed.

  1. No. (At least nothing else than "there are a lot of frames". Which doesn't help.)
  2. Meaningless.
9 years ago
Permalink

Comment has been collapsed.

Thank you.
Another probe :).

  1. Do left top width height parameters matter?
9 years ago
Permalink

Comment has been collapsed.

No, not at all.
You seem a little off track ... I think you should go back to SleepGamers hints. There is obviously something wrong with the steganography used in the first "field" image -- I mean, with stega, you are not supposed to even see anything is hidden, right? ... there actually is a very good hint to be found in what you see. Well, or you could just test for different methods of hiding messages in digital images.

9 years ago
Permalink

Comment has been collapsed.

Actually that's the problem I see in this task. You can't be sure what is relevant and what is not.
E.g.
1. Pixel number 2995 in the first image is the ONLY one which uses transparency index color. I had to check if it's relevant.
2. Frame 207 is HALF the size of all other frames. I had to check it too.
3. Top coordinates DIFFER from frames to frames (while left is the same).
4. Apparenty each frame MAY have its own palette which I had to check as well. Just for the sake of saving someone's time they all use global palette :-).

And yes, thank you for "guiding" me in the right direction!

9 years ago
Permalink

Comment has been collapsed.

After 6 days I finally got some readable data on the first field image. It's funny that I was playing with the idea from the start. But some things are not obvious...
Now to get the second field data...

P.S. Ok. Guess found something...

9 years ago*
Permalink

Comment has been collapsed.

Second field image password is "ProjectGutenbergStillRocks".
I'm totally exhausted! :)

9 years ago
Permalink

Comment has been collapsed.

You. Are. Awesome.
Didn't think you were still trying. :D

9 years ago
Permalink

Comment has been collapsed.

Thank you. Also for insisting to concentrate on steganography!

9 years ago
Permalink

Comment has been collapsed.

That is correct. Congratulations. :)
Sorry i didn't answer the questions, was pretty busy the last days (and having problems with my system).
Thanks to mandrill for helping.

I will add you on steam, just tell me there which game you want.

9 years ago
Permalink

Comment has been collapsed.

Sign in through Steam to add a comment.