FindMySync icon indicating copy to clipboard operation
FindMySync copied to clipboard

Broken in Sequoia

Open nukolator opened this issue 1 year ago • 17 comments

I know this states support up to Sonoma, but it looks like Apple have moved the required data files again under Sequoia. Running /usr/bin/security find-generic-password -l BeaconStore -g returns security: SecKeychainSearchCopyNext: The specified item could not be found in the keychain.

The cache location remains: ~/Library/Caches/com.apple.findmy.fmipcore But doesn't look to have updated in the last 12 days.

nukolator avatar Sep 17 '24 22:09 nukolator

In my case the cache seems to be updated

corti@mini ~> ls -~/Library/Caches/com.apple.findmy.fmipcorere
total 176
-rw-r--r--@ 1 corti  staff  26711 Sep 18 21:24 Devices.data
-rw-r--r--@ 1 corti  staff    530 Sep 18 21:24 FamilyMembers.data
-rw-r--r--@ 1 corti  staff   7566 Sep 18 21:24 ItemGroups.data
-rw-r--r--@ 1 corti  staff  29101 Sep 18 21:24 Items.data
-rw-r--r--@ 1 corti  staff    430 Mar  7  2024 Owner.data
-rw-r--r--@ 1 corti  staff  11142 Sep 18 21:24 SafeLocations.data
corti@mini ~> date
Wed Sep 18 21:26:00 CEST 2024

The entry in the keychain is still there and was modified two days ago:

image

matteocorti avatar Sep 18 '24 19:09 matteocorti

Same issue here. Are there any solutions?

FrankGiesecke avatar Sep 21 '24 21:09 FrankGiesecke

Same issue. Can't seem to get the password from the Keychain directly either.

kamushadenes avatar Sep 22 '24 19:09 kamushadenes

This is probably related to this comment. https://github.com/MartinPham/FindMySync/issues/25#issuecomment-2266719318

As far as I can see, those password now managed by the com.apple.icloud.searchpartyuseragent group which I can't see in groups list. And I can't access those password with my admin account. I also tried the command that you suggest to run in app. It can't find any BeaconStorage in password list because of this change I assume.

I have some knowledge in Linux systems but Macos is complete a foreign language to me so forgive me if I point a wrong direction. So @MartinPham sorry to ping you but if you are still interested this project I can help if you need any help.

Thanks a lot for your effort & time

akinomeroglu avatar Sep 23 '24 06:09 akinomeroglu

Any idea how to solve this? If not, It might be better to use macOS Sonoma 14.x until this issue is solved.

FrankGiesecke avatar Sep 24 '24 13:09 FrankGiesecke

Hi @FrankGiesecke I try to dig this problem a little bit and check other similar projects for any possible solution. I still can't find a way add the regular admin account to process user group to access user password. So if you really dependent to this app please stick to sonoma instead of sequoia.

I have some one who has more experience than mine will look and solve the issue.

ps. there is another issue for airy10's solution which you can track as a cross reference. https://github.com/airy10/FindMyDevices/issues/1

akinomeroglu avatar Sep 24 '24 18:09 akinomeroglu

Does it have a fix yet?

balajeek avatar Nov 18 '24 21:11 balajeek

With MacOS 15 (Sequoia), Apple moved the BeaconStore key from living on the locally accessible login keychain (based on files) to the iOS-style "iCloud"/"Local Items" keychain. Based on this thread on an Apple forum from 2021 - https://forums.developer.apple.com/forums/thread/676891 - this keychain uses permissions based on entitlements:

Your access to these groups is determined by your entitlements; see Set Your App’s Access Groups in Sharing Access to Keychain Items Among a Collection of Apps for the details (1). These entitlements must be allowlisted by your provisioning profile, and Apple won’t issue you a provisioning profile that allows you access to the com.apple.ssh.passphrases keychain access group.

Keychain Access tool can still seemingly access these passwords and show them, but it seems that Keychain Access won't show passwords that are bytes rather than a string, since it has never shown the BeaconStore password for me.

Since provisioning profiles are controlled entirely by Apple, and Keychain Access can't be used to access the password, I doubt there is a way to work around this using any of the tools folks have been using.

crschmidt avatar Dec 13 '24 19:12 crschmidt

In Sonoma, access control is controllable by the user:

image

In Sequoia, access control is no longer controllable: image

By disabling keychain icloud sync, the key ends up in Local items:

image

So a workaround may be to look into the database file ./Library/Keychains/<UUID>/keychain-2.db

% sqlite3 ./Library/Keychains/*/keychain-2.db .dump|grep -i searchparty |grep keys
INSERT INTO keys VALUES(...
...
','com.apple.icloud.searchpartyuseragent',
...

Either extracting the key from the database, or by adjusting the agrp in the keychain permissions such that the terminal may access the key. Or add a new key from the terminal, and update the key data with the beaconstore information.

sqlite3 ./Library/Keychains/*/keychain-2.db 'select agrp from keys' 
...
com.apple.Spotlight.Metadata
com.apple.iCloudNotificationAgent
com.apple.icloud.searchpartyuseragent
com.apple.identityservicesd
...

The keys table has the following information:

