-
Notifications
You must be signed in to change notification settings - Fork 25
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
189 additions
and
50 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
name: Build | ||
|
||
on: | ||
push: | ||
pull_request: | ||
workflow_dispatch: | ||
|
||
jobs: | ||
build: | ||
strategy: | ||
matrix: | ||
os: [macos-12, macos-13, macos-14] | ||
runs-on: ${{ matrix.os }} | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Build | ||
run: make | ||
- name: Test binary | ||
run: | | ||
./aastuff | ||
./aastuff_standalone | ||
- name: Upload artifacts | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: macOS artifacts for ${{ matrix.os }} | ||
path: aastuff* | ||
|
||
test-get-key: | ||
strategy: | ||
matrix: | ||
python-version: [3.10, 3.11, 3.12] | ||
runs-on: [ubuntu-latest, macos-latest, windows-latest] | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/setup-python@v5 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
cache: "pip" | ||
- name: Cache test files | ||
id: cache | ||
uses: actions/cache@v4 | ||
with: | ||
key: test-get-key-files | ||
path: | | ||
tests | ||
- name: Download test files | ||
if: ${{ steps.cache.outputs.cache-hit != 'true' }} | ||
run: | | ||
mkdir tests tests/macOS_15_beta_1_OTA tests/iOS_18_beta_1_IPSW/ | ||
curl -L "https://updates.cdn-apple.com/2024SummerSeed/mobileassets/052-49061/CA7135A8-BAF6-4890-887C-35FB30C154D5/com_apple_MobileAsset_MacSoftwareUpdate/e2de87f20576b2bdc021d36f74a2f836cf42afe576178388dfd0cde875f4f979.aea" -o tests/macOS_15_beta_1_OTA/encrypted.aea | ||
echo "$MACOS_OTA_TEST_KEY" > tests/macOS_15_beta_1_OTA/expected.txt | ||
curl -L "https://updates.cdn-apple.com/2024SummerSeed/fullrestores/052-34764/D5D3D10C-E557-4A46-8EBD-290411A228AA/iPhone16,2_18.0_22A5282m_Restore.ipsw" -o tests/iPhone_15PM_18.0_22A5282m.ipsw | ||
unzip -p tests/iPhone_15PM_18.0_22A5282m.ipsw 090-29713-049.dmg.aea > tests/iOS_18_beta_1_IPSW/encrypted.aea | ||
rm tests/iPhone_15PM_18.0_22A5282m.ipsw | ||
echo "$IOS_IPSW_TEST_KEY" > tests/iOS_18_beta_1_IPSW/expected.txt | ||
- name: Run tests | ||
run: ./test_get_key.sh | ||
|
||
test-aastuff: | ||
runs-on: macos-latest | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Cache test files | ||
id: cache | ||
uses: actions/cache@v4 | ||
with: | ||
key: test-aastuff-files | ||
path: | | ||
tests | ||
- name: Download test files | ||
if: ${{ steps.cache.outputs.cache-hit != 'true' }} | ||
run: | | ||
mkdir tests tests/small tests/large | ||
# This file uses a compressed inner layer | ||
curl -L "https://updates.cdn-apple.com/2024/Iris/mobileassets/003-49672/A1233F60-3D17-491B-803A-DB26E20695AE/com_apple_MobileAsset_UAF_Siri_Understanding/6FF3BAF0-FBEF-4C01-BB0E-30CD61DAFCC4.aar" -o tests/small/encrypted.aea | ||
echo "$SMALL_TEST_KEY" > tests/small/key.txt | ||
# This file uses a raw inner layer | ||
curl -L "https://updates.cdn-apple.com/2024SummerSeed/mobileassets/052-49061/CA7135A8-BAF6-4890-887C-35FB30C154D5/com_apple_MobileAsset_MacSoftwareUpdate/e2de87f20576b2bdc021d36f74a2f836cf42afe576178388dfd0cde875f4f979.aea" -o tests/large/encrypted.aea | ||
echo "$LARGE_TEST_KEY" > tests/large/key.txt | ||
- name: Build | ||
run: make | ||
- name: Run tests | ||
run: ./test_extract.sh |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
#!/usr/bin/env bash | ||
|
||
set -e | ||
|
||
rm -rf tmp | ||
mkdir tmp | ||
|
||
for i in tests/*; do | ||
echo "Testing $i" | ||
mkdir -p "tmp/$i/a" "tmp/$i/b" | ||
./aastuff "tests/$i/encrypted.aar" "tmp/$i/a" "$(cat tests/"$i"/key.txt)" | ||
./aastuff_standalone "tests/$i/encrypted.aar" "tmp/$i/b" "$(cat tests/"$i"/key.txt)" | ||
diff -r "tmp/$i/a" "tmp/$i/b" && echo "Test $i passed" || echo "Test $i failed" | ||
done | ||
|
||
rm -rf tmp | ||
echo Done |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
#!/usr/bin/env bash | ||
|
||
set -e | ||
|
||
abort() { | ||
echo "$1" | ||
exit 1 | ||
} | ||
|
||
rm -rf tmp | ||
mkdir tmp | ||
|
||
for i in tests/*; do | ||
echo "Testing $i" | ||
mkdir -p "tmp/$i" | ||
# Ensure expected key is valid first | ||
aea decrypt -i "tests/$i/encrypted.aea" -o "tmp/decrypted" -key-value "base64:$(cat tests/"$i"/expected.txt)" || abort "Failed to decrypt with expected key" | ||
# Get the key | ||
python3 get_key.py "tests/$i/encrypted.aea" > "tmp/$1/actual.txt" || abort "Failed to get key" | ||
# Ensure the key is correct | ||
aea decrypt -i "tests/$i/encrypted.aea" -o "tmp/decrypted" -key-value "base64:$(cat tests/"$i"/actual.txt)" || abort "Failed to decrypt with actual key" | ||
if diff -q "tmp/$i/actual.txt" "tests/$i/expected.txt"; then | ||
echo "Warning: key does not match expected key, but decryption was successful" | ||
fi | ||
echo "Test $i passed" | ||
done | ||
|
||
rm -rf tmp | ||
echo Done |