mirror of
https://github.com/palera1n/palera1n.git
synced 2026-10-23 18:49:48 +02:00
Compare commits
26
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4070ed9da9 | ||
|
|
6c7f666bb3 | ||
|
|
36fc50d2f1 | ||
|
|
15b2372daa | ||
|
|
b7b52febe3 | ||
|
|
a29a279693 | ||
|
|
b693f1af29 | ||
|
|
41f7909597 | ||
|
|
52167fc32d | ||
|
|
a060fe7374 | ||
|
|
f6450e0a5d | ||
|
|
6dec16ff2b | ||
|
|
8807f4775f | ||
|
|
4b0457b6ee | ||
|
|
6e05ecd1f9 | ||
|
|
16cbb134aa | ||
|
|
f267c3e714 | ||
|
|
e4f46c4276 | ||
|
|
67b9b86940 | ||
|
|
3f73bd0b31 | ||
|
|
8aca098801 | ||
|
|
831794f5eb | ||
|
|
5eb0a08727 | ||
|
|
4572ed5984 | ||
|
|
e81a06513a | ||
|
|
c17107da40 |
No files matched your search
+112
-1
@@ -351,6 +351,18 @@ jobs:
|
|||||||
runs-on: macos-latest
|
runs-on: macos-latest
|
||||||
needs: build-darwin
|
needs: build-darwin
|
||||||
steps:
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Setup Procursus
|
||||||
|
uses: beerpiss/[email protected]
|
||||||
|
with:
|
||||||
|
packages: sed coreutils
|
||||||
|
cache: true
|
||||||
|
mirror: 'https://procursus.itsnebula.net/'
|
||||||
|
|
||||||
- name: Download all Darwin artifacts
|
- name: Download all Darwin artifacts
|
||||||
uses: actions/download-artifact@v3
|
uses: actions/download-artifact@v3
|
||||||
|
|
||||||
@@ -369,6 +381,79 @@ jobs:
|
|||||||
zip -r9 ready/palera1n-ios.dSYM.zip palera1n-iphoneos-arm64.dSYM
|
zip -r9 ready/palera1n-ios.dSYM.zip palera1n-iphoneos-arm64.dSYM
|
||||||
zip -r9 ready/palera1n-macos.dSYM.zip palera1n-macos.dSYM
|
zip -r9 ready/palera1n-macos.dSYM.zip palera1n-macos.dSYM
|
||||||
|
|
||||||
|
- name: Build debs
|
||||||
|
run: |
|
||||||
|
make -j$(sysctl -n hw.ncpu) docs
|
||||||
|
version=$(git describe --dirty --tags --abbrev=7 | sed 's|^v||')
|
||||||
|
|
||||||
|
# Darwin x86_64
|
||||||
|
mkdir -p stage/DEBIAN
|
||||||
|
mkdir -p stage/opt/procursus/bin
|
||||||
|
mkdir -p stage/opt/procursus/usr/share/man/man1
|
||||||
|
cp packaging/control.macosx stage/DEBIAN/control
|
||||||
|
|
||||||
|
gsed 's|@DEB_ARCH@|darwin-amd64|g' -i stage/DEBIAN/control
|
||||||
|
gsed "s|@DEB_VERSION@|$version|g" -i stage/DEBIAN/control
|
||||||
|
|
||||||
|
ginstall -Dm644 ready/palera1n-macos-x86_64 stage/opt/procursus/bin/palera1n
|
||||||
|
ginstall -Dm644 docs/palera1n.1 stage/opt/procursus/usr/share/man/man1/palera1n.1
|
||||||
|
chmod +x stage/opt/procursus/bin/palera1n
|
||||||
|
|
||||||
|
dpkg-deb -Zzstd -b stage palera1n_${version}_darwin-amd64.deb
|
||||||
|
mv palera1n*.deb ready/
|
||||||
|
rm -rf stage
|
||||||
|
|
||||||
|
# Darwin arm64
|
||||||
|
mkdir -p stage/DEBIAN
|
||||||
|
mkdir -p stage/opt/procursus/bin
|
||||||
|
mkdir -p stage/opt/procursus/usr/share/man/man1
|
||||||
|
cp packaging/control.macosx stage/DEBIAN/control
|
||||||
|
|
||||||
|
gsed 's|@DEB_ARCH@|darwin-arm64|g' -i stage/DEBIAN/control
|
||||||
|
gsed "s|@DEB_VERSION@|$version|g" -i stage/DEBIAN/control
|
||||||
|
|
||||||
|
ginstall -Dm644 ready/palera1n-macos-arm64 stage/opt/procursus/bin/palera1n
|
||||||
|
ginstall -Dm644 docs/palera1n.1 stage/opt/procursus/usr/share/man/man1/palera1n.1
|
||||||
|
chmod +x stage/opt/procursus/bin/palera1n
|
||||||
|
|
||||||
|
dpkg-deb -Zzstd -b stage palera1n_${version}_darwin-arm64.deb
|
||||||
|
mv palera1n*.deb ready/
|
||||||
|
rm -rf stage
|
||||||
|
|
||||||
|
# iPhoneOS
|
||||||
|
mkdir -p stage/DEBIAN
|
||||||
|
mkdir -p stage/usr/bin
|
||||||
|
mkdir -p stage/usr/share/man/man1
|
||||||
|
cp packaging/control stage/DEBIAN/control
|
||||||
|
|
||||||
|
gsed 's|@DEB_ARCH@|iphoneos-arm|g' -i stage/DEBIAN/control
|
||||||
|
gsed "s|@DEB_VERSION@|$version|g" -i stage/DEBIAN/control
|
||||||
|
|
||||||
|
ginstall -Dm644 ready/palera1n-ios stage/usr/bin/palera1n
|
||||||
|
ginstall -Dm644 docs/palera1n.1 stage/usr/share/man/man1/palera1n.1
|
||||||
|
chmod +x stage/usr/bin/palera1n
|
||||||
|
|
||||||
|
dpkg-deb -Zzstd -b stage palera1n_${version}_iphoneos-arm.deb
|
||||||
|
mv palera1n*.deb ready/
|
||||||
|
rm -rf stage
|
||||||
|
|
||||||
|
# iPhoneOS (rootless)
|
||||||
|
mkdir -p stage/DEBIAN
|
||||||
|
mkdir -p stage/var/jb/usr/bin
|
||||||
|
mkdir -p stage/var/jb/usr/share/man/man1
|
||||||
|
cp packaging/control stage/DEBIAN/control
|
||||||
|
|
||||||
|
gsed 's|@DEB_ARCH@|iphoneos-arm64|g' -i stage/DEBIAN/control
|
||||||
|
gsed "s|@DEB_VERSION@|$version|g" -i stage/DEBIAN/control
|
||||||
|
|
||||||
|
ginstall -Dm644 ready/palera1n-ios stage/var/jb/usr/bin/palera1n
|
||||||
|
ginstall -Dm644 docs/palera1n.1 stage/var/jb/usr/share/man/man1/palera1n.1
|
||||||
|
chmod +x stage/var/jb/usr/bin/palera1n
|
||||||
|
|
||||||
|
dpkg-deb -Zzstd -b stage palera1n_${version}_iphoneos-arm64.deb
|
||||||
|
mv palera1n*.deb ready/
|
||||||
|
rm -rf stage
|
||||||
|
|
||||||
- name: Upload artifact
|
- name: Upload artifact
|
||||||
if: ${{ github.event_name != 'pull_request' }}
|
if: ${{ github.event_name != 'pull_request' }}
|
||||||
uses: wangyucode/[email protected]
|
uses: wangyucode/[email protected]
|
||||||
@@ -409,7 +494,7 @@ jobs:
|
|||||||
- name: Install build dependencies (packages)
|
- name: Install build dependencies (packages)
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get remove -y libssl-dev libreadline-dev
|
sudo apt-get remove -y libssl-dev libreadline-dev
|
||||||
sudo apt-get install -y pkg-config autoconf automake autopoint
|
sudo apt-get install -y pkg-config autoconf automake autopoint mandoc
|
||||||
sudo pip3 install jsonschema jinja2
|
sudo pip3 install jsonschema jinja2
|
||||||
|
|
||||||
- name: Download toolchain checksum
|
- name: Download toolchain checksum
|
||||||
@@ -437,15 +522,19 @@ jobs:
|
|||||||
case ${{ matrix.triple }} in
|
case ${{ matrix.triple }} in
|
||||||
i486-linux-musl)
|
i486-linux-musl)
|
||||||
echo "CHECKRA1N_NAME=linux-x86" >> $GITHUB_ENV
|
echo "CHECKRA1N_NAME=linux-x86" >> $GITHUB_ENV
|
||||||
|
echo "ARCH_NAME=i386" >> $GITHUB_ENV
|
||||||
;;
|
;;
|
||||||
x86_64-linux-musl)
|
x86_64-linux-musl)
|
||||||
echo "CHECKRA1N_NAME=linux-x86_64" >> $GITHUB_ENV
|
echo "CHECKRA1N_NAME=linux-x86_64" >> $GITHUB_ENV
|
||||||
|
echo "ARCH_NAME=amd64" >> $GITHUB_ENV
|
||||||
;;
|
;;
|
||||||
armel-linux-musleabi)
|
armel-linux-musleabi)
|
||||||
echo "CHECKRA1N_NAME=linux-armel" >> $GITHUB_ENV
|
echo "CHECKRA1N_NAME=linux-armel" >> $GITHUB_ENV
|
||||||
|
echo "ARCH_NAME=armel" >> $GITHUB_ENV
|
||||||
;;
|
;;
|
||||||
aarch64-linux-musl)
|
aarch64-linux-musl)
|
||||||
echo "CHECKRA1N_NAME=linux-arm64" >> $GITHUB_ENV
|
echo "CHECKRA1N_NAME=linux-arm64" >> $GITHUB_ENV
|
||||||
|
echo "ARCH_NAME=arm64" >> $GITHUB_ENV
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
echo "PKG_CONFIG_PATH=$(pwd)/sysroot/usr/local/lib/pkgconfig" >> $GITHUB_ENV
|
echo "PKG_CONFIG_PATH=$(pwd)/sysroot/usr/local/lib/pkgconfig" >> $GITHUB_ENV
|
||||||
@@ -459,6 +548,7 @@ jobs:
|
|||||||
echo "CROSS_COMPILE=${{ matrix.triple }}-" >> $GITHUB_ENV
|
echo "CROSS_COMPILE=${{ matrix.triple }}-" >> $GITHUB_ENV
|
||||||
mkdir -p $(pwd)/sysroot/usr/local/lib
|
mkdir -p $(pwd)/sysroot/usr/local/lib
|
||||||
ln -sf $(pwd)/sysroot/usr/local/lib{,64}
|
ln -sf $(pwd)/sysroot/usr/local/lib{,64}
|
||||||
|
|
||||||
- name: Download dependencies (source code)
|
- name: Download dependencies (source code)
|
||||||
run: |
|
run: |
|
||||||
curl -LOOOOOOO \
|
curl -LOOOOOOO \
|
||||||
@@ -652,6 +742,27 @@ jobs:
|
|||||||
mv src/palera1n ready/palera1n-${{ env.CHECKRA1N_NAME }}
|
mv src/palera1n ready/palera1n-${{ env.CHECKRA1N_NAME }}
|
||||||
tar -zcf ready/dep_root_${{ matrix.triple }}.tgz dep_root
|
tar -zcf ready/dep_root_${{ matrix.triple }}.tgz dep_root
|
||||||
|
|
||||||
|
- name: Build debs
|
||||||
|
run: |
|
||||||
|
version=$(git describe --dirty --tags --abbrev=7 | sed 's|^v||')
|
||||||
|
|
||||||
|
make -j$(nproc) docs
|
||||||
|
mkdir -p stage/DEBIAN
|
||||||
|
mkdir -p stage/usr/bin
|
||||||
|
mkdir -p stage/usr/share/man/man1
|
||||||
|
cp packaging/control stage/DEBIAN/control
|
||||||
|
|
||||||
|
sed 's|@DEB_ARCH@|${{ env.ARCH_NAME }}|g' -i stage/DEBIAN/control
|
||||||
|
sed "s|@DEB_VERSION@|$version|g" -i stage/DEBIAN/control
|
||||||
|
|
||||||
|
install -Dm644 ready/palera1n-${{ env.CHECKRA1N_NAME }} stage/usr/bin/palera1n
|
||||||
|
install -Dm644 docs/palera1n.1 stage/usr/share/man/man1/palera1n.1
|
||||||
|
chmod +x stage/usr/bin/palera1n
|
||||||
|
|
||||||
|
dpkg-deb -b stage palera1n_${version}_${{ env.ARCH_NAME }}.deb
|
||||||
|
mv palera1n*.deb ready/
|
||||||
|
rm -rf stage
|
||||||
|
|
||||||
- name: Upload artifact
|
- name: Upload artifact
|
||||||
if: ${{ github.event_name != 'pull_request' }}
|
if: ${{ github.event_name != 'pull_request' }}
|
||||||
uses: wangyucode/[email protected]
|
uses: wangyucode/[email protected]
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
NAME = The Beginning of the End
|
NAME = Tumbleweed
|
||||||
|
|
||||||
SRC = $(shell pwd)
|
SRC = $(shell pwd)
|
||||||
DEP = $(SRC)/dep_root
|
DEP = $(SRC)/dep_root
|
||||||
@@ -51,12 +51,18 @@ CFLAGS += -DBAKERAIN_DEVELOPE_R="\"$(BAKERAIN_DEVELOPE_R)\""
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
BUILD_DATE := $(shell LANG=C date)
|
BUILD_DATE := $(shell LANG=C date)
|
||||||
|
BUILD_NUMBER := $(shell git rev-list --count HEAD)
|
||||||
BUILD_TAG := $(shell git describe --dirty --tags --abbrev=7)
|
BUILD_TAG := $(shell git describe --dirty --tags --abbrev=7)
|
||||||
BUILD_WHOAMI := $(shell whoami)
|
BUILD_WHOAMI := $(shell whoami)
|
||||||
|
BUILD_BRANCH := $(shell git rev-parse --abbrev-ref HEAD)
|
||||||
|
BUILD_COMMIT := $(shell git rev-parse HEAD)
|
||||||
|
|
||||||
CFLAGS += -DBUILD_STYLE="\"$(BUILD_STYLE)\"" -DBUILD_DATE="\"$(BUILD_DATE)\"" -DBUILD_WHOAMI=\"$(BUILD_WHOAMI)\" -DBUILD_TAG=\"$(BUILD_TAG)\"
|
CFLAGS += -DBUILD_STYLE="\"$(BUILD_STYLE)\"" -DBUILD_DATE="\"$(BUILD_DATE)\""
|
||||||
|
CFLAGS += -DBUILD_WHOAMI="\"$(BUILD_WHOAMI)\"" -DBUILD_TAG="\"$(BUILD_TAG)\""
|
||||||
|
CFLAGS += -DBUILD_NUMBER="\"$(BUILD_NUMBER)\"" -DBUILD_BRANCH="\"$(BUILD_BRANCH)\""
|
||||||
|
CFLAGS += -DBUILD_COMMIT="\"$(BUILD_COMMIT)\""
|
||||||
|
|
||||||
export SRC DEP CC CFLAGS LDFLAGS LIBS TARGET_OS DEV_BUILD BUILD_DATE BUILD_TAG BUILD_WHOAMI BUILD_STYLE
|
export SRC DEP CC CFLAGS LDFLAGS LIBS TARGET_OS DEV_BUILD BUILD_DATE BUILD_TAG BUILD_WHOAMI BUILD_STYLE BUILD_NUMBER BUILD_BRANCH
|
||||||
|
|
||||||
all: palera1n
|
all: palera1n
|
||||||
|
|
||||||
|
|||||||
+36
-15
@@ -2,16 +2,14 @@
|
|||||||
.\" Copyright (c) 2023 Nick Chan
|
.\" Copyright (c) 2023 Nick Chan
|
||||||
.\" SPDX-License-Identifier: MIT
|
.\" SPDX-License-Identifier: MIT
|
||||||
.\"
|
.\"
|
||||||
.Dd "06 February 2023"
|
.Dd "20 March 2023"
|
||||||
.Dt "Nick Chan utilities manual" 1 "palera1n"
|
|
||||||
.Dt palera1n 1
|
.Dt palera1n 1
|
||||||
.Os
|
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
.Nm palera1n
|
.Nm palera1n
|
||||||
.Nd iOS 15.0-16.3.1 arm64 iOS/iPadOS jailbreaking tool
|
.Nd iOS 15.0-16.3.1 arm64 iOS/iPadOS jailbreaking tool
|
||||||
.Sh SYNOPSIS
|
.Sh SYNOPSIS
|
||||||
.Nm
|
.Nm
|
||||||
.Op Fl BcdDEfhlnLOpRsvVI
|
.Op Fl cCdDEfhIlLnpRsSvV
|
||||||
.Op Fl e Ar Boot arguments
|
.Op Fl e Ar Boot arguments
|
||||||
.Op Fl k Ar Pongo image
|
.Op Fl k Ar Pongo image
|
||||||
.Op Fl o Ar overlay file
|
.Op Fl o Ar overlay file
|
||||||
@@ -48,8 +46,11 @@ On iOS 16, the passcode must be off since restore, and
|
|||||||
from settings app counts as a restore.
|
from settings app counts as a restore.
|
||||||
A backup may be used in this case.
|
A backup may be used in this case.
|
||||||
.Pp
|
.Pp
|
||||||
|
In the remainder of this document, the term "iOS" and "iPadOS" will be used interchangably
|
||||||
|
as the difference is negligible as far as the jailbreak is concerened.
|
||||||
|
.Pp
|
||||||
.Sh SUPPORTED DEVICES
|
.Sh SUPPORTED DEVICES
|
||||||
As described above, arm64 iOS/iPadOS 15.0-16.3.1 devices are supported, here is an explicit
|
As described above, arm64 iOS 15.0-16.3.1 devices are supported, here is an explicit
|
||||||
list of supported devicecs:
|
list of supported devicecs:
|
||||||
|
|
||||||
.Bl -tag -compact
|
.Bl -tag -compact
|
||||||
@@ -103,11 +104,13 @@ is not supported when this option is used together with
|
|||||||
Like
|
Like
|
||||||
.Fl c , -setup-fakefs
|
.Fl c , -setup-fakefs
|
||||||
but the size of the created fakefs is smaller at the expense of having unwritable
|
but the size of the created fakefs is smaller at the expense of having unwritable
|
||||||
parts in rarely-written paths. (good for 16 GB devices)
|
parts in rarely-written paths. When jailbreaking 16 GB devices, this option must be used
|
||||||
|
when setting up fakefs for rootful, as they do not have enough storage for full fakefs.
|
||||||
|
This option currently does not work on iOS 16.
|
||||||
.It Fl c , -setup-fakefs
|
.It Fl c , -setup-fakefs
|
||||||
When used with
|
When used with
|
||||||
.Fl f , -fakefs ,
|
.Fl f , -fakefs ,
|
||||||
Create the new APFS volume required for rootful. Will fail if one already exists.
|
creates the new APFS volume required for rootful. Will fail if one already exists.
|
||||||
.It Fl d , -demote
|
.It Fl d , -demote
|
||||||
Set the effective production fuse to 0, so as to enable hardware debugging features.
|
Set the effective production fuse to 0, so as to enable hardware debugging features.
|
||||||
.It Fl D , -dfuhelper
|
.It Fl D , -dfuhelper
|
||||||
@@ -124,7 +127,7 @@ argument is used during fakefs setup.
|
|||||||
.It Fl E , -enter-recovery
|
.It Fl E , -enter-recovery
|
||||||
Exit after entering recovery mode.
|
Exit after entering recovery mode.
|
||||||
.It Fl f , -fakefs
|
.It Fl f , -fakefs
|
||||||
Jailbreak in rootful mode.
|
Proceed in rootful mode. This applies to both full fakefs and partial fakefs.
|
||||||
.It Fl h , -help
|
.It Fl h , -help
|
||||||
Prints help text.
|
Prints help text.
|
||||||
.It Fl i , -checkra1n-file Ar checkra1n file
|
.It Fl i , -checkra1n-file Ar checkra1n file
|
||||||
@@ -141,7 +144,7 @@ command. If in doubt, use
|
|||||||
.Sy https://github.com/guacaplushy/PongoOS
|
.Sy https://github.com/guacaplushy/PongoOS
|
||||||
iOS15 branch or your own fork of it.
|
iOS15 branch or your own fork of it.
|
||||||
.It Fl l , -rootless
|
.It Fl l , -rootless
|
||||||
Jailbreak in rootless mode, this is the default when neither
|
Proceed in rootless mode, this is the default when neither
|
||||||
.Fl l , -rootless
|
.Fl l , -rootless
|
||||||
and
|
and
|
||||||
.Fl f , -fakefs
|
.Fl f , -fakefs
|
||||||
@@ -161,8 +164,6 @@ at the root of it, as well as a dmg named
|
|||||||
.Em loader.dmg
|
.Em loader.dmg
|
||||||
at the root of it. Otherwise, the device will not boot. It is also expected that it
|
at the root of it. Otherwise, the device will not boot. It is also expected that it
|
||||||
contains a shell, a ssh server, and various command line utilities.
|
contains a shell, a ssh server, and various command line utilities.
|
||||||
.It Fl O , -disable-ohio
|
|
||||||
Disable ohio (disable analytics)
|
|
||||||
.It Fl p , -pongo-shell
|
.It Fl p , -pongo-shell
|
||||||
Exit after booting into a clean PongoOS shell
|
Exit after booting into a clean PongoOS shell
|
||||||
.It Fl P , -pongo-full
|
.It Fl P , -pongo-full
|
||||||
@@ -183,6 +184,8 @@ specified (see
|
|||||||
.Sy FILES
|
.Sy FILES
|
||||||
section below) will be executed. The loader app and the built in SSH server can still be used,
|
section below) will be executed. The loader app and the built in SSH server can still be used,
|
||||||
as well as any jailbreak-specific apps you have installed.
|
as well as any jailbreak-specific apps you have installed.
|
||||||
|
.It Fl S , -no-colors
|
||||||
|
Disable colors on the command line. External programs like checkra1n clones may still output colors.
|
||||||
.It Fl v , -debug-logging
|
.It Fl v , -debug-logging
|
||||||
Enable debug logging. The option may be repeated for extra verbosity.
|
Enable debug logging. The option may be repeated for extra verbosity.
|
||||||
.It Fl V , -verbose-boot
|
.It Fl V , -verbose-boot
|
||||||
@@ -192,7 +195,7 @@ Prints info about device and exits.
|
|||||||
.El
|
.El
|
||||||
.Sh ENVIRONMENTAL VARIABLES
|
.Sh ENVIRONMENTAL VARIABLES
|
||||||
.Bl -tag -width -indent
|
.Bl -tag -width -indent
|
||||||
.It TMPDIR
|
.It Ev TMPDIR
|
||||||
This environmental variable should contain the a directory for temporary
|
This environmental variable should contain the a directory for temporary
|
||||||
files. Without the
|
files. Without the
|
||||||
.Fl i , -override-checkra1n
|
.Fl i , -override-checkra1n
|
||||||
@@ -237,7 +240,7 @@ To exit recovery mode:
|
|||||||
.Sh CAVEATS
|
.Sh CAVEATS
|
||||||
.Pp
|
.Pp
|
||||||
.Em -v
|
.Em -v
|
||||||
is not a real XNU boot argument. It is intercepted by iBoot. However, since XNU
|
is not a real XNU boot argument. It is interpreted by iBoot. However, since XNU
|
||||||
boot arguments are set in PongoOS, which is ran after iBoot has ran, it does nothing.
|
boot arguments are set in PongoOS, which is ran after iBoot has ran, it does nothing.
|
||||||
To verbose boot, use the
|
To verbose boot, use the
|
||||||
.Fl V , -verbose-boot
|
.Fl V , -verbose-boot
|
||||||
@@ -252,11 +255,16 @@ version of the Procursus fork of
|
|||||||
before they can be ran on a device jailbroken with
|
before they can be ran on a device jailbroken with
|
||||||
.Nm
|
.Nm
|
||||||
\[char46]
|
\[char46]
|
||||||
.Sh POST INSTLLATION
|
.Pp
|
||||||
|
When using rootful mode, the
|
||||||
|
.Fl f , -fakefs
|
||||||
|
flag must be specified at all times. It does not matter whether you want to create fakefs,
|
||||||
|
create partial fakefs, rejailbreak or remove jailbreak.
|
||||||
|
.Sh POST INSTALLATION
|
||||||
The palera1n loader app will take up to 30 seconds to appear on the homescreen after the
|
The palera1n loader app will take up to 30 seconds to appear on the homescreen after the
|
||||||
device has booted. If it does not appear, you can try using the shortcut:
|
device has booted. If it does not appear, you can try using the shortcut:
|
||||||
.Pp
|
.Pp
|
||||||
.Sy https://www.icloud.com/shortcuts/8cd5f489c8854ee0ab9ee38f2e62f87d
|
.Lk https://www.icloud.com/shortcuts/8cd5f489c8854ee0ab9ee38f2e62f87d
|
||||||
.Pp
|
.Pp
|
||||||
to open it. After opening the loader app, press install to install a bootstrap as well as
|
to open it. After opening the loader app, press install to install a bootstrap as well as
|
||||||
the
|
the
|
||||||
@@ -300,11 +308,24 @@ may crash if the machine it is running on:
|
|||||||
.Dl "- Has non-compliant USB devices plugged in"
|
.Dl "- Has non-compliant USB devices plugged in"
|
||||||
.Pp
|
.Pp
|
||||||
The exploit may also work less reliably on some hosts, like AMD desktops, or some MediaTek devices.
|
The exploit may also work less reliably on some hosts, like AMD desktops, or some MediaTek devices.
|
||||||
|
.Pp
|
||||||
|
.Fl B , -setup-fakefs-partial
|
||||||
|
does not work on iOS 16.
|
||||||
.Sh NOTES
|
.Sh NOTES
|
||||||
.Nm
|
.Nm
|
||||||
injects a dylib into launchd to allow the
|
injects a dylib into launchd to allow the
|
||||||
.Sy launchctl runstats
|
.Sy launchctl runstats
|
||||||
command to be used on the device.
|
command to be used on the device.
|
||||||
|
.Sh DEPRECATED AND REMOVED FUNCTIONALITY
|
||||||
|
There was an option in
|
||||||
|
.Nm
|
||||||
|
to force create the fakefs even when one already exists (which would overwrite
|
||||||
|
the existing fakefs), by setting the palerain_option_setup_rootful_forced flag
|
||||||
|
in palera1n flags. This option was removed because using
|
||||||
|
.Fl -force-revert
|
||||||
|
and
|
||||||
|
.Fl c
|
||||||
|
at the same time has exactly the same effect.
|
||||||
.Sh SEE ALSO
|
.Sh SEE ALSO
|
||||||
.Xr launchd 8
|
.Xr launchd 8
|
||||||
.Xr launchd.plist 5
|
.Xr launchd.plist 5
|
||||||
|
|||||||
+2
-1
@@ -75,13 +75,14 @@
|
|||||||
#define host_option_res1 (1 << 2) /* reserved */
|
#define host_option_res1 (1 << 2) /* reserved */
|
||||||
#endif
|
#endif
|
||||||
#define host_option_demote (1 << 3) /* Demote effective production fuse status */
|
#define host_option_demote (1 << 3) /* Demote effective production fuse status */
|
||||||
#define host_option_no_ohio (1 << 4) /* Disable Ohio (Analytics) */
|
// (1 << 4) is removed
|
||||||
#define host_option_pongo_full (1 << 5) /* Boot to pongo with default images and options */
|
#define host_option_pongo_full (1 << 5) /* Boot to pongo with default images and options */
|
||||||
#define host_option_palerain_version (1 << 6) /* Print version */
|
#define host_option_palerain_version (1 << 6) /* Print version */
|
||||||
#define host_option_exit_recovery (1 << 7) /* Exit recovery mode */
|
#define host_option_exit_recovery (1 << 7) /* Exit recovery mode */
|
||||||
#define host_option_reboot_device (1 << 8) /* Reboot device in normal mode */
|
#define host_option_reboot_device (1 << 8) /* Reboot device in normal mode */
|
||||||
#define host_option_enter_recovery (1 << 9) /* Enter recovery mode */
|
#define host_option_enter_recovery (1 << 9) /* Enter recovery mode */
|
||||||
#define host_option_device_info (1 << 10) /* Print device info */
|
#define host_option_device_info (1 << 10) /* Print device info */
|
||||||
|
#define host_option_no_colors (1 << 11) /* no colors */
|
||||||
|
|
||||||
#define PALEINFO_MAGIC 'PLSH'
|
#define PALEINFO_MAGIC 'PLSH'
|
||||||
#define PALEINFO_CIGAM 'HSLP'
|
#define PALEINFO_CIGAM 'HSLP'
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
Package: palera1n
|
||||||
|
Name: palera1n
|
||||||
|
Version: @DEB_VERSION@
|
||||||
|
Architecture: @DEB_ARCH@
|
||||||
|
Maintainer: palera1n team
|
||||||
|
Author: palera1n team
|
||||||
|
Depends: usbmuxd
|
||||||
|
Section: Utilities
|
||||||
|
Priority: optional
|
||||||
|
Homepage: https://palera.in
|
||||||
|
Description: iOS 15.0-16.3.1 semi-tethered checkm8 jailbreak
|
||||||
|
palera1n is an iOS/iPadOS 15.0-15.3.1 semi tethered jailbreak
|
||||||
|
based on the checkm8 exploit.
|
||||||
|
.
|
||||||
|
palera1n is able to jailbreak the device in fakefs-rootful mode,
|
||||||
|
where / is writable, as well as rootless mode, where / cannot be
|
||||||
|
written to.
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
Package: palera1n
|
||||||
|
Name: palera1n
|
||||||
|
Version: @DEB_VERSION@
|
||||||
|
Architecture: @DEB_ARCH@
|
||||||
|
Maintainer: palera1n team
|
||||||
|
Author: palera1n team
|
||||||
|
Section: Utilities
|
||||||
|
Priority: optional
|
||||||
|
Homepage: https://palera.in
|
||||||
|
Description: iOS 15.0-16.3.1 semi-tethered checkm8 jailbreak
|
||||||
|
palera1n is an iOS/iPadOS 15.0-15.3.1 semi tethered jailbreak
|
||||||
|
based on the checkm8 exploit.
|
||||||
|
.
|
||||||
|
palera1n is able to jailbreak the device in fakefs-rootful mode,
|
||||||
|
where / is writable, as well as rootless mode, where / cannot be
|
||||||
|
written to.
|
||||||
+1
-1
@@ -9,7 +9,7 @@
|
|||||||
#define R print_credits(void) {
|
#define R print_credits(void) {
|
||||||
#define O fprintf
|
#define O fprintf
|
||||||
#define U (
|
#define U (
|
||||||
#define B stdout
|
#define B stderr
|
||||||
#define L ,
|
#define L ,
|
||||||
#define E "# == palera1n-c == \n#\n"
|
#define E "# == palera1n-c == \n#\n"
|
||||||
#define M "# Made by: Nick Chan, " THE_PLUSH ", Mineek, Nebula, llsc12\n#\n"
|
#define M "# Made by: Nick Chan, " THE_PLUSH ", Mineek, Nebula, llsc12\n#\n"
|
||||||
|
|||||||
+2
-2
@@ -36,12 +36,12 @@ int dfuhelper_thr_running = false;
|
|||||||
|
|
||||||
void step(int time, int time2, char *text, bool (*cond)(uint64_t), uint64_t cond_arg) {
|
void step(int time, int time2, char *text, bool (*cond)(uint64_t), uint64_t cond_arg) {
|
||||||
for (int i = time2; i < time; i++) {
|
for (int i = time2; i < time; i++) {
|
||||||
printf(BCYN "\r\033[K%s (%d)" CRESET, text, time - i + time2);
|
printf(checkrain_option_enabled(host_flags, host_option_no_colors) ? "\r\033[K%s (%d)" : BCYN "\r\033[K%s (%d)" CRESET, text, time - i + time2);
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
sleep(1);
|
sleep(1);
|
||||||
if (cond != NULL && cond(cond_arg)) pthread_exit(NULL);
|
if (cond != NULL && cond(cond_arg)) pthread_exit(NULL);
|
||||||
}
|
}
|
||||||
printf(CYN "\r%s (%d)" CRESET, text, time2);
|
printf(checkrain_option_enabled(host_flags, host_option_no_colors) ? "\r%s (%d)" : CYN "\r%s (%d)" CRESET, text, time2);
|
||||||
if (time2 == 0) puts("");
|
if (time2 == 0) puts("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -102,6 +102,7 @@ checkra1n_exec: {};
|
|||||||
if (!checkrain_option_enabled(host_flags, palerain_option_checkrain_is_clone)) {
|
if (!checkrain_option_enabled(host_flags, palerain_option_checkrain_is_clone)) {
|
||||||
strncat(args, "p", 0xf);
|
strncat(args, "p", 0xf);
|
||||||
if (verbose >= 2) strncat(args, "v", 0xf);
|
if (verbose >= 2) strncat(args, "v", 0xf);
|
||||||
|
if (checkrain_option_enabled(host_flags, host_option_no_colors)) strncat(args, "n", 0xf);
|
||||||
} else {
|
} else {
|
||||||
strncat(args, "R", 0xf);
|
strncat(args, "R", 0xf);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,6 +57,10 @@ int p1_log(log_level_t loglevel, const char *fname, int lineno, const char *fxna
|
|||||||
snprintf(colour_bold, 0x10, "%s", BWHT);
|
snprintf(colour_bold, 0x10, "%s", BWHT);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (checkrain_option_enabled(host_flags, host_option_no_colors)) {
|
||||||
|
colour[0] = '\0';
|
||||||
|
colour_bold[0] = '\0';
|
||||||
|
}
|
||||||
#ifdef DEV_BUILD
|
#ifdef DEV_BUILD
|
||||||
if (checkrain_option_enabled(host_flags, host_option_tui) && tui_started) {
|
if (checkrain_option_enabled(host_flags, host_option_tui) && tui_started) {
|
||||||
newtComponent co = get_tui_log();
|
newtComponent co = get_tui_log();
|
||||||
@@ -75,20 +79,31 @@ int p1_log(log_level_t loglevel, const char *fname, int lineno, const char *fxna
|
|||||||
time_t curtime;
|
time_t curtime;
|
||||||
time(&curtime);
|
time(&curtime);
|
||||||
struct tm* timeinfo = localtime(&curtime);
|
struct tm* timeinfo = localtime(&curtime);
|
||||||
snprintf(timestring, 0x80, "%s[%s%02d/%02d/%d %02d:%02d:%02d%s]", CRESET, HBLK, timeinfo->tm_mon + 1, timeinfo->tm_mday, timeinfo->tm_year - 100, timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec, CRESET);
|
if (!checkrain_option_enabled(host_flags, host_option_no_colors))
|
||||||
if (verbose >= 2) {
|
snprintf(timestring, 0x80, "%s[%s%02d/%02d/%d %02d:%02d:%02d%s]", CRESET, HBLK, timeinfo->tm_mon + 1, timeinfo->tm_mday, timeinfo->tm_year - 100, timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec, CRESET);
|
||||||
|
else
|
||||||
|
snprintf(timestring, 0x80, "[%02d/%02d/%d %02d:%02d:%02d]", timeinfo->tm_mon + 1, timeinfo->tm_mday, timeinfo->tm_year - 100, timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec);
|
||||||
|
if (verbose >= 2 && !checkrain_option_enabled(host_flags, host_option_no_colors)) {
|
||||||
printf("%s| - %s%s <%s> " CRESET "%s" HBLU "%s" CRESET ":" BLU "%d" CRESET ":" BMAG "%s()" CRESET ": \n%s| ----> ", colour_bold, timestring, colour_bold, type, WHT, fname, lineno, fxname, colour_bold);
|
printf("%s| - %s%s <%s> " CRESET "%s" HBLU "%s" CRESET ":" BLU "%d" CRESET ":" BMAG "%s()" CRESET ": \n%s| ----> ", colour_bold, timestring, colour_bold, type, WHT, fname, lineno, fxname, colour_bold);
|
||||||
} else {
|
} else if (!checkrain_option_enabled(host_flags, host_option_no_colors)) {
|
||||||
printf(" - %s %s<%s>%s: ", timestring, colour_bold, type, CRESET);
|
printf(" - %s %s<%s>%s: ", timestring, colour_bold, type, CRESET);
|
||||||
|
} else if (verbose >= 2 && checkrain_option_enabled(host_flags, host_option_no_colors)) {
|
||||||
|
printf("%s| - %s%s <%s> %s:%d:%s(): \n%s| ----> ", colour_bold, timestring, colour_bold, type, fname, lineno, fxname, colour_bold);
|
||||||
|
} else if (checkrain_option_enabled(host_flags, host_option_no_colors)) {
|
||||||
|
printf(" - %s %s<%s>: ", timestring, colour_bold, type);
|
||||||
}
|
}
|
||||||
printf("%s", colour);
|
printf("%s", colour);
|
||||||
ret = vprintf(format, args);
|
ret = vprintf(format, args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
|
||||||
if (verbose < 2)
|
if (verbose < 2 && !checkrain_option_enabled(host_flags, host_option_no_colors))
|
||||||
printf(CRESET "\n");
|
printf(CRESET "\n");
|
||||||
else
|
else if (!checkrain_option_enabled(host_flags, host_option_no_colors))
|
||||||
printf("\n%s-%s\n", colour, CRESET);
|
printf("\n%s-%s\n", colour, CRESET);
|
||||||
|
else if (verbose < 2)
|
||||||
|
printf("\n");
|
||||||
|
else
|
||||||
|
printf("\n%s-\n", colour);
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
}
|
}
|
||||||
pthread_mutex_unlock(&log_mutex);
|
pthread_mutex_unlock(&log_mutex);
|
||||||
|
|||||||
+1
-22
@@ -105,6 +105,7 @@ void log_cb(libusb_context *ctx, enum libusb_log_level level, const char *str) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
int palera1n(int argc, char *argv[]) {
|
int palera1n(int argc, char *argv[]) {
|
||||||
|
print_credits();
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
pthread_mutex_init(&log_mutex, NULL);
|
pthread_mutex_init(&log_mutex, NULL);
|
||||||
pthread_mutex_init(&spin_mutex, NULL);
|
pthread_mutex_init(&spin_mutex, NULL);
|
||||||
@@ -113,7 +114,6 @@ int palera1n(int argc, char *argv[]) {
|
|||||||
if ((ret = build_checks())) return ret;
|
if ((ret = build_checks())) return ret;
|
||||||
if ((ret = optparse(argc, argv))) goto cleanup;
|
if ((ret = optparse(argc, argv))) goto cleanup;
|
||||||
if (!checkrain_option_enabled(host_flags, host_option_device_info))
|
if (!checkrain_option_enabled(host_flags, host_option_device_info))
|
||||||
print_credits();
|
|
||||||
if (checkrain_option_enabled(host_flags, host_option_palerain_version)) goto normal_exit;
|
if (checkrain_option_enabled(host_flags, host_option_palerain_version)) goto normal_exit;
|
||||||
#ifdef DEV_BUILD
|
#ifdef DEV_BUILD
|
||||||
if (checkrain_option_enabled(host_flags, host_option_tui)) {
|
if (checkrain_option_enabled(host_flags, host_option_tui)) {
|
||||||
@@ -166,27 +166,6 @@ int palera1n(int argc, char *argv[]) {
|
|||||||
sleep(1);
|
sleep(1);
|
||||||
}
|
}
|
||||||
normal_exit:
|
normal_exit:
|
||||||
if (access("/usr/bin/curl", F_OK) == 0 && !checkrain_option_enabled(host_flags, host_option_no_ohio)) {
|
|
||||||
LOG(LOG_VERBOSE4, "Ohio");
|
|
||||||
char* ohio_argv[] = {
|
|
||||||
"/usr/bin/curl",
|
|
||||||
"-sX",
|
|
||||||
"POST",
|
|
||||||
"-d",
|
|
||||||
"{\"app_name\": \"palera1n_c-rewrite\"}",
|
|
||||||
"-H",
|
|
||||||
"Content-Type: application/json",
|
|
||||||
"-H",
|
|
||||||
"User-Agent: python-requests/99 palera1n-c-rewrite/0",
|
|
||||||
"-o",
|
|
||||||
"/dev/null",
|
|
||||||
"https://ohio.itsnebula.net/hit",
|
|
||||||
NULL
|
|
||||||
};
|
|
||||||
pid_t pid;
|
|
||||||
posix_spawn(&pid, ohio_argv[0], NULL, NULL, ohio_argv, environ);
|
|
||||||
}
|
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
if (override_kpf.magic == OVERRIDE_MAGIC) {
|
if (override_kpf.magic == OVERRIDE_MAGIC) {
|
||||||
munmap(override_kpf.ptr, (size_t)override_kpf.len);
|
munmap(override_kpf.ptr, (size_t)override_kpf.len);
|
||||||
|
|||||||
+22
-10
@@ -32,13 +32,13 @@ static struct option longopts[] = {
|
|||||||
{"jbinit-log-to-file", no_argument, NULL, 'L'},
|
{"jbinit-log-to-file", no_argument, NULL, 'L'},
|
||||||
{"demote", no_argument, NULL, 'd'},
|
{"demote", no_argument, NULL, 'd'},
|
||||||
{"force-revert", no_argument, NULL, palerain_option_case_force_revert},
|
{"force-revert", no_argument, NULL, palerain_option_case_force_revert},
|
||||||
|
{"no-colors", no_argument, NULL, 'S'},
|
||||||
{"safe-mode", no_argument, NULL, 's'},
|
{"safe-mode", no_argument, NULL, 's'},
|
||||||
{"version", no_argument, NULL, palerain_option_case_version},
|
{"version", no_argument, NULL, palerain_option_case_version},
|
||||||
{"override-pongo", required_argument, NULL, 'k'},
|
{"override-pongo", required_argument, NULL, 'k'},
|
||||||
{"override-overlay", required_argument, NULL, 'o'},
|
{"override-overlay", required_argument, NULL, 'o'},
|
||||||
{"override-ramdisk", required_argument, NULL, 'r'},
|
{"override-ramdisk", required_argument, NULL, 'r'},
|
||||||
{"override-kpf", required_argument, NULL, 'K'},
|
{"override-kpf", required_argument, NULL, 'K'},
|
||||||
{"disable-ohio", no_argument, NULL, 'O'},
|
|
||||||
{"override-checkra1n", required_argument, NULL, 'i'},
|
{"override-checkra1n", required_argument, NULL, 'i'},
|
||||||
{"reboot-device", no_argument, NULL, 'R'},
|
{"reboot-device", no_argument, NULL, 'R'},
|
||||||
{"exit-recovery", no_argument, NULL, 'n'},
|
{"exit-recovery", no_argument, NULL, 'n'},
|
||||||
@@ -56,9 +56,9 @@ static int usage(int e, char* prog_name)
|
|||||||
{
|
{
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
#ifdef DEV_BUILD
|
#ifdef DEV_BUILD
|
||||||
"Usage: %s [-12cCdDEfhlLnOpRstvV]"
|
"Usage: %s [-12cCdDEfhIlLnOpRsStvV]"
|
||||||
#else
|
#else
|
||||||
"Usage: %s [-cCdDEfhlLnOpRsvV]"
|
"Usage: %s [-cCdDEfhIlLnOpRsSvV]"
|
||||||
#endif
|
#endif
|
||||||
" [-e boot arguments] [-k Pongo image] [-o overlay file] [-r ramdisk file] [-K KPF file] [-i checkra1n file]\n"
|
" [-e boot arguments] [-k Pongo image] [-o overlay file] [-r ramdisk file] [-K KPF file] [-i checkra1n file]\n"
|
||||||
"Copyright (C) 2023, palera1n team, All Rights Reserved.\n\n"
|
"Copyright (C) 2023, palera1n team, All Rights Reserved.\n\n"
|
||||||
@@ -85,12 +85,12 @@ static int usage(int e, char* prog_name)
|
|||||||
"\t-n, --exit-recovery\t\t\tExit recovery mode\n"
|
"\t-n, --exit-recovery\t\t\tExit recovery mode\n"
|
||||||
"\t-I, --device-info\t\t\tPrint info about the connected device\n"
|
"\t-I, --device-info\t\t\tPrint info about the connected device\n"
|
||||||
"\t-o, --override-overlay <file>\t\tOverride overlay\n"
|
"\t-o, --override-overlay <file>\t\tOverride overlay\n"
|
||||||
"\t-O, --disable-ohio\t\t\tDisable Ohio\n"
|
|
||||||
"\t-p, --pongo-shell\t\t\tBoots to PongoOS shell\n"
|
"\t-p, --pongo-shell\t\t\tBoots to PongoOS shell\n"
|
||||||
"\t-P, --pongo-full\t\t\tBoots to a PongoOS shell with default images already uploaded\n"
|
"\t-P, --pongo-full\t\t\tBoots to a PongoOS shell with default images already uploaded\n"
|
||||||
"\t-r, --override-ramdisk <file>\t\tOverride ramdisk\n"
|
"\t-r, --override-ramdisk <file>\t\tOverride ramdisk\n"
|
||||||
"\t-R, --reboot-device\t\t\tReboot connected device in normal mode\n"
|
"\t-R, --reboot-device\t\t\tReboot connected device in normal mode\n"
|
||||||
"\t-s, --safe-mode\t\t\t\tEnter safe mode\n"
|
"\t-s, --safe-mode\t\t\t\tEnter safe mode\n"
|
||||||
|
"\t-S, --no-colors\t\t\tDisable colors on the command line\n"
|
||||||
"\t-v, --debug-logging\t\t\tEnable debug logging\n"
|
"\t-v, --debug-logging\t\t\tEnable debug logging\n"
|
||||||
"\t\tThis option can be repeated for extra verbosity.\n"
|
"\t\tThis option can be repeated for extra verbosity.\n"
|
||||||
"\t-V, --verbose-boot\t\t\tVerbose boot\n"
|
"\t-V, --verbose-boot\t\t\tVerbose boot\n"
|
||||||
@@ -110,9 +110,9 @@ int optparse(int argc, char* argv[]) {
|
|||||||
int index;
|
int index;
|
||||||
while ((opt = getopt_long(argc, argv,
|
while ((opt = getopt_long(argc, argv,
|
||||||
#ifdef DEV_BUILD
|
#ifdef DEV_BUILD
|
||||||
"12BcDEhpvVldsOLftRnPIe:o:r:K:k:i:",
|
"12BcDEhpvVldsSLftRnPIe:o:r:K:k:i:",
|
||||||
#else
|
#else
|
||||||
"BcDEhpvVldsOLfRnPIe:o:r:K:k:i:",
|
"BcDEhpvVldsSLfRnPIe:o:r:K:k:i:",
|
||||||
#endif
|
#endif
|
||||||
longopts, NULL)) != -1)
|
longopts, NULL)) != -1)
|
||||||
{
|
{
|
||||||
@@ -252,12 +252,12 @@ int optparse(int argc, char* argv[]) {
|
|||||||
case 'n':
|
case 'n':
|
||||||
host_flags |= host_option_exit_recovery;
|
host_flags |= host_option_exit_recovery;
|
||||||
break;
|
break;
|
||||||
case 'O':
|
|
||||||
host_flags |= host_option_no_ohio;
|
|
||||||
break;
|
|
||||||
case 'I':
|
case 'I':
|
||||||
host_flags |= host_option_device_info;
|
host_flags |= host_option_device_info;
|
||||||
break;
|
break;
|
||||||
|
case 'S':
|
||||||
|
host_flags |= host_option_no_colors;
|
||||||
|
break;
|
||||||
#ifdef DEV_BUILD
|
#ifdef DEV_BUILD
|
||||||
case 't':
|
case 't':
|
||||||
host_flags |= host_option_tui;
|
host_flags |= host_option_tui;
|
||||||
@@ -281,7 +281,19 @@ int optparse(int argc, char* argv[]) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (checkrain_option_enabled(host_flags, host_option_palerain_version)) {
|
if (checkrain_option_enabled(host_flags, host_option_palerain_version)) {
|
||||||
printf("palera1n version " PALERAIN_VERSION ": " BUILD_DATE "; " BUILD_WHOAMI ":" BUILD_TAG "/" BUILD_STYLE "\n");
|
printf(
|
||||||
|
"palera1n " PALERAIN_VERSION "\n"
|
||||||
|
BUILD_COMMIT " " BUILD_NUMBER " (" BUILD_BRANCH ")\n\n"
|
||||||
|
"Build date: " BUILD_DATE "\n"
|
||||||
|
"Build style: " BUILD_STYLE "\n"
|
||||||
|
"Build tag: " BUILD_TAG "\n"
|
||||||
|
"Built by: " BUILD_WHOAMI "\n"
|
||||||
|
#ifdef USE_LIBUSB
|
||||||
|
"USB backend: libusb\n"
|
||||||
|
#else
|
||||||
|
"USB backend: IOKit\n"
|
||||||
|
#endif
|
||||||
|
);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-1
@@ -163,7 +163,10 @@ int upload_pongo_file(usb_device_handle_t handle, unsigned char *buf, unsigned i
|
|||||||
if (verbose < 3 || verbose > 4) {
|
if (verbose < 3 || verbose > 4) {
|
||||||
LOG(LOG_VERBOSE, "Uploaded %llu bytes to PongoOS", (unsigned long long)buf_len);
|
LOG(LOG_VERBOSE, "Uploaded %llu bytes to PongoOS", (unsigned long long)buf_len);
|
||||||
} else {
|
} else {
|
||||||
printf("/send mem:%p:%p\n" BCYN "[Uploaded %llu bytes]\n" CRESET, (void*)buf, (void*)(buf + buf_len), (unsigned long long)buf_len);
|
if (checkrain_option_enabled(host_flags, host_option_no_colors))
|
||||||
|
printf("/send mem:%p:%p\nUploaded %llu bytes]\n", (void*)buf, (void*)(buf + buf_len), (unsigned long long)buf_len);
|
||||||
|
else
|
||||||
|
printf("/send mem:%p:%p\n" BCYN "[Uploaded %llu bytes]\n" CRESET, (void*)buf, (void*)(buf + buf_len), (unsigned long long)buf_len);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user