mirror of
https://github.com/LukeZGD/Legacy-iOS-Kit.git
synced 2025-01-11 15:59:08 +01:00
Big update (script rewrite)
This commit is contained in:
parent
7630fda7c3
commit
4b775da046
89
.github/workflows/build.yml
vendored
89
.github/workflows/build.yml
vendored
@ -1,5 +1,8 @@
|
|||||||
name: Create zip files
|
name: Create zip files
|
||||||
on: [push]
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
jobs:
|
jobs:
|
||||||
create-zip-files:
|
create-zip-files:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@ -17,83 +20,40 @@ jobs:
|
|||||||
|
|
||||||
- name: Move linux binaries
|
- name: Move linux binaries
|
||||||
run: |
|
run: |
|
||||||
mkdir -p ./exclude/firmware ./exclude/lib ./exclude/tools
|
mkdir -p ./exclude/lib ./exclude/bin
|
||||||
mv ./resources/lib/* ./exclude/lib
|
cp -R ./bin/* ./exclude/bin
|
||||||
mv ./resources/tools/*linux* ./exclude/tools
|
cp ./resources/lib/* ./exclude/lib
|
||||||
|
rm -r ./bin/linux ./bin/windows ./resources/lib/*
|
||||||
- name: Download and extract libimobiledevice_macos
|
|
||||||
run: |
|
|
||||||
curl -LO https://github.com/LukeZGD/iOS-OTA-Downgrader-Keys/releases/download/tools/libimobiledevice_macos.zip
|
|
||||||
mkdir ./resources/libimobiledevice_macos
|
|
||||||
unzip libimobiledevice_macos.zip -d ./resources/libimobiledevice_macos
|
|
||||||
chmod +x ./resources/libimobiledevice_macos/*
|
|
||||||
|
|
||||||
- name: Zip macos files
|
- name: Zip macos files
|
||||||
run: zip -r ${{ github.event.repository.name }}_macos_${{ env.DATE }}-${{ env.SHA_SHORT }}.zip resources/ restore.sh README.md
|
run: zip -r ${{ github.event.repository.name }}_macos_${{ env.DATE }}-${{ env.SHA_SHORT }}.zip bin/ LICENSE resources/ restore.sh README.md
|
||||||
|
|
||||||
- name: Move macos binaries
|
- name: Move macos binaries
|
||||||
run: |
|
run: |
|
||||||
mv ./exclude/lib/* ./resources/lib
|
rm -r ./bin/macos
|
||||||
mv ./exclude/tools/* ./resources/tools
|
cp ./exclude/lib/* ./resources/lib
|
||||||
mv ./resources/tools/*macos* ./exclude/tools
|
mkdir ./bin/linux
|
||||||
mv ./resources/libimobiledevice_macos ./exclude
|
cp -R ./exclude/bin/linux/x86_64 ./bin/linux
|
||||||
|
|
||||||
- name: Download and extract libimobiledevice_linux
|
|
||||||
run: |
|
|
||||||
curl -LO https://github.com/LukeZGD/iOS-OTA-Downgrader-Keys/releases/download/tools/libimobiledevice_linux.zip
|
|
||||||
mkdir ./resources/libimobiledevice_linux
|
|
||||||
unzip libimobiledevice_linux.zip -d ./resources/libimobiledevice_linux
|
|
||||||
chmod +x ./resources/libimobiledevice_linux/*
|
|
||||||
|
|
||||||
- name: Zip linux files
|
- name: Zip linux files
|
||||||
run: zip -r ${{ github.event.repository.name }}_linux_x86_64_${{ env.DATE }}-${{ env.SHA_SHORT }}.zip resources/ restore.sh README.md
|
run: zip -r ${{ github.event.repository.name }}_linux_x86_64_${{ env.DATE }}-${{ env.SHA_SHORT }}.zip bin/ LICENSE resources/ restore.sh README.md
|
||||||
|
|
||||||
- name: Move linux binaries and other files
|
- name: Move linux binaries and other files
|
||||||
run: |
|
run: |
|
||||||
mv ./resources/lib/* ./exclude/lib
|
rm -r ./bin/linux/x86_64 ./resources/lib/*
|
||||||
mv ./resources/tools/*linux* ./exclude/tools
|
cp -R ./exclude/bin/windows ./bin
|
||||||
mv ./resources/libimobiledevice_linux ./exclude
|
|
||||||
mv ./resources/firmware/FirmwareBundles ./resources/firmware/JailbreakBundles ./exclude/firmware
|
|
||||||
mkdir ./resources/firmware/FirmwareBundles
|
|
||||||
mv ./exclude/firmware/FirmwareBundles/Down_iPhone3* ./resources/firmware/FirmwareBundles
|
|
||||||
|
|
||||||
- name: Download and extract tools_linux_arm
|
|
||||||
run: |
|
|
||||||
curl -LO https://github.com/LukeZGD/iOS-OTA-Downgrader-Keys/releases/download/tools/tools_linux_arm.zip
|
|
||||||
unzip -o tools_linux_arm.zip -d ./resources
|
|
||||||
|
|
||||||
- name: Zip linux arm files
|
|
||||||
run: zip -r ${{ github.event.repository.name }}_linux_arm_${{ env.DATE }}-${{ env.SHA_SHORT }}.zip resources/ restore.sh README.md
|
|
||||||
|
|
||||||
- name: Move linux arm binaries and other files
|
|
||||||
run: |
|
|
||||||
mv ./resources/lib/arm ./exclude/lib
|
|
||||||
mv ./resources/tools/*linux* ./exclude/tools
|
|
||||||
mv ./resources/libimobiledevice_linux/* ./exclude/libimobiledevice_linux
|
|
||||||
rm -r ./resources/libimobiledevice_linux
|
|
||||||
|
|
||||||
- name: Download and extract libimobiledevice_win
|
|
||||||
run: |
|
|
||||||
curl -LO https://github.com/LukeZGD/iOS-OTA-Downgrader-Keys/releases/download/tools/libimobiledevice_win.zip
|
|
||||||
mkdir ./resources/libimobiledevice_win
|
|
||||||
unzip libimobiledevice_win.zip -d ./resources/libimobiledevice_win
|
|
||||||
|
|
||||||
- name: Download and extract tools_win
|
|
||||||
run: |
|
|
||||||
curl -LO https://github.com/LukeZGD/iOS-OTA-Downgrader-Keys/releases/download/tools/tools_win.zip
|
|
||||||
unzip -o tools_win.zip -d ./resources
|
|
||||||
|
|
||||||
- name: Zip win files
|
- name: Zip win files
|
||||||
run: zip -r ${{ github.event.repository.name }}_win_${{ env.DATE }}-${{ env.SHA_SHORT }}.zip resources/ restore.cmd restore.sh README.md
|
run: zip -r ${{ github.event.repository.name }}_windows_${{ env.DATE }}-${{ env.SHA_SHORT }}.zip bin/ LICENSE resources/ restore.cmd restore.sh README.md
|
||||||
|
|
||||||
- name: Copy exclude files back
|
- name: Copy exclude files back and download other files
|
||||||
run: cp -r ./exclude/* ./resources
|
run: |
|
||||||
|
cp -R ./exclude/bin/* ./bin
|
||||||
- name: Download other files
|
cp -R ./exclude/lib/* ./resources/lib
|
||||||
run: ./resources/complete.sh
|
./resources/complete.sh
|
||||||
|
|
||||||
- name: Zip complete files
|
- name: Zip complete files
|
||||||
run: zip -r ${{ github.event.repository.name }}_complete_${{ env.DATE }}-${{ env.SHA_SHORT }}.zip resources/ restore.cmd restore.sh README.md
|
run: zip -r ${{ github.event.repository.name }}_complete_${{ env.DATE }}-${{ env.SHA_SHORT }}.zip bin/ LICENSE resources/ restore.cmd restore.sh README.md
|
||||||
|
|
||||||
- name: Update latest release
|
- name: Update latest release
|
||||||
uses: pyTooling/Actions/releaser@main
|
uses: pyTooling/Actions/releaser@main
|
||||||
@ -104,6 +64,5 @@ jobs:
|
|||||||
files: |
|
files: |
|
||||||
${{ github.event.repository.name }}_complete_${{ env.DATE }}-${{ env.SHA_SHORT }}.zip
|
${{ github.event.repository.name }}_complete_${{ env.DATE }}-${{ env.SHA_SHORT }}.zip
|
||||||
${{ github.event.repository.name }}_macos_${{ env.DATE }}-${{ env.SHA_SHORT }}.zip
|
${{ github.event.repository.name }}_macos_${{ env.DATE }}-${{ env.SHA_SHORT }}.zip
|
||||||
${{ github.event.repository.name }}_linux_arm_${{ env.DATE }}-${{ env.SHA_SHORT }}.zip
|
|
||||||
${{ github.event.repository.name }}_linux_x86_64_${{ env.DATE }}-${{ env.SHA_SHORT }}.zip
|
${{ github.event.repository.name }}_linux_x86_64_${{ env.DATE }}-${{ env.SHA_SHORT }}.zip
|
||||||
${{ github.event.repository.name }}_win_${{ env.DATE }}-${{ env.SHA_SHORT }}.zip
|
${{ github.event.repository.name }}_windows_${{ env.DATE }}-${{ env.SHA_SHORT }}.zip
|
||||||
|
7
.gitignore
vendored
7
.gitignore
vendored
@ -9,18 +9,13 @@
|
|||||||
*.shsh2
|
*.shsh2
|
||||||
*.txt
|
*.txt
|
||||||
Cydia*
|
Cydia*
|
||||||
first_run
|
firstrun
|
||||||
iP*Custom*/
|
iP*Custom*/
|
||||||
iP*Restore/
|
iP*Restore/
|
||||||
resources/ch3rryflower/
|
resources/ch3rryflower/
|
||||||
resources/ipwndfu/
|
resources/ipwndfu/
|
||||||
resources/jailbreak/bin.tar
|
|
||||||
resources/jailbreak/cydia.tar
|
|
||||||
resources/jailbreak/untether.tar
|
|
||||||
resources/libimobiledevice*/
|
|
||||||
resources/powdersn0w/
|
resources/powdersn0w/
|
||||||
resources/ramdisk/
|
resources/ramdisk/
|
||||||
saved/
|
saved/
|
||||||
sshdeb.tar
|
|
||||||
tmp/
|
tmp/
|
||||||
version.xml
|
version.xml
|
||||||
|
674
LICENSE
Normal file
674
LICENSE
Normal file
@ -0,0 +1,674 @@
|
|||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The GNU General Public License is a free, copyleft license for
|
||||||
|
software and other kinds of works.
|
||||||
|
|
||||||
|
The licenses for most software and other practical works are designed
|
||||||
|
to take away your freedom to share and change the works. By contrast,
|
||||||
|
the GNU General Public License is intended to guarantee your freedom to
|
||||||
|
share and change all versions of a program--to make sure it remains free
|
||||||
|
software for all its users. We, the Free Software Foundation, use the
|
||||||
|
GNU General Public License for most of our software; it applies also to
|
||||||
|
any other work released this way by its authors. You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
them if you wish), that you receive source code or can get it if you
|
||||||
|
want it, that you can change the software or use pieces of it in new
|
||||||
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to prevent others from denying you
|
||||||
|
these rights or asking you to surrender the rights. Therefore, you have
|
||||||
|
certain responsibilities if you distribute copies of the software, or if
|
||||||
|
you modify it: responsibilities to respect the freedom of others.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must pass on to the recipients the same
|
||||||
|
freedoms that you received. You must make sure that they, too, receive
|
||||||
|
or can get the source code. And you must show them these terms so they
|
||||||
|
know their rights.
|
||||||
|
|
||||||
|
Developers that use the GNU GPL protect your rights with two steps:
|
||||||
|
(1) assert copyright on the software, and (2) offer you this License
|
||||||
|
giving you legal permission to copy, distribute and/or modify it.
|
||||||
|
|
||||||
|
For the developers' and authors' protection, the GPL clearly explains
|
||||||
|
that there is no warranty for this free software. For both users' and
|
||||||
|
authors' sake, the GPL requires that modified versions be marked as
|
||||||
|
changed, so that their problems will not be attributed erroneously to
|
||||||
|
authors of previous versions.
|
||||||
|
|
||||||
|
Some devices are designed to deny users access to install or run
|
||||||
|
modified versions of the software inside them, although the manufacturer
|
||||||
|
can do so. This is fundamentally incompatible with the aim of
|
||||||
|
protecting users' freedom to change the software. The systematic
|
||||||
|
pattern of such abuse occurs in the area of products for individuals to
|
||||||
|
use, which is precisely where it is most unacceptable. Therefore, we
|
||||||
|
have designed this version of the GPL to prohibit the practice for those
|
||||||
|
products. If such problems arise substantially in other domains, we
|
||||||
|
stand ready to extend this provision to those domains in future versions
|
||||||
|
of the GPL, as needed to protect the freedom of users.
|
||||||
|
|
||||||
|
Finally, every program is threatened constantly by software patents.
|
||||||
|
States should not allow patents to restrict development and use of
|
||||||
|
software on general-purpose computers, but in those that do, we wish to
|
||||||
|
avoid the special danger that patents applied to a free program could
|
||||||
|
make it effectively proprietary. To prevent this, the GPL assures that
|
||||||
|
patents cannot be used to render the program non-free.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
0. Definitions.
|
||||||
|
|
||||||
|
"This License" refers to version 3 of the GNU General Public License.
|
||||||
|
|
||||||
|
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||||
|
works, such as semiconductor masks.
|
||||||
|
|
||||||
|
"The Program" refers to any copyrightable work licensed under this
|
||||||
|
License. Each licensee is addressed as "you". "Licensees" and
|
||||||
|
"recipients" may be individuals or organizations.
|
||||||
|
|
||||||
|
To "modify" a work means to copy from or adapt all or part of the work
|
||||||
|
in a fashion requiring copyright permission, other than the making of an
|
||||||
|
exact copy. The resulting work is called a "modified version" of the
|
||||||
|
earlier work or a work "based on" the earlier work.
|
||||||
|
|
||||||
|
A "covered work" means either the unmodified Program or a work based
|
||||||
|
on the Program.
|
||||||
|
|
||||||
|
To "propagate" a work means to do anything with it that, without
|
||||||
|
permission, would make you directly or secondarily liable for
|
||||||
|
infringement under applicable copyright law, except executing it on a
|
||||||
|
computer or modifying a private copy. Propagation includes copying,
|
||||||
|
distribution (with or without modification), making available to the
|
||||||
|
public, and in some countries other activities as well.
|
||||||
|
|
||||||
|
To "convey" a work means any kind of propagation that enables other
|
||||||
|
parties to make or receive copies. Mere interaction with a user through
|
||||||
|
a computer network, with no transfer of a copy, is not conveying.
|
||||||
|
|
||||||
|
An interactive user interface displays "Appropriate Legal Notices"
|
||||||
|
to the extent that it includes a convenient and prominently visible
|
||||||
|
feature that (1) displays an appropriate copyright notice, and (2)
|
||||||
|
tells the user that there is no warranty for the work (except to the
|
||||||
|
extent that warranties are provided), that licensees may convey the
|
||||||
|
work under this License, and how to view a copy of this License. If
|
||||||
|
the interface presents a list of user commands or options, such as a
|
||||||
|
menu, a prominent item in the list meets this criterion.
|
||||||
|
|
||||||
|
1. Source Code.
|
||||||
|
|
||||||
|
The "source code" for a work means the preferred form of the work
|
||||||
|
for making modifications to it. "Object code" means any non-source
|
||||||
|
form of a work.
|
||||||
|
|
||||||
|
A "Standard Interface" means an interface that either is an official
|
||||||
|
standard defined by a recognized standards body, or, in the case of
|
||||||
|
interfaces specified for a particular programming language, one that
|
||||||
|
is widely used among developers working in that language.
|
||||||
|
|
||||||
|
The "System Libraries" of an executable work include anything, other
|
||||||
|
than the work as a whole, that (a) is included in the normal form of
|
||||||
|
packaging a Major Component, but which is not part of that Major
|
||||||
|
Component, and (b) serves only to enable use of the work with that
|
||||||
|
Major Component, or to implement a Standard Interface for which an
|
||||||
|
implementation is available to the public in source code form. A
|
||||||
|
"Major Component", in this context, means a major essential component
|
||||||
|
(kernel, window system, and so on) of the specific operating system
|
||||||
|
(if any) on which the executable work runs, or a compiler used to
|
||||||
|
produce the work, or an object code interpreter used to run it.
|
||||||
|
|
||||||
|
The "Corresponding Source" for a work in object code form means all
|
||||||
|
the source code needed to generate, install, and (for an executable
|
||||||
|
work) run the object code and to modify the work, including scripts to
|
||||||
|
control those activities. However, it does not include the work's
|
||||||
|
System Libraries, or general-purpose tools or generally available free
|
||||||
|
programs which are used unmodified in performing those activities but
|
||||||
|
which are not part of the work. For example, Corresponding Source
|
||||||
|
includes interface definition files associated with source files for
|
||||||
|
the work, and the source code for shared libraries and dynamically
|
||||||
|
linked subprograms that the work is specifically designed to require,
|
||||||
|
such as by intimate data communication or control flow between those
|
||||||
|
subprograms and other parts of the work.
|
||||||
|
|
||||||
|
The Corresponding Source need not include anything that users
|
||||||
|
can regenerate automatically from other parts of the Corresponding
|
||||||
|
Source.
|
||||||
|
|
||||||
|
The Corresponding Source for a work in source code form is that
|
||||||
|
same work.
|
||||||
|
|
||||||
|
2. Basic Permissions.
|
||||||
|
|
||||||
|
All rights granted under this License are granted for the term of
|
||||||
|
copyright on the Program, and are irrevocable provided the stated
|
||||||
|
conditions are met. This License explicitly affirms your unlimited
|
||||||
|
permission to run the unmodified Program. The output from running a
|
||||||
|
covered work is covered by this License only if the output, given its
|
||||||
|
content, constitutes a covered work. This License acknowledges your
|
||||||
|
rights of fair use or other equivalent, as provided by copyright law.
|
||||||
|
|
||||||
|
You may make, run and propagate covered works that you do not
|
||||||
|
convey, without conditions so long as your license otherwise remains
|
||||||
|
in force. You may convey covered works to others for the sole purpose
|
||||||
|
of having them make modifications exclusively for you, or provide you
|
||||||
|
with facilities for running those works, provided that you comply with
|
||||||
|
the terms of this License in conveying all material for which you do
|
||||||
|
not control copyright. Those thus making or running the covered works
|
||||||
|
for you must do so exclusively on your behalf, under your direction
|
||||||
|
and control, on terms that prohibit them from making any copies of
|
||||||
|
your copyrighted material outside their relationship with you.
|
||||||
|
|
||||||
|
Conveying under any other circumstances is permitted solely under
|
||||||
|
the conditions stated below. Sublicensing is not allowed; section 10
|
||||||
|
makes it unnecessary.
|
||||||
|
|
||||||
|
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||||
|
|
||||||
|
No covered work shall be deemed part of an effective technological
|
||||||
|
measure under any applicable law fulfilling obligations under article
|
||||||
|
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||||
|
similar laws prohibiting or restricting circumvention of such
|
||||||
|
measures.
|
||||||
|
|
||||||
|
When you convey a covered work, you waive any legal power to forbid
|
||||||
|
circumvention of technological measures to the extent such circumvention
|
||||||
|
is effected by exercising rights under this License with respect to
|
||||||
|
the covered work, and you disclaim any intention to limit operation or
|
||||||
|
modification of the work as a means of enforcing, against the work's
|
||||||
|
users, your or third parties' legal rights to forbid circumvention of
|
||||||
|
technological measures.
|
||||||
|
|
||||||
|
4. Conveying Verbatim Copies.
|
||||||
|
|
||||||
|
You may convey verbatim copies of the Program's source code as you
|
||||||
|
receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice;
|
||||||
|
keep intact all notices stating that this License and any
|
||||||
|
non-permissive terms added in accord with section 7 apply to the code;
|
||||||
|
keep intact all notices of the absence of any warranty; and give all
|
||||||
|
recipients a copy of this License along with the Program.
|
||||||
|
|
||||||
|
You may charge any price or no price for each copy that you convey,
|
||||||
|
and you may offer support or warranty protection for a fee.
|
||||||
|
|
||||||
|
5. Conveying Modified Source Versions.
|
||||||
|
|
||||||
|
You may convey a work based on the Program, or the modifications to
|
||||||
|
produce it from the Program, in the form of source code under the
|
||||||
|
terms of section 4, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) The work must carry prominent notices stating that you modified
|
||||||
|
it, and giving a relevant date.
|
||||||
|
|
||||||
|
b) The work must carry prominent notices stating that it is
|
||||||
|
released under this License and any conditions added under section
|
||||||
|
7. This requirement modifies the requirement in section 4 to
|
||||||
|
"keep intact all notices".
|
||||||
|
|
||||||
|
c) You must license the entire work, as a whole, under this
|
||||||
|
License to anyone who comes into possession of a copy. This
|
||||||
|
License will therefore apply, along with any applicable section 7
|
||||||
|
additional terms, to the whole of the work, and all its parts,
|
||||||
|
regardless of how they are packaged. This License gives no
|
||||||
|
permission to license the work in any other way, but it does not
|
||||||
|
invalidate such permission if you have separately received it.
|
||||||
|
|
||||||
|
d) If the work has interactive user interfaces, each must display
|
||||||
|
Appropriate Legal Notices; however, if the Program has interactive
|
||||||
|
interfaces that do not display Appropriate Legal Notices, your
|
||||||
|
work need not make them do so.
|
||||||
|
|
||||||
|
A compilation of a covered work with other separate and independent
|
||||||
|
works, which are not by their nature extensions of the covered work,
|
||||||
|
and which are not combined with it such as to form a larger program,
|
||||||
|
in or on a volume of a storage or distribution medium, is called an
|
||||||
|
"aggregate" if the compilation and its resulting copyright are not
|
||||||
|
used to limit the access or legal rights of the compilation's users
|
||||||
|
beyond what the individual works permit. Inclusion of a covered work
|
||||||
|
in an aggregate does not cause this License to apply to the other
|
||||||
|
parts of the aggregate.
|
||||||
|
|
||||||
|
6. Conveying Non-Source Forms.
|
||||||
|
|
||||||
|
You may convey a covered work in object code form under the terms
|
||||||
|
of sections 4 and 5, provided that you also convey the
|
||||||
|
machine-readable Corresponding Source under the terms of this License,
|
||||||
|
in one of these ways:
|
||||||
|
|
||||||
|
a) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by the
|
||||||
|
Corresponding Source fixed on a durable physical medium
|
||||||
|
customarily used for software interchange.
|
||||||
|
|
||||||
|
b) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by a
|
||||||
|
written offer, valid for at least three years and valid for as
|
||||||
|
long as you offer spare parts or customer support for that product
|
||||||
|
model, to give anyone who possesses the object code either (1) a
|
||||||
|
copy of the Corresponding Source for all the software in the
|
||||||
|
product that is covered by this License, on a durable physical
|
||||||
|
medium customarily used for software interchange, for a price no
|
||||||
|
more than your reasonable cost of physically performing this
|
||||||
|
conveying of source, or (2) access to copy the
|
||||||
|
Corresponding Source from a network server at no charge.
|
||||||
|
|
||||||
|
c) Convey individual copies of the object code with a copy of the
|
||||||
|
written offer to provide the Corresponding Source. This
|
||||||
|
alternative is allowed only occasionally and noncommercially, and
|
||||||
|
only if you received the object code with such an offer, in accord
|
||||||
|
with subsection 6b.
|
||||||
|
|
||||||
|
d) Convey the object code by offering access from a designated
|
||||||
|
place (gratis or for a charge), and offer equivalent access to the
|
||||||
|
Corresponding Source in the same way through the same place at no
|
||||||
|
further charge. You need not require recipients to copy the
|
||||||
|
Corresponding Source along with the object code. If the place to
|
||||||
|
copy the object code is a network server, the Corresponding Source
|
||||||
|
may be on a different server (operated by you or a third party)
|
||||||
|
that supports equivalent copying facilities, provided you maintain
|
||||||
|
clear directions next to the object code saying where to find the
|
||||||
|
Corresponding Source. Regardless of what server hosts the
|
||||||
|
Corresponding Source, you remain obligated to ensure that it is
|
||||||
|
available for as long as needed to satisfy these requirements.
|
||||||
|
|
||||||
|
e) Convey the object code using peer-to-peer transmission, provided
|
||||||
|
you inform other peers where the object code and Corresponding
|
||||||
|
Source of the work are being offered to the general public at no
|
||||||
|
charge under subsection 6d.
|
||||||
|
|
||||||
|
A separable portion of the object code, whose source code is excluded
|
||||||
|
from the Corresponding Source as a System Library, need not be
|
||||||
|
included in conveying the object code work.
|
||||||
|
|
||||||
|
A "User Product" is either (1) a "consumer product", which means any
|
||||||
|
tangible personal property which is normally used for personal, family,
|
||||||
|
or household purposes, or (2) anything designed or sold for incorporation
|
||||||
|
into a dwelling. In determining whether a product is a consumer product,
|
||||||
|
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||||
|
product received by a particular user, "normally used" refers to a
|
||||||
|
typical or common use of that class of product, regardless of the status
|
||||||
|
of the particular user or of the way in which the particular user
|
||||||
|
actually uses, or expects or is expected to use, the product. A product
|
||||||
|
is a consumer product regardless of whether the product has substantial
|
||||||
|
commercial, industrial or non-consumer uses, unless such uses represent
|
||||||
|
the only significant mode of use of the product.
|
||||||
|
|
||||||
|
"Installation Information" for a User Product means any methods,
|
||||||
|
procedures, authorization keys, or other information required to install
|
||||||
|
and execute modified versions of a covered work in that User Product from
|
||||||
|
a modified version of its Corresponding Source. The information must
|
||||||
|
suffice to ensure that the continued functioning of the modified object
|
||||||
|
code is in no case prevented or interfered with solely because
|
||||||
|
modification has been made.
|
||||||
|
|
||||||
|
If you convey an object code work under this section in, or with, or
|
||||||
|
specifically for use in, a User Product, and the conveying occurs as
|
||||||
|
part of a transaction in which the right of possession and use of the
|
||||||
|
User Product is transferred to the recipient in perpetuity or for a
|
||||||
|
fixed term (regardless of how the transaction is characterized), the
|
||||||
|
Corresponding Source conveyed under this section must be accompanied
|
||||||
|
by the Installation Information. But this requirement does not apply
|
||||||
|
if neither you nor any third party retains the ability to install
|
||||||
|
modified object code on the User Product (for example, the work has
|
||||||
|
been installed in ROM).
|
||||||
|
|
||||||
|
The requirement to provide Installation Information does not include a
|
||||||
|
requirement to continue to provide support service, warranty, or updates
|
||||||
|
for a work that has been modified or installed by the recipient, or for
|
||||||
|
the User Product in which it has been modified or installed. Access to a
|
||||||
|
network may be denied when the modification itself materially and
|
||||||
|
adversely affects the operation of the network or violates the rules and
|
||||||
|
protocols for communication across the network.
|
||||||
|
|
||||||
|
Corresponding Source conveyed, and Installation Information provided,
|
||||||
|
in accord with this section must be in a format that is publicly
|
||||||
|
documented (and with an implementation available to the public in
|
||||||
|
source code form), and must require no special password or key for
|
||||||
|
unpacking, reading or copying.
|
||||||
|
|
||||||
|
7. Additional Terms.
|
||||||
|
|
||||||
|
"Additional permissions" are terms that supplement the terms of this
|
||||||
|
License by making exceptions from one or more of its conditions.
|
||||||
|
Additional permissions that are applicable to the entire Program shall
|
||||||
|
be treated as though they were included in this License, to the extent
|
||||||
|
that they are valid under applicable law. If additional permissions
|
||||||
|
apply only to part of the Program, that part may be used separately
|
||||||
|
under those permissions, but the entire Program remains governed by
|
||||||
|
this License without regard to the additional permissions.
|
||||||
|
|
||||||
|
When you convey a copy of a covered work, you may at your option
|
||||||
|
remove any additional permissions from that copy, or from any part of
|
||||||
|
it. (Additional permissions may be written to require their own
|
||||||
|
removal in certain cases when you modify the work.) You may place
|
||||||
|
additional permissions on material, added by you to a covered work,
|
||||||
|
for which you have or can give appropriate copyright permission.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, for material you
|
||||||
|
add to a covered work, you may (if authorized by the copyright holders of
|
||||||
|
that material) supplement the terms of this License with terms:
|
||||||
|
|
||||||
|
a) Disclaiming warranty or limiting liability differently from the
|
||||||
|
terms of sections 15 and 16 of this License; or
|
||||||
|
|
||||||
|
b) Requiring preservation of specified reasonable legal notices or
|
||||||
|
author attributions in that material or in the Appropriate Legal
|
||||||
|
Notices displayed by works containing it; or
|
||||||
|
|
||||||
|
c) Prohibiting misrepresentation of the origin of that material, or
|
||||||
|
requiring that modified versions of such material be marked in
|
||||||
|
reasonable ways as different from the original version; or
|
||||||
|
|
||||||
|
d) Limiting the use for publicity purposes of names of licensors or
|
||||||
|
authors of the material; or
|
||||||
|
|
||||||
|
e) Declining to grant rights under trademark law for use of some
|
||||||
|
trade names, trademarks, or service marks; or
|
||||||
|
|
||||||
|
f) Requiring indemnification of licensors and authors of that
|
||||||
|
material by anyone who conveys the material (or modified versions of
|
||||||
|
it) with contractual assumptions of liability to the recipient, for
|
||||||
|
any liability that these contractual assumptions directly impose on
|
||||||
|
those licensors and authors.
|
||||||
|
|
||||||
|
All other non-permissive additional terms are considered "further
|
||||||
|
restrictions" within the meaning of section 10. If the Program as you
|
||||||
|
received it, or any part of it, contains a notice stating that it is
|
||||||
|
governed by this License along with a term that is a further
|
||||||
|
restriction, you may remove that term. If a license document contains
|
||||||
|
a further restriction but permits relicensing or conveying under this
|
||||||
|
License, you may add to a covered work material governed by the terms
|
||||||
|
of that license document, provided that the further restriction does
|
||||||
|
not survive such relicensing or conveying.
|
||||||
|
|
||||||
|
If you add terms to a covered work in accord with this section, you
|
||||||
|
must place, in the relevant source files, a statement of the
|
||||||
|
additional terms that apply to those files, or a notice indicating
|
||||||
|
where to find the applicable terms.
|
||||||
|
|
||||||
|
Additional terms, permissive or non-permissive, may be stated in the
|
||||||
|
form of a separately written license, or stated as exceptions;
|
||||||
|
the above requirements apply either way.
|
||||||
|
|
||||||
|
8. Termination.
|
||||||
|
|
||||||
|
You may not propagate or modify a covered work except as expressly
|
||||||
|
provided under this License. Any attempt otherwise to propagate or
|
||||||
|
modify it is void, and will automatically terminate your rights under
|
||||||
|
this License (including any patent licenses granted under the third
|
||||||
|
paragraph of section 11).
|
||||||
|
|
||||||
|
However, if you cease all violation of this License, then your
|
||||||
|
license from a particular copyright holder is reinstated (a)
|
||||||
|
provisionally, unless and until the copyright holder explicitly and
|
||||||
|
finally terminates your license, and (b) permanently, if the copyright
|
||||||
|
holder fails to notify you of the violation by some reasonable means
|
||||||
|
prior to 60 days after the cessation.
|
||||||
|
|
||||||
|
Moreover, your license from a particular copyright holder is
|
||||||
|
reinstated permanently if the copyright holder notifies you of the
|
||||||
|
violation by some reasonable means, this is the first time you have
|
||||||
|
received notice of violation of this License (for any work) from that
|
||||||
|
copyright holder, and you cure the violation prior to 30 days after
|
||||||
|
your receipt of the notice.
|
||||||
|
|
||||||
|
Termination of your rights under this section does not terminate the
|
||||||
|
licenses of parties who have received copies or rights from you under
|
||||||
|
this License. If your rights have been terminated and not permanently
|
||||||
|
reinstated, you do not qualify to receive new licenses for the same
|
||||||
|
material under section 10.
|
||||||
|
|
||||||
|
9. Acceptance Not Required for Having Copies.
|
||||||
|
|
||||||
|
You are not required to accept this License in order to receive or
|
||||||
|
run a copy of the Program. Ancillary propagation of a covered work
|
||||||
|
occurring solely as a consequence of using peer-to-peer transmission
|
||||||
|
to receive a copy likewise does not require acceptance. However,
|
||||||
|
nothing other than this License grants you permission to propagate or
|
||||||
|
modify any covered work. These actions infringe copyright if you do
|
||||||
|
not accept this License. Therefore, by modifying or propagating a
|
||||||
|
covered work, you indicate your acceptance of this License to do so.
|
||||||
|
|
||||||
|
10. Automatic Licensing of Downstream Recipients.
|
||||||
|
|
||||||
|
Each time you convey a covered work, the recipient automatically
|
||||||
|
receives a license from the original licensors, to run, modify and
|
||||||
|
propagate that work, subject to this License. You are not responsible
|
||||||
|
for enforcing compliance by third parties with this License.
|
||||||
|
|
||||||
|
An "entity transaction" is a transaction transferring control of an
|
||||||
|
organization, or substantially all assets of one, or subdividing an
|
||||||
|
organization, or merging organizations. If propagation of a covered
|
||||||
|
work results from an entity transaction, each party to that
|
||||||
|
transaction who receives a copy of the work also receives whatever
|
||||||
|
licenses to the work the party's predecessor in interest had or could
|
||||||
|
give under the previous paragraph, plus a right to possession of the
|
||||||
|
Corresponding Source of the work from the predecessor in interest, if
|
||||||
|
the predecessor has it or can get it with reasonable efforts.
|
||||||
|
|
||||||
|
You may not impose any further restrictions on the exercise of the
|
||||||
|
rights granted or affirmed under this License. For example, you may
|
||||||
|
not impose a license fee, royalty, or other charge for exercise of
|
||||||
|
rights granted under this License, and you may not initiate litigation
|
||||||
|
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||||
|
any patent claim is infringed by making, using, selling, offering for
|
||||||
|
sale, or importing the Program or any portion of it.
|
||||||
|
|
||||||
|
11. Patents.
|
||||||
|
|
||||||
|
A "contributor" is a copyright holder who authorizes use under this
|
||||||
|
License of the Program or a work on which the Program is based. The
|
||||||
|
work thus licensed is called the contributor's "contributor version".
|
||||||
|
|
||||||
|
A contributor's "essential patent claims" are all patent claims
|
||||||
|
owned or controlled by the contributor, whether already acquired or
|
||||||
|
hereafter acquired, that would be infringed by some manner, permitted
|
||||||
|
by this License, of making, using, or selling its contributor version,
|
||||||
|
but do not include claims that would be infringed only as a
|
||||||
|
consequence of further modification of the contributor version. For
|
||||||
|
purposes of this definition, "control" includes the right to grant
|
||||||
|
patent sublicenses in a manner consistent with the requirements of
|
||||||
|
this License.
|
||||||
|
|
||||||
|
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||||
|
patent license under the contributor's essential patent claims, to
|
||||||
|
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||||
|
propagate the contents of its contributor version.
|
||||||
|
|
||||||
|
In the following three paragraphs, a "patent license" is any express
|
||||||
|
agreement or commitment, however denominated, not to enforce a patent
|
||||||
|
(such as an express permission to practice a patent or covenant not to
|
||||||
|
sue for patent infringement). To "grant" such a patent license to a
|
||||||
|
party means to make such an agreement or commitment not to enforce a
|
||||||
|
patent against the party.
|
||||||
|
|
||||||
|
If you convey a covered work, knowingly relying on a patent license,
|
||||||
|
and the Corresponding Source of the work is not available for anyone
|
||||||
|
to copy, free of charge and under the terms of this License, through a
|
||||||
|
publicly available network server or other readily accessible means,
|
||||||
|
then you must either (1) cause the Corresponding Source to be so
|
||||||
|
available, or (2) arrange to deprive yourself of the benefit of the
|
||||||
|
patent license for this particular work, or (3) arrange, in a manner
|
||||||
|
consistent with the requirements of this License, to extend the patent
|
||||||
|
license to downstream recipients. "Knowingly relying" means you have
|
||||||
|
actual knowledge that, but for the patent license, your conveying the
|
||||||
|
covered work in a country, or your recipient's use of the covered work
|
||||||
|
in a country, would infringe one or more identifiable patents in that
|
||||||
|
country that you have reason to believe are valid.
|
||||||
|
|
||||||
|
If, pursuant to or in connection with a single transaction or
|
||||||
|
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||||
|
covered work, and grant a patent license to some of the parties
|
||||||
|
receiving the covered work authorizing them to use, propagate, modify
|
||||||
|
or convey a specific copy of the covered work, then the patent license
|
||||||
|
you grant is automatically extended to all recipients of the covered
|
||||||
|
work and works based on it.
|
||||||
|
|
||||||
|
A patent license is "discriminatory" if it does not include within
|
||||||
|
the scope of its coverage, prohibits the exercise of, or is
|
||||||
|
conditioned on the non-exercise of one or more of the rights that are
|
||||||
|
specifically granted under this License. You may not convey a covered
|
||||||
|
work if you are a party to an arrangement with a third party that is
|
||||||
|
in the business of distributing software, under which you make payment
|
||||||
|
to the third party based on the extent of your activity of conveying
|
||||||
|
the work, and under which the third party grants, to any of the
|
||||||
|
parties who would receive the covered work from you, a discriminatory
|
||||||
|
patent license (a) in connection with copies of the covered work
|
||||||
|
conveyed by you (or copies made from those copies), or (b) primarily
|
||||||
|
for and in connection with specific products or compilations that
|
||||||
|
contain the covered work, unless you entered into that arrangement,
|
||||||
|
or that patent license was granted, prior to 28 March 2007.
|
||||||
|
|
||||||
|
Nothing in this License shall be construed as excluding or limiting
|
||||||
|
any implied license or other defenses to infringement that may
|
||||||
|
otherwise be available to you under applicable patent law.
|
||||||
|
|
||||||
|
12. No Surrender of Others' Freedom.
|
||||||
|
|
||||||
|
If conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot convey a
|
||||||
|
covered work so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you may
|
||||||
|
not convey it at all. For example, if you agree to terms that obligate you
|
||||||
|
to collect a royalty for further conveying from those to whom you convey
|
||||||
|
the Program, the only way you could satisfy both those terms and this
|
||||||
|
License would be to refrain entirely from conveying the Program.
|
||||||
|
|
||||||
|
13. Use with the GNU Affero General Public License.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, you have
|
||||||
|
permission to link or combine any covered work with a work licensed
|
||||||
|
under version 3 of the GNU Affero General Public License into a single
|
||||||
|
combined work, and to convey the resulting work. The terms of this
|
||||||
|
License will continue to apply to the part which is the covered work,
|
||||||
|
but the special requirements of the GNU Affero General Public License,
|
||||||
|
section 13, concerning interaction through a network will apply to the
|
||||||
|
combination as such.
|
||||||
|
|
||||||
|
14. Revised Versions of this License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions of
|
||||||
|
the GNU General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Program specifies that a certain numbered version of the GNU General
|
||||||
|
Public License "or any later version" applies to it, you have the
|
||||||
|
option of following the terms and conditions either of that numbered
|
||||||
|
version or of any later version published by the Free Software
|
||||||
|
Foundation. If the Program does not specify a version number of the
|
||||||
|
GNU General Public License, you may choose any version ever published
|
||||||
|
by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Program specifies that a proxy can decide which future
|
||||||
|
versions of the GNU General Public License can be used, that proxy's
|
||||||
|
public statement of acceptance of a version permanently authorizes you
|
||||||
|
to choose that version for the Program.
|
||||||
|
|
||||||
|
Later license versions may give you additional or different
|
||||||
|
permissions. However, no additional obligations are imposed on any
|
||||||
|
author or copyright holder as a result of your choosing to follow a
|
||||||
|
later version.
|
||||||
|
|
||||||
|
15. Disclaimer of Warranty.
|
||||||
|
|
||||||
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||||
|
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||||
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||||
|
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||||
|
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||||
|
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
16. Limitation of Liability.
|
||||||
|
|
||||||
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||||
|
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||||
|
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||||
|
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||||
|
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||||
|
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||||
|
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGES.
|
||||||
|
|
||||||
|
17. Interpretation of Sections 15 and 16.
|
||||||
|
|
||||||
|
If the disclaimer of warranty and limitation of liability provided
|
||||||
|
above cannot be given local legal effect according to their terms,
|
||||||
|
reviewing courts shall apply local law that most closely approximates
|
||||||
|
an absolute waiver of all civil liability in connection with the
|
||||||
|
Program, unless a warranty or assumption of liability accompanies a
|
||||||
|
copy of the Program in return for a fee.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
state the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program does terminal interaction, make it output a short
|
||||||
|
notice like this when it starts in an interactive mode:
|
||||||
|
|
||||||
|
<program> Copyright (C) <year> <name of author>
|
||||||
|
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, your program's commands
|
||||||
|
might be different; for a GUI interface, you would use an "about box".
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or school,
|
||||||
|
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||||
|
For more information on this, and how to apply and follow the GNU GPL, see
|
||||||
|
<https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
The GNU General Public License does not permit incorporating your program
|
||||||
|
into proprietary programs. If your program is a subroutine library, you
|
||||||
|
may consider it more useful to permit linking proprietary applications with
|
||||||
|
the library. If this is what you want to do, use the GNU Lesser General
|
||||||
|
Public License instead of this License. But first, please read
|
||||||
|
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
20
README.md
20
README.md
@ -11,19 +11,18 @@
|
|||||||
## Other features
|
## Other features
|
||||||
- iOS 6.1.3 and 8.4.1 downgrades have the option to **jailbreak** the install
|
- iOS 6.1.3 and 8.4.1 downgrades have the option to **jailbreak** the install
|
||||||
- For iOS 10.3.3 downgrades, use [TotallyNotSpyware](https://totally-not.spyware.lol)
|
- For iOS 10.3.3 downgrades, use [TotallyNotSpyware](https://totally-not.spyware.lol)
|
||||||
- This script can also restore your device to other iOS versions that you have SHSH blobs for (32-bit devices only)
|
- This script can also restore your device to other iOS versions that you have SHSH blobs for (32-bit/A7/A8 devices, iOS 5 to 12)
|
||||||
- The latest baseband will always be used for 32-bit devices that have baseband. For iPhone 5C and A7 devices, iOS 10.3.3 baseband will be used
|
- The latest baseband will always be used for 32-bit devices that have baseband. For iPhone 5C and A7 devices, iOS 10.3.3 baseband will be used
|
||||||
- This script can also be used to just enter kDFU mode (32-bit devices only)
|
- This script can also be used to enter kDFU mode for 32-bit devices
|
||||||
- This script can also be used to restore your iPhone 4 back to iOS 7.1.2 with the option to jailbreak the install
|
- This script can also be used to restore your iPhone 4 back to iOS 7.1.2 with the option to jailbreak the install
|
||||||
- This script can also be used to restore 32-bit devices to their latest versions
|
- This script can also be used to restore supported devices to their latest versions
|
||||||
|
|
||||||
## Supported devices
|
## Supported devices
|
||||||
- [Identify your device here](https://ipsw.me/device-finder)
|
- [Identify your device here](https://ipsw.me/device-finder)
|
||||||
- **iPhone 5C and iPad mini 3 devices are NOT supported!**
|
- **iPhone 5C and iPad mini 3 devices are NOT supported!**
|
||||||
- iPhone 5C can still be restored to versions that you have SHSH blobs for
|
- iPhone 5C can still be restored to versions that you have SHSH blobs for
|
||||||
- iPhone 4 devices also support restoring with SHSH blobs
|
- iPhone 4 devices also support restoring with SHSH blobs
|
||||||
- **iPhone4Down supports iPhone 4 GSM and CDMA (iPhone3,1 and iPhone3,3)**
|
- **iPhone4Down supports iPhone 4 GSM only (iPhone3,1)**
|
||||||
- iPhone3,3 support is not tested. Use [powdersn0w](https://web.archive.org/web/20221213010446/https://dora2ios.web.app/konayuki/index.html) on macOS instead
|
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
@ -50,11 +49,10 @@
|
|||||||
<tr><td>iPad mini 1</td></tr>
|
<tr><td>iPad mini 1</td></tr>
|
||||||
<tr><td>iPod touch 5</td></tr>
|
<tr><td>iPod touch 5</td></tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td rowspan=3>iOS 6.1.3</td>
|
<td rowspan=2>iOS 6.1.3</td>
|
||||||
<td>iPhone 4S</td>
|
<td>iPhone 4S</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr><td>iPad 2 (except iPad2,4)</td></tr>
|
<tr><td>iPad 2 (except iPad2,4)</td></tr>
|
||||||
<tr><td>iPhone 4 GSM, CDMA</td></tr>
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>iOS 7.1.2</td>
|
<td>iOS 7.1.2</td>
|
||||||
<td>iPhone 4 (all models)</td></tr>
|
<td>iPhone 4 (all models)</td></tr>
|
||||||
@ -72,12 +70,11 @@
|
|||||||
</details>
|
</details>
|
||||||
|
|
||||||
## Supported OS versions/distros
|
## Supported OS versions/distros
|
||||||
#### Supported architectures: x86_64, armhf (Linux), arm64 (macOS only for now)
|
- [**Ubuntu**](https://ubuntu.com/) 22.04 and newer, and Ubuntu-based distros like [Linux Mint](https://www.linuxmint.com/)
|
||||||
- [**Ubuntu**](https://ubuntu.com/) 20.04 and newer, and Ubuntu-based distros like [Linux Mint](https://www.linuxmint.com/)
|
|
||||||
- [**Arch Linux**](https://www.archlinux.org/) and Arch-based distros like [EndeavourOS](https://endeavouros.com/)
|
- [**Arch Linux**](https://www.archlinux.org/) and Arch-based distros like [EndeavourOS](https://endeavouros.com/)
|
||||||
- [**Fedora**](https://getfedora.org/) 36 and newer
|
- [**Fedora**](https://getfedora.org/) 36 and newer
|
||||||
- [**Debian**](https://www.debian.org/) 11 Bullseye and newer, Sid, and Debian-based distros
|
- [**Debian**](https://www.debian.org/) 12 Bookworm and newer, Sid, and Debian-based distros
|
||||||
- [**openSUSE**](https://www.opensuse.org/) Tumbleweed, Leap 15.4
|
- [**openSUSE**](https://www.opensuse.org/) Tumbleweed
|
||||||
- [**Gentoo**](https://www.gentoo.org/) and Gentoo-based distros
|
- [**Gentoo**](https://www.gentoo.org/) and Gentoo-based distros
|
||||||
- **macOS** 10.13 and newer
|
- **macOS** 10.13 and newer
|
||||||
- **Windows** 8.1 and newer
|
- **Windows** 8.1 and newer
|
||||||
@ -91,6 +88,7 @@
|
|||||||
- [ipwndfu](https://github.com/LukeZGD/ipwndfu) - LukeZGD fork
|
- [ipwndfu](https://github.com/LukeZGD/ipwndfu) - LukeZGD fork
|
||||||
- [iPwnder32](https://github.com/dora2-iOS/iPwnder32) - dora2ios
|
- [iPwnder32](https://github.com/dora2-iOS/iPwnder32) - dora2ios
|
||||||
- [ipwnder_lite](https://github.com/dora2-iOS/ipwnder_lite) - dora2ios
|
- [ipwnder_lite](https://github.com/dora2-iOS/ipwnder_lite) - dora2ios
|
||||||
|
- [gaster](https://github.com/0x7ff/gaster) - 0x7ff; [verygenericname (Nathan) fork](https://github.com/verygenericname/gaster)
|
||||||
- [daibutsuCFW](https://github.com/dora2-iOS/daibutsuCFW) - dora2ios; [LukeZGD fork](https://github.com/LukeZGD/daibutsuCFW)
|
- [daibutsuCFW](https://github.com/dora2-iOS/daibutsuCFW) - dora2ios; [LukeZGD fork](https://github.com/LukeZGD/daibutsuCFW)
|
||||||
- [libimobiledevice](https://github.com/libimobiledevice/libimobiledevice), [libirecovery](https://github.com/libimobiledevice/libirecovery) - libimobiledevice ([macOS/Windows builds](https://github.com/libimobiledevice-win32/imobiledevice-net))
|
- [libimobiledevice](https://github.com/libimobiledevice/libimobiledevice), [libirecovery](https://github.com/libimobiledevice/libirecovery) - libimobiledevice ([macOS/Windows builds](https://github.com/libimobiledevice-win32/imobiledevice-net))
|
||||||
- [tsschecker](https://github.com/tihmstar/tsschecker) - tihmstar; [1Conan fork](https://github.com/1Conan/tsschecker)
|
- [tsschecker](https://github.com/tihmstar/tsschecker) - tihmstar; [1Conan fork](https://github.com/1Conan/tsschecker)
|
||||||
|
BIN
bin/linux/arm/hfsplus
Executable file
BIN
bin/linux/arm/hfsplus
Executable file
Binary file not shown.
BIN
bin/linux/arm/ideviceenterrecovery
Executable file
BIN
bin/linux/arm/ideviceenterrecovery
Executable file
Binary file not shown.
BIN
bin/linux/arm/ideviceinfo
Executable file
BIN
bin/linux/arm/ideviceinfo
Executable file
Binary file not shown.
BIN
bin/linux/arm/idevicererestore
Executable file
BIN
bin/linux/arm/idevicererestore
Executable file
Binary file not shown.
BIN
bin/linux/arm/idevicerestore
Executable file
BIN
bin/linux/arm/idevicerestore
Executable file
Binary file not shown.
BIN
bin/linux/arm/iproxy
Executable file
BIN
bin/linux/arm/iproxy
Executable file
Binary file not shown.
BIN
bin/linux/arm/ipsw
Executable file
BIN
bin/linux/arm/ipsw
Executable file
Binary file not shown.
BIN
bin/linux/arm/ipwnder
Executable file
BIN
bin/linux/arm/ipwnder
Executable file
Binary file not shown.
BIN
bin/linux/arm/irecovery
Executable file
BIN
bin/linux/arm/irecovery
Executable file
Binary file not shown.
BIN
bin/linux/arm/partialzip
Executable file
BIN
bin/linux/arm/partialzip
Executable file
Binary file not shown.
BIN
bin/linux/arm/powdersn0w
Executable file
BIN
bin/linux/arm/powdersn0w
Executable file
Binary file not shown.
BIN
bin/linux/arm/tsschecker
Executable file
BIN
bin/linux/arm/tsschecker
Executable file
Binary file not shown.
BIN
bin/linux/arm/xpwntool
Executable file
BIN
bin/linux/arm/xpwntool
Executable file
Binary file not shown.
1
bin/linux/arm64/keep
Normal file
1
bin/linux/arm64/keep
Normal file
@ -0,0 +1 @@
|
|||||||
|
|
BIN
bin/linux/x86_64/futurerestore_new
Executable file
BIN
bin/linux/x86_64/futurerestore_new
Executable file
Binary file not shown.
BIN
bin/linux/x86_64/futurerestore_old
Executable file
BIN
bin/linux/x86_64/futurerestore_old
Executable file
Binary file not shown.
BIN
bin/linux/x86_64/hfsplus
Executable file
BIN
bin/linux/x86_64/hfsplus
Executable file
Binary file not shown.
BIN
bin/linux/x86_64/ideviceenterrecovery
Executable file
BIN
bin/linux/x86_64/ideviceenterrecovery
Executable file
Binary file not shown.
BIN
bin/linux/x86_64/ideviceinfo
Executable file
BIN
bin/linux/x86_64/ideviceinfo
Executable file
Binary file not shown.
BIN
bin/linux/x86_64/idevicererestore
Executable file
BIN
bin/linux/x86_64/idevicererestore
Executable file
Binary file not shown.
BIN
bin/linux/x86_64/idevicerestore
Executable file
BIN
bin/linux/x86_64/idevicerestore
Executable file
Binary file not shown.
BIN
bin/linux/x86_64/iproxy
Executable file
BIN
bin/linux/x86_64/iproxy
Executable file
Binary file not shown.
BIN
bin/linux/x86_64/ipsw
Executable file
BIN
bin/linux/x86_64/ipsw
Executable file
Binary file not shown.
BIN
bin/linux/x86_64/irecovery
Executable file
BIN
bin/linux/x86_64/irecovery
Executable file
Binary file not shown.
BIN
bin/linux/x86_64/powdersn0w
Executable file
BIN
bin/linux/x86_64/powdersn0w
Executable file
Binary file not shown.
BIN
bin/linux/x86_64/xpwntool
Executable file
BIN
bin/linux/x86_64/xpwntool
Executable file
Binary file not shown.
BIN
bin/macos/gaster
Executable file
BIN
bin/macos/gaster
Executable file
Binary file not shown.
BIN
bin/macos/idevicererestore
Executable file
BIN
bin/macos/idevicererestore
Executable file
Binary file not shown.
BIN
bin/windows/bspatch
Normal file
BIN
bin/windows/bspatch
Normal file
Binary file not shown.
BIN
bin/windows/futurerestore_new
Normal file
BIN
bin/windows/futurerestore_new
Normal file
Binary file not shown.
BIN
bin/windows/hfsplus
Normal file
BIN
bin/windows/hfsplus
Normal file
Binary file not shown.
BIN
bin/windows/ideviceenterrecovery
Normal file
BIN
bin/windows/ideviceenterrecovery
Normal file
Binary file not shown.
BIN
bin/windows/ideviceinfo
Normal file
BIN
bin/windows/ideviceinfo
Normal file
Binary file not shown.
BIN
bin/windows/idevicererestore
Normal file
BIN
bin/windows/idevicererestore
Normal file
Binary file not shown.
BIN
bin/windows/idevicerestore
Normal file
BIN
bin/windows/idevicerestore
Normal file
Binary file not shown.
BIN
bin/windows/iproxy
Normal file
BIN
bin/windows/iproxy
Normal file
Binary file not shown.
BIN
bin/windows/ipsw
Normal file
BIN
bin/windows/ipsw
Normal file
Binary file not shown.
BIN
bin/windows/ipsw2
Normal file
BIN
bin/windows/ipsw2
Normal file
Binary file not shown.
BIN
bin/windows/irecovery
Normal file
BIN
bin/windows/irecovery
Normal file
Binary file not shown.
BIN
bin/windows/jq
Normal file
BIN
bin/windows/jq
Normal file
Binary file not shown.
BIN
bin/windows/partialzip
Normal file
BIN
bin/windows/partialzip
Normal file
Binary file not shown.
BIN
bin/windows/powdersn0w
Normal file
BIN
bin/windows/powdersn0w
Normal file
Binary file not shown.
BIN
bin/windows/tsschecker
Normal file
BIN
bin/windows/tsschecker
Normal file
Binary file not shown.
BIN
bin/windows/xmlstarlet
Normal file
BIN
bin/windows/xmlstarlet
Normal file
Binary file not shown.
BIN
bin/windows/xpwntool
Normal file
BIN
bin/windows/xpwntool
Normal file
Binary file not shown.
BIN
bin/windows/zenity
Normal file
BIN
bin/windows/zenity
Normal file
Binary file not shown.
@ -1,79 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
SaveOTABlobs() {
|
|
||||||
local APNonce=$1
|
|
||||||
local ExtraArgs
|
|
||||||
local SHSHChk=${UniqueChipID}_${ProductType}_${HWModel}ap_${OSVer}-${BuildVer}*.shsh*
|
|
||||||
BuildManifest="resources/manifests/BuildManifest_${ProductType}_${OSVer}.plist"
|
|
||||||
|
|
||||||
if [[ $(ls saved/shsh/$SHSHChk 2>/dev/null) && -z $APNonce ]]; then
|
|
||||||
SHSH=$(ls saved/shsh/$SHSHChk)
|
|
||||||
Log "Found existing saved $OSVer blobs: $SHSH"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
Log "Saving iOS $OSVer blobs with tsschecker..."
|
|
||||||
ExtraArgs="-d $ProductType -i $OSVer -e $UniqueChipID -m $BuildManifest -o -s -B ${HWModel}ap -b "
|
|
||||||
[[ -n $APNonce ]] && ExtraArgs+="--apnonce $APNonce" || ExtraArgs+="-g 0x1111111111111111"
|
|
||||||
$tsschecker $ExtraArgs
|
|
||||||
SHSH=$(ls $SHSHChk)
|
|
||||||
if [[ -n $SHSH ]]; then
|
|
||||||
mkdir -p saved/shsh 2>/dev/null
|
|
||||||
if [[ -n $APNonce ]]; then
|
|
||||||
mv "$SHSH" tmp/
|
|
||||||
SHSH=$(ls tmp/$SHSHChk)
|
|
||||||
else
|
|
||||||
mv "$SHSH" saved/shsh/
|
|
||||||
SHSH=$(ls saved/shsh/$SHSHChk)
|
|
||||||
fi
|
|
||||||
Log "Successfully saved $OSVer blobs: $SHSH"
|
|
||||||
else
|
|
||||||
Error "Saving $OSVer blobs failed. Please run the script again" \
|
|
||||||
"It is also possible that $OSVer for $ProductType is no longer signed"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
Save712Blobs() {
|
|
||||||
local SHSHChk=${UniqueChipID}_${ProductType}_7.1.2-11D257_*.shsh2
|
|
||||||
BuildManifest="saved/$ProductType/BuildManifest.plist"
|
|
||||||
SHSH="saved/shsh/${UniqueChipID}-${ProductType}-7.1.2.shsh"
|
|
||||||
|
|
||||||
if [[ -e $SHSH ]]; then
|
|
||||||
Log "Found existing saved 7.1.2 blobs: $SHSH"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ! -e $BuildManifest ]]; then
|
|
||||||
if [[ -e $IPSW7.ipsw ]]; then
|
|
||||||
Log "Extracting BuildManifest from 7.1.2 IPSW..."
|
|
||||||
unzip -o -j $IPSW7.ipsw BuildManifest.plist -d .
|
|
||||||
else
|
|
||||||
Log "Downloading BuildManifest for 7.1.2..."
|
|
||||||
$partialzip $BasebandURL BuildManifest.plist BuildManifest.plist
|
|
||||||
fi
|
|
||||||
mkdir -p saved/$ProductType 2>/dev/null
|
|
||||||
mv BuildManifest.plist $BuildManifest
|
|
||||||
fi
|
|
||||||
|
|
||||||
Log "Saving 7.1.2 blobs with tsschecker..."
|
|
||||||
$tsschecker -d $ProductType -i 7.1.2 -e $UniqueChipID -m $BuildManifest -s -b
|
|
||||||
SHSHChk=$(ls $SHSHChk)
|
|
||||||
[[ -z $SHSHChk ]] && Error "Saving 7.1.2 blobs failed. Please run the script again"
|
|
||||||
mkdir -p saved/shsh 2>/dev/null
|
|
||||||
mv $SHSHChk $SHSH
|
|
||||||
Log "Successfully saved 7.1.2 blobs: $SHSH"
|
|
||||||
}
|
|
||||||
|
|
||||||
SaveLatestBlobs() {
|
|
||||||
local APNonce=$($irecovery -q | grep "NONC" | cut -c 7-)
|
|
||||||
local SHSHChk=${UniqueChipID}_${ProductType}_${LatestVer}-${LatestBuildVer}_*.shsh2
|
|
||||||
SHSH="shsh/${UniqueChipID}-${ProductType}-${LatestVer}.shsh"
|
|
||||||
Log "Saving $LatestVer blobs with tsschecker..."
|
|
||||||
mkdir -p saved/$ProductType shsh 2>/dev/null
|
|
||||||
cp -f $IPSWRestore/BuildManifest.plist saved/$ProductType/
|
|
||||||
$tsschecker -d $ProductType -i $LatestVer -e $UniqueChipID -m saved/$ProductType/BuildManifest.plist -s -b --apnonce $($irecovery -q | grep "NONC" | cut -c 7-)
|
|
||||||
SHSHChk=$(ls $SHSHChk)
|
|
||||||
[[ -z $SHSHChk ]] && Error "Saving $LatestVer blobs failed. Please run the script again"
|
|
||||||
mv $SHSHChk $SHSH
|
|
||||||
Log "Successfully saved $LatestVer blobs: $SHSH"
|
|
||||||
}
|
|
@ -4,32 +4,15 @@
|
|||||||
cd "$(dirname $0)"/..
|
cd "$(dirname $0)"/..
|
||||||
curl -L https://github.com/LukeZGD/ipwndfu/archive/6e67c9e28a5f7f63f179dea670f7f858712350a0.zip -o ipwndfu.zip
|
curl -L https://github.com/LukeZGD/ipwndfu/archive/6e67c9e28a5f7f63f179dea670f7f858712350a0.zip -o ipwndfu.zip
|
||||||
curl -L https://github.com/LukeZGD/iOS-OTA-Downgrader-Keys/archive/refs/heads/master.zip -o keys.zip
|
curl -L https://github.com/LukeZGD/iOS-OTA-Downgrader-Keys/archive/refs/heads/master.zip -o keys.zip
|
||||||
curl -LO https://github.com/futurerestore/futurerestore/releases/download/194/futurerestore-v194-macOS.tar.xz
|
cd resources/jailbreak
|
||||||
curl -LO https://github.com/futurerestore/futurerestore/releases/download/194/futurerestore-v194-ubuntu_20.04.2.tar.xz
|
|
||||||
mkdir tmp
|
|
||||||
cd tmp
|
|
||||||
7z x ../futurerestore-v194-macOS.tar.xz
|
|
||||||
tar -xf futurerestore*.tar
|
|
||||||
chmod +x futurerestore-v194
|
|
||||||
mv futurerestore-v194 ../resources/tools/futurerestore194_macos
|
|
||||||
rm -f ./*
|
|
||||||
7z x ../futurerestore-v194-ubuntu_20.04.2.tar.xz
|
|
||||||
tar -xf futurerestore*.tar
|
|
||||||
chmod +x futurerestore-v194
|
|
||||||
mv futurerestore-v194 ../resources/tools/futurerestore194_linux
|
|
||||||
cd ../resources/jailbreak
|
|
||||||
curl -LO https://github.com/LukeZGD/daibutsuCFW/raw/main/build/src/bin.tar
|
|
||||||
curl -LO https://github.com/LukeZGD/daibutsuCFW/raw/main/build/src/daibutsu/cydia.tar
|
|
||||||
curl -LO https://github.com/LukeZGD/daibutsuCFW/raw/main/build/src/daibutsu/untether.tar
|
|
||||||
curl -LO https://github.com/LukeZGD/iOS-OTA-Downgrader-Keys/releases/download/jailbreak/Cydia5.tar
|
curl -LO https://github.com/LukeZGD/iOS-OTA-Downgrader-Keys/releases/download/jailbreak/Cydia5.tar
|
||||||
curl -LO https://github.com/LukeZGD/iOS-OTA-Downgrader-Keys/releases/download/jailbreak/Cydia6.tar
|
curl -LO https://github.com/LukeZGD/iOS-OTA-Downgrader-Keys/releases/download/jailbreak/Cydia6.tar
|
||||||
curl -LO https://github.com/LukeZGD/iOS-OTA-Downgrader-Keys/releases/download/jailbreak/Cydia7.tar
|
curl -LO https://github.com/LukeZGD/iOS-OTA-Downgrader-Keys/releases/download/jailbreak/Cydia7.tar
|
||||||
curl -LO https://github.com/LukeZGD/iOS-OTA-Downgrader-Keys/releases/download/jailbreak/Cydia8.tar
|
curl -LO https://github.com/LukeZGD/iOS-OTA-Downgrader-Keys/releases/download/jailbreak/Cydia8.tar
|
||||||
curl -LO https://github.com/LukeZGD/iOS-OTA-Downgrader-Keys/releases/download/jailbreak/sshdeb.tar
|
|
||||||
cd ..
|
cd ..
|
||||||
unzip ../keys.zip -d .
|
unzip ../keys.zip -d .
|
||||||
unzip ../ipwndfu.zip -d .
|
unzip ../ipwndfu.zip -d .
|
||||||
cp -r iOS-OTA-Downgrader-Keys-master/* firmware
|
cp -r iOS-OTA-Downgrader-Keys-master/* firmware
|
||||||
mv ipwndfu* ipwndfu
|
mv ipwndfu* ipwndfu
|
||||||
cd ..
|
cd ..
|
||||||
rm -rf resources/iOS-OTA-Downgrader-Keys-master/ tmp/ futurerestore*.xz ipwndfu.zip keys.zip
|
rm -rf resources/iOS-OTA-Downgrader-Keys-master/ ipwndfu.zip keys.zip
|
||||||
|
@ -1,325 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
SetToolPaths() {
|
|
||||||
local Detect="Detected libimobiledevice and libirecovery installed from "
|
|
||||||
MPath="./resources/libimobiledevice_"
|
|
||||||
cherrymac="./resources/ch3rryflower/Tools/macos/UNTETHERED"
|
|
||||||
|
|
||||||
if [[ $OSTYPE == "linux"* ]]; then
|
|
||||||
. /etc/os-release 2>/dev/null
|
|
||||||
platform="linux"
|
|
||||||
platformver="$PRETTY_NAME"
|
|
||||||
MPath+="$platform"
|
|
||||||
bspatch="$(which bspatch)"
|
|
||||||
cherry="./resources/ch3rryflower/Tools/ubuntu/UNTETHERED"
|
|
||||||
futurerestore="./resources/tools/futurerestore_linux"
|
|
||||||
python="$(which python3)"
|
|
||||||
|
|
||||||
elif [[ $OSTYPE == "darwin"* ]]; then
|
|
||||||
platform="macos"
|
|
||||||
platformver="${1:-$(sw_vers -productVersion)}"
|
|
||||||
if [[ $(echo $platformver | cut -c -2) == 10 ]]; then
|
|
||||||
local macver=$(echo $platformver | cut -c 4-)
|
|
||||||
macver=${macver%.*}
|
|
||||||
if (( macver < 13 )); then
|
|
||||||
Error "Your macOS version ($platformver) is not supported." \
|
|
||||||
"You need to be on macOS 10.13 or newer to continue."
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
MPath+="$platform"
|
|
||||||
if [[ -e /usr/local/bin/idevicedate && -e /usr/local/bin/irecovery ]]; then
|
|
||||||
Detect+="Homebrew (Intel Mac)"
|
|
||||||
MPath="/usr/local/bin"
|
|
||||||
elif [[ -e /opt/homebrew/bin/idevicedate && -e /opt/homebrew/bin/irecovery ]]; then
|
|
||||||
Detect+="Homebrew (Apple Silicon)"
|
|
||||||
MPath="/opt/homebrew/bin"
|
|
||||||
elif [[ -e /opt/local/bin/idevicedate && -e /opt/local/bin/irecovery ]]; then
|
|
||||||
Detect+="MacPorts"
|
|
||||||
MPath="/opt/local/bin"
|
|
||||||
else
|
|
||||||
Detect=
|
|
||||||
fi
|
|
||||||
[[ -n $Detect ]] && Log "$Detect"
|
|
||||||
bspatch="/usr/bin/bspatch"
|
|
||||||
cherry="$cherrymac"
|
|
||||||
futurerestore="./resources/tools/futurerestore_macos_$(uname -m)"
|
|
||||||
[[ ! -e $futurerestore ]] && futurerestore="./resources/tools/futurerestore_macos_arm64"
|
|
||||||
ipwnder32="./resources/tools/ipwnder32_macos"
|
|
||||||
ipwnder_lite="./resources/tools/ipwnder_macos"
|
|
||||||
python="/usr/bin/python"
|
|
||||||
|
|
||||||
elif [[ $OSTYPE == "msys" ]]; then
|
|
||||||
platform="win"
|
|
||||||
platformver="$(uname)"
|
|
||||||
MPath+="$platform"
|
|
||||||
bspatch="./resources/tools/bspatch_win"
|
|
||||||
futurerestore="./resources/tools/futurerestore_win"
|
|
||||||
python=/
|
|
||||||
fi
|
|
||||||
|
|
||||||
cherrybin="../$cherry/cherry"
|
|
||||||
hfsplus="../resources/tools/hfsplus_$platform"
|
|
||||||
ideviceenterrecovery="$MPath/ideviceenterrecovery"
|
|
||||||
ideviceinfo="$MPath/ideviceinfo"
|
|
||||||
idevicerestore="./resources/tools/idevicerestore_$platform"
|
|
||||||
idevicererestore="./resources/tools/idevicererestore_$platform"
|
|
||||||
iproxy="$MPath/iproxy"
|
|
||||||
ipsw="../resources/tools/ipsw_$platform"
|
|
||||||
ipwndfu="$python ipwndfu"
|
|
||||||
irecoverychk="$MPath/irecovery"
|
|
||||||
irecovery="$irecoverychk"
|
|
||||||
jq="./resources/tools/jq_$platform"
|
|
||||||
partialzip="./resources/tools/partialzip_$platform"
|
|
||||||
ping="ping -c1"
|
|
||||||
powdersn0w="../resources/tools/powdersn0w_$platform"
|
|
||||||
pwnedDFU="./resources/tools/pwnedDFU_$platform"
|
|
||||||
python2="$(which python2 2>/dev/null)"
|
|
||||||
rmsigchks="$python rmsigchks.py"
|
|
||||||
sha1sum="$(which sha1sum 2>/dev/null)"
|
|
||||||
sha256sum="$(which sha256sum 2>/dev/null)"
|
|
||||||
SimpleHTTPServer="$python -m SimpleHTTPServer 8888"
|
|
||||||
SSH="-F ./resources/ssh_config"
|
|
||||||
SCP="$(which scp) $SSH"
|
|
||||||
SSH="$(which ssh) $SSH"
|
|
||||||
tsschecker="./resources/tools/tsschecker_$platform"
|
|
||||||
xmlstarlet="./resources/tools/xmlstarlet_$platform"
|
|
||||||
xpwntool="../resources/tools/xpwntool_$platform"
|
|
||||||
zenity="./resources/tools/zenity_$platform"
|
|
||||||
|
|
||||||
if [[ $platform == "linux" ]]; then
|
|
||||||
irecovery="env LD_LIBRARY_PATH=./resources/lib $irecovery"
|
|
||||||
opensslver=$(openssl version | awk '{print $2}' | cut -c -3)
|
|
||||||
if [[ $opensslver == "3"* ]]; then
|
|
||||||
cherrybin="env LD_LIBRARY_PATH=../resources/lib $cherrybin"
|
|
||||||
idevicerestore="env LD_LIBRARY_PATH=./resources/lib $idevicerestore"
|
|
||||||
fi
|
|
||||||
ipwndfu="$python2 ipwndfu"
|
|
||||||
jq="$(which jq)"
|
|
||||||
rmsigchks="$python2 rmsigchks.py"
|
|
||||||
SimpleHTTPServer="$python -m http.server 8888"
|
|
||||||
xmlstarlet="$(which xmlstarlet)"
|
|
||||||
zenity="$(which zenity)"
|
|
||||||
#if [[ $(uname -m) == "a"* ]]; then
|
|
||||||
if [[ $(uname -m) == "a"* && $(getconf LONG_BIT) != 64 ]]; then
|
|
||||||
LinuxARMType="arm"
|
|
||||||
# these still need sudo even with the udev rule for some reason
|
|
||||||
futurerestore="${futurerestore}_arm"
|
|
||||||
idevicerestore="${idevicerestore}_arm"
|
|
||||||
idevicererestore="${idevicererestore}_arm"
|
|
||||||
irecovery="sudo ${irecovery}_arm"
|
|
||||||
pwnedDFU="sudo ${pwnedDFU}_arm"
|
|
||||||
|
|
||||||
hfsplus="${hfsplus}_arm"
|
|
||||||
ideviceenterrecovery="${ideviceenterrecovery}_arm"
|
|
||||||
ideviceinfo="${ideviceinfo}_arm"
|
|
||||||
iproxy="${iproxy}_arm"
|
|
||||||
ipsw="${ipsw}_arm"
|
|
||||||
irecoverychk="${irecoverychk}_arm"
|
|
||||||
partialzip="${partialzip}_arm"
|
|
||||||
powdersn0w="${powdersn0w}_arm"
|
|
||||||
tsschecker="${tsschecker}_arm"
|
|
||||||
xpwntool="${xpwntool}_arm"
|
|
||||||
|
|
||||||
: '
|
|
||||||
if [[ $(getconf LONG_BIT) == 64 ]]; then
|
|
||||||
LinuxARMType="arm64"
|
|
||||||
futurerestore="${futurerestore}64"
|
|
||||||
hfsplus="${hfsplus}64"
|
|
||||||
idevicerestore="${idevicerestore}64"
|
|
||||||
idevicererestore="${idevicererestore}64"
|
|
||||||
irecovery="${irecovery}64"
|
|
||||||
pwnedDFU="${pwnedDFU}64"
|
|
||||||
ideviceenterrecovery="${ideviceenterrecovery}_arm"
|
|
||||||
ideviceinfo="${ideviceinfo}64"
|
|
||||||
iproxy="${iproxy}64"
|
|
||||||
ipsw="${ipsw}64"
|
|
||||||
irecoverychk="${irecoverychk}64"
|
|
||||||
partialzip="${partialzip}64"
|
|
||||||
powdersn0w="${powdersn0w}64"
|
|
||||||
tsschecker="${tsschecker}64"
|
|
||||||
xpwntool="${xpwntool}64"
|
|
||||||
fi
|
|
||||||
'
|
|
||||||
|
|
||||||
futurerestore="sudo LD_LIBRARY_PATH=./resources/lib/$LinuxARMType $futurerestore"
|
|
||||||
idevicerestore="sudo LD_LIBRARY_PATH=./resources/lib/$LinuxARMType $idevicerestore"
|
|
||||||
idevicererestore="sudo LD_LIBRARY_PATH=./resources/lib/$LinuxARMType $idevicererestore"
|
|
||||||
fi
|
|
||||||
|
|
||||||
elif [[ $platform == "macos" ]]; then
|
|
||||||
sha1sum="$(which shasum)"
|
|
||||||
sha256sum="$sha1sum -a 256"
|
|
||||||
if (( ${platformver:0:2} > 11 )); then
|
|
||||||
# for macOS 12 and newer
|
|
||||||
python="/usr/bin/python3"
|
|
||||||
ipwndfu="$python2 ipwndfu"
|
|
||||||
rmsigchks="$python2 rmsigchks.py"
|
|
||||||
SimpleHTTPServer="$python -m http.server 8888"
|
|
||||||
fi
|
|
||||||
elif [[ $platform == "win" ]]; then
|
|
||||||
ping="ping -n 1"
|
|
||||||
Log "WARNING - Using iOS-OTA-Downgrader on Windows is not recommended."
|
|
||||||
Echo "* Please use it on Linux or macOS instead."
|
|
||||||
Echo "* You may still continue, but you might encounter issues with restoring the device."
|
|
||||||
Input "Press Enter/Return to continue anyway (or press Ctrl+C to cancel)"
|
|
||||||
read -s
|
|
||||||
fi
|
|
||||||
|
|
||||||
Log "Running on platform: $platform ($platformver)"
|
|
||||||
}
|
|
||||||
|
|
||||||
SaveExternal() {
|
|
||||||
local Link
|
|
||||||
local Name
|
|
||||||
local SHA1
|
|
||||||
if [[ $1 == "ipwndfu" ]]; then
|
|
||||||
Link=https://github.com/LukeZGD/ipwndfu/archive/6e67c9e28a5f7f63f179dea670f7f858712350a0.zip
|
|
||||||
Name=ipwndfu
|
|
||||||
SHA1=61333249eb58faebbb380c4709384034ce0e019a
|
|
||||||
elif [[ $1 == "ch3rryflower" ]]; then
|
|
||||||
Link=https://web.archive.org/web/20210529174714if_/https://codeload.github.com/dora2-iOS/ch3rryflower/zip/316d2cdc5351c918e9db9650247b91632af3f11f
|
|
||||||
Name=ch3rryflower
|
|
||||||
SHA1=790d56db354151b9740c929e52c097ba57f2929d
|
|
||||||
elif [[ $1 == "powdersn0w" ]]; then
|
|
||||||
Link=https://web.archive.org/web/20220802230119if_/https://dora2ios.github.io/download/konayuki/powdersn0w_v2.0b3.zip
|
|
||||||
Name=powdersn0w
|
|
||||||
SHA1=c733aac4a0833558ef9f5517f2a11ca547110b6e
|
|
||||||
fi
|
|
||||||
if [[ -d ./resources/$Name ]]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
cd tmp
|
|
||||||
SaveFile $Link $Name.zip $SHA1
|
|
||||||
cd ../resources
|
|
||||||
unzip -q ../tmp/$Name.zip -d .
|
|
||||||
mv $Name*/ $Name/
|
|
||||||
cd ..
|
|
||||||
}
|
|
||||||
|
|
||||||
SaveFile() {
|
|
||||||
Log "Downloading $2..."
|
|
||||||
curl -L $1 -o $2
|
|
||||||
local SHA1=$($sha1sum $2 | awk '{print $1}')
|
|
||||||
if [[ $SHA1 != $3 ]]; then
|
|
||||||
Error "Verifying $2 failed. The downloaded file may be corrupted or incomplete. Please run the script again" \
|
|
||||||
"SHA1sum mismatch. Expected $3, got $SHA1"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
InstallDepends() {
|
|
||||||
local libimobiledevice
|
|
||||||
|
|
||||||
mkdir resources/lib tmp 2>/dev/null
|
|
||||||
cd resources
|
|
||||||
cp lib/*.so.1.1 ../tmp/ 2>/dev/null
|
|
||||||
rm -rf lib/*
|
|
||||||
cp ../tmp/*.so.1.1 lib/ 2>/dev/null
|
|
||||||
cd ../tmp
|
|
||||||
|
|
||||||
Log "Installing dependencies..."
|
|
||||||
if [[ $platform == "linux" ]]; then
|
|
||||||
Echo "* iOS-OTA-Downgrader will be installing dependencies from your distribution's package manager"
|
|
||||||
Echo "* Enter your user password when prompted"
|
|
||||||
Input "Press Enter/Return to continue (or press Ctrl+C to cancel)"
|
|
||||||
read -s
|
|
||||||
elif [[ $platform == "win" ]]; then
|
|
||||||
Echo "* iOS-OTA-Downgrader will be installing dependencies from MSYS2"
|
|
||||||
Echo "* Note that you may have to run the script more than once"
|
|
||||||
Input "Press Enter/Return to continue (or press Ctrl+C to cancel)"
|
|
||||||
read -s
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -e /etc/debian_version ]]; then
|
|
||||||
DebianVer=$(cat /etc/debian_version)
|
|
||||||
if [[ $DebianVer == *"sid" ]]; then
|
|
||||||
DebianVer="sid"
|
|
||||||
else
|
|
||||||
DebianVer="$(echo $DebianVer | cut -c -2)"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $ID == "arch" || $ID_LIKE == "arch" || $ID == "artix" ]]; then
|
|
||||||
Echo "* Arch Linux repos do not ship python2, which is needed for ipwndfu"
|
|
||||||
Echo "* If you need to use ipwndfu, python2 can be installed from the AUR"
|
|
||||||
sudo pacman -Sy --noconfirm --needed base-devel bsdiff curl jq libimobiledevice openssh python udev unzip usbmuxd usbutils vim xmlstarlet zenity zip
|
|
||||||
|
|
||||||
elif [[ $ID == "gentoo" || $ID_LIKE == "gentoo" || $ID == "pentoo" ]]; then
|
|
||||||
Echo "* Gentoo repos do not ship python2, which is needed for ipwndfu"
|
|
||||||
Echo "* If you need to use ipwndfu, python2 can be installed from the official site"
|
|
||||||
sudo emerge -av bsdiff net-misc/curl jq libimobiledevice openssh python udev unzip usbmuxd usbutils vim xmlstarlet zenity zip
|
|
||||||
|
|
||||||
elif [[ -n $UBUNTU_CODENAME && $VERSION_ID == "2"* ]] ||
|
|
||||||
(( DebianVer >= 11 )) || [[ $DebianVer == "sid" ]]; then
|
|
||||||
[[ -n $UBUNTU_CODENAME ]] && sudo add-apt-repository -y universe
|
|
||||||
sudo apt update
|
|
||||||
sudo apt install -y bsdiff curl jq libimobiledevice6 openssh-client python3 unzip usbmuxd usbutils xmlstarlet xxd zenity zip
|
|
||||||
[[ $DebianVer != "sid" ]] && sudo apt install -y python2
|
|
||||||
sudo systemctl enable --now udev systemd-udevd usbmuxd 2>/dev/null
|
|
||||||
|
|
||||||
elif [[ $ID == "fedora" || $ID == "nobara" ]] && (( VERSION_ID >= 36 )); then
|
|
||||||
ln -sf /usr/lib64/libbz2.so.1.* ../resources/lib/libbz2.so.1.0
|
|
||||||
sudo dnf install -y bsdiff ca-certificates jq libimobiledevice openssl python2 python3 systemd udev usbmuxd vim-common xmlstarlet zenity zip
|
|
||||||
sudo ln -sf /etc/pki/tls/certs/ca-bundle.crt /etc/pki/tls/certs/ca-certificates.crt
|
|
||||||
|
|
||||||
elif [[ $ID == "opensuse-tumbleweed" || $PRETTY_NAME == *"Leap 15.4" ]]; then
|
|
||||||
[[ $ID == "opensuse-leap" ]] && ln -sf /lib64/libreadline.so.7 ../resources/lib/libreadline.so.8
|
|
||||||
sudo zypper -n in bsdiff curl jq libimobiledevice-1_0-6 openssl python-base python3 usbmuxd unzip vim xmlstarlet zenity zip
|
|
||||||
|
|
||||||
elif [[ $platform == "macos" ]]; then
|
|
||||||
xcode-select --install
|
|
||||||
libimobiledevice=("https://github.com/LukeZGD/iOS-OTA-Downgrader-Keys/releases/download/tools/libimobiledevice_macos.zip" "66a49e4f69757a3d9dc51109a8e4651020bfacb8")
|
|
||||||
Echo "* iOS-OTA-Downgrader provides a copy of libimobiledevice and libirecovery by default"
|
|
||||||
Echo "* In case that problems occur, try installing them from Homebrew or MacPorts"
|
|
||||||
Echo "* The script will detect this automatically and will use the Homebrew/MacPorts versions of the tools"
|
|
||||||
|
|
||||||
elif [[ $platform == "win" ]]; then
|
|
||||||
cd ..
|
|
||||||
rm -r tmp
|
|
||||||
pacman -Syu --noconfirm --needed ca-certificates curl libcurl libopenssl openssh openssl unzip zip
|
|
||||||
mkdir tmp
|
|
||||||
cd tmp
|
|
||||||
libimobiledevice=("https://github.com/LukeZGD/iOS-OTA-Downgrader-Keys/releases/download/tools/libimobiledevice_win.zip" "75ae3af3347b89107f0f6b7e41fde42e6ccdd404")
|
|
||||||
if [[ ! $(ls ../resources/tools/*win*) ]]; then
|
|
||||||
SaveFile https://github.com/LukeZGD/iOS-OTA-Downgrader-Keys/releases/download/tools/tools_win.zip tools_win.zip fcaa14e420885c7a0e854aad3119e8a29362813b
|
|
||||||
Log "Extracting Windows tools..."
|
|
||||||
unzip -oq tools_win.zip -d ../resources
|
|
||||||
fi
|
|
||||||
|
|
||||||
else
|
|
||||||
Error "Distro not detected/supported by the install script." "See the repo README for supported OS versions/distros"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $platform == "linux" ]]; then
|
|
||||||
libimobiledevice=("https://github.com/LukeZGD/iOS-OTA-Downgrader-Keys/releases/download/tools/libimobiledevice_linux.zip" "fc5e714adf6fa72328d3e1ddea4e633f370559a4")
|
|
||||||
# from linux_fix script by Cryptiiiic
|
|
||||||
sudo systemctl enable --now systemd-udevd usbmuxd 2>/dev/null
|
|
||||||
echo "QUNUSU9OPT0iYWRkIiwgU1VCU1lTVEVNPT0idXNiIiwgQVRUUntpZFZlbmRvcn09PSIwNWFjIiwgQVRUUntpZFByb2R1Y3R9PT0iMTIyWzI3XXwxMjhbMC0zXSIsIE9XTkVSPSJyb290IiwgR1JPVVA9InVzYm11eGQiLCBNT0RFPSIwNjYwIiwgVEFHKz0idWFjY2VzcyIKCkFDVElPTj09ImFkZCIsIFNVQlNZU1RFTT09InVzYiIsIEFUVFJ7aWRWZW5kb3J9PT0iMDVhYyIsIEFUVFJ7aWRQcm9kdWN0fT09IjEzMzgiLCBPV05FUj0icm9vdCIsIEdST1VQPSJ1c2JtdXhkIiwgTU9ERT0iMDY2MCIsIFRBRys9InVhY2Nlc3MiCgoK" | base64 -d | sudo tee /etc/udev/rules.d/39-libirecovery.rules >/dev/null 2>/dev/null
|
|
||||||
sudo chown root:root /etc/udev/rules.d/39-libirecovery.rules
|
|
||||||
sudo chmod 0644 /etc/udev/rules.d/39-libirecovery.rules
|
|
||||||
sudo udevadm control --reload-rules
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ! -d ../resources/libimobiledevice_$platform && $MPath == "./resources"* ]]; then
|
|
||||||
SaveFile ${libimobiledevice[0]} libimobiledevice.zip ${libimobiledevice[1]}
|
|
||||||
mkdir ../resources/libimobiledevice_$platform
|
|
||||||
Log "Extracting libimobiledevice..."
|
|
||||||
unzip -q libimobiledevice.zip -d ../resources/libimobiledevice_$platform
|
|
||||||
chmod +x ../resources/libimobiledevice_$platform/*
|
|
||||||
elif [[ $MPath != "./resources"* ]]; then
|
|
||||||
mkdir ../resources/libimobiledevice_$platform
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $platform == "linux" && $(uname -m) == "a"* && ! $(ls ../resources/tools/*linux_arm*) ]]; then
|
|
||||||
SaveFile https://github.com/LukeZGD/iOS-OTA-Downgrader-Keys/releases/download/tools/tools_linux_arm.zip tools_linux_arm.zip 59c16f684310bde75e12d4719bb918d448d47630
|
|
||||||
Log "Extracting Linux ARM tools..."
|
|
||||||
unzip -oq tools_linux_arm.zip -d ../resources
|
|
||||||
#SaveFile https://github.com/LukeZGD/iOS-OTA-Downgrader-Keys/releases/download/tools/tools_linux_arm64.zip tools_linux_arm64.zip b95b2bc1589ff1fe1e16ab7ac43e9d88d9880296
|
|
||||||
#Log "Extracting Linux ARM64 tools..."
|
|
||||||
#unzip -oq tools_linux_arm64.zip -d ../resources
|
|
||||||
fi
|
|
||||||
|
|
||||||
touch ../resources/first_run
|
|
||||||
Log "Install script done! Please run the script again to proceed"
|
|
||||||
Log "If your iOS device is plugged in, unplug and replug your device"
|
|
||||||
ExitWin 0
|
|
||||||
}
|
|
@ -1,643 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
DisableBBUpdate="iPad2,3" # Disable baseband update for this device. You can also change this to your device if needed
|
|
||||||
|
|
||||||
FindDevice() {
|
|
||||||
local DeviceIn
|
|
||||||
local i=0
|
|
||||||
local Timeout=999
|
|
||||||
local USB
|
|
||||||
if [[ $1 == "DFU" ]]; then
|
|
||||||
USB=1227
|
|
||||||
elif [[ $1 == "Recovery" ]]; then
|
|
||||||
USB=1281
|
|
||||||
elif [[ $1 == "Restore" ]]; then
|
|
||||||
USB=1297
|
|
||||||
fi
|
|
||||||
[[ -n $2 ]] && Timeout=10
|
|
||||||
|
|
||||||
Log "Finding device in $1 mode..."
|
|
||||||
while (( i < Timeout )); do
|
|
||||||
if [[ $platform == "linux" ]]; then
|
|
||||||
DeviceIn=$(lsusb | grep -c "05ac:$USB")
|
|
||||||
elif [[ $1 == "Restore" ]]; then
|
|
||||||
ideviceinfo2=$($ideviceinfo -s)
|
|
||||||
[[ $? == 0 ]] && DeviceIn=1
|
|
||||||
else
|
|
||||||
[[ $($irecovery -q 2>/dev/null | grep -w "MODE" | cut -c 7-) == "$1" ]] && DeviceIn=1
|
|
||||||
fi
|
|
||||||
if [[ $DeviceIn == 1 ]]; then
|
|
||||||
Log "Found device in $1 mode."
|
|
||||||
DeviceState="$1"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
sleep 1
|
|
||||||
((i++))
|
|
||||||
done
|
|
||||||
|
|
||||||
if [[ $DeviceIn != 1 ]]; then
|
|
||||||
[[ $2 == "error" ]] && Error "Failed to find device in $1 mode. (Timed out)"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
GetDeviceValues() {
|
|
||||||
local ideviceinfo2
|
|
||||||
local version
|
|
||||||
DeviceState=
|
|
||||||
|
|
||||||
if [[ $NoDevice == 1 ]]; then
|
|
||||||
Log "NoDevice argument detected. Skipping device detection"
|
|
||||||
DeviceState="NoDevice"
|
|
||||||
else
|
|
||||||
Log "Finding device in Normal mode..."
|
|
||||||
ideviceinfo2=$($ideviceinfo -s)
|
|
||||||
opt=$?
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $opt != 0 && $NoDevice != 1 ]]; then
|
|
||||||
Log "Finding device in DFU/recovery mode..."
|
|
||||||
DeviceState="$($irecovery -q 2>/dev/null | grep -w "MODE" | cut -c 7-)"
|
|
||||||
elif [[ -n $ideviceinfo2 ]]; then
|
|
||||||
DeviceState="Normal"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $DeviceState == "DFU" || $DeviceState == "Recovery" ]]; then
|
|
||||||
local ProdCut=7
|
|
||||||
ProductType=$($irecovery -qv 2>&1 | grep "Connected to iP" | cut -c 14-)
|
|
||||||
[[ $(echo $ProductType | cut -c 3) == 'h' ]] && ProdCut=9
|
|
||||||
ProductType=$(echo $ProductType | cut -c -$ProdCut)
|
|
||||||
UniqueChipID=$((16#$($irecovery -q | grep "ECID" | cut -c 9-)))
|
|
||||||
ProductVer="Unknown"
|
|
||||||
elif [[ $DeviceState == "Normal" ]]; then
|
|
||||||
ProductType=$(echo "$ideviceinfo2" | grep "ProductType" | cut -c 14-)
|
|
||||||
[[ ! $ProductType ]] && ProductType=$($ideviceinfo | grep "ProductType" | cut -c 14-)
|
|
||||||
ProductVer=$(echo "$ideviceinfo2" | grep "ProductVer" | cut -c 17-)
|
|
||||||
UniqueChipID=$(echo "$ideviceinfo2" | grep "UniqueChipID" | cut -c 15-)
|
|
||||||
UniqueDeviceID=$(echo "$ideviceinfo2" | grep "UniqueDeviceID" | cut -c 17-)
|
|
||||||
version="(iOS $ProductVer) "
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $EntryDevice == 1 ]]; then
|
|
||||||
ProductType=
|
|
||||||
UniqueChipID=
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -n $DeviceState ]]; then
|
|
||||||
if [[ ! $ProductType ]]; then
|
|
||||||
read -p "$(Input 'Enter ProductType (eg. iPad2,1):')" ProductType
|
|
||||||
fi
|
|
||||||
if [[ ! $UniqueChipID || $UniqueChipID == 0 ]]; then
|
|
||||||
read -p "$(Input 'Enter UniqueChipID (ECID, must be decimal):')" UniqueChipID
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo -e "\n${Color_R}[Error] No device detected. Please connect the iOS device to proceed."
|
|
||||||
echo "${Color_Y}* Make sure to also trust this computer by selecting \"Trust\" at the pop-up."
|
|
||||||
[[ $platform != "linux" ]] && echo "* Double-check if the device is being detected by iTunes/Finder."
|
|
||||||
[[ $platform == "macos" ]] && echo "* Also try installing libimobiledevice and libirecovery from Homebrew/MacPorts before retrying."
|
|
||||||
[[ $platform == "linux" ]] && echo "* Also try running \"sudo systemctl restart usbmuxd\" before retrying."
|
|
||||||
echo "* Recovery and DFU mode are also applicable."
|
|
||||||
echo "* For more details, read the \"Troubleshooting\" wiki page in GitHub."
|
|
||||||
Echo "* Troubleshooting link: https://github.com/LukeZGD/iOS-OTA-Downgrader/wiki/Troubleshooting"
|
|
||||||
ExitWin 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
Firmware=resources/firmware/$ProductType
|
|
||||||
Baseband=0
|
|
||||||
LatestVer="9.3.6"
|
|
||||||
LatestBuildVer="13G37"
|
|
||||||
|
|
||||||
if [[ $ProductType == "iPad2,2" ]]; then
|
|
||||||
LatestVer="9.3.5"
|
|
||||||
LatestBuildVer="13G36"
|
|
||||||
Baseband="ICE3_04.12.09_BOOT_02.13.Release.bbfw"
|
|
||||||
BasebandSHA1="e6f54acc5d5652d39a0ef9af5589681df39e0aca"
|
|
||||||
|
|
||||||
elif [[ $ProductType == "iPad2,3" ]]; then
|
|
||||||
Baseband="Phoenix-3.6.03.Release.bbfw"
|
|
||||||
BasebandSHA1="8d4efb2214344ea8e7c9305392068ab0a7168ba4"
|
|
||||||
|
|
||||||
elif [[ $ProductType == "iPhone3,3" ]]; then
|
|
||||||
LatestBuildVer="11D257"
|
|
||||||
Baseband="Phoenix-3.0.04.Release.bbfw"
|
|
||||||
BasebandSHA1="a507ee2fe061dfbf8bee7e512df52ade8777e113"
|
|
||||||
|
|
||||||
elif [[ $ProductType == "iPad2,6" || $ProductType == "iPad2,7" ]]; then
|
|
||||||
Baseband="Mav5-11.80.00.Release.bbfw"
|
|
||||||
BasebandSHA1="aa52cf75b82fc686f94772e216008345b6a2a750"
|
|
||||||
|
|
||||||
elif [[ $ProductType == "iPad3,2" || $ProductType == "iPad3,3" ]]; then
|
|
||||||
Baseband="Mav4-6.7.00.Release.bbfw"
|
|
||||||
BasebandSHA1="a5d6978ecead8d9c056250ad4622db4d6c71d15e"
|
|
||||||
|
|
||||||
elif [[ $ProductType == "iPhone4,1" ]]; then
|
|
||||||
Baseband="Trek-6.7.00.Release.bbfw"
|
|
||||||
BasebandSHA1="22a35425a3cdf8fa1458b5116cfb199448eecf49"
|
|
||||||
|
|
||||||
elif [[ $ProductType == "iPad3,5" || $ProductType == "iPad3,6" ||
|
|
||||||
$ProductType == "iPhone5,1" || $ProductType == "iPhone5,2" ]]; then
|
|
||||||
LatestVer="10.3.4"
|
|
||||||
LatestBuildVer="14G61"
|
|
||||||
Baseband="Mav5-11.80.00.Release.bbfw"
|
|
||||||
BasebandSHA1="8951cf09f16029c5c0533e951eb4c06609d0ba7f"
|
|
||||||
|
|
||||||
elif [[ $ProductType == "iPad4,2" || $ProductType == "iPad4,3" || $ProductType == "iPad4,5" ||
|
|
||||||
$ProductType == "iPhone5"* || $ProductType == "iPhone6"* ]]; then
|
|
||||||
LatestBuildVer="14G60"
|
|
||||||
Baseband="Mav7Mav8-7.60.00.Release.bbfw"
|
|
||||||
BasebandSHA1="f397724367f6bed459cf8f3d523553c13e8ae12c"
|
|
||||||
if [[ $ProductType == "iPhone5"* ]]; then
|
|
||||||
Log "iPhone 5C detected. Your device does not support OTA downgrades."
|
|
||||||
Echo "* Functions will be limited to entering kDFU and restoring with blobs."
|
|
||||||
fi
|
|
||||||
|
|
||||||
elif [[ $ProductType == "iPhone3"* ]]; then
|
|
||||||
LatestBuildVer="11D257"
|
|
||||||
Baseband="ICE3_04.12.09_BOOT_02.13.Release.bbfw"
|
|
||||||
BasebandSHA1="007365a5655ac2f9fbd1e5b6dba8f4be0513e364"
|
|
||||||
|
|
||||||
elif [[ $ProductType == "iPad2"* || $ProductType == "iPad3,1" || $ProductType == "iPod5,1" ]]; then
|
|
||||||
LatestVer="9.3.5"
|
|
||||||
LatestBuildVer="13G36"
|
|
||||||
|
|
||||||
elif [[ $ProductType == "iPad3,4" ]]; then
|
|
||||||
LatestVer="10.3.3"
|
|
||||||
LatestBuildVer="14G60"
|
|
||||||
|
|
||||||
elif [[ $ProductType == "iPad4,1" || $ProductType == "iPad4,4" ]]; then
|
|
||||||
BasebandURL=0
|
|
||||||
else
|
|
||||||
Error "Your device $ProductType ${version}is not supported."
|
|
||||||
fi
|
|
||||||
[[ $BasebandURL != 0 ]] && BasebandURL=$(cat $Firmware/$LatestBuildVer/url 2>/dev/null)
|
|
||||||
|
|
||||||
if [[ $ProductType == "iPhone3"* ]]; then
|
|
||||||
DeviceProc=4
|
|
||||||
if [[ $ProductType != "iPhone3,2" ]]; then
|
|
||||||
Log "$ProductType detected. iPhone4Down functions enabled."
|
|
||||||
Echo "* This script uses powdersn0w by dora2ios"
|
|
||||||
else
|
|
||||||
Log "$ProductType detected. Your device is not supported by powdersn0w (yet)"
|
|
||||||
Echo "* Functions will be limited to entering kDFU and restoring with blobs."
|
|
||||||
fi
|
|
||||||
elif [[ $ProductType == "iPad2"* || $ProductType == "iPad3,1" || $ProductType == "iPad3,2" ||
|
|
||||||
$ProductType == "iPad3,3" || $ProductType == "iPhone4,1" || $ProductType == "iPod5,1" ]]; then
|
|
||||||
DeviceProc=5
|
|
||||||
elif [[ $ProductType == "iPhone5"* || $ProductType == "iPad3"* ]]; then
|
|
||||||
DeviceProc=6
|
|
||||||
elif [[ $ProductType == "iPhone6"* || $ProductType == "iPad4"* ]]; then
|
|
||||||
DeviceProc=7
|
|
||||||
fi
|
|
||||||
|
|
||||||
HWModel=$(cat $Firmware/hwmodel)
|
|
||||||
|
|
||||||
if [[ ! $BasebandURL || ! $HWModel ]]; then
|
|
||||||
Error "Missing BasebandURL and/or HWModel values. Is the firmware folder missing?" \
|
|
||||||
"Reinstall dependencies and try again. For more details, read the \"Troubleshooting\" wiki page in GitHub"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $ProductType == "iPod5,1" ]]; then
|
|
||||||
iBSS="${HWModel}ap"
|
|
||||||
iBSSBuildVer="10B329"
|
|
||||||
elif [[ $ProductType == "iPad3,1" || $ProductType == "iPhone3"* ]]; then
|
|
||||||
iBSS="${HWModel}ap"
|
|
||||||
iBSSBuildVer="11D257"
|
|
||||||
elif [[ $ProductType == "iPhone6"* ]]; then
|
|
||||||
iBSS="iphone6"
|
|
||||||
IPSWType="iPhone_4.0_64bit"
|
|
||||||
elif [[ $ProductType == "iPad4"* ]]; then
|
|
||||||
iBSS="ipad4"
|
|
||||||
IPSWType="iPad_64bit"
|
|
||||||
else
|
|
||||||
iBSS="$HWModel"
|
|
||||||
iBSSBuildVer="12H321"
|
|
||||||
fi
|
|
||||||
[[ ! $IPSWType ]] && IPSWType="$ProductType"
|
|
||||||
iBEC="iBEC.$iBSS.RELEASE"
|
|
||||||
iBECb="iBEC.${iBSS}b.RELEASE"
|
|
||||||
iBSSb="iBSS.${iBSS}b.RELEASE"
|
|
||||||
iBSS="iBSS.$iBSS.RELEASE"
|
|
||||||
SEP="sep-firmware.$HWModel.RELEASE.im4p"
|
|
||||||
|
|
||||||
Log "$ProductType ${version}connected in $DeviceState mode."
|
|
||||||
Log "ECID: $UniqueChipID"
|
|
||||||
}
|
|
||||||
|
|
||||||
EnterPwnDFU() {
|
|
||||||
local pwnDFUTool
|
|
||||||
local pwnDFUDevice
|
|
||||||
local pwnD=1
|
|
||||||
local Selection=()
|
|
||||||
|
|
||||||
if [[ $ProductType == "iPhone3,1" && $platform != "macos" ]]; then
|
|
||||||
pwnDFUTool="$pwnedDFU"
|
|
||||||
if [[ $platform == "win" ]]; then
|
|
||||||
Log "iPhone 4 device detected in DFU mode."
|
|
||||||
Echo "* Make sure that your device is already in pwnDFU mode."
|
|
||||||
Echo "* If your device is not in pwnDFU mode, the restore will not proceed!"
|
|
||||||
Input "Press Enter/Return to continue (or press Ctrl+C to cancel)"
|
|
||||||
read -s
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
elif [[ $DeviceProc == 4 || $DeviceProc == 7 ]]; then
|
|
||||||
[[ $platform == "macos" ]] && Selection+=("ipwnder_lite" "iPwnder32")
|
|
||||||
Input "PwnDFU Tool Option"
|
|
||||||
Echo "* This option selects what tool to use to put your device in pwnDFU mode."
|
|
||||||
Echo "* If unsure, select 1. If 1 does not work, try selecting the other option."
|
|
||||||
if [[ $platform == "linux" ]]; then
|
|
||||||
Selection+=("pwnedDFU" "ipwndfu")
|
|
||||||
Echo "* Make sure to have python2 installed first before proceeding."
|
|
||||||
fi
|
|
||||||
Echo "* This option is set to ${Selection[0]} by default (1)."
|
|
||||||
Input "Select your option:"
|
|
||||||
select opt in "${Selection[@]}"; do
|
|
||||||
case $opt in
|
|
||||||
"ipwnder_lite" ) pwnDFUTool="$ipwnder_lite"; break;;
|
|
||||||
"iPwnder32" ) pwnDFUTool="$ipwnder32"; break;;
|
|
||||||
"ipwndfu" ) pwnDFUTool="ipwndfu"; SaveExternal ipwndfu; break;;
|
|
||||||
"pwnedDFU" ) pwnDFUTool="$pwnedDFU"; break;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
else
|
|
||||||
Echo "* Make sure to have python2 installed first before proceeding."
|
|
||||||
pwnDFUTool="ipwndfu"
|
|
||||||
fi
|
|
||||||
|
|
||||||
Log "Entering pwnDFU mode with: $pwnDFUTool"
|
|
||||||
if [[ $pwnDFUTool == "ipwndfu" ]]; then
|
|
||||||
cd resources/ipwndfu
|
|
||||||
$ipwndfu -p
|
|
||||||
pwnDFUDevice=$?
|
|
||||||
if [[ $DeviceProc == 7 ]]; then
|
|
||||||
Log "Running rmsigchks.py..."
|
|
||||||
$rmsigchks
|
|
||||||
pwnDFUDevice=$?
|
|
||||||
cd ../..
|
|
||||||
else
|
|
||||||
cd ../..
|
|
||||||
SendPwnediBSS
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
$pwnDFUTool -p
|
|
||||||
pwnDFUDevice=$?
|
|
||||||
if [[ $DeviceProc == 7 && $pwnDFUTool == "$pwnedDFU" ]]; then
|
|
||||||
SaveExternal ipwndfu
|
|
||||||
cd resources/ipwndfu
|
|
||||||
Log "Running rmsigchks.py..."
|
|
||||||
$rmsigchks
|
|
||||||
pwnDFUDevice=$?
|
|
||||||
cd ../..
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [[ $DeviceProc == 4 || $DeviceProc == 7 ]]; then
|
|
||||||
pwnD=$($irecovery -q | grep -c "PWND")
|
|
||||||
SendiBSS=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $DeviceProc == 4 ]]; then
|
|
||||||
if [[ $pwnD != 1 ]]; then
|
|
||||||
Error "Failed to enter pwnDFU mode. Please run the script again. Note that kDFU mode will NOT work!" \
|
|
||||||
"Exit DFU mode first by holding the TOP and HOME buttons for about 15 seconds."
|
|
||||||
else
|
|
||||||
Log "Device in pwnDFU mode detected."
|
|
||||||
fi
|
|
||||||
elif [[ $pwnDFUDevice != 0 && $pwnD != 1 ]]; then
|
|
||||||
echo -e "\n${Color_R}[Error] Failed to enter pwnDFU mode. Please run the script again"
|
|
||||||
echo "${Color_Y}* If the screen is black, exit DFU mode first by holding the TOP and HOME buttons for about 15 seconds."
|
|
||||||
echo "* This step may fail a lot, especially on Linux, and unfortunately there is nothing I can do about the low success rates."
|
|
||||||
echo "* The only option is to make sure you are using an Intel or Apple Silicon device, and to try multiple times."
|
|
||||||
echo "* For more details, read the \"Troubleshooting\" wiki page in GitHub"
|
|
||||||
Echo "* Troubleshooting link: https://github.com/LukeZGD/iOS-OTA-Downgrader/wiki/Troubleshooting"
|
|
||||||
ExitWin 1
|
|
||||||
elif [[ $pwnDFUDevice == 0 ]]; then
|
|
||||||
Log "Device in pwnDFU mode detected."
|
|
||||||
else
|
|
||||||
Log "WARNING - Failed to detect device in pwnDFU mode."
|
|
||||||
Echo "* If the device entered pwnDFU mode successfully, you may continue"
|
|
||||||
Echo "* If entering pwnDFU failed, you may have to force restart your device and start over"
|
|
||||||
Input "Press Enter/Return to continue (or press Ctrl+C to cancel)"
|
|
||||||
read -s
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
Recovery() {
|
|
||||||
local RecoveryDFU
|
|
||||||
|
|
||||||
if [[ $DeviceState != "Recovery" ]]; then
|
|
||||||
Log "Entering recovery mode..."
|
|
||||||
$ideviceenterrecovery $UniqueDeviceID >/dev/null
|
|
||||||
FindDevice "Recovery"
|
|
||||||
fi
|
|
||||||
[[ $1 == "only" ]] && return
|
|
||||||
|
|
||||||
Echo "* Get ready to enter DFU mode."
|
|
||||||
read -p "$(Input 'Select Y to continue, N to exit recovery (Y/n)')" RecoveryDFU
|
|
||||||
if [[ $RecoveryDFU == 'N' || $RecoveryDFU == 'n' ]]; then
|
|
||||||
Log "Exiting recovery mode."
|
|
||||||
$irecovery -n
|
|
||||||
ExitWin 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
Echo "* Hold TOP and HOME buttons for 10 seconds."
|
|
||||||
for i in {10..01}; do
|
|
||||||
echo -n "$i "
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
echo -e "\n$(Echo '* Release TOP button and hold HOME button for 8 seconds.')"
|
|
||||||
for i in {08..01}; do
|
|
||||||
echo -n "$i "
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
echo
|
|
||||||
|
|
||||||
FindDevice "DFU" error
|
|
||||||
EnterPwnDFU
|
|
||||||
}
|
|
||||||
|
|
||||||
RecoveryExit() {
|
|
||||||
read -p "$(Input 'Attempt to exit recovery mode? (Y/n)')" Selection
|
|
||||||
if [[ $Selection != 'N' && $Selection != 'n' ]]; then
|
|
||||||
Log "Exiting recovery mode."
|
|
||||||
$irecovery -n
|
|
||||||
fi
|
|
||||||
ExitWin 0
|
|
||||||
}
|
|
||||||
|
|
||||||
PatchiBSS() {
|
|
||||||
if [[ $iBSSBuildVer == $BuildVer && -e "$IPSW.ipsw" ]]; then
|
|
||||||
Log "Extracting iBSS from IPSW..."
|
|
||||||
mkdir -p saved/$ProductType 2>/dev/null
|
|
||||||
unzip -o -j $IPSW.ipsw Firmware/dfu/$iBSS.dfu -d saved/$ProductType
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ! -e saved/$ProductType/$iBSS.dfu ]]; then
|
|
||||||
Log "Downloading iBSS..."
|
|
||||||
$partialzip "$(cat $Firmware/$iBSSBuildVer/url)" Firmware/dfu/$iBSS.dfu $iBSS.dfu
|
|
||||||
mkdir -p saved/$ProductType 2>/dev/null
|
|
||||||
mv $iBSS.dfu saved/$ProductType/
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ! -e saved/$ProductType/$iBSS.dfu ]]; then
|
|
||||||
Error "Failed to save iBSS. Please run the script again"
|
|
||||||
fi
|
|
||||||
|
|
||||||
Log "Patching iBSS..."
|
|
||||||
$bspatch saved/$ProductType/$iBSS.dfu tmp/pwnediBSS resources/patches/$iBSS.patch
|
|
||||||
}
|
|
||||||
|
|
||||||
SendPwnediBSS() {
|
|
||||||
if [[ $DeviceProc == 5 ]]; then
|
|
||||||
Echo "* You need to have an Arduino and USB Host Shield to proceed for PWNED DFU mode."
|
|
||||||
Echo "* If you do not know what you are doing, select N and restart your device in normal mode before retrying."
|
|
||||||
read -p "$(Input 'Is your device in PWNED DFU mode using synackuk checkm8-a5? (y/N):')" opt
|
|
||||||
if [[ $opt != "Y" && $opt != "y" && $DeviceProc == 5 ]]; then
|
|
||||||
echo -e "\n${Color_R}[Error] 32-bit A5 device is not in PWNED DFU mode. ${Color_N}"
|
|
||||||
echo "${Color_Y}* Please put the device in normal mode and jailbroken before proceeding. ${Color_N}"
|
|
||||||
echo "${Color_Y}* Exit DFU mode by holding the TOP and HOME buttons for 15 seconds. ${Color_N}"
|
|
||||||
echo "${Color_Y}* For usage of kDFU/pwnDFU, read the \"Troubleshooting\" wiki page in GitHub ${Color_N}"
|
|
||||||
ExitWin 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo
|
|
||||||
Input "No iBSS Option"
|
|
||||||
Echo "* If you already have sent pwned iBSS manually, select Y. If not, select N."
|
|
||||||
Echo "* This option is disabled by default (N)."
|
|
||||||
read -p "$(Input 'Enable this option? (y/N):')" SendiBSS
|
|
||||||
if [[ $SendiBSS == 'Y' || $SendiBSS == 'y' ]]; then
|
|
||||||
Log "No iBSS option enabled by user."
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo
|
|
||||||
SaveExternal ipwndfu
|
|
||||||
PatchiBSS
|
|
||||||
Log "Sending iBSS..."
|
|
||||||
cd resources/ipwndfu
|
|
||||||
$ipwndfu -l ../../tmp/pwnediBSS
|
|
||||||
if [[ $? != 0 ]]; then
|
|
||||||
cd ../..
|
|
||||||
echo -e "\n${Color_R}[Error] Failed to send iBSS. Your device has likely failed to enter PWNED DFU mode. ${Color_N}"
|
|
||||||
echo "${Color_Y}* Please exit DFU and (re-)enter PWNED DFU mode before retrying. ${Color_N}"
|
|
||||||
Echo "* If you already have sent pwned iBSS manually, no need to exit DFU, just retry and select Y for kDFU mode."
|
|
||||||
Echo "* Exit DFU mode by holding the TOP and HOME buttons for 15 seconds."
|
|
||||||
ExitWin 1
|
|
||||||
fi
|
|
||||||
cd ../..
|
|
||||||
}
|
|
||||||
|
|
||||||
kDFU() {
|
|
||||||
local kloader="kloader"
|
|
||||||
local VerDetect=$(echo $ProductVer | cut -c 1)
|
|
||||||
|
|
||||||
if [[ $DeviceState != "Normal" ]]; then
|
|
||||||
Log "Device is already in $DeviceState mode"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
PatchiBSS
|
|
||||||
Log "Running iproxy for SSH..."
|
|
||||||
$iproxy 2222 22 >/dev/null &
|
|
||||||
iproxyPID=$!
|
|
||||||
sleep 2
|
|
||||||
|
|
||||||
Log "Please read the message below:"
|
|
||||||
Echo "1. Make sure to have installed the requirements from Cydia."
|
|
||||||
Echo " - Only proceed if you have followed Section 2 (and 2.1 for iOS 10) in the GitHub wiki."
|
|
||||||
Echo " - You will be prompted to enter the root password of your iOS device twice."
|
|
||||||
Echo " - The default root password is \"alpine\""
|
|
||||||
Echo " - Do not worry that your input is not visible, it is still being entered."
|
|
||||||
Echo "2. Afterwards, the device will disconnect and its screen will stay black."
|
|
||||||
Echo " - Proceed to either press the TOP/HOME button, or unplug and replug the device."
|
|
||||||
sleep 3
|
|
||||||
Input "Press Enter/Return to continue (or press Ctrl+C to cancel)"
|
|
||||||
read -s
|
|
||||||
|
|
||||||
if [[ $VerDetect == 1 ]]; then
|
|
||||||
Selection=("h3lix" "kok3shiX")
|
|
||||||
Input "Select the jailbreak used on the device:"
|
|
||||||
Echo "* For kok3shiX, make sure to have turned on \"use legacy patches\" before jailbreaking."
|
|
||||||
select opt in "${Selection[@]}"; do
|
|
||||||
case $opt in
|
|
||||||
"h3lix" ) kloader+="_hgsp"; break;;
|
|
||||||
* ) break;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
elif [[ $VerDetect == 5 ]]; then
|
|
||||||
kloader+="5"
|
|
||||||
fi
|
|
||||||
|
|
||||||
Log "Entering kDFU mode..."
|
|
||||||
Echo "* This may take a while."
|
|
||||||
$SCP -P 2222 resources/tools/$kloader tmp/pwnediBSS root@127.0.0.1:/tmp
|
|
||||||
if [[ $? == 0 ]]; then
|
|
||||||
$SSH -p 2222 root@127.0.0.1 "chmod +x /tmp/$kloader; /tmp/$kloader /tmp/pwnediBSS" &
|
|
||||||
else
|
|
||||||
Log "Failed to connect to device via USB SSH."
|
|
||||||
Echo "* For Linux users, try running \"sudo systemctl restart usbmuxd\" before retrying USB SSH."
|
|
||||||
if [[ $VerDetect == 1 ]]; then
|
|
||||||
Echo "* Try to re-install both OpenSSH and Dropbear, reboot, re-jailbreak, and try again."
|
|
||||||
Echo "* Alternatively, place your device in DFU mode (see \"Troubleshooting\" wiki page for details)"
|
|
||||||
Echo "* Troubleshooting link: https://github.com/LukeZGD/iOS-OTA-Downgrader/wiki/Troubleshooting#dfu-advanced-menu-for-32-bit-devices"
|
|
||||||
elif [[ $VerDetect == 5 ]]; then
|
|
||||||
Echo "* Try to re-install OpenSSH, reboot, and try again."
|
|
||||||
else
|
|
||||||
Echo "* Try to re-install OpenSSH, reboot, re-jailbreak, and try again."
|
|
||||||
Echo "* Alternatively, you may use kDFUApp from my Cydia repo (see \"Troubleshooting\" wiki page for details)"
|
|
||||||
Echo "* Troubleshooting link: https://github.com/LukeZGD/iOS-OTA-Downgrader/wiki/Troubleshooting#dfu-advanced-menu-kdfu-mode"
|
|
||||||
fi
|
|
||||||
Input "Press Enter/Return to try again with Wi-Fi SSH (or press Ctrl+C to cancel and try again)"
|
|
||||||
read -s
|
|
||||||
Log "Will try again with Wi-Fi SSH..."
|
|
||||||
Echo "* Make sure that your iOS device and PC/Mac are on the same network."
|
|
||||||
Echo "* To get your device's IP Address, go to: Settings -> Wi-Fi/WLAN -> tap the 'i' next to your network name"
|
|
||||||
read -p "$(Input 'Enter the IP Address of your device:')" IPAddress
|
|
||||||
$SCP resources/tools/$kloader tmp/pwnediBSS root@$IPAddress:/tmp
|
|
||||||
if [[ $? != 0 ]]; then
|
|
||||||
Error "Failed to connect to device via SSH, cannot continue."
|
|
||||||
fi
|
|
||||||
$SSH root@$IPAddress "chmod +x /tmp/$kloader; /tmp/$kloader /tmp/pwnediBSS" &
|
|
||||||
fi
|
|
||||||
FindDevice "DFU"
|
|
||||||
}
|
|
||||||
|
|
||||||
Remove4DL() {
|
|
||||||
local Link
|
|
||||||
if [[ ! -e saved/$ProductType/$1_p ]]; then
|
|
||||||
Link=$(cat $Firmware/11D257/url)
|
|
||||||
[[ -n $2 ]] && Link=$(cat $Firmware/$2/url)
|
|
||||||
Log "Downloading $1..."
|
|
||||||
$partialzip $Link Firmware/dfu/$1.${HWModel}ap.RELEASE.dfu $1
|
|
||||||
mkdir -p saved/$ProductType 2>/dev/null
|
|
||||||
cp $1 saved/$ProductType/$1_p
|
|
||||||
mv $1 tmp/
|
|
||||||
else
|
|
||||||
cp saved/$ProductType/$1_p tmp/$1
|
|
||||||
fi
|
|
||||||
Log "Patching $1..."
|
|
||||||
if [[ -n $2 ]]; then
|
|
||||||
$bspatch tmp/iBSS tmp/pwnediBSS resources/patches/$1.${HWModel}ap.$2.patch
|
|
||||||
else
|
|
||||||
$bspatch tmp/$1 tmp/pwned$1 resources/patches/$1.${HWModel}ap.RELEASE.patch
|
|
||||||
fi
|
|
||||||
Log "Booting $1..."
|
|
||||||
$irecovery -f tmp/pwned$1
|
|
||||||
}
|
|
||||||
|
|
||||||
Remove4() {
|
|
||||||
Input "Select option:"
|
|
||||||
select opt in "Disable exploit" "Enable exploit" "(Any other key to exit)"; do
|
|
||||||
case $opt in
|
|
||||||
"Disable exploit" ) Rec=0; break;;
|
|
||||||
"Enable exploit" ) Rec=2; break;;
|
|
||||||
* ) exit 0;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
if [[ $ProductType == "iPhone3,1" ]]; then
|
|
||||||
Remove4DL iBSS 8L1
|
|
||||||
else
|
|
||||||
Remove4DL iBSS
|
|
||||||
Remove4DL iBEC
|
|
||||||
fi
|
|
||||||
sleep 2
|
|
||||||
Log "Running commands..."
|
|
||||||
$irecovery -c "setenv boot-partition $Rec"
|
|
||||||
$irecovery -c "saveenv"
|
|
||||||
$irecovery -c "setenv auto-boot true"
|
|
||||||
$irecovery -c "saveenv"
|
|
||||||
$irecovery -c "reset"
|
|
||||||
Log "Done!"
|
|
||||||
Echo "* If disabling the exploit did not work and the device is still in recovery mode screen after restore:"
|
|
||||||
Echo "* You may try another method for clearing NVRAM. See the \"Troubleshooting\" wiki page for more details"
|
|
||||||
Echo "* Troubleshooting link: https://github.com/LukeZGD/iOS-OTA-Downgrader/wiki/Troubleshooting#clearing-nvram"
|
|
||||||
}
|
|
||||||
|
|
||||||
Ramdisk4() {
|
|
||||||
Ramdisk=(
|
|
||||||
058-1056-002.dmg
|
|
||||||
DeviceTree.n90ap.img3
|
|
||||||
iBEC.n90ap.RELEASE.dfu
|
|
||||||
iBSS.n90ap.RELEASE.dfu
|
|
||||||
kernelcache.release.n90
|
|
||||||
)
|
|
||||||
|
|
||||||
Echo "Mode: Ramdisk"
|
|
||||||
Echo "* This uses files and script from 4tify by Zurac-Apps"
|
|
||||||
Echo "* Make sure that your device is already in DFU mode"
|
|
||||||
|
|
||||||
if [[ ! $(ls resources/ramdisk) ]]; then
|
|
||||||
JailbreakLink=https://github.com/Zurac-Apps/4tify/raw/ad319e2774f54dc3a355812cc287f39f7c38cc66
|
|
||||||
cd tmp
|
|
||||||
mkdir ramdisk
|
|
||||||
cd ramdisk
|
|
||||||
Log "Downloading ramdisk files from 4tify repo..."
|
|
||||||
for file in "${Ramdisk[@]}"; do
|
|
||||||
curl -L $JailbreakLink/support_files/7.1.2/Ramdisk/$file -o $file
|
|
||||||
done
|
|
||||||
cd ..
|
|
||||||
cp -R ramdisk ../resources
|
|
||||||
cd ..
|
|
||||||
fi
|
|
||||||
|
|
||||||
Log "Sending iBSS..."
|
|
||||||
$irecovery -f resources/ramdisk/iBSS.n90ap.RELEASE.dfu
|
|
||||||
sleep 2
|
|
||||||
Log "Sending iBEC..."
|
|
||||||
$irecovery -f resources/ramdisk/iBEC.n90ap.RELEASE.dfu
|
|
||||||
FindDevice "Recovery" error
|
|
||||||
|
|
||||||
Log "Booting..."
|
|
||||||
$irecovery -f resources/ramdisk/DeviceTree.n90ap.img3
|
|
||||||
$irecovery -c devicetree
|
|
||||||
$irecovery -f resources/ramdisk/058-1056-002.dmg
|
|
||||||
$irecovery -c ramdisk
|
|
||||||
$irecovery -f resources/ramdisk/kernelcache.release.n90
|
|
||||||
$irecovery -c bootx
|
|
||||||
FindDevice "Restore" error
|
|
||||||
|
|
||||||
Log "Device should now be in SSH ramdisk mode."
|
|
||||||
echo
|
|
||||||
Echo "* To access SSH ramdisk, run iproxy first:"
|
|
||||||
Echo " iproxy 2022 22"
|
|
||||||
Echo "* Then SSH to 127.0.0.1:2022"
|
|
||||||
Echo " ssh -p 2022 -oHostKeyAlgorithms=+ssh-rsa root@127.0.0.1"
|
|
||||||
Echo "* Enter root password: alpine"
|
|
||||||
Echo "* Mount filesystems with these commands (iOS 5+):"
|
|
||||||
Echo " mount_hfs /dev/disk0s1s1 /mnt1"
|
|
||||||
Echo " mount_hfs /dev/disk0s1s2 /mnt1/private/var"
|
|
||||||
Echo "* If your device is on iOS 4, use these commands instead:"
|
|
||||||
Echo " fsck_hfs /dev/disk0s1"
|
|
||||||
Echo " mount_hfs /dev/disk0s1 /mnt1"
|
|
||||||
Echo " mount_hfs /dev/disk0s2s1 /mnt/private/var"
|
|
||||||
Echo "* To reboot, use this command:"
|
|
||||||
Echo " reboot_bak"
|
|
||||||
}
|
|
||||||
|
|
||||||
EnterPwnREC() {
|
|
||||||
local Attempt=1
|
|
||||||
|
|
||||||
if [[ $ProductType == "iPad4,4" || $ProductType == "iPad4,5" ]]; then
|
|
||||||
Log "iPad mini 2 device detected. Setting iBSS and iBEC to \"ipad4b\""
|
|
||||||
iBEC=$iBECb
|
|
||||||
iBSS=$iBSSb
|
|
||||||
fi
|
|
||||||
|
|
||||||
while (( Attempt < 4 )); do
|
|
||||||
Log "Entering pwnREC mode... (Attempt $Attempt)"
|
|
||||||
Log "Sending iBSS..."
|
|
||||||
$irecovery -f $IPSWCustom/Firmware/dfu/$iBSS.im4p
|
|
||||||
$irecovery -f $IPSWCustom/Firmware/dfu/$iBSS.im4p
|
|
||||||
Log "Sending iBEC..."
|
|
||||||
$irecovery -f $IPSWCustom/Firmware/dfu/$iBEC.im4p
|
|
||||||
sleep 3
|
|
||||||
FindDevice "Recovery" timeout
|
|
||||||
[[ $? == 0 ]] && break
|
|
||||||
Echo "* You may also try to unplug and replug your device"
|
|
||||||
((Attempt++))
|
|
||||||
done
|
|
||||||
|
|
||||||
if (( Attempt == 4 )); then
|
|
||||||
Error "Failed to enter pwnREC mode. You may have to force restart your device and start over entering pwnDFU mode again"
|
|
||||||
fi
|
|
||||||
}
|
|
@ -1,312 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
FRBaseband() {
|
|
||||||
local BasebandSHA1L
|
|
||||||
|
|
||||||
if [[ $DeviceProc == 7 || $1 == "latest" ]]; then
|
|
||||||
mkdir -p saved/baseband 2>/dev/null
|
|
||||||
cp -f $IPSWRestore/Firmware/$Baseband saved/baseband/
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ! -e saved/baseband/$Baseband ]]; then
|
|
||||||
Log "Downloading baseband..."
|
|
||||||
$partialzip $BasebandURL Firmware/$Baseband $Baseband
|
|
||||||
$partialzip $BasebandURL BuildManifest.plist BuildManifest.plist
|
|
||||||
mkdir -p saved/$ProductType saved/baseband 2>/dev/null
|
|
||||||
mv $Baseband saved/baseband/
|
|
||||||
mv BuildManifest.plist saved/$ProductType/
|
|
||||||
BuildManifest="saved/$ProductType/BuildManifest.plist"
|
|
||||||
elif [[ $DeviceProc != 7 ]]; then
|
|
||||||
BuildManifest="saved/$ProductType/BuildManifest.plist"
|
|
||||||
fi
|
|
||||||
|
|
||||||
BasebandSHA1L=$($sha1sum saved/baseband/$Baseband | awk '{print $1}')
|
|
||||||
if [[ ! -e $(ls saved/baseband/$Baseband) || $BasebandSHA1L != $BasebandSHA1 ]]; then
|
|
||||||
rm -f saved/baseband/$Baseband $BuildManifest
|
|
||||||
if [[ $DeviceProc == 7 || $platform == "win" ]]; then
|
|
||||||
Error "Downloading/verifying baseband failed. Please run the script again"
|
|
||||||
else
|
|
||||||
Log "Downloading/verifying baseband failed. Proceeding with --latest-baseband flag"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
FutureRestore() {
|
|
||||||
local ExtraArgs=()
|
|
||||||
|
|
||||||
Log "Proceeding to futurerestore..."
|
|
||||||
if [[ $IPSWA7 != 1 ]]; then
|
|
||||||
ExtraArgs+=("--use-pwndfu")
|
|
||||||
cd resources
|
|
||||||
$SimpleHTTPServer &
|
|
||||||
ServerPID=$!
|
|
||||||
cd ..
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $DeviceProc == 7 ]]; then
|
|
||||||
ExtraArgs+=("-s" "$IPSWRestore/Firmware/all_flash/$SEP" "-m" "$BuildManifest")
|
|
||||||
if [[ $IPSWA7 != 1 ]]; then
|
|
||||||
# Send dummy file for device detection
|
|
||||||
$irecovery -f README.md
|
|
||||||
sleep 2
|
|
||||||
fi
|
|
||||||
elif [[ $SendiBSS != 1 ]]; then
|
|
||||||
ExtraArgs+=("--no-ibss")
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $Baseband == 0 ]]; then
|
|
||||||
Log "Device $ProductType has no baseband/disabled baseband update"
|
|
||||||
ExtraArgs+=("--no-baseband")
|
|
||||||
else
|
|
||||||
FRBaseband $1
|
|
||||||
if [[ -e saved/baseband/$Baseband && -e $BuildManifest ]]; then
|
|
||||||
ExtraArgs+=("-b" "saved/baseband/$Baseband" "-p" "$BuildManifest")
|
|
||||||
else
|
|
||||||
rm -f saved/baseband/$Baseband $BuildManifest
|
|
||||||
ExtraArgs+=("--latest-baseband")
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
Log "Running futurerestore with command: $futurerestore -t \"$SHSH\" ${ExtraArgs[*]} \"$IPSWRestore.ipsw\""
|
|
||||||
$futurerestore -t "$SHSH" "${ExtraArgs[@]}" "$IPSWRestore.ipsw"
|
|
||||||
echo
|
|
||||||
Log "Restoring done! Read the message below if any error has occurred:"
|
|
||||||
Echo "* Please read the \"Troubleshooting\" wiki page in GitHub before opening any issue!"
|
|
||||||
Echo "* Your problem may have already been addressed within the wiki page."
|
|
||||||
Echo "* If opening an issue in GitHub, please provide a FULL log/output. Otherwise, your issue may be dismissed."
|
|
||||||
echo
|
|
||||||
}
|
|
||||||
|
|
||||||
DowngradeOther() {
|
|
||||||
local FWKeys
|
|
||||||
local NoMove
|
|
||||||
|
|
||||||
Input "Select your IPSW file in the file selection window."
|
|
||||||
IPSW="$($zenity --file-selection --file-filter='IPSW | *.ipsw' --title="Select IPSW file")"
|
|
||||||
[[ ! -s "$IPSW" ]] && read -p "$(Input 'Enter path to IPSW file:')" IPSW
|
|
||||||
[[ ! -s "$IPSW" ]] && Error "No IPSW selected, or IPSW file not found."
|
|
||||||
IPSW="${IPSW%?????}"
|
|
||||||
Log "Selected IPSW file: $IPSW.ipsw"
|
|
||||||
Input "Select your SHSH file in the file selection window."
|
|
||||||
SHSH="$($zenity --file-selection --file-filter='SHSH | *.shsh *.shsh2' --title="Select SHSH file")"
|
|
||||||
[[ ! -s "$SHSH" ]] && read -p "$(Input 'Enter path to SHSH file:')" SHSH
|
|
||||||
[[ ! -s "$SHSH" ]] && Error "No SHSH selected, or SHSH file not found."
|
|
||||||
Log "Selected SHSH file: $SHSH"
|
|
||||||
|
|
||||||
Log "Getting version from IPSW"
|
|
||||||
unzip -o -j "$IPSW.ipsw" Restore.plist -d tmp
|
|
||||||
if [[ $platform == "macos" ]]; then
|
|
||||||
plutil -extract 'ProductVersion' xml1 tmp/Restore.plist -o tmp/OSVer
|
|
||||||
OSVer=$(cat tmp/OSVer | sed -ne '/<string>/,/<\/string>/p' | sed -e "s/<string>//" | sed "s/<\/string>//" | sed '2d')
|
|
||||||
plutil -extract 'ProductBuildVersion' xml1 tmp/Restore.plist -o tmp/BuildVer
|
|
||||||
BuildVer=$(cat tmp/BuildVer | sed -ne '/<string>/,/<\/string>/p' | sed -e "s/<string>//" | sed "s/<\/string>//" | sed '2d')
|
|
||||||
else
|
|
||||||
OSVer=$(cat tmp/Restore.plist | grep -i ProductVersion -A 1 | grep -oPm1 "(?<=<string>)[^<]+")
|
|
||||||
BuildVer=$(cat tmp/Restore.plist | grep -i ProductBuildVersion -A 1 | grep -oPm1 "(?<=<string>)[^<]+")
|
|
||||||
fi
|
|
||||||
|
|
||||||
FWKeys="./resources/firmware/$ProductType/$BuildVer"
|
|
||||||
Log "Checking firmware keys in $FWKeys"
|
|
||||||
if [[ -e $FWKeys/index.html ]]; then
|
|
||||||
if [[ $(cat $FWKeys/index.html | grep -c "$BuildVer") != 1 ]]; then
|
|
||||||
Log "Existing firmware keys are not valid. Deleting"
|
|
||||||
rm $FWKeys/index.html
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ! -e $FWKeys/index.html ]]; then
|
|
||||||
Log "Getting firmware keys for $ProductType-$BuildVer"
|
|
||||||
mkdir -p $FWKeys 2>/dev/null
|
|
||||||
curl -L https://github.com/LukeZGD/iOS-OTA-Downgrader-Keys/raw/master/$ProductType/$BuildVer/index.html -o tmp/index.html
|
|
||||||
if [[ $(cat tmp/index.html | grep -c "$BuildVer") != 1 ]]; then
|
|
||||||
curl -L https://api.m1sta.xyz/wikiproxy/$ProductType/$BuildVer -o tmp/index.html
|
|
||||||
if [[ $(cat tmp/index.html | grep -c "$BuildVer") != 1 ]]; then
|
|
||||||
Log "WARNING - Failed to download firmware keys."
|
|
||||||
NoMove=1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [[ $NoMove == 1 ]]; then
|
|
||||||
rm $FWKeys/index.html
|
|
||||||
elif [[ -s tmp/index.html ]]; then
|
|
||||||
mv tmp/index.html $FWKeys/
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
kDFU
|
|
||||||
if [[ $(echo $BuildVer | cut -c 1) == 8 ]]; then
|
|
||||||
IPSWSetExtract
|
|
||||||
iDeviceRestore latest
|
|
||||||
elif [[ $platform == "win" || $LinuxARM == 1 ]]; then
|
|
||||||
IPSW32Other
|
|
||||||
IPSWSetExtract
|
|
||||||
iDeviceRestore
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
IPSWSetExtract
|
|
||||||
FutureRestore
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
iDeviceRestore() {
|
|
||||||
mkdir shsh
|
|
||||||
cp "$SHSH" shsh/${UniqueChipID}-${ProductType}-${OSVer}.shsh 2>/dev/null
|
|
||||||
Log "Proceeding to idevicerestore..."
|
|
||||||
ExtraArgs="-e -w"
|
|
||||||
if [[ $1 == "latest" ]]; then
|
|
||||||
ExtraArgs="-e"
|
|
||||||
elif [[ $Baseband == 0 ]]; then
|
|
||||||
Log "Device $ProductType has no baseband/disabled baseband update"
|
|
||||||
elif [[ $platform == "win" || $LinuxARM == 1 ]] && [[ $ProductType != "iPhone3"* ]]; then
|
|
||||||
ExtraArgs="-r"
|
|
||||||
idevicerestore="$idevicererestore"
|
|
||||||
re="re"
|
|
||||||
FRBaseband
|
|
||||||
cp saved/baseband/$Baseband tmp/bbfw.tmp
|
|
||||||
cp $BuildManifest tmp/
|
|
||||||
fi
|
|
||||||
Log "Running idevicere${re}store with command: $idevicerestore $ExtraArgs \"$IPSWRestore.ipsw\""
|
|
||||||
$idevicerestore $ExtraArgs "$IPSWRestore.ipsw"
|
|
||||||
echo
|
|
||||||
Log "Restoring done! Read the message below if any error has occurred:"
|
|
||||||
if [[ $platform == "win" ]]; then
|
|
||||||
Echo "* Windows users may encounter errors like \"Unable to send APTicket\" or \"Unable to send iBEC\" in the restore process."
|
|
||||||
Echo "* Follow the troubleshoting link for steps to attempt fixing this issue."
|
|
||||||
Echo "* Troubleshooting link: https://github.com/LukeZGD/iOS-OTA-Downgrader/wiki/Troubleshooting#windows"
|
|
||||||
fi
|
|
||||||
Echo "* Please read the \"Troubleshooting\" wiki page in GitHub before opening any issue!"
|
|
||||||
Echo "* Your problem may have already been addressed within the wiki page."
|
|
||||||
Echo "* If opening an issue in GitHub, please provide a FULL log/output. Otherwise, your issue may be dismissed."
|
|
||||||
echo
|
|
||||||
}
|
|
||||||
|
|
||||||
IPSWCustomA7() {
|
|
||||||
local fr194=()
|
|
||||||
if [[ $platform == "macos" ]]; then
|
|
||||||
fr194=("https://github.com/futurerestore/futurerestore/releases/download/194/futurerestore-v194-macOS.tar.xz" "d279423dd9a12d3a7eceaeb7e01beb332c306aaa")
|
|
||||||
elif [[ $platform == "linux" ]]; then
|
|
||||||
fr194=("https://github.com/futurerestore/futurerestore/releases/download/194/futurerestore-v194-ubuntu_20.04.2.tar.xz" "9f2b4b6cc6710d1d68880711001d2dc5b4cb9407")
|
|
||||||
fi
|
|
||||||
Input "Custom IPSW Option"
|
|
||||||
Echo "* When this option is enabled, a custom IPSW will be created/used for restoring."
|
|
||||||
Echo "* Only enable this when you encounter problems with futurerestore."
|
|
||||||
Echo "* This option is disabled by default (N)."
|
|
||||||
read -p "$(Input 'Enable this option? (y/N):')" IPSWA7
|
|
||||||
if [[ $IPSWA7 != 'Y' && $IPSWA7 != 'y' ]]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
IPSWA7=1
|
|
||||||
Log "Custom IPSW option enabled by user."
|
|
||||||
futurerestore="./resources/tools/futurerestore194_$platform"
|
|
||||||
if [[ ! -e $futurerestore ]]; then
|
|
||||||
cd tmp
|
|
||||||
SaveFile ${fr194[0]} futurerestore.tar.xz ${fr194[1]}
|
|
||||||
7z x futurerestore.tar.xz
|
|
||||||
tar -xf futurerestore*.tar
|
|
||||||
chmod +x futurerestore-v194
|
|
||||||
mv futurerestore-v194 ../$futurerestore
|
|
||||||
cd ..
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
RetryOption() {
|
|
||||||
Input "Retry Command Option"
|
|
||||||
Echo "* This gives users the option to retry the restore command."
|
|
||||||
Echo "* It can be useful in case that the restore failed early."
|
|
||||||
Echo "* If the restore failed with the device no longer in DFU, this will not work."
|
|
||||||
Echo "* This option is disabled by default (N)."
|
|
||||||
read -p "$(Input 'Enable this option? (y/N):')" Retry
|
|
||||||
if [[ $Retry != 'Y' && $Retry != 'y' ]]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
$1
|
|
||||||
}
|
|
||||||
|
|
||||||
DowngradeOTA() {
|
|
||||||
if [[ $DeviceProc != 7 ]]; then
|
|
||||||
JailbreakOption
|
|
||||||
fi
|
|
||||||
SaveOTABlobs
|
|
||||||
IPSWFindVerify
|
|
||||||
kDFU
|
|
||||||
if [[ $Jailbreak == 1 || $ProductType == "$DisableBBUpdate" ]]; then
|
|
||||||
IPSW32
|
|
||||||
else
|
|
||||||
IPSWCustom=0
|
|
||||||
fi
|
|
||||||
IPSWSetExtract
|
|
||||||
FutureRestore
|
|
||||||
RetryOption FutureRestore
|
|
||||||
}
|
|
||||||
|
|
||||||
DowngradeOTAWin() {
|
|
||||||
IPSWCustom="${IPSWType}_${OSVer}_${BuildVer}_CustomW"
|
|
||||||
if [[ $DeviceProc != 7 ]]; then
|
|
||||||
JailbreakOption
|
|
||||||
SaveOTABlobs
|
|
||||||
fi
|
|
||||||
IPSWFindVerify
|
|
||||||
if [[ $DeviceProc == 7 ]]; then
|
|
||||||
IPSWA7=1
|
|
||||||
IPSWSetExtract
|
|
||||||
IPSW64
|
|
||||||
EnterPwnREC
|
|
||||||
local APNonce=$($irecovery -q | grep "NONC" | cut -c 7-)
|
|
||||||
Log "APNONCE: $APNonce"
|
|
||||||
SaveOTABlobs $APNonce
|
|
||||||
IPSWSetExtract set
|
|
||||||
FutureRestore
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
kDFU
|
|
||||||
IPSW32
|
|
||||||
IPSWSetExtract
|
|
||||||
iDeviceRestore
|
|
||||||
RetryOption iDeviceRestore
|
|
||||||
}
|
|
||||||
|
|
||||||
Downgrade() {
|
|
||||||
Log "Select your options when asked. If unsure, go for the defaults (press Enter/Return)."
|
|
||||||
echo
|
|
||||||
|
|
||||||
if [[ $DeviceProc == 7 && $platform != "win" ]]; then
|
|
||||||
IPSWCustomA7
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $OSVer == "Other" ]]; then
|
|
||||||
DowngradeOther
|
|
||||||
return
|
|
||||||
elif [[ $platform == "win" || $LinuxARM == 1 || $IPSWA7 == 1 ]]; then
|
|
||||||
DowngradeOTAWin
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
DowngradeOTA
|
|
||||||
}
|
|
||||||
|
|
||||||
Downgrade4() {
|
|
||||||
JailbreakOption
|
|
||||||
IPSWFindVerify
|
|
||||||
Save712Blobs
|
|
||||||
if [[ $OSVer == "7.1.2" && $Jailbreak != 1 ]]; then
|
|
||||||
IPSWSetExtract
|
|
||||||
iDeviceRestore latest
|
|
||||||
return
|
|
||||||
elif [[ $OSVer != "7.1.2" ]]; then
|
|
||||||
IPSWFindVerify 712
|
|
||||||
fi
|
|
||||||
IPSW4
|
|
||||||
IPSWSetExtract
|
|
||||||
iDeviceRestore
|
|
||||||
RetryOption iDeviceRestore
|
|
||||||
Log "Downgrade script done!"
|
|
||||||
}
|
|
||||||
|
|
||||||
RestoreLatest() {
|
|
||||||
if [[ $ProductType == "iPhone5"* ]]; then
|
|
||||||
IPSWType="iPhone_4.0_32bit"
|
|
||||||
elif [[ $DeviceProc == 6 && $ProductType == "iPad3"* ]]; then
|
|
||||||
IPSWType="iPad_32bit"
|
|
||||||
fi
|
|
||||||
IPSWFindVerify
|
|
||||||
IPSWSetExtract
|
|
||||||
iDeviceRestore latest
|
|
||||||
}
|
|
@ -20,6 +20,21 @@
|
|||||||
<string>/usr/local/share/restore/options.k93.plist</string>
|
<string>/usr/local/share/restore/options.k93.plist</string>
|
||||||
<key>SHA1</key>
|
<key>SHA1</key>
|
||||||
<string>241a02bb446c21e44e8470b77e09b5fbfba7d6c4</string>
|
<string>241a02bb446c21e44e8470b77e09b5fbfba7d6c4</string>
|
||||||
|
<key>BuildIdentitiesPatches</key>
|
||||||
|
<dict>
|
||||||
|
<key>UniqueBuildID</key>
|
||||||
|
<data>tmhlqSVs3hfYDCFEF1CNxG9edO8=</data>
|
||||||
|
<key>Manifest</key>
|
||||||
|
<dict>
|
||||||
|
<key>RestoreRamDisk</key>
|
||||||
|
<dict>
|
||||||
|
<key>Digest</key>
|
||||||
|
<data>soTe26MUEWqoKnxbAlm9uDrYEA4=</data>
|
||||||
|
<key>PartialDigest</key>
|
||||||
|
<data>QAAAAHhwMwEwggsDt8v7VOdjNK99c7EacJVHFA==</data>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
<key>RamdiskPatches</key>
|
<key>RamdiskPatches</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>asr</key>
|
<key>asr</key>
|
||||||
@ -38,6 +53,71 @@
|
|||||||
<string>BrightonMaps10B329.K93OS</string>
|
<string>BrightonMaps10B329.K93OS</string>
|
||||||
<key>FirmwarePatches</key>
|
<key>FirmwarePatches</key>
|
||||||
<dict>
|
<dict>
|
||||||
|
<key>iBSS</key>
|
||||||
|
<dict>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/dfu/iBSS.k93ap.RELEASE.dfu</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>6e4cce9ea6f2ec346cba0b279beab1b43e44a0680f1fde789a00f66a1e68ffab</string>
|
||||||
|
<key>Decrypt</key>
|
||||||
|
<true/>
|
||||||
|
<key>Patch</key>
|
||||||
|
<string>iBSS.k93ap.RELEASE.patch</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>b69f753dccd09c9b98d345ec73bbf044</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>8</integer>
|
||||||
|
</dict>
|
||||||
|
<key>iBEC</key>
|
||||||
|
<dict>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/dfu/iBEC.k93ap.RELEASE.dfu</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>69eaeb223db61b557c36d65fa7e6e4ec1c0d7547dfce9d46077f7e5b0fcba98f</string>
|
||||||
|
<key>Decrypt</key>
|
||||||
|
<true/>
|
||||||
|
<key>Patch</key>
|
||||||
|
<string>iBEC.k93ap.RELEASE.patch</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>3a0726b7bc091915dd928eed21478728</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>8</integer>
|
||||||
|
</dict>
|
||||||
|
<key>RestoreDeviceTree</key>
|
||||||
|
<dict>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/all_flash/all_flash.k93ap.production/DeviceTree.k93ap.img3</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>7c9c0c49075fd6c47e1598f23901266237e30e60dcfc7174b8c2ea6f42532bfb</string>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreDeviceTree</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>557d2b8116b04cf93bf7bff023ed6bf2</string>
|
||||||
|
</dict>
|
||||||
|
<key>RestoreLogo</key>
|
||||||
|
<dict>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/all_flash/all_flash.k93ap.production/applelogo.s5l8940x.img3</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>0e7aa7bbcfddc88dfe0e56e021363028502621c52c709afc3744850977e2fb9f</string>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreLogo</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>623b2592ad563ea16bd8a86af6960bcb</string>
|
||||||
|
</dict>
|
||||||
|
<key>RestoreKernelCache</key>
|
||||||
|
<dict>
|
||||||
|
<key>File</key>
|
||||||
|
<string>kernelcache.release.k93</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>2bbdf3fea41600cd7ae46157af7f19b1726900802f2ec2022aa60b9a27a3261f</string>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreKernelCache</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>4</integer>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>247ea923c137404f4faec7da75822b08</string>
|
||||||
|
</dict>
|
||||||
<key>Restore Ramdisk</key>
|
<key>Restore Ramdisk</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>File</key>
|
<key>File</key>
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -2,6 +2,19 @@
|
|||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
|
<key>BuildIdentitiesPatches</key>
|
||||||
|
<dict>
|
||||||
|
<key>UniqueBuildID</key>
|
||||||
|
<data>sA5Apv3DkLYurMsefxwgc2F4eww=</data>
|
||||||
|
<key>Manifest</key>
|
||||||
|
<dict>
|
||||||
|
<key>RestoreRamDisk</key>
|
||||||
|
<dict>
|
||||||
|
<key>Digest</key>
|
||||||
|
<data>6YT8kmZto76bYGIappOkcqg4gqg=</data>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
<key>DownloadUrl</key>
|
<key>DownloadUrl</key>
|
||||||
<string></string>
|
<string></string>
|
||||||
<key>Filename</key>
|
<key>Filename</key>
|
||||||
@ -23,6 +36,71 @@
|
|||||||
<key>TypeFlag</key>
|
<key>TypeFlag</key>
|
||||||
<integer>8</integer>
|
<integer>8</integer>
|
||||||
</dict>
|
</dict>
|
||||||
|
<key>RestoreDeviceTree</key>
|
||||||
|
<dict>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreDeviceTree</string>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/all_flash/all_flash.k93ap.production/DeviceTree.k93ap.img3</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>5bffad9ad82108c5ae3d38150dc56aea</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>12433a4c85ec86ac6e14884f01661e2c5de43adee0323d1e88d4edd8d1ae9fda</string>
|
||||||
|
</dict>
|
||||||
|
<key>RestoreKernelCache</key>
|
||||||
|
<dict>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreKernelCache</string>
|
||||||
|
<key>File</key>
|
||||||
|
<string>kernelcache.release.k93</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>38d12734c845d1dcdb84846caf619da7</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>6dea51edc4c6f6c205e25ca1d9af5b9ee7167ed5685a937ad892e7fcbfb3e615</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>4</integer>
|
||||||
|
</dict>
|
||||||
|
<key>RestoreLogo</key>
|
||||||
|
<dict>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreLogo</string>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/all_flash/all_flash.k93ap.production/applelogo.s5l8940x.img3</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>7024762156bac507f28dca8c1bb2f3d1</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>bec85f0507dbec46982ff08e37b551310195dcf4f885649aab0162f729160066</string>
|
||||||
|
</dict>
|
||||||
|
<key>iBEC</key>
|
||||||
|
<dict>
|
||||||
|
<key>Decrypt</key>
|
||||||
|
<true/>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/dfu/iBEC.k93.RELEASE.dfu</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>83220a369c9525f3febb3edd331c65fb</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>179027ef30b5008882d6dbd723ceb50c39cba40bb33ba620b71bcbc53ff2d424</string>
|
||||||
|
<key>Patch</key>
|
||||||
|
<string>iBEC.k93.RELEASE.patch</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>8</integer>
|
||||||
|
</dict>
|
||||||
|
<key>iBSS</key>
|
||||||
|
<dict>
|
||||||
|
<key>Decrypt</key>
|
||||||
|
<true/>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/dfu/iBSS.k93.RELEASE.dfu</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>781b9672a86ba1b41f8b7fa0af714c94</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>bbd7bf676dbcc6ba93c76d496b7af39ae7772eaaad2ec9fb71dc1fd004827784</string>
|
||||||
|
<key>Patch</key>
|
||||||
|
<string>iBSS.k93.RELEASE.patch</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>8</integer>
|
||||||
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Name</key>
|
<key>Name</key>
|
||||||
<string>iPad2,1_8.4.1_12H321</string>
|
<string>iPad2,1_8.4.1_12H321</string>
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -20,6 +20,21 @@
|
|||||||
<string>/usr/local/share/restore/options.k94.plist</string>
|
<string>/usr/local/share/restore/options.k94.plist</string>
|
||||||
<key>SHA1</key>
|
<key>SHA1</key>
|
||||||
<string>1b7897aea7b23d2e00e3d3c5c0ad2a0c47b345cd</string>
|
<string>1b7897aea7b23d2e00e3d3c5c0ad2a0c47b345cd</string>
|
||||||
|
<key>BuildIdentitiesPatches</key>
|
||||||
|
<dict>
|
||||||
|
<key>UniqueBuildID</key>
|
||||||
|
<data>8iAuVn4UX8D2WcdqFQyoa+kz0FQ=</data>
|
||||||
|
<key>Manifest</key>
|
||||||
|
<dict>
|
||||||
|
<key>RestoreRamDisk</key>
|
||||||
|
<dict>
|
||||||
|
<key>Digest</key>
|
||||||
|
<data>soTe26MUEWqoKnxbAlm9uDrYEA4=</data>
|
||||||
|
<key>PartialDigest</key>
|
||||||
|
<data>QAAAAHhwMwEwggsDt8v7VOdjNK99c7EacJVHFA==</data>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
<key>RamdiskPatches</key>
|
<key>RamdiskPatches</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>asr</key>
|
<key>asr</key>
|
||||||
@ -51,6 +66,71 @@
|
|||||||
<key>IV</key>
|
<key>IV</key>
|
||||||
<string>b59813148a1246ef4f4e3a5aa70ac471</string>
|
<string>b59813148a1246ef4f4e3a5aa70ac471</string>
|
||||||
</dict>
|
</dict>
|
||||||
|
<key>iBSS</key>
|
||||||
|
<dict>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/dfu/iBSS.k94ap.RELEASE.dfu</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>b1bd1dc5e6076054392be054d50711ae70e8fcf31a47899fb90ab0ff3111b687</string>
|
||||||
|
<key>Decrypt</key>
|
||||||
|
<true/>
|
||||||
|
<key>Patch</key>
|
||||||
|
<string>iBSS.k94ap.RELEASE.patch</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>bc3c9f168d7fb86aa219b7ad8039584b</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>8</integer>
|
||||||
|
</dict>
|
||||||
|
<key>iBEC</key>
|
||||||
|
<dict>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/dfu/iBEC.k94ap.RELEASE.dfu</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>f4b314ce6b84de8c2bcfc9e6821a657b964767253e214f44af33b141703f6606</string>
|
||||||
|
<key>Decrypt</key>
|
||||||
|
<true/>
|
||||||
|
<key>Patch</key>
|
||||||
|
<string>iBEC.k94ap.RELEASE.patch</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>2a160d86a7cb6c976009725a9d8c009c</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>8</integer>
|
||||||
|
</dict>
|
||||||
|
<key>RestoreDeviceTree</key>
|
||||||
|
<dict>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/all_flash/all_flash.k94ap.production/DeviceTree.k94ap.img3</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>dbb0ade4c92ec6e561dd51f513ea0332b490f89f4a168f11efc1e9967c02847d</string>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreDeviceTree</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>43fdbf9046da468ecc944bb4bee19879</string>
|
||||||
|
</dict>
|
||||||
|
<key>RestoreLogo</key>
|
||||||
|
<dict>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/all_flash/all_flash.k94ap.production/applelogo.s5l8940x.img3</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>0e7aa7bbcfddc88dfe0e56e021363028502621c52c709afc3744850977e2fb9f</string>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreLogo</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>623b2592ad563ea16bd8a86af6960bcb</string>
|
||||||
|
</dict>
|
||||||
|
<key>RestoreKernelCache</key>
|
||||||
|
<dict>
|
||||||
|
<key>File</key>
|
||||||
|
<string>kernelcache.release.k94</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>c835455a98365c5c0dda77348109a0e88faea4e4d879a0f07a4bece7b4cc64ac</string>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreKernelCache</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>4</integer>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>c3e3ba1bb5627935d508c9fdf2490eba</string>
|
||||||
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>RootFilesystemKey</key>
|
<key>RootFilesystemKey</key>
|
||||||
<string>19703b03962ad004afeab0f80fcff0dd2e3ddca02c9f0e08bcd635884e941797c0b9dece</string>
|
<string>19703b03962ad004afeab0f80fcff0dd2e3ddca02c9f0e08bcd635884e941797c0b9dece</string>
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -2,6 +2,19 @@
|
|||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
|
<key>BuildIdentitiesPatches</key>
|
||||||
|
<dict>
|
||||||
|
<key>UniqueBuildID</key>
|
||||||
|
<data>Q5TR6AFJAjx/0PvYeTYnUrS5B/Q=</data>
|
||||||
|
<key>Manifest</key>
|
||||||
|
<dict>
|
||||||
|
<key>RestoreRamDisk</key>
|
||||||
|
<dict>
|
||||||
|
<key>Digest</key>
|
||||||
|
<data>6YT8kmZto76bYGIappOkcqg4gqg=</data>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
<key>DownloadUrl</key>
|
<key>DownloadUrl</key>
|
||||||
<string></string>
|
<string></string>
|
||||||
<key>Filename</key>
|
<key>Filename</key>
|
||||||
@ -23,6 +36,71 @@
|
|||||||
<key>TypeFlag</key>
|
<key>TypeFlag</key>
|
||||||
<integer>8</integer>
|
<integer>8</integer>
|
||||||
</dict>
|
</dict>
|
||||||
|
<key>RestoreDeviceTree</key>
|
||||||
|
<dict>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreDeviceTree</string>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/all_flash/all_flash.k94ap.production/DeviceTree.k94ap.img3</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>31eafb5f2872333f49c391407533b913</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>2340ba7b12093ebe1c4f9ad6adefb78b8aa5df718f63f4671dbc882cc657abfe</string>
|
||||||
|
</dict>
|
||||||
|
<key>RestoreKernelCache</key>
|
||||||
|
<dict>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreKernelCache</string>
|
||||||
|
<key>File</key>
|
||||||
|
<string>kernelcache.release.k94</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>fde7339da181e1197410abf1fa9f7f1b</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>c5740043d184baa4d933cc376d0cf2c0c3bcdf1efee4b76c996a829e70c2767c</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>4</integer>
|
||||||
|
</dict>
|
||||||
|
<key>RestoreLogo</key>
|
||||||
|
<dict>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreLogo</string>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/all_flash/all_flash.k94ap.production/applelogo.s5l8940x.img3</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>7024762156bac507f28dca8c1bb2f3d1</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>bec85f0507dbec46982ff08e37b551310195dcf4f885649aab0162f729160066</string>
|
||||||
|
</dict>
|
||||||
|
<key>iBEC</key>
|
||||||
|
<dict>
|
||||||
|
<key>Decrypt</key>
|
||||||
|
<true/>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/dfu/iBEC.k94.RELEASE.dfu</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>57fba54b264b0911d3329de2231bd4b8</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>e7677abd8b4cef14f9f75e02dec7fdbb0cc1ecc0707fb51367a783e4eeea731e</string>
|
||||||
|
<key>Patch</key>
|
||||||
|
<string>iBEC.k94.RELEASE.patch</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>8</integer>
|
||||||
|
</dict>
|
||||||
|
<key>iBSS</key>
|
||||||
|
<dict>
|
||||||
|
<key>Decrypt</key>
|
||||||
|
<true/>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/dfu/iBSS.k94.RELEASE.dfu</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>883c92ed915e4d2481570a062583495b</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>ccfadf3732904885d38f963cce035d7e03b387b67212d526503c85773b58e52f</string>
|
||||||
|
<key>Patch</key>
|
||||||
|
<string>iBSS.k94.RELEASE.patch</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>8</integer>
|
||||||
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Name</key>
|
<key>Name</key>
|
||||||
<string>iPad2,2_8.4.1_12H321</string>
|
<string>iPad2,2_8.4.1_12H321</string>
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -20,6 +20,21 @@
|
|||||||
<string>/usr/local/share/restore/options.k95.plist</string>
|
<string>/usr/local/share/restore/options.k95.plist</string>
|
||||||
<key>SHA1</key>
|
<key>SHA1</key>
|
||||||
<string>b02a4f3f5b6b948bdcd036caee71449201e72f63</string>
|
<string>b02a4f3f5b6b948bdcd036caee71449201e72f63</string>
|
||||||
|
<key>BuildIdentitiesPatches</key>
|
||||||
|
<dict>
|
||||||
|
<key>UniqueBuildID</key>
|
||||||
|
<data>k8/0Wy73uXDFAc84NnXIXIXUnHI=</data>
|
||||||
|
<key>Manifest</key>
|
||||||
|
<dict>
|
||||||
|
<key>RestoreRamDisk</key>
|
||||||
|
<dict>
|
||||||
|
<key>Digest</key>
|
||||||
|
<data>soTe26MUEWqoKnxbAlm9uDrYEA4=</data>
|
||||||
|
<key>PartialDigest</key>
|
||||||
|
<data>QAAAAHhwMwEwggsDt8v7VOdjNK99c7EacJVHFA==</data>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
<key>RamdiskPatches</key>
|
<key>RamdiskPatches</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>asr</key>
|
<key>asr</key>
|
||||||
@ -51,6 +66,71 @@
|
|||||||
<key>IV</key>
|
<key>IV</key>
|
||||||
<string>4edaee1b65d86a5f9a16c3ef09b262bf</string>
|
<string>4edaee1b65d86a5f9a16c3ef09b262bf</string>
|
||||||
</dict>
|
</dict>
|
||||||
|
<key>iBSS</key>
|
||||||
|
<dict>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/dfu/iBSS.k95ap.RELEASE.dfu</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>0bb841b8f1922ae73d85ed9ed0d7a3583a10af909787857c15af2691b39bba30</string>
|
||||||
|
<key>Decrypt</key>
|
||||||
|
<true/>
|
||||||
|
<key>Patch</key>
|
||||||
|
<string>iBSS.k95ap.RELEASE.patch</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>56f964ee19bfd31f06e43e9d8fe93902</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>8</integer>
|
||||||
|
</dict>
|
||||||
|
<key>iBEC</key>
|
||||||
|
<dict>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/dfu/iBEC.k95ap.RELEASE.dfu</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>12805eb0cabe89539cfecbf886b0638a6fe941976ef9afe8bf3dc838139357ba</string>
|
||||||
|
<key>Decrypt</key>
|
||||||
|
<true/>
|
||||||
|
<key>Patch</key>
|
||||||
|
<string>iBEC.k95ap.RELEASE.patch</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>5aeb8eb73be0c634f9fa2a4eae791438</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>8</integer>
|
||||||
|
</dict>
|
||||||
|
<key>RestoreDeviceTree</key>
|
||||||
|
<dict>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/all_flash/all_flash.k95ap.production/DeviceTree.k95ap.img3</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>8debb89e1457cc695e10891312bdbfbb4d5f40f7eaa6913dfe7dc61be6d9e5c7</string>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreDeviceTree</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>e28736e5e1a7c3fd31021398ed65af62</string>
|
||||||
|
</dict>
|
||||||
|
<key>RestoreLogo</key>
|
||||||
|
<dict>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/all_flash/all_flash.k95ap.production/applelogo.s5l8940x.img3</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>0e7aa7bbcfddc88dfe0e56e021363028502621c52c709afc3744850977e2fb9f</string>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreLogo</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>623b2592ad563ea16bd8a86af6960bcb</string>
|
||||||
|
</dict>
|
||||||
|
<key>RestoreKernelCache</key>
|
||||||
|
<dict>
|
||||||
|
<key>File</key>
|
||||||
|
<string>kernelcache.release.k95</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>0e2f5fa117fa62535dc18ee0526137d6e73b4fc69edec9d99f1528f2a632fc83</string>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreKernelCache</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>4</integer>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>0cc133db4539b82dee5849d6abbcc467</string>
|
||||||
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>RootFilesystemKey</key>
|
<key>RootFilesystemKey</key>
|
||||||
<string>b51815b65f7e572ad0cc1238bf799edb558b602b0ee390a76cd874d714b7daf10205b195</string>
|
<string>b51815b65f7e572ad0cc1238bf799edb558b602b0ee390a76cd874d714b7daf10205b195</string>
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -2,6 +2,19 @@
|
|||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
|
<key>BuildIdentitiesPatches</key>
|
||||||
|
<dict>
|
||||||
|
<key>UniqueBuildID</key>
|
||||||
|
<data>pDKBwm1m6yz2+fqPvqp9bDYBpaU=</data>
|
||||||
|
<key>Manifest</key>
|
||||||
|
<dict>
|
||||||
|
<key>RestoreRamDisk</key>
|
||||||
|
<dict>
|
||||||
|
<key>Digest</key>
|
||||||
|
<data>6YT8kmZto76bYGIappOkcqg4gqg=</data>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
<key>DownloadUrl</key>
|
<key>DownloadUrl</key>
|
||||||
<string></string>
|
<string></string>
|
||||||
<key>Filename</key>
|
<key>Filename</key>
|
||||||
@ -23,6 +36,71 @@
|
|||||||
<key>TypeFlag</key>
|
<key>TypeFlag</key>
|
||||||
<integer>8</integer>
|
<integer>8</integer>
|
||||||
</dict>
|
</dict>
|
||||||
|
<key>RestoreDeviceTree</key>
|
||||||
|
<dict>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreDeviceTree</string>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/all_flash/all_flash.k95ap.production/DeviceTree.k95ap.img3</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>9f1dd056d28cb0afd775a31910ecbc35</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>2aeb4fa57f51a2246b1521cc81f18ceef7205e75de9610d60044c701858560ea</string>
|
||||||
|
</dict>
|
||||||
|
<key>RestoreKernelCache</key>
|
||||||
|
<dict>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreKernelCache</string>
|
||||||
|
<key>File</key>
|
||||||
|
<string>kernelcache.release.k95</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>1a8ae97c20ddf5008133ddb159f93dab</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>1d1e7b65358637fd062b08d0892a8401e395b40ac284c92c3809f94469d5da43</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>4</integer>
|
||||||
|
</dict>
|
||||||
|
<key>RestoreLogo</key>
|
||||||
|
<dict>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreLogo</string>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/all_flash/all_flash.k95ap.production/applelogo.s5l8940x.img3</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>7024762156bac507f28dca8c1bb2f3d1</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>bec85f0507dbec46982ff08e37b551310195dcf4f885649aab0162f729160066</string>
|
||||||
|
</dict>
|
||||||
|
<key>iBEC</key>
|
||||||
|
<dict>
|
||||||
|
<key>Decrypt</key>
|
||||||
|
<true/>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/dfu/iBEC.k95.RELEASE.dfu</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>2cec1c5aa4a6fbc8630ef22a668271c0</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>0f8e5042b574f246016c04b904dce329fcf0adcc08d23357058d9e5bd5e586e1</string>
|
||||||
|
<key>Patch</key>
|
||||||
|
<string>iBEC.k95.RELEASE.patch</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>8</integer>
|
||||||
|
</dict>
|
||||||
|
<key>iBSS</key>
|
||||||
|
<dict>
|
||||||
|
<key>Decrypt</key>
|
||||||
|
<true/>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/dfu/iBSS.k95.RELEASE.dfu</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>460116385cca6d5596221c58ae122669</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>7852f1fd93d9d49ebea44021081e8f1dffa336d0d3e9517374f8be451dd92eb7</string>
|
||||||
|
<key>Patch</key>
|
||||||
|
<string>iBSS.k95.RELEASE.patch</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>8</integer>
|
||||||
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Name</key>
|
<key>Name</key>
|
||||||
<string>iPad2,3_8.4.1_12H321</string>
|
<string>iPad2,3_8.4.1_12H321</string>
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -2,6 +2,19 @@
|
|||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
|
<key>BuildIdentitiesPatches</key>
|
||||||
|
<dict>
|
||||||
|
<key>UniqueBuildID</key>
|
||||||
|
<data>kDmCfTcEYH4By8TNUhF8HBscL7E=</data>
|
||||||
|
<key>Manifest</key>
|
||||||
|
<dict>
|
||||||
|
<key>RestoreRamDisk</key>
|
||||||
|
<dict>
|
||||||
|
<key>Digest</key>
|
||||||
|
<data>W1s9h0o+OyNm+s3fBxFQQRoLNbA=</data>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
<key>DownloadUrl</key>
|
<key>DownloadUrl</key>
|
||||||
<string></string>
|
<string></string>
|
||||||
<key>Filename</key>
|
<key>Filename</key>
|
||||||
@ -23,6 +36,71 @@
|
|||||||
<key>TypeFlag</key>
|
<key>TypeFlag</key>
|
||||||
<integer>8</integer>
|
<integer>8</integer>
|
||||||
</dict>
|
</dict>
|
||||||
|
<key>RestoreDeviceTree</key>
|
||||||
|
<dict>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreDeviceTree</string>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/all_flash/all_flash.k93aap.production/DeviceTree.k93aap.img3</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>dd6d2ee190455770e5bb930db280e42d</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>db9945495d24e808cfe305a9a062b28f6c341e4577018482d3f51f7d19057443</string>
|
||||||
|
</dict>
|
||||||
|
<key>RestoreKernelCache</key>
|
||||||
|
<dict>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreKernelCache</string>
|
||||||
|
<key>File</key>
|
||||||
|
<string>kernelcache.release.k93a</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>7571c911c20b12935ca28fd1f22e023b</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>dcf3723fc23543626910fdf36436386a62d350b4378b4440984d6a16d94b3039</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>4</integer>
|
||||||
|
</dict>
|
||||||
|
<key>RestoreLogo</key>
|
||||||
|
<dict>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreLogo</string>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/all_flash/all_flash.k93aap.production/applelogo.s5l8942x.img3</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>a5fcfc2bd24e4d134a1813852d8489ef</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>6889fbdf361060167c6a7d9a655d032a23b5c77d4360cee8f8b79f487fb6caa7</string>
|
||||||
|
</dict>
|
||||||
|
<key>iBEC</key>
|
||||||
|
<dict>
|
||||||
|
<key>Decrypt</key>
|
||||||
|
<true/>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/dfu/iBEC.k93a.RELEASE.dfu</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>27a1dedaf83ccb53088fd9fb82974062</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>019947f0da4258ce36c0fd1b2f3d61fc7add1fd9065cb96be24f86c322832cda</string>
|
||||||
|
<key>Patch</key>
|
||||||
|
<string>iBEC.k93a.RELEASE.patch</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>8</integer>
|
||||||
|
</dict>
|
||||||
|
<key>iBSS</key>
|
||||||
|
<dict>
|
||||||
|
<key>Decrypt</key>
|
||||||
|
<true/>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/dfu/iBSS.k93a.RELEASE.dfu</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>976aa656929ac699fff36715de96876d</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>5fe5c47b5620c2b40b1ca2bd1764a92d568901a24e1caf8faf0cf0f84ae11b4e</string>
|
||||||
|
<key>Patch</key>
|
||||||
|
<string>iBSS.k93a.RELEASE.patch</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>8</integer>
|
||||||
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Name</key>
|
<key>Name</key>
|
||||||
<string>iPad2,4_8.4.1_12H321</string>
|
<string>iPad2,4_8.4.1_12H321</string>
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -2,6 +2,19 @@
|
|||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
|
<key>BuildIdentitiesPatches</key>
|
||||||
|
<dict>
|
||||||
|
<key>UniqueBuildID</key>
|
||||||
|
<data>FJ/7cGGhbJ01m6fAApGSTG25V9o=</data>
|
||||||
|
<key>Manifest</key>
|
||||||
|
<dict>
|
||||||
|
<key>RestoreRamDisk</key>
|
||||||
|
<dict>
|
||||||
|
<key>Digest</key>
|
||||||
|
<data>W1s9h0o+OyNm+s3fBxFQQRoLNbA=</data>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
<key>DownloadUrl</key>
|
<key>DownloadUrl</key>
|
||||||
<string></string>
|
<string></string>
|
||||||
<key>Filename</key>
|
<key>Filename</key>
|
||||||
@ -23,6 +36,71 @@
|
|||||||
<key>TypeFlag</key>
|
<key>TypeFlag</key>
|
||||||
<integer>8</integer>
|
<integer>8</integer>
|
||||||
</dict>
|
</dict>
|
||||||
|
<key>RestoreDeviceTree</key>
|
||||||
|
<dict>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreDeviceTree</string>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/all_flash/all_flash.p105ap.production/DeviceTree.p105ap.img3</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>c9c12cfe3a16823f1d678775c7aedc88</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>050f2457801615132e7455b622c8c8dfb65f09d4ff1eb86b5c0a1160678117c2</string>
|
||||||
|
</dict>
|
||||||
|
<key>RestoreKernelCache</key>
|
||||||
|
<dict>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreKernelCache</string>
|
||||||
|
<key>File</key>
|
||||||
|
<string>kernelcache.release.p105</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>ada137bf6aa705925d8ac5ada6025c11</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>0155c713f32ee5fb9f18187e0b87d19ef38b9e56af121821264163627f894b05</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>4</integer>
|
||||||
|
</dict>
|
||||||
|
<key>RestoreLogo</key>
|
||||||
|
<dict>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreLogo</string>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/all_flash/all_flash.p105ap.production/applelogo.s5l8942x.img3</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>a5fcfc2bd24e4d134a1813852d8489ef</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>6889fbdf361060167c6a7d9a655d032a23b5c77d4360cee8f8b79f487fb6caa7</string>
|
||||||
|
</dict>
|
||||||
|
<key>iBEC</key>
|
||||||
|
<dict>
|
||||||
|
<key>Decrypt</key>
|
||||||
|
<true/>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/dfu/iBEC.p105.RELEASE.dfu</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>8460cab6348e74ba7134ba0f9462b632</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>485ddb5f7e70cecfc25c036f812641b9e55bd97783de1488306e3a80abf6950b</string>
|
||||||
|
<key>Patch</key>
|
||||||
|
<string>iBEC.p105.RELEASE.patch</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>8</integer>
|
||||||
|
</dict>
|
||||||
|
<key>iBSS</key>
|
||||||
|
<dict>
|
||||||
|
<key>Decrypt</key>
|
||||||
|
<true/>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/dfu/iBSS.p105.RELEASE.dfu</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>b21abc8689b0dea8f6e613f9f970e241</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>b9ed63e4a31f5d9d4d7dddc527e65fd31d1ea48c70204e6b44551c1e6dfc52b5</string>
|
||||||
|
<key>Patch</key>
|
||||||
|
<string>iBSS.p105.RELEASE.patch</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>8</integer>
|
||||||
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Name</key>
|
<key>Name</key>
|
||||||
<string>iPad2,5_8.4.1_12H321</string>
|
<string>iPad2,5_8.4.1_12H321</string>
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -2,6 +2,19 @@
|
|||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
|
<key>BuildIdentitiesPatches</key>
|
||||||
|
<dict>
|
||||||
|
<key>UniqueBuildID</key>
|
||||||
|
<data>z4kGqKa2uWZN+w9eRF+bArOVpCI=</data>
|
||||||
|
<key>Manifest</key>
|
||||||
|
<dict>
|
||||||
|
<key>RestoreRamDisk</key>
|
||||||
|
<dict>
|
||||||
|
<key>Digest</key>
|
||||||
|
<data>W1s9h0o+OyNm+s3fBxFQQRoLNbA=</data>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
<key>DownloadUrl</key>
|
<key>DownloadUrl</key>
|
||||||
<string></string>
|
<string></string>
|
||||||
<key>Filename</key>
|
<key>Filename</key>
|
||||||
@ -23,6 +36,71 @@
|
|||||||
<key>TypeFlag</key>
|
<key>TypeFlag</key>
|
||||||
<integer>8</integer>
|
<integer>8</integer>
|
||||||
</dict>
|
</dict>
|
||||||
|
<key>RestoreDeviceTree</key>
|
||||||
|
<dict>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreDeviceTree</string>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/all_flash/all_flash.p106ap.production/DeviceTree.p106ap.img3</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>633cecb9cecbe0f1bbd5ba3444f59857</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>1ac6524ed5b610a2b192a31fe533b5a88da330e6d48fb05ad376b79fa62c2fac</string>
|
||||||
|
</dict>
|
||||||
|
<key>RestoreKernelCache</key>
|
||||||
|
<dict>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreKernelCache</string>
|
||||||
|
<key>File</key>
|
||||||
|
<string>kernelcache.release.p106</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>32bdfec1574df78e6b2f72dbdbeadc41</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>f89d3d9d9f9b59a9477323d702b544b3dcc7bd186ca966104a2c1cd0a2bcf45d</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>4</integer>
|
||||||
|
</dict>
|
||||||
|
<key>RestoreLogo</key>
|
||||||
|
<dict>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreLogo</string>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/all_flash/all_flash.p106ap.production/applelogo.s5l8942x.img3</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>a5fcfc2bd24e4d134a1813852d8489ef</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>6889fbdf361060167c6a7d9a655d032a23b5c77d4360cee8f8b79f487fb6caa7</string>
|
||||||
|
</dict>
|
||||||
|
<key>iBEC</key>
|
||||||
|
<dict>
|
||||||
|
<key>Decrypt</key>
|
||||||
|
<true/>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/dfu/iBEC.p106.RELEASE.dfu</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>4d59863b07ec59662ddb4872d4fd6909</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>b70e6a9abacc46dc6a7bb55c09d7338d34acad2eed33df6db4d47f5694f978b9</string>
|
||||||
|
<key>Patch</key>
|
||||||
|
<string>iBEC.p106.RELEASE.patch</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>8</integer>
|
||||||
|
</dict>
|
||||||
|
<key>iBSS</key>
|
||||||
|
<dict>
|
||||||
|
<key>Decrypt</key>
|
||||||
|
<true/>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/dfu/iBSS.p106.RELEASE.dfu</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>56231fd62c6296ed0c8c411bcef602e0</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>cdb2142489e5e936fa8f3540bd036f62ed0f27ddb6fec96b9fbfec5a65bc5f17</string>
|
||||||
|
<key>Patch</key>
|
||||||
|
<string>iBSS.p106.RELEASE.patch</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>8</integer>
|
||||||
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Name</key>
|
<key>Name</key>
|
||||||
<string>iPad2,6_8.4.1_12H321</string>
|
<string>iPad2,6_8.4.1_12H321</string>
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -2,6 +2,19 @@
|
|||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
|
<key>BuildIdentitiesPatches</key>
|
||||||
|
<dict>
|
||||||
|
<key>UniqueBuildID</key>
|
||||||
|
<data>6k6aeJJ6bpXZW+P3p1Pmy9NttuM=</data>
|
||||||
|
<key>Manifest</key>
|
||||||
|
<dict>
|
||||||
|
<key>RestoreRamDisk</key>
|
||||||
|
<dict>
|
||||||
|
<key>Digest</key>
|
||||||
|
<data>W1s9h0o+OyNm+s3fBxFQQRoLNbA=</data>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
<key>DownloadUrl</key>
|
<key>DownloadUrl</key>
|
||||||
<string></string>
|
<string></string>
|
||||||
<key>Filename</key>
|
<key>Filename</key>
|
||||||
@ -23,6 +36,71 @@
|
|||||||
<key>TypeFlag</key>
|
<key>TypeFlag</key>
|
||||||
<integer>8</integer>
|
<integer>8</integer>
|
||||||
</dict>
|
</dict>
|
||||||
|
<key>RestoreDeviceTree</key>
|
||||||
|
<dict>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreDeviceTree</string>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/all_flash/all_flash.p107ap.production/DeviceTree.p107ap.img3</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>ade3c16e5919c6a820d631c95da3fae2</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>7faab4991cefdea2b460305e45c1557d4dddd072ddf492a8f756e5ece156f238</string>
|
||||||
|
</dict>
|
||||||
|
<key>RestoreKernelCache</key>
|
||||||
|
<dict>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreKernelCache</string>
|
||||||
|
<key>File</key>
|
||||||
|
<string>kernelcache.release.p107</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>505d5717132faa13c35daac2d76d2d19</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>8c53d8a9c6358a7ae89a207bdd0e02538be3eccf6f32925ea81a61e9d28d4859</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>4</integer>
|
||||||
|
</dict>
|
||||||
|
<key>RestoreLogo</key>
|
||||||
|
<dict>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreLogo</string>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/all_flash/all_flash.p107ap.production/applelogo.s5l8942x.img3</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>a5fcfc2bd24e4d134a1813852d8489ef</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>6889fbdf361060167c6a7d9a655d032a23b5c77d4360cee8f8b79f487fb6caa7</string>
|
||||||
|
</dict>
|
||||||
|
<key>iBEC</key>
|
||||||
|
<dict>
|
||||||
|
<key>Decrypt</key>
|
||||||
|
<true/>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/dfu/iBEC.p107.RELEASE.dfu</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>6569eed96df512cc8e8807a50fe79270</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>23c2d76e12dbef7c2a107d8733b96dc79cbbb353bf649cdc7fea63c91904f623</string>
|
||||||
|
<key>Patch</key>
|
||||||
|
<string>iBEC.p107.RELEASE.patch</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>8</integer>
|
||||||
|
</dict>
|
||||||
|
<key>iBSS</key>
|
||||||
|
<dict>
|
||||||
|
<key>Decrypt</key>
|
||||||
|
<true/>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/dfu/iBSS.p107.RELEASE.dfu</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>fa39c596b6569e572d90f0820e4e4357</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>34b359fcc729a0f0d2853e786a78b245ed36a9212c8296aaab95dc0401cf07de</string>
|
||||||
|
<key>Patch</key>
|
||||||
|
<string>iBSS.p107.RELEASE.patch</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>8</integer>
|
||||||
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Name</key>
|
<key>Name</key>
|
||||||
<string>iPad2,7_8.4.1_12H321</string>
|
<string>iPad2,7_8.4.1_12H321</string>
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -2,6 +2,19 @@
|
|||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
|
<key>BuildIdentitiesPatches</key>
|
||||||
|
<dict>
|
||||||
|
<key>UniqueBuildID</key>
|
||||||
|
<data>RbzAXeFgNq/YYimL8v7L6xPvI2Q=</data>
|
||||||
|
<key>Manifest</key>
|
||||||
|
<dict>
|
||||||
|
<key>RestoreRamDisk</key>
|
||||||
|
<dict>
|
||||||
|
<key>Digest</key>
|
||||||
|
<data>iIAxhUXqVmz+44ZiP0wQANYfNI8=</data>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
<key>DownloadUrl</key>
|
<key>DownloadUrl</key>
|
||||||
<string></string>
|
<string></string>
|
||||||
<key>Filename</key>
|
<key>Filename</key>
|
||||||
@ -23,6 +36,71 @@
|
|||||||
<key>TypeFlag</key>
|
<key>TypeFlag</key>
|
||||||
<integer>8</integer>
|
<integer>8</integer>
|
||||||
</dict>
|
</dict>
|
||||||
|
<key>RestoreDeviceTree</key>
|
||||||
|
<dict>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreDeviceTree</string>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/all_flash/all_flash.j1ap.production/DeviceTree.j1ap.img3</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>2e0ec7a136b34d93527aed0957945231</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>02b1fe2b74a8592aa1baf8a8f1ecb768ca33c7a2616f5a791766e0e8e1f04a7e</string>
|
||||||
|
</dict>
|
||||||
|
<key>RestoreKernelCache</key>
|
||||||
|
<dict>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreKernelCache</string>
|
||||||
|
<key>File</key>
|
||||||
|
<string>kernelcache.release.j1</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>6351467627ff19918f08df13ff7d6511</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>2620c3f911677de9c596ff6e380e5c8082203fa62f8890b83a10f86506ae409d</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>4</integer>
|
||||||
|
</dict>
|
||||||
|
<key>RestoreLogo</key>
|
||||||
|
<dict>
|
||||||
|
<key>DecryptPath</key>
|
||||||
|
<string>Downgrade/RestoreLogo</string>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/all_flash/all_flash.j1ap.production/applelogo@2x~ipad.s5l8945x.img3</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>3df4d1dea7c24fe4c46d5cff958b69e9</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>1ae2c4ba9b387976f3360c2203d4de6e1996f741678eaa9d9078fd76a57c3b79</string>
|
||||||
|
</dict>
|
||||||
|
<key>iBEC</key>
|
||||||
|
<dict>
|
||||||
|
<key>Decrypt</key>
|
||||||
|
<true/>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/dfu/iBEC.j1.RELEASE.dfu</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>1d9c3a01d5060390788f54b2f3506a08</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>a46f952d0eb17f6aec56132826395675bc7d1a0a570956fd905e4a0b98b5a874</string>
|
||||||
|
<key>Patch</key>
|
||||||
|
<string>iBEC.j1.RELEASE.patch</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>8</integer>
|
||||||
|
</dict>
|
||||||
|
<key>iBSS</key>
|
||||||
|
<dict>
|
||||||
|
<key>Decrypt</key>
|
||||||
|
<true/>
|
||||||
|
<key>File</key>
|
||||||
|
<string>Firmware/dfu/iBSS.j1.RELEASE.dfu</string>
|
||||||
|
<key>IV</key>
|
||||||
|
<string>c3ea87ed43788dfc3e268abdf1af27dd</string>
|
||||||
|
<key>Key</key>
|
||||||
|
<string>cd3dd7eee07b9ce8b180d1526632cf86dc7fef7d52352d06af354598ab9cf2ef</string>
|
||||||
|
<key>Patch</key>
|
||||||
|
<string>iBSS.j1.RELEASE.patch</string>
|
||||||
|
<key>TypeFlag</key>
|
||||||
|
<integer>8</integer>
|
||||||
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Name</key>
|
<key>Name</key>
|
||||||
<string>iPad3,1_8.4.1_12H321</string>
|
<string>iPad3,1_8.4.1_12H321</string>
|
||||||
|
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user