ipa-resign 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +47 -0
- package/README.md +7 -5
- package/assets/anisette/anisette_rs.js +4 -0
- package/assets/zsign/zsign-wasm.min.js +1 -0
- package/dist/THIRD-PARTY-LICENSES.txt +1 -1
- package/dist/anisette-browser/index.d.ts +26 -0
- package/dist/anisette-browser/index.js +1 -452
- package/dist/browser/index.js +1 -554
- package/dist/core/index.js +1 -1302
- package/dist/index.js +1 -2
- package/dist/index.mjs +1 -2
- package/dist/sign-browser/index.js +2 -18313
- package/package.json +4 -4
- package/dist/index.jsc +0 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
Copyright (c) 2026 650 Industries, Inc. All rights reserved.
|
|
2
|
+
|
|
3
|
+
PROPRIETARY SOFTWARE LICENSE
|
|
4
|
+
|
|
5
|
+
This software, including the package published as "ipa-resign" and all of its
|
|
6
|
+
source code, compiled bundles, native helper binaries, and accompanying files
|
|
7
|
+
(the "Software"), is the confidential and proprietary property of 650
|
|
8
|
+
Industries, Inc. ("650 Industries").
|
|
9
|
+
|
|
10
|
+
1. No license granted. No license or right to the Software is granted to you,
|
|
11
|
+
whether by implication, estoppel, or otherwise, except under a separate
|
|
12
|
+
written agreement signed by 650 Industries. Absent such an agreement, you may
|
|
13
|
+
not use, copy, install, execute, or retain the Software.
|
|
14
|
+
|
|
15
|
+
2. Restrictions. You may not, and may not permit any third party to:
|
|
16
|
+
(a) reverse engineer, decompile, disassemble, deobfuscate, or otherwise
|
|
17
|
+
attempt to derive the source code, structure, algorithms, or protocols of
|
|
18
|
+
the Software, in whole or in part;
|
|
19
|
+
(b) copy, distribute, republish, sublicense, sell, rent, lease, or otherwise
|
|
20
|
+
make the Software available to any third party;
|
|
21
|
+
(c) modify, adapt, translate, or create derivative works of the Software; or
|
|
22
|
+
(d) remove, obscure, or alter any proprietary notice in the Software.
|
|
23
|
+
|
|
24
|
+
Any circumvention or attempted circumvention of the technical protection
|
|
25
|
+
measures in the Software (including its obfuscation) is a material breach of
|
|
26
|
+
this license and may violate applicable law.
|
|
27
|
+
|
|
28
|
+
3. Third-party components. The Software bundles third-party open-source
|
|
29
|
+
components that remain licensed under their own respective terms. Those terms,
|
|
30
|
+
and the required copyright and permission notices, are reproduced in
|
|
31
|
+
dist/THIRD-PARTY-LICENSES.txt. Nothing in this license limits your rights, or
|
|
32
|
+
enlarges your obligations, under those third-party licenses with respect to
|
|
33
|
+
those components. The restrictions in Section 2 apply only to the proprietary
|
|
34
|
+
portions of the Software authored by 650 Industries.
|
|
35
|
+
|
|
36
|
+
4. Reservation of rights. All rights not expressly granted are reserved by 650
|
|
37
|
+
Industries. This license does not transfer any ownership, title, or
|
|
38
|
+
intellectual property right in the Software.
|
|
39
|
+
|
|
40
|
+
5. No warranty. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
41
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
42
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT.
|
|
43
|
+
|
|
44
|
+
6. Limitation of liability. IN NO EVENT SHALL 650 INDUSTRIES BE LIABLE FOR ANY
|
|
45
|
+
CLAIM, DAMAGES, OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT, OR
|
|
46
|
+
OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION WITH THE SOFTWARE OR THE USE
|
|
47
|
+
OR OTHER DEALINGS IN THE SOFTWARE.
|
package/README.md
CHANGED
|
@@ -95,14 +95,16 @@ and re-wrap bytes as `Buffer` for the CLI. Full design:
|
|
|
95
95
|
|
|
96
96
|
```bash
|
|
97
97
|
yarn install
|
|
98
|
-
yarn build # dist/:
|
|
98
|
+
yarn build # dist/: obfuscated CLI bundle (index.js) + the ipa-resign/core and
|
|
99
99
|
# ipa-resign/anisette-browser subpath builds + bundled .d.ts
|
|
100
100
|
```
|
|
101
101
|
|
|
102
|
-
`yarn build` is platform-agnostic — it
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
102
|
+
`yarn build` is platform-agnostic — it bundles TypeScript (via esbuild) and runs each
|
|
103
|
+
bundle through `javascript-obfuscator` (`scripts/obfuscate.mjs`). It runs several
|
|
104
|
+
steps: the obfuscated CLI build, then `build:core`, `build:anisette-browser`,
|
|
105
|
+
`build:sign-browser`, and `build:browser` (the browser-consumable subpaths, which you
|
|
106
|
+
can also run on their own). The native helper binaries are built separately because
|
|
107
|
+
they require platform-specific toolchains:
|
|
106
108
|
|
|
107
109
|
```bash
|
|
108
110
|
# Build the macOS anisette helper (only works on macOS — needs swiftc, i.e. Xcode CLT).
|
|
@@ -9,6 +9,10 @@ async function Module(moduleArg = {}) {
|
|
|
9
9
|
// include: shell.js
|
|
10
10
|
// include: minimum_runtime_check.js
|
|
11
11
|
(function() {
|
|
12
|
+
// HAND-PATCHED (re-apply when regenerating this file): emscripten's UA
|
|
13
|
+
// version check misparses modern Safari/WebKit and throws before the wasm
|
|
14
|
+
// loads (APPLE-SIGN-20). Skip the whole check.
|
|
15
|
+
return;
|
|
12
16
|
// "30.0.0" -> 300000
|
|
13
17
|
function humanReadableVersionToPacked(str) {
|
|
14
18
|
str = str.split('-')[0]; // Remove any trailing part from e.g. "12.53.3-alpha"
|
|
@@ -22,6 +22,7 @@ var createZsignModule = (() => {
|
|
|
22
22
|
// include: shell.js
|
|
23
23
|
// include: minimum_runtime_check.js
|
|
24
24
|
(function() {
|
|
25
|
+
return; // patched by vendor-zsign.mjs: UA version check misparses modern Safari (APPLE-SIGN-20)
|
|
25
26
|
// "30.0.0" -> 300000
|
|
26
27
|
function humanReadableVersionToPacked(str) {
|
|
27
28
|
str = str.split('-')[0]; // Remove any trailing part from e.g. "12.53.3-alpha"
|
|
@@ -32,6 +32,32 @@ export type AnisetteSource = {
|
|
|
32
32
|
export declare function setAnisetteSource(source: AnisetteSource): void;
|
|
33
33
|
export declare function getAnisetteHeadersAsync(): Promise<AnisetteHeaders>;
|
|
34
34
|
export declare function clearAnisetteCache(): void;
|
|
35
|
+
/** How the browser device presents to Apple's account device list. */
|
|
36
|
+
export type AnisetteDeviceConfig = {
|
|
37
|
+
/** Real Apple model id, e.g. `Macmini9,1` or `MacBookPro18,1`. Unknown ids show as "Mac". */
|
|
38
|
+
model?: string;
|
|
39
|
+
/** macOS version shown on the Version line, e.g. `26.5`. Free-form; recorded at registration. */
|
|
40
|
+
osVersion?: string;
|
|
41
|
+
/** macOS build paired with the version, e.g. `25F71`. Not displayed; kept for realism. */
|
|
42
|
+
osBuild?: string;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Set how browser sign-ins present to Apple's account device list, by part. Merges with the
|
|
46
|
+
* current config, so `setAnisetteDevice({ osVersion: '26.5' })` changes only the version. The
|
|
47
|
+
* `model` MUST be a real Apple model id (unknown → generic "Mac"); `osVersion`/`osBuild` are
|
|
48
|
+
* free-form (probe-verified, 2026-08). Call before the first sign-in — this resets the in-memory
|
|
49
|
+
* instance so the change takes effect. Note: the OS version only *records* at fresh device
|
|
50
|
+
* registration; re-authing an already-provisioned device keeps its original version.
|
|
51
|
+
*/
|
|
52
|
+
export declare function setAnisetteDevice(config: AnisetteDeviceConfig): void;
|
|
53
|
+
/**
|
|
54
|
+
* Escape hatch: set the raw `X-MMe-Client-Info` string directly, e.g.
|
|
55
|
+
* `<Macmini9,1> <macOS;26.5;25F71> <com.apple.AuthKit/1 (com.apple.dt.Xcode/3594.4.19)>`.
|
|
56
|
+
* Prefer setAnisetteDevice() for the common case; this is for non-macOS platform strings or
|
|
57
|
+
* custom app slots. Same rules apply (real model id; version passes through). Call before the
|
|
58
|
+
* first sign-in.
|
|
59
|
+
*/
|
|
60
|
+
export declare function setAnisetteClientInfo(value: string): void;
|
|
35
61
|
export declare function generateAnisetteHeadersLocallyAsync(onProgress?: SscProgress): Promise<Record<string, string>>;
|
|
36
62
|
export declare function clearLocalAnisetteState(): void;
|
|
37
63
|
|