Skip to content

Commit

Permalink
Rewrite: APNs from the ground up (#100)
Browse files Browse the repository at this point in the history
Removes everything except APNs for now. Don't worry, it will be coming back!
  • Loading branch information
JJTech0130 authored May 18, 2024
1 parent 902965a commit b1c30a9
Show file tree
Hide file tree
Showing 43 changed files with 1,192 additions and 5,860 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
config.json
IMDAppleServices

pypush/_version.py

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
Expand Down
39 changes: 12 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
> [!WARNING]
> Pypush is broken at the moment. We thank you for your continued support of the project! The Pypush demo will not work without significant modification to the code to remediate challenges posed as a response to third party iMessage clients growing in popularity.
> `pypush` is undergoing a major rewrite. The current version is not stable and may not work as expected.
# pypush
`pypush` is a POC demo of my recent iMessage reverse-engineering.
Expand All @@ -8,33 +8,18 @@ It can currently register as a new device on an Apple ID, set up encryption keys
`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. If on a Mac, ensure `cmake` is installed. Otherwise, run `brew install cmake`
3. `pip3 install -r requirements.txt`
4. `python3 ./demo.py`

## Troubleshooting
If you have any issues, please join [the Discord](https://discord.gg/BVvNukmfTC) and ask for help.

## 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 emulator if you really wanted to.

## "data.plist" and Mac serial numbers
This repository contains a sample [`data.plist`](https://github.com/JJTech0130/pypush/blob/main/emulated/data.plist), which contains the serial number and several other identifiers from a real Mac device. If you run into issues related to rate-limiting or messages failing to deliver, you may regenerate this file by cloning [nacserver](https://github.com/JJTech0130/nacserver) and running `build.sh` on a non-M1 Mac. It should place the generated file in the current directory, which you can then copy to the emulated/ folder in pypush.
Simple installation:
```bash
pip install git+https://github.com/JJTech0130/pypush
```
Editable installation (for development):
```bash
git clone https://github.com/JJTech0130/pypush
cd pypush
pip install -e .
```

## Licensing
This project is licensed under the terms of the [SSPL](https://www.mongodb.com/licensing/server-side-public-license). Portions of this project are based on [macholibre by Aaron Stephens](https://github.com/aaronst/macholibre/blob/master/LICENSE) under the Apache 2.0 license.
This project is licensed under the terms of the [SSPL](https://www.mongodb.com/licensing/server-side-public-license)

This project has been purchased by [Beeper](https://github.com/beeper), please contact them with any questions about licensing.
323 changes: 0 additions & 323 deletions apns.py

This file was deleted.

Loading

0 comments on commit b1c30a9

Please sign in to comment.