Skip to content

Instantly share code, notes, and snippets.

@dnicolson
Last active October 17, 2024 20:55
Show Gist options
  • Save dnicolson/73c9f7359db9f61b3621a1e4918aa136 to your computer and use it in GitHub Desktop.
Save dnicolson/73c9f7359db9f61b3621a1e4918aa136 to your computer and use it in GitHub Desktop.

Revisions

  1. dnicolson revised this gist Jan 9, 2022. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions Reeder-4-and-Feedly.md
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,6 @@
    # Signing in to Feedly with Reeder 4 on iOS

    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.
    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.

    ### Get Feedly Authentication

    @@ -47,7 +47,7 @@ The authentication can be obtained from the macOS Keychain or an iOS backup.

    1. Backup iOS device

    2. Install a fork of with [iOS Backup Extraction](https://github.com/dnicolson/ios):
    2. Install a fork of [iOS Backup Extraction](https://github.com/dnicolson/ios):

    `go install github.com/dnicolson/ios/cmd/irestore@master`

  2. dnicolson revised this gist Jan 9, 2022. 1 changed file with 56 additions and 7 deletions.
    63 changes: 56 additions & 7 deletions Reeder-4-and-Feedly.md
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,6 @@
    # Signing in to Feedly with Reeder 4 on iOS

    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.
    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.

    ### Get Feedly Authentication

    @@ -15,6 +15,7 @@ The authentication can be obtained from the macOS Keychain or an iOS backup.
    3. Dump Keychain:

    `security dump-keychain -d login.keychain`

    It should include something like this:

    ```
    @@ -46,16 +47,18 @@ The authentication can be obtained from the macOS Keychain or an iOS backup.

    1. Backup iOS device

    2. Install [iOS Backup Extraction](https://github.com/dunhamsteve/ios):
    2. Install a fork of with [iOS Backup Extraction](https://github.com/dnicolson/ios):

    `go get github.com/dunhamsteve/ios/cmd/irestore`
    `go install github.com/dnicolson/ios/cmd/irestore@master`

    3. Run `irestore <device> dumpkeys out.json`

    4. The object with `com.reederapp.Feedly` as the value for `svce` will contain the base 64 encoded data for the `v_Data` key

    ### Add Feedly Account

    #### With an Unencrypted Backup

    1. Backup iOS device

    2. Open `Manifest.db` in the backup which can be found in `~/Library/Application Support/MobileSync/Backup` and run the following query:
    @@ -77,9 +80,53 @@ The authentication can be obtained from the macOS Keychain or an iOS backup.

    4. Restore iOS device with modified backup

    #### With an Encrypted Backup

    1. Backup iOS device

    2. In [iMazing](https://imazing.com/) copy the document from this path to the Finder: `Apps > Reeder > Documents > users.json`

    3. Edit `users.json` by adding the following to the JSON array:

    ```
    {
    "username": "<email>",
    "id": "Feedly\/<account>",
    "serviceId": "Feedly",
    "extId": "<account>",
    "title": "Feedly",
    "sharingOnly": false
    }
    ```
    4. Copy `users.json` back into iMazing replacing the original file

    5. Restore iOS device with modified backup

    ### Add Keychain Item

    #### Option 1: Theos
    #### Option 1: Modifying a Backup

    1. Add a new account to Reeder on an iOS device (in this case Pocket)

    2. Use iMazing to create a backup

    3. Copy the backup from `~/Library/Application Support/iMazing/Backups` to `~/Library/Application Support/MobileSync/Backup/`

    4. Run `irestore <device> dumpkeys keys.json`

    5. Edit `keys.json` replacing the `svce` and `v_Data` keys with Feedly Pocket equivalents

    6. Run `irestore <device> encryptkeys keys.json keys.plist`

    7. In iMazing copy the document from this path to the Finder: `File System > KeychainDomain > keychain-backup.plist`

    8. Copy the `v_Data` block from `keys.plist` to `keychain-backup.plist` where the `v_PersistentRef` value matches the `_ref value` in the original `com.reederapp.Pocket` object

    9. Copy `keychain-backup.plist` back into iMazing replacing the original file

    10. Sync backup

    #### Option 2: Theos

    1. Jailbreak iOS 12.5.5 device with Checkra1n

    @@ -139,7 +186,9 @@ The authentication can be obtained from the macOS Keychain or an iOS backup.

    8. Run `/KeychainAdd` on the device

    #### Option 2: keychaineditor (iOS 13.5+)
    9. Optionally remove the binary with `rm /KeychainAdd`

    #### Option 3: keychaineditor (iOS 13.5+)

    1. Jailbreak iOS 13.5 device with Unc0ver or Checkra1n

    @@ -157,8 +206,8 @@ The authentication can be obtained from the macOS Keychain or an iOS backup.
    scp keychaineditor root@<ip>:/usr/local/bin/keychaineditor
    ```

    5. Add keychain item on the device:
    5. Add Keychain item on the device:

    ```
    keychaineditor -a --account <account> --service com.reederapp.Feedly --agroup 66JC38RDUD.com.reederapp --data <base64 encoded data>
    keychaineditor -a --account <account> --service com.reederapp.Feedly --agroup 66JC38RDUD.com.reederapp --data <base64 encoded data>
    ```
  3. dnicolson revised this gist Nov 2, 2021. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions Reeder-4-and-Feedly.md
    Original file line number Diff line number Diff line change
    @@ -6,7 +6,7 @@ Reeder 4 works with Feedly but only if the account is already authenticated, it

    The authentication can be obtained from the macOS Keychain or an iOS backup.

    ### Option 1: macOS Keychain
    #### Option 1: macOS Keychain

    1. Download Reeder 5 for macOS

    @@ -98,7 +98,7 @@ The authentication can be obtained from the macOS Keychain or an iOS backup.

    4. Add the following to the `entitlements.plist` file:

    ```plist
    ```xml
    <key>keychain-access-groups</key>
    <array>
    <string>66JC38RDUD.com.reederapp</string>
  4. dnicolson revised this gist Nov 2, 2021. 1 changed file with 66 additions and 7 deletions.
    73 changes: 66 additions & 7 deletions Reeder-4-and-Feedly.md
    Original file line number Diff line number Diff line change
    @@ -6,7 +6,7 @@ Reeder 4 works with Feedly but only if the account is already authenticated, it

    The authentication can be obtained from the macOS Keychain or an iOS backup.

    #### macOS Keychain
    ### Option 1: macOS Keychain

    1. Download Reeder 5 for macOS

    @@ -42,7 +42,7 @@ The authentication can be obtained from the macOS Keychain or an iOS backup.
    "{"consumerSecret":"","oauthTokenExpiresAt":657905061.65287197,"oauthRefreshToken":"<oauthRefreshToken>:reeder4","oauthToken":"<oauthToken>:reeder4","version":2,"consumerKey":"","oauthTokenSecret":"","oauthVerifier":""}"
    ```

    #### iOS Backup
    #### Option 2: iOS Backup

    1. Backup iOS device

    @@ -79,14 +79,73 @@ The authentication can be obtained from the macOS Keychain or an iOS backup.

    ### Add Keychain Item

    1. Jailbreak iOS device
    #### Option 1: Theos

    - Checkra1n for iOS 12.5.5
    - Unc0ver with iOS 13.5
    1. Jailbreak iOS 12.5.5 device with Checkra1n

    2. Install [Theos](https://github.com/theos/theos)
    https://github.com/theos/theos/wiki/Installation-macOS

    3. Create new Theos instance:

    `$THEOS/bin/nic.pl`

    Choose `iphone/tool_swift`

    Enter `KeychainAdd` as the project name

    `cd keychainadd`

    4. Add the following to the `entitlements.plist` file:

    ```plist
    <key>keychain-access-groups</key>
    <array>
    <string>66JC38RDUD.com.reederapp</string>
    </array>
    ```

    5. Add the following to the `main.swift` file:

    ```swift
    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)
    }

    ```

    6. Run `make`

    7. Copy binary to device:

    `scp .theos/obj/debug/KeychainAdd root@<ip>:/KeychainAdd`

    8. Run `/KeychainAdd` on the device

    #### Option 2: keychaineditor (iOS 13.5+)

    1. Jailbreak iOS 13.5 device with Unc0ver or Checkra1n

    2. Add https://miro92.com/repo/ to Cydia sources

    3. Install keychaineditor 2.5
    3. Install Keychain Editor (arm64) 2.5.1

    4. Add `66JC38RDUD.com.reederapp` entitlement:

    @@ -98,7 +157,7 @@ The authentication can be obtained from the macOS Keychain or an iOS backup.
    scp keychaineditor root@<ip>:/usr/local/bin/keychaineditor
    ```

    5. Add keychain item:
    5. Add keychain item on the device:

    ```
    keychaineditor -a --account <account> --service com.reederapp.Feedly --agroup 66JC38RDUD.com.reederapp --data <base64 encoded data>
  5. dnicolson created this gist Oct 31, 2021.
    105 changes: 105 additions & 0 deletions Reeder-4-and-Feedly.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,105 @@
    # Signing in to Feedly with Reeder 4 on iOS

    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.

    ### Get Feedly Authentication

    The authentication can be obtained from the macOS Keychain or an iOS backup.

    #### macOS Keychain

    1. Download Reeder 5 for macOS

    2. Sign in to Feedly

    3. 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":""}"
    ```

    #### iOS Backup

    1. Backup iOS device

    2. Install [iOS Backup Extraction](https://github.com/dunhamsteve/ios):

    `go get github.com/dunhamsteve/ios/cmd/irestore`

    3. Run `irestore <device> dumpkeys out.json`

    4. The object with `com.reederapp.Feedly` as the value for `svce` will contain the base 64 encoded data for the `v_Data` key

    ### Add Feedly Account

    1. Backup iOS device

    2. 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'`

    3. The `fileID` represents the `users.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
    }
    ```

    4. Restore iOS device with modified backup

    ### Add Keychain Item

    1. Jailbreak iOS device

    - Checkra1n for iOS 12.5.5
    - Unc0ver with iOS 13.5

    2. Add https://miro92.com/repo/ to Cydia sources

    3. Install keychaineditor 2.5

    4. 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
    ```

    5. Add keychain item:

    ```
    keychaineditor -a --account <account> --service com.reederapp.Feedly --agroup 66JC38RDUD.com.reederapp --data <base64 encoded data>
    ```