Helper/wrapper for mautrix-imessage for jailbroken devices

Last update: May 17, 2022

Brooklyn

This readme is out-of-date.

Blame Ethan, he's working on it.

Components

Rubicon

"The die is cast."

Crosses Apple's last river between IMCore and the rest of the system.

BrooklynBridge

The underlying API. Probably doesn't need to be .xm -- will look at that. Sparse for now, but will have many methods very soon

Brooklyn.app

iMessage runtime inspection tool. Also api testing grounds.

Build

macOS

Xcode

  1. Set up theos.
  2. Open brooklyn.xcodeproj.
  3. Go to the brooklyn target, then click Build Settings
  4. Change THEOS_DEVICE_IP to the Bonjour or IP address of the targeted device.
  5. Change THEOS to your full theos path. No cheating with ~. Do the same in the Makefile. This step won't be needed in the future.
  6. Open a terminal and type ssh-copy-id [email protected], followed by the address you set in Step 4. The default password for iOS is alpine. (If it gives an error, run ssh-keygen and spam enter, then try again.)
  7. Connect a device to Xcode, select brooklyn>(device) in the tab bar, and click Run!

Optional code highlighting, autocomplete, error checking:

  1. Set the build target to xchighlight>Any iOS Device (armv7, arm64) in the tab bar.
  2. Press Command-B.
  3. When this is done building, set the target back to brooklyn>(device).
  4. Every time you add a source file, go to the brooklyn xcodeproj in Xcode, click the xchighlight target, click Build Phases, and add it to the appropriate phase.

make

  1. Set up theos.
  2. Open the makefile.
  3. At the top, add: export THEOS_DEVICE_IP = , followed by your device's Bonjour or IP address.
  4. Open a terminal to the brooklyn folder.
  5. Run ssh-copy-id [email protected], followed by the address from Step 3. The default password is alpine. (If it gives an error, run ssh-keygen and spam enter, then try again.)
  6. Run make clean do.

Notes

If you make changes to .xib files, make sure to commit the built .nib files in the Resources folder as well. That way, other platforms can build without Xcode. This will not be a requirement in the future.

Linux / Windows

I'll add these instructions soon. I don't have theos set up on Windows. I also don't have a Linux install yet. For shame, I know, for shame! :P

GitHub

https://github.com/EthanRDoesMC/Brooklyn
Comments
  • 1. CKTranscriptController not found

    Scott Wallace wrote:

    I've installed Brooklyn v0.0.1-11+main via Cydia but when I launch it it just returns to the main screen (Springboard).
    Any ideas on how to debug this?
    
    Reviewed by EthanRDoesMC at 2021-08-19 23:00
  • 2. iOS 9 camera black screen

    Matt wrote:

    When trying to capture the QR code camera is just black. Another user on #imessage:maunium.net experienced the same issue, both on iOS 9 and Phoenix.
    Device: iPad mini 9.3.5 with Phoenix Jailbreak
    Brooklyn 0.0.1-12+main
    Crash Reporter shows nothing
    
    Reviewed by EthanRDoesMC at 2021-08-19 22:58
  • 3. Fix message deduplication when double puppeting is enabled + memory leak

    • Comparing IMMessage with each other won't work, we need to compare the GUID
    • Fix memory leak that would grow the list of GUID to compare indefinitely and limit the array to 10 GUIDs
    • Improve prefixes for logging to enable easier greping
    Reviewed by CarlAmbroselli at 2021-12-04 15:19
  • 4. Fix build configuration and README

    Looking to improve double puppeting but wanted to get it to build locally for me first. Along the way I updated the README with the additional steps that I had to take as well as fix the mautrix-imessage fetching to the new URL.

    Reviewed by CarlAmbroselli at 2021-12-04 13:46
  • 5. mautrix-imessage needs to be outside of /var in iOS 12, but older 8gb devices only have enough space in /var

    in iOS 12, a binary has to be outside of /var to run. In the case of an 8gb 5c on iOS 10, however, only /var has enough space to store mautrix-imessage. Maybe an installation script could fix this?

    Reviewed by EthanRDoesMC at 2021-09-24 18:49
  • 6. NSTask outputs QR code URL as all lowercase

    Passwords are case-sensitive in QR code links, but NSTask seems to be unable to output uppercase letters. Bandaid fix: use lowercase passwords Research: Find out why NSTask does not respect letter case

    Reviewed by EthanRDoesMC at 2021-08-19 23:10
  • 7. Add 'sign out' button to brooklyn

    Eric Migicovsky wrote:

    • add sign out button to app
    • delete/leave all rooms on matrix side
    • clean iOS side so it is ready to connect to a new matrix account
    Reviewed by EthanRDoesMC at 2021-08-19 22:59
Related tags
Helper functions for saving text in Keychain securely for iOS, OS X, tvOS and watchOS.
Helper functions for saving text in Keychain securely for iOS, OS X, tvOS and watchOS.

Helper functions for storing text in Keychain for iOS, macOS, tvOS and WatchOS This is a collection of helper functions for saving text and data in th

