2023-07-31 14:08:34 -05:00
|
|
|
# pypush
|
|
|
|
`pypush` is a POC demo of my recent iMessage reverse-engineering.
|
2023-07-31 14:12:47 -05:00
|
|
|
It can currently register as a new device on an Apple ID, set up encryption keys, and ***send and receive iMessages***!
|
2023-07-31 14:08:34 -05:00
|
|
|
|
|
|
|
`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`
|
|
|
|
|
2023-07-31 14:11:20 -05:00
|
|
|
## Troubleshooting
|
|
|
|
If you have any issues, please join [the Discord](https://discord.gg/BVvNukmfTC) and ask for help.
|
|
|
|
|
2023-07-31 14:08:34 -05:00
|
|
|
## 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`
|
2023-07-31 14:13:42 -05:00
|
|
|
to another device that doesn't support the Unicorn emulator. Or you could switch out the emulator for another x86 emulator if you really wanted to.
|
2023-07-31 14:08:34 -05:00
|
|
|
|
|
|
|
### Public key caching
|
2023-07-31 14:12:47 -05:00
|
|
|
iMessage will cache public keys. If you get decryption errors in pypush or can only send and not receive messages from another device,
|
2023-07-31 14:08:34 -05:00
|
|
|
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.
|