Coder Social home page Coder Social logo

monke's Introduction

Hi there ๐Ÿ‘‹

monke's People

Contributors

codeshaunted avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

monke's Issues

Won't Compile in CMake GUI

  • Downloaded Source
  • Created "build" folder within Source folder
  • Opened CMake
  • Selected Source folder and Build folder
  • Configure selected as "Visual Studio 16 2019", left remaining boxes blank
  • Used "default native compilers"
  • Error in configuration process, project files may be invalid

ERRORS:

  • BUILD_SHARED [BLANK BOX]
  • BUILD_TESTING [BLANK BOX]
  • CMAKE_CONFIGURATION_TYPES [Debug;Release;MinSizeRel;RelWithDebInfo]
  • CMAKE_INSTALL_PREFIX [C:/Program Files (x86)/monke]

CMakeOutput.log

Game Crashes

BTD6 seems to crash whenever the compiled Profile.Save is put in the save directory.

I removed everything from the save directory, signed in and had an option between the local save and the cloud save. The game crashes when choosing the local save with the compiled Profile.Save.

It decompiles fine and I use Notepad++ to edit the text. I changed one number on a monkey's XP to test it and it still crashes.

I even left the text unformatted, changed one number and it still crashed. It just rolls back to the cloud save no matter the change.

BATTD? + how were these passwords found?

Hello,

Bloons Adventure Time TD uses the same engine (Unity) as BTD6 and also the same encryption method for the Profile.save. I've tried simply guessing passwords for this game but not a single number between 12 - 50 works (it shouldn't be anywhere near 50, it should be <20 but it isn't). Also 8 & 11 don't work, obviously.

I've also noticed that the encrypted BATTD Profile.save is 9KB, while (in my case) BTD6's is 26KB. Much smaller for some reason.

So then that made me wonder: what steps did you take to find Kingdom Rush's and BTD6's passwords?

cmake won't build the executable :(

Hey, can't create the executable here ;(, tried on wsl, debian and ubuntu lol actually crying.
Can you help me ? :)

the command:
cmake --build .

