-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #2121 from The-SamminAter/patch-2
Add documentation for iOS
- Loading branch information
Showing
3 changed files
with
112 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
109 changes: 109 additions & 0 deletions
109
doc/md/Installation_Instructions/iOS-Installation-Instructions.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
<a id="Top"></a> | ||
|
||
# iOS Installation Instructions | ||
|
||
# Table of Contents | ||
- [iOS Installation Instructions](#ios-installation-instructions) | ||
- [Table of Contents](#table-of-contents) | ||
- [Install the required dependencies](#install-the-required-dependencies) | ||
- [On Bingner bootstrap](#on-bingner-bootstrap) | ||
- [On Procursus bootstrap](#on-procursus-bootstrap) | ||
- [Patched SDK and additional patches](#patched-sdk-and-additional-patches) | ||
- [Clone the Iceman repository](#clone-the-iceman-repository) | ||
- [Compile and use the project](#compile-and-use-the-project) | ||
- [bootrom, fullimage, and recovery](#bootrom-fullimage-and-recovery) | ||
- [make install](#make-install) | ||
- [usbselfserial](#usbselfserial) | ||
|
||
# Install the required dependencies | ||
^[Top](#top) | ||
|
||
If you are using unc0ver or checkra1n, see [On Bingner bootstrap](#on-bingner-bootstrap) | ||
Otherwise, see [On Procursus bootstrap](#on-procursus-bootstrap) | ||
Note: compilation has not yet been attempted on Procursus' bootstrap or on rootless. Attempt at your own peril. | ||
|
||
## On Bingner bootstrap | ||
^[Top](#top) | ||
|
||
Run this as `root`, as sudo isn't installed by default. The default password is `alpine`. | ||
```sh | ||
apt install git make clang odcctools gawk sudo pkg-config python3.7 libpython3.7-dev | ||
``` | ||
Furthermore, if you're trying to build from git instead of a release, you'll need SWIG from [The-SamminAter's repo](https://the-samminater.github.io/repo). | ||
|
||
## On Procursus bootstrap | ||
^[Top](#top) | ||
|
||
Currently, you're on your own. Most of the packages should be named similarly, but sometimes Procursus packages up components differently than bingner. Furthermore, if you're using a rootless jailbreak and want to build from git, you'll likely have to port over SWIG yourself. | ||
|
||
## Patched SDK and additional patches | ||
^[Top](#top) | ||
|
||
1. Git clone [theos/sdks](https://github.com/theos/sdks) and symlink or move the target version (tested with 13.7, others should work) to `/usr/share/SDKs/iPhoneOS.sdk`. | ||
2. Delete `__IOS_PROHIBITED` from line 188 of `iPhoneOS.sdk/usr/include/stdlib.h` | ||
3. Git clone [theos/headers](https://github.com/theos/headers) and move `headers/openssl` to `iPhoneOS.sdk/usr/include/` | ||
4. Download the latest macOS SDK from [phracker/MacOSX-SDKs](https://github.com/phracker/MacOSX-SDKs/releases/latest) (tested with 11.3) and move `MacOSX.sdk/System/Library/Frameworks/OpenCL.framework` and `OpenGL.framework` to `iPhoneOS.sdk/System/Library/Frameworks/` | ||
|
||
Note: when compiling hitag2crack/crack5opencl, the following warning is to be expected: | ||
``` | ||
ld: warning: building for iOS, but linking in .tbd file (/usr/share/SDKs/iPhoneOS.sdk/System/Library/Frameworks//OpenCL.framework/OpenCL.tbd) built for macOS | ||
``` | ||
|
||
# Clone the Iceman repository | ||
^[Top](#top) | ||
|
||
```sh | ||
git clone https://github.com/RfidResearchGroup/proxmark3.git | ||
``` | ||
|
||
# Compile and use the project | ||
^[Top](#top) | ||
|
||
Now you're ready to (mostly) follow the [compilation instructions](/doc/md/Use_of_Proxmark/0_Compilation-Instructions.md). | ||
|
||
## bootrom, fullimage, and recovery | ||
^[Top](#top) | ||
|
||
Because there's no arm-none-eabi-gcc (or objcopy) for iOS, you'll have to build these components on a different operating system. The files and directories you'll need to copy over from a desktop build to iOS are `armsrc/fpga_version_info.c`, `armsrc/obj/`, `bootrom/version_pm3.c`, `bootrom/obj/`, and lastly `recovery/`. Everything else will build successfully, but `make all` and `make install` will fail without them. | ||
|
||
## make install | ||
^[Top](#top) | ||
|
||
Because of the lack of arm-none-eabi-gcc (and objcopy), to successfully run `make all` and/or `make install` you'll have to create the following scripts as a workaround. | ||
|
||
`/usr/local/bin/arm-none-eabi-gcc` and `arm-none-eabi-objcopy` | ||
|
||
```bash | ||
#!/bin/bash | ||
#This exists just to trick proxmark3 into making the fullimage, bootrom, and recovery | ||
#Don't worry about it | ||
cc --version | ||
echo "Arguments: $@" | ||
``` | ||
|
||
With those in place, `make all` and `make install` will run flawlessly. | ||
|
||
## usbselfserial | ||
^[Top](#top) | ||
|
||
As iOS doesn't support USB-CDC ACM, you'll need to use [usbselfserial](https://github.com/lotuspar/usbselfserial). A compiled binary can be found at [The-SamminAter's repo](https://the-samminater.github.io/repo). | ||
|
||
Once the proxmark is connected to your iOS device via a USB adapter, run `usbselfserial -v 0x9ac4 -p 0x4b8f --driver cdcacm -o /tmp/tty.usbmodemiceman1` (for devices other than the PM3 Easy, adjust the identifiers accordingly). If proxmark3 can't communicate with the device, try providing the port as an argument, or run `sudo killall usbmuxd`. | ||
|
||
Lastly, it may also be helpful to modify `pm3` as follows, to automatically select the right port: | ||
|
||
```bash | ||
function get_pm3_list_macOS { | ||
N=$1 | ||
#PM3LIST=() | ||
PM3LIST=(/tmp/tty.usbmodemiceman1) #<-- our addition | ||
for DEV in $(ioreg -r -c "IOUSBHostDevice" -l | awk -F '"' ' | ||
$2=="USB Vendor Name"{b=($4=="proxmark.org")} | ||
b==1 && $2=="IODialinDevice"{print $4}'); do | ||
PM3LIST+=("$DEV") | ||
if [ ${#PM3LIST[*]} -ge "$N" ]; then | ||
return | ||
fi | ||
done | ||
} | ||
``` |