diff --git a/README.md b/README.md new file mode 100644 index 0000000..7684e47 --- /dev/null +++ b/README.md @@ -0,0 +1,30 @@ +# pypush +`pypush` is a POC demo of my recent iMessage reverse-engineering. +It can currently register as a new device on an Apple ID, set up encryption keys, and ***send and recieve iMessages***! + +`pypush` is completely platform-independent, and does not require a Mac or other Apple device to use! + +## Installation +It's pretty self explanatory: +1. `git clone https://github.com/JJTech0130/pypush` +2. `pip3 install -r requirements.txt` +3. `python3 ./demo.py` + +## Operation +`pypush` will generate a `config.json` in the repository when you run demo.py. DO NOT SHARE THIS FILE. +It contains all the encryption keys necessary to log into you Apple ID and send iMessages as you. + +Once it loads, it should prompt you with `>>`. Type `help` and press enter for a list of supported commands. + +## Special Notes +### Unicorn dependency +`pypush` currently uses the Unicorn CPU emulator and a custom MachO loader to load a framework from an old version of macOS, +in order to call some obfuscated functions. + +This is only necessary during initial registration, so theoretically you can register on one device, and then copy the `config.json` +to another device that doesn't support the Unicorn emulator. Or you could switch out the emulator for another x86 emualtor if you really wanted to. + +### Public key caching +iMessage will cache public keys. If you get decryption errors in pypush or can only send and not recive messages from another device, +try logging out and back into iMessage on that device, forcing it to refresh it's key cache. Alternatively, you can wait and the cache should +expire eventually.