CREATE TABLE keys(rowid INTEGER PRIMARY KEY AUTOINCREMENT,cdat REAL,mdat REAL,kcls INTEGER NOT NULL DEFAULT 0,labl BLOB,alis BLOB,perm INTEGER,priv INTEGER,modi INTEGER,klbl BLOB NOT NULL DEFAULT '',atag BLOB NOT NULL DEFAULT '',crtr INTEGER NOT NULL DEFAULT 0,type INTEGER NOT NULL DEFAULT 0,bsiz INTEGER NOT NULL DEFAULT 0,esiz INTEGER NOT NULL DEFAULT 0,sdat REAL NOT NULL DEFAULT 0,edat REAL NOT NULL DEFAULT 0,sens INTEGER,asen INTEGER,extr INTEGER,next INTEGER,encr INTEGER,decr INTEGER,drve INTEGER,sign INTEGER,vrfy INTEGER,snrc INTEGER,vyrc INTEGER,wrap INTEGER,unwp INTEGER,data BLOB,agrp TEXT NOT NULL,pdmn TEXT,sync INTEGER NOT NULL DEFAULT 0,tomb INTEGER NOT NULL DEFAULT 0,sha1 BLOB,vwht TEXT,tkid TEXT,musr BLOB NOT NULL,UUID TEXT,sysb INTEGER DEFAULT 0,pcss INTEGER,pcsk BLOB,pcsi BLOB,persistref BLOB NOT NULL,clip INTEGER NOT NULL DEFAULT 0,ggrp TEXT,UNIQUE(kcls,klbl,atag,crtr,type,bsiz,esiz,sdat,edat,agrp,sync,vwht,tkid,musr,ggrp));

I haven't tried myself though - I "solved" the problem by using Sonoma for the time being.

alfs avatar Jan 05 '25 22:01 alfs

@alfs Thanks for sharing! I am suspecting that the Sonoma workaround might not be entirely working (or might not work soon). The decoded plist does not seem to contain master keys that match with what my airtag is broadcasting. I am looking into if I can get this keychain-2.db idea to work. Any idea on which one is the BeaconStore? I also tried various ways to get around the searchparty agrp but don't seem to work.

thisiscam avatar Jan 08 '25 05:01 thisiscam

By disabling keychain icloud sync, the key ends up in Local items:

If the key is moved to the Local items does the password then become accessible or what would be the purpose of moving from icloud to Local? thanks

wilkyconsultants avatar Mar 24 '25 12:03 wilkyconsultants

Same error in macos Tahoe

JamesDAdams avatar Nov 09 '25 06:11 JamesDAdams

I have created a new project called FindMySyncPlus. It based on the concepts of this project, and also leverages @Pnut-GGG's FMIPDataManager-extractor and findmy-cache-decryptor. It requires Sequoia or Tahoe to run.

manonstreet avatar Nov 10 '25 04:11 manonstreet

I have created a new project called FindMySyncPlus. It based on the concepts of this project, and also leverages @Pnut-GGG's FMIPDataManager-extractor and findmy-cache-decryptor. It requires Sequoia or Tahoe to run.

Sounds good, few questions, 1) Does it decrypt the Items.data file in to text json? 2) How to run it ? thanks!

wilkyconsultants avatar Nov 10 '25 12:11 wilkyconsultants

I have created a new project called FindMySyncPlus. It based on the concepts of this project, and also leverages @Pnut-GGG's FMIPDataManager-extractor and findmy-cache-decryptor. It requires Sequoia or Tahoe to run.

Sounds good, few questions, 1) Does it decrypt the Items.data file in to text json? 2) How to run it ? thanks!

High level: 1) Yes it works on Items.data. But no it does not write an intermediate output file. It decrypts the plist items, and parses the decrypted array in memory before posting to your HA endpoint. 2) Either compile the swift program in Xcode, or download the pre-compiled Release. Please note, I did not pay for an apple developer certificate, so running it will get blocked by GateKeeper unless you explicitly allow it.

Probably best to move all future questions to the FindMySync+ repo.

manonstreet avatar Nov 10 '25 16:11 manonstreet

I have created a new project called FindMySyncPlus. It based on the concepts of this project, and also leverages @Pnut-GGG's FMIPDataManager-extractor and findmy-cache-decryptor. It requires Sequoia or Tahoe to run.

Sounds good, few questions, 1) Does it decrypt the Items.data file in to text json? 2) How to run it ? thanks!

High level: 1) Yes it works on Items.data. But no it does not write an intermediate output file. It decrypts the plist items, and parses the decrypted array in memory before posting to your HA endpoint. 2) Either compile the swift program in Xcode, or download the pre-compiled Release. Please note, I did not pay for an apple developer certificate, so running it will get blocked by GateKeeper unless you explicitly allow it.

Probably best to move all future questions to the FindMySync+ repo.

Ok thanks, I added a repo issue, seems only supports silcon based macs (GPU issue), I am running on a Macbook Pro 2012 (Intel) via OLCP..

wilkyconsultants avatar Nov 11 '25 21:11 wilkyconsultants

Ok thanks, I added a repo issue, seems only supports silcon based macs (GPU issue), I am running on a Macbook Pro 2012 (Intel) via OLCP..

Confirmed working on Intel. See issue details in the other repo.

manonstreet avatar Nov 18 '25 01:11 manonstreet