Reeder 4 works with Feedly but only if the account is already authenticated, it seems unlikely Reeder 4 will see an update to fix this. It is possible to copy the authentication from another session and add it manually to the Keychain. There are options with and without a jailbreak.
The authentication can be obtained from the macOS Keychain or an iOS backup.
-
Download Reeder 5 for macOS
-
Sign in to Feedly
-
Dump Keychain:
security dump-keychain -d login.keychainIt should include something like this:
keychain: "/Users/dave/Library/Keychains/login.keychain-db" version: 512 class: "genp" attributes: 0x00000007 <blob>="com.reederapp.Feedly" 0x00000008 <blob>=<NULL> "acct"<blob>="<account>" "cdat"<timedate>=0x32303231313033303135323432315A00 "20211030152421Z\000" "crtr"<uint32>=<NULL> "cusi"<sint32>=<NULL> "desc"<blob>=<NULL> "gena"<blob>=<NULL> "icmt"<blob>=<NULL> "invi"<sint32>=<NULL> "mdat"<timedate>=0x32303231313033303135323432315A00 "20211030152421Z\000" "nega"<sint32>=<NULL> "prot"<blob>=<NULL> "scrp"<sint32>=<NULL> "svce"<blob>="com.reederapp.Feedly" "type"<uint32>=<NULL> data: "{"consumerSecret":"","oauthTokenExpiresAt":657905061.65287197,"oauthRefreshToken":"<oauthRefreshToken>:reeder4","oauthToken":"<oauthToken>:reeder4","version":2,"consumerKey":"","oauthTokenSecret":"","oauthVerifier":""}"
-
Backup iOS device
-
Install a fork of iOS Backup Extraction:
go install github.com/dnicolson/ios/cmd/irestore@master -
Run
irestore <device> dumpkeys out.json -
The object with
com.reederapp.Feedlyas the value forsvcewill contain the base 64 encoded data for thev_Datakey
-
Backup iOS device
-
Open
Manifest.dbin the backup which can be found in~/Library/Application Support/MobileSync/Backupand run the following query:SELECT fileID FROM "Files" where relativePath = 'Documents/users.json' -
The
fileIDrepresents theusers.jsonfile in the backup, add the following to the JSON array:{ "username": "<email>", "id": "Feedly\/<account>", "serviceId": "Feedly", "extId": "<account>", "title": "Feedly", "sharingOnly": false } -
Restore iOS device with modified backup
-
Backup iOS device
-
In iMazing copy the document from this path to the Finder:
Apps > Reeder > Documents > users.json -
Edit
users.jsonby adding the following to the JSON array:{ "username": "<email>", "id": "Feedly\/<account>", "serviceId": "Feedly", "extId": "<account>", "title": "Feedly", "sharingOnly": false } -
Copy
users.jsonback into iMazing replacing the original file -
Restore iOS device with modified backup
-
Add a new account to Reeder on an iOS device (in this case Pocket)
-
Use iMazing to create a backup
-
Copy the backup from
~/Library/Application Support/iMazing/Backupsto~/Library/Application Support/MobileSync/Backup/ -
Run
irestore <device> dumpkeys keys.json -
Edit
keys.jsonreplacing thesvceandv_Datakeys with Feedly Pocket equivalents -
Run
irestore <device> encryptkeys keys.json keys.plist -
In iMazing copy the document from this path to the Finder:
File System > KeychainDomain > keychain-backup.plist -
Copy the
v_Datablock fromkeys.plisttokeychain-backup.plistwhere thev_PersistentRefvalue matches the_ref valuein the originalcom.reederapp.Pocketobject -
Copy
keychain-backup.plistback into iMazing replacing the original file -
Sync backup
-
Jailbreak iOS 12.5.5 device with Checkra1n
-
Install Theos https://github.com/theos/theos/wiki/Installation-macOS
-
Create new Theos instance:
$THEOS/bin/nic.plChoose
iphone/tool_swiftEnter
KeychainAddas the project namecd keychainadd -
Add the following to the
entitlements.plistfile:<key>keychain-access-groups</key> <array> <string>66JC38RDUD.com.reederapp</string> </array>
-
Add the following to the
main.swiftfile:import Foundation let auth = "{\"consumerSecret\":\"\",\"oauthTokenExpiresAt\":657905061.65287197,\"oauthRefreshToken\":\"<oauthRefreshToken>:reeder4\",\"oauthToken\":\"oauthToken:reeder4\",\"version\":2,\"consumerKey\":\"\",\"oauthTokenSecret\":\"\",\"oauthVerifier\":\"\"}".data(using: .utf8)! let attributes: [String: Any] = [ kSecClass as String: kSecClassGenericPassword, kSecAttrAccessGroup as String: "66JC38RDUD.com.reederapp", kSecAttrAccount as String: "<account>", kSecAttrService as String: "com.reederapp.Feedly", kSecAttrAccessible as String: kSecAttrAccessibleAfterFirstUnlock, kSecValueData as String: auth ] var result: CFTypeRef? let status = SecItemAdd(attributes as CFDictionary, &result) if status == errSecSuccess { print("Feedly authentication added to Keychain.") } else { print("Error:", status) }
-
Run
make -
Copy binary to device:
scp .theos/obj/debug/KeychainAdd root@<ip>:/KeychainAdd -
Run
/KeychainAddon the device -
Optionally remove the binary with
rm /KeychainAdd
-
Jailbreak iOS 13.5 device with Unc0ver or Checkra1n
-
Add https://miro92.com/repo/ to Cydia sources
-
Install Keychain Editor (arm64) 2.5.1
-
Add
66JC38RDUD.com.reederappentitlement:scp root@<ip>:/usr/local/bin/keychaineditor keychaineditor ldid -e keychaineditor > ent.xml plutil -insert keychain-access-groups.0 -string 66JC38RDUD.com.reederapp ent.xml ldid -Sent.xml keychaineditor scp keychaineditor root@<ip>:/usr/local/bin/keychaineditor -
Add Keychain item on the device:
keychaineditor -a --account <account> --service com.reederapp.Feedly --agroup 66JC38RDUD.com.reederapp --data <base64 encoded data>