http://www.mediafire.com/?12yfwxqjdh1
There it is, I know some people are going to be mad at me for releasing this but it was inevitable. If you use this to cheat the leaderboard you just suck. Hopefully in the next patch they will have some kind of level checksum to stop cheaters.
Let the modding commence!
Edit: Not tested with the new patch, I can't get it off steam yet :(
Also, you can't encrypt a map that you currently have open in game, have to exit the game first. Last modified Sun, 10/26/2008 - 08:19 by ltworek |
For what is worth, I used this Python script. Run from the main World of Goo directory to decode all .bin files to .txt, or back again. (Requires Python Cryptography Toolkit)
#!/usr/bin/env python <br /><br /># Uses the Python Cryptography Toolkit<br /># for Windows dummies: http://www.voidspace.org.uk/python/modules.shtml#pycrypto<br /><br />from Crypto.Cipher import AES<br />import sys <br />import os <br /><br /># AES encryption key used (192 bits)<br />key = "\x0D\x06\x07\x07\x0C\x01\x08\x05\x06\x09\x09\x04\x06\x0D\x03\x0F\x03\x06\x0E\x01\x0E\x02\x07\x0B"<br /><br />def decrypt(input):<br /> aes = AES.new(key, AES.MODE_CBC)<br /> output = aes.decrypt(input) <br /> eof = output.find("\xfd") <br /> if eof >= 0: output = output[:eof]<br /> return output <br /><br />def encrypt(input):<br /> input += "\xfd\xfd"<br /> padding = (16 - len(input)%16)%16<br /> input += padding*"\0" <br /> aes = AES.new(key, AES.MODE_CBC) <br /> return aes.encrypt(input) <br /><br />if len(sys.argv) <> 2 or sys.argv[1] not in ('-e','-d'):<br /> print 'Usage: goocrypt -d (decrypt files)'<br /> print ' goocrypt -e (encrypt files)'<br /> sys.exit(1)<br />if sys.argv[1] == '-d': what, ext_in, ext_out = 'decrypting', '.bin', '.txt'<br />if sys.argv[1] == '-e': what, ext_in, ext_out = 'encrypting', '.txt', '.bin'<br /><br />found = 0<br />for dirname in [ 'properties', 'res' ]:<br /> for (path, dirs, files) in os.walk(dirname):<br /> for name in files:<br /> if name.endswith(ext_in):<br /> found += 1<br /> path_in = os.path.join(path, name)<br /> path_out = os.path.join(path, name[:-len(ext_in)]) + ext_out<br /> input = file(path_in, "rb").read()<br /> print "%s %s\n => %s"% (what, path_in, path_out)<br /> if what == 'decrypting': output = decrypt(input)<br /> if what == 'encrypting': output = encrypt(input)<br /> file(path_out, "wb").write(output)<br /><br />if not found:<br /> print 'No files found! (Did you run from the World Of Goo directory?)'<br />else:<br /> print found, 'files processed'<br />
|
How'd you find out the AES key? |
I doesn't recompile right for me. :-[ WOG crashes hen I open the level I edited. :-\ |
Please post the xml file, WoG is very sensitive to typos and things like that. Iv been editing lots of levels and have had a fair share of crashes. Working on a simple map editor now. |