Jun 21, 2022
SuccessorCLI A CLI tool to restore iOS Devices on versions they're already on, based on the original Succession

A tool to restore iOS Devices on versions they're already on, based on the original Succession

May 21, 2022
Open-source jailbreaking tool for many iOS devices
 Open-source jailbreaking tool for many iOS devices

Open-source jailbreaking tool for many iOS devices *Read disclaimer before using this software. checkm8 permanent unpatchable bootrom exploit for hund

Nov 6, 2021
A wrapper for Apple's Common Crypto library written in Swift.

IDZSwiftCommonCrypto A Swift wrapper for Apple's CommonCrypto library. IDZSwiftCommonCrypto works with both CocoaPods and Cathage. For more details on

Apr 8, 2022
Simple Swift wrapper for Keychain that works on iOS, watchOS, tvOS and macOS.
Simple Swift wrapper for Keychain that works on iOS, watchOS, tvOS and macOS.

KeychainAccess KeychainAccess is a simple Swift wrapper for Keychain that works on iOS and OS X. Makes using Keychain APIs extremely easy and much mor

Jun 22, 2022
A simple Swift Keychain Wrapper for iOS, watchOS, and OS X.

Latch A simple Swift 2.0 Keychain Wrapper for iOS, watchOS 2, and OS X. Usage A proper example of how to use Latch can be seen in the tests. import La

Jan 29, 2022
A simple wrapper for the iOS Keychain to allow you to use it in a similar fashion to User Defaults. Written in Swift.

SwiftKeychainWrapper A simple wrapper for the iOS / tvOS Keychain to allow you to use it in a similar fashion to User Defaults. Written in Swift. Prov

Jun 25, 2022
Simple Objective-C wrapper for the keychain that works on Mac and iOS

SAMKeychain SAMKeychain is a simple wrapper for accessing accounts, getting passwords, setting passwords, and deleting passwords using the system Keyc

Jun 15, 2022
A really simple key-value wrapper for keychain.

PlainKeychain A really simple key-value wrapper for keychain. Features ✅ Key-value pairs using kSecClassGenericPassword. ❌ Internet passwords (kSecCla

Nov 27, 2021
Very simple swift wrapper for Biometric Authentication Services (Touch ID) on iOS.

SimpleTouch Very simple swift wrapper for Biometric Authentication Services (Touch ID) on iOS. Sample Project There is a SimpleTouchDemo target define

Mar 18, 2022
Wrapper class for handling all tasks related to RSA cryptography

RSAWrapper Wrapper class for handling all tasks related to RSA cryptography USAG

Dec 24, 2021
A wrapper to make it really easy to deal with iOS, macOS, watchOS and Linux Keychain and store your user's credentials securely.

A wrapper (written only in Swift) to make it really easy to deal with iOS, macOS, watchOS and Linux Keychain and store your user's credentials securely.

Mar 29, 2022
APT repository app for jailbroken iOS devices
APT repository app for jailbroken iOS devices

Find Your Repos! RepoFinder is here to bring you a seamless way to add all of your favorite repositories right into the package manager of your choice

Apr 26, 2022
An alternative app store for non-jailbroken iOS devices

AltStore AltStore is an alternative app store for non-jailbroken iOS devices. AltStore is an iOS application that allows you to sideload other apps (.

Dec 9, 2021
Multitasking Drawer tweak for jailbroken iOS devices
Multitasking Drawer tweak for jailbroken iOS devices

PullOver-Pro Multitasking Drawer tweak for jailbroken iOS devices About PullOver Pro is multitasking substrate / jailbreak / runtime extension written

Jun 11, 2022
Floating ChatHeads, inspired by Facebook, for jailbroken devices

ChatHeads About Chatheads is a multitasking substrate / jailbreak / runtime extension written in Objective - C, aimed at centralizing multiple messagi

May 22, 2022
Delta is an all-in-one classic video game emulator for non-jailbroken iOS devices.
Delta is an all-in-one classic video game emulator for non-jailbroken iOS devices.

Delta Delta is an all-in-one classic video game emulator for non-jailbroken iOS devices. Delta is an iOS application that allows you to emulate and pl

Jun 28, 2022
AltStore is an alternative app store for non-jailbroken iOS devices.

AltStore AltStore is an alternative app store for non-jailbroken iOS devices. AltStore is an iOS application that allows you to sideload other apps (.

Jun 20, 2022
RadialMenu is a custom control for providing a touch context menu (like iMessage recording in iOS 8) built with Swift & POP
RadialMenu is a custom control for providing a touch context menu (like iMessage recording in iOS 8) built with Swift & POP

RadialMenu Looking for help? For $150/hr I'll help with your RadialMenu problems including integrating it into your project. Email [email protected] t

May 23, 2022
A carousel of stacked items as seen in iMessage for photos

StackedItemsCarousel A carousel of stacked items (such as photos) as seen in iMessage What? iMessage on iOS 15 shows multiple photos in a carousel of

May 19, 2022