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.keychain
It 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.Feedly
as the value forsvce
will contain the base 64 encoded data for thev_Data
key
-
Backup iOS device
-
Open
Manifest.db
in the backup which can be found in~/Library/Application Support/MobileSync/Backup
and run the following query:SELECT fileID FROM "Files" where relativePath = 'Documents/users.json'
-
The
fileID
represents theusers.json
file 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.json
by adding the following to the JSON array:{ "username": "<email>", "id": "Feedly\/<account>", "serviceId": "Feedly", "extId": "<account>", "title": "Feedly", "sharingOnly": false }
-
Copy
users.json
back 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/Backups
to~/Library/Application Support/MobileSync/Backup/
-
Run
irestore <device> dumpkeys keys.json
-
Edit
keys.json
replacing thesvce
andv_Data
keys 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_Data
block fromkeys.plist
tokeychain-backup.plist
where thev_PersistentRef
value matches the_ref value
in the originalcom.reederapp.Pocket
object -
Copy
keychain-backup.plist
back 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.pl
Choose
iphone/tool_swift
Enter
KeychainAdd
as the project namecd keychainadd
-
Add the following to the
entitlements.plist
file:<key>keychain-access-groups</key> <array> <string>66JC38RDUD.com.reederapp</string> </array>
-
Add the following to the
main.swift
file: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
/KeychainAdd
on 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.reederapp
entitlement: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>