From 766f30acfe5a514450ed7d4f2146a15a620b30a7 Mon Sep 17 00:00:00 2001 From: whydr4 <42878446+whydr4@users.noreply.github.com> Date: Wed, 14 Oct 2026 20:35:49 +0200 Subject: [PATCH 1/2] Describe AltServer as an Android client when signing in AnisetteKit provisions an Android device, but the anisette data still reported the macOS client info. Since Oct 13 GrandSlam refuses that mismatch with -80045 (This action cannot be completed at this time). --- AltServer/Anisette Data/LocalAnisetteDataManager.swift | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/AltServer/Anisette Data/LocalAnisetteDataManager.swift b/AltServer/Anisette Data/LocalAnisetteDataManager.swift index 8791646759..c7da879361 100644 --- a/AltServer/Anisette Data/LocalAnisetteDataManager.swift +++ b/AltServer/Anisette Data/LocalAnisetteDataManager.swift @@ -20,6 +20,13 @@ private extension URL static let unzip = URL(fileURLWithPath: "/usr/bin/unzip") } +private extension String +{ + // AnisetteKit provisions an Android device, and GrandSlam now rejects sign-in with -80045 + // when X-MMe-Client-Info describes a Mac instead. + static let androidClientInfo = " " +} + // Swift wrapper around AnisetteKit to generate anisette data when macOS won't provide it. class LocalAnisetteDataManager { @@ -155,7 +162,7 @@ private extension LocalAnisetteDataManager routingInfo: routingInfo, deviceUniqueIdentifier: identifier.uuidString.uppercased(), deviceSerialNumber: AnisetteConstants.defaultSerialNumber, - deviceDescription: client.clientInfo, + deviceDescription: .androidClientInfo, date: Date(), locale: .current, timeZone: .current) From fe3601de76a581af1abd50fac303cf0af15cf781 Mon Sep 17 00:00:00 2001 From: whydr4 <42878446+whydr4@users.noreply.github.com> Date: Wed, 14 Oct 2026 21:16:41 +0200 Subject: [PATCH 2/2] Give AltSign fresh anisette data between sign-in steps Needed for the 2FA fix in rileytestut/AltSign#59, which this also bumps the AltSign submodule to. --- AltServer/AppDelegate.swift | 11 +++++++++++ Dependencies/AltSign | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/AltServer/AppDelegate.swift b/AltServer/AppDelegate.swift index 8b3abb6d43..b57a904293 100644 --- a/AltServer/AppDelegate.swift +++ b/AltServer/AppDelegate.swift @@ -61,6 +61,17 @@ class AppDelegate: NSObject, NSApplicationDelegate { ServerConnectionManager.shared.start() ALTDeviceManager.shared.start() + // Apple rejects one-time passwords that were already used, so let AltSign ask for new anisette data between sign-in steps. + ALTAppleAPI.shared.anisetteDataRefreshHandler = { (completionHandler) in + AnisetteDataManager.shared.requestAnisetteData { (result) in + switch result + { + case .failure(let error): completionHandler(nil, error) + case .success(let anisetteData): completionHandler(anisetteData, nil) + } + } + } + #if STAGING SUUpdater.shared().feedURL = URL(string: "https://altstore.io/altserver/sparkle-macos-staging.xml") #else diff --git a/Dependencies/AltSign b/Dependencies/AltSign index 0d3c1a3cac..780f7cfb9b 160000 --- a/Dependencies/AltSign +++ b/Dependencies/AltSign @@ -1 +1 @@ -Subproject commit 0d3c1a3cac608e724ca0c8d7404253cd5fee9495 +Subproject commit 780f7cfb9b0dab1189fb8fcdaaa31f005cfab597