the error:
c++: warning: CRYPTOPP_DATA_DIR=/home/tim/Downloads/monke/third_party/cryptopp/TestData: linker input file unused because linking not done
c++: error: CRYPTOPP_DATA_DIR=/home/tim/Downloads/monke/third_party/cryptopp/TestData: linker input file not found: No such file or directory
gmake[2]: *** [third_party/cryptopp-cmake/CMakeFiles/cryptopp-object.dir/build.make:76: third_party/cryptopp-cmake/CMakeFiles/cryptopp-object.dir//cryptopp/cryptlib.cpp.o] Error 1
gmake[2]: *** Deleting file 'third_party/cryptopp-cmake/CMakeFiles/cryptopp-object.dir/
/cryptopp/cryptlib.cpp.o'
gmake[1]: *** [CMakeFiles/Makefile2:149: third_party/cryptopp-cmake/CMakeFiles/cryptopp-object.dir/all] Error 2
gmake: *** [Makefile:136: all] Error 2

Trying to replicate the save file format serialization/deserialization.

I am having trouble understanding what the format is here. I know the format comes out JSON, but I am trying to understand how you are unpacking it.

To be clear, the problem is not with your code, it is with my understanding of the code! I just have a habit of rewriting stuff like this in python. Doesn't help that my C++ sucks and my crypto experience is limited to TLS/SSL certs for webservers.

Bloons Save file

Description Size Data Type
Dummy Header 44 Unknown
password index 8 uint64
Password Salt 24 char[24]
Encrypted save data The rest ????

so is the order of operations:

  1. read header (44 bytes)
  2. read password index (8 bytes)
  3. read password salt (24 bytes)
  4. The rest of the file is encrypted, decrypt it
  5. gunzip the decrypted data
  6. You now have arrived at JSON

Or should 4/5 be switched?

If I am reading it right, it would be something like this:

    def _read_file(self, file: Path) -> FILE_PIECES:
        with file.open("rb") as fp:
            # Unpack a char[44]
            header = struct.unpack("44s", fp.read(self._DUMMY_HEADER_LENGTH))[0]
            # Unpack a uint64
            password_index = struct.unpack("Q", fp.read(self._PASSWORD_INDEX_LENGTH))[0]
            # Unpack a char[24]
            salt = struct.unpack("24s", fp.read(self._SALT_LENGTH))[0]
            # The rest is encrypted data, just read the rest
            payload = fp.read()
        return header, password_index, salt, payload

I am not able to entirely replicate it and comparing values in memory with the debugger in CLion vs PyCharm is not apparently straight forward. Does this seem like the right direction?

[Documentation] - BTD6 Insta Monkeys

Disclaimer:

(to codeshaunted) This is not an issue, more like a guide to whoever want to do something similar in the future. Doing this since there's not "wiki" section to this repo.
(to everyone else) This is a somewhat illegal of a guide on how to add, edit or remove your insta monkeys. So like what codeshaunted stated with using this repo's code and release program, use at your own risk.

Reading the list

After unpacking your save file (aka Profile.Save), your list of insta monkeys is saved as something similar to this
"instaTowers":{"'insert tower name here'":[1024,2176,7184,...],...}

The "tower name" part is basically... the tower's name. That's it, it is pretty simple and self-explanatory. If you don't have a insta monkey of any tower you want before, just check the "towerXp" part at the beginning of the unpacked save file for its name.

The array of number after the tower's name is the list of insta monkeys of that specific tower. The crosspath and the number of insta monkeys with that exact crosspath? All saved as integers in that array.

Adding / Editing

So, after hours and hours of testing*, the integers follow one simple binary pattern:

Number of Insta(s) Bottom Path Upgrade(s) Middle Path Upgrade(s) Top Path Upgrade(s) isNew?
Bit(s) 22** 3 3 3 1
Values More than 0 000 - 101
0 - 5 upgrades
000 - 101
0 - 5 upgrades
000 - 101
0 - 5 upgrades
0 - false
1 - true

For non-programmers and less tech-savvy people, just put this formula in your calculator:
number of insta x 1024 + bottom path upgrade x 128 + middle path upgrade x 16 + top path upgrade x 2 = result
(isNew usually doesn't matter, so add 1 to your result if you want a big red exclamation on the top corner of your shiny new insta, more power to you I guess)

Example (top-middle-bottom crosspath):

  • 1076 : 1 insta with 2-3-0 crosspath
  • 3392 : 3 insta with 0-4-2 crosspath
  • 7811 : 7 insta with 5-0-1 crosspath (has big red exclamation point)

Notes:

  • If the value of number of insta is zero, it won't show that insta
  • Vanilla BTD6 limits also applies here, so you can only have at max 5 upgrades in one path and 2 upgrades in another path, with the limit of 2 paths in total
    • (Exception) With DoomBubbles' Ultimate Crosspathing mod, you can have a 5-5-5 insta, as in up to 5 upgrades in all 3 paths
  • Any negative or invalid value will show a 000 insta (not to be mistaken with a 0-0-0)

*Actually just 30 minutes of trials and errors in reality lmao
**I only test up to 6 bits or 63 instas (with the bits behind it, in total 16 bits or 2 bytes) but theoretically, it should be able to goes up to 4+ million (unsigned int) or 2+ million (signed int)

Bloons TD 6 - Game Resets Save

In Bloons TD 6 the game will reset the save back to the one stored in the cloud after a small amount of game play. Is there a way to fix this? This issue really makes this program essentially useless because the modded save will only stay modded while you aren't doing anything. As soon as you jump into a single player game, the game reloads your account, and the modified changes are gone.

Doesnt do anything

Whenever i put "monke unpack "Profile.save" "New folder (2)" 11" It says that 'monke' isnt a "internal or external command,
operable program or batch file."

Among Us

doesn't work under wine

atrius@main:~/.local/share/Steam/userdata/1315454642/960090/local/link/PRODUCTION/current$ wine monke unpack Profile.Save a 11
wineserver: using server-side synchronization.
002c:fixme:winediag:LdrInitializeThunk Wine TkG (staging) 7.12 is a testing version containing experimental patches.
002c:fixme:winediag:LdrInitializeThunk Please don't report bugs about it on winehq.org and use https://github.com/Frogging-Family/wine-tkg-git/issues instead.
002c:err:wineboot:process_run_key Error running cmd L"C:\\windows\\system32\\winemenubuilder.exe -a -r" (2).

abnormal program termination

how do i use this

can someone give me a guide or something because all the readme says is that it has 2 commands, unpack and pack, and i've tried searching for the files of which i should use the program on but it's not on my btd6 steam folder

exe not loading

first of all thanks for your amazing work (( seriously you are amazing ))
secondly i have no experience in C++ so its probably my fault
i just downloaded the exe from release and when i open it close instantly
so is it require something to load normally ?

can't build

Error in configuration process, project files may be invalid

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.