libimobiledevice / idevicerestore

Restore/upgrade firmware of iOS devices
https://libimobiledevice.org
GNU Lesser General Public License v3.0
1.29k stars 390 forks source link

The IMEI can be read out before restore, but it is null after the device is restored #552

Open Neil-0609 opened 1 year ago

Neil-0609 commented 1 year ago

my code:

static int restore_handle_bb_update_status_msg(restored_client_t client, plist_t msg)
{
    int result = -1;
    plist_t node = plist_dict_get_item(msg, "Accepted");
    uint8_t accepted = 0;
    plist_get_bool_val(node, &accepted);

    if (!accepted) {
        error("ERROR: device didn't accept BasebandData\n");
        //return result ;
    }

    uint8_t done = 0;
    node = plist_access_path(msg, 2, "Output", "done");
    if (node && plist_get_node_type(node) == PLIST_BOOLEAN) {
        plist_get_bool_val(node, &done);
    }

    if (done) {
        info("Updating Baseband completed.\n");
        plist_t provisioning = plist_access_path(msg, 2, "Output", "provisioning");
        if (provisioning && plist_get_node_type(provisioning) == PLIST_DICT) {
            char* sval = NULL;
            node = plist_dict_get_item(provisioning, "IMEI");
            if (node && plist_get_node_type(node) == PLIST_STRING) {
                plist_get_string_val(node, &sval);
                info("Provisioning:\n");
                info("IMEI:%s\n", sval);
                free(sval);
                sval = NULL;
            }
        }
    } else {
        info("Updating Baseband in progress...\n");
    }
    result = 0;

    return result;
}
Neil-0609 commented 1 year ago
debug log :
About to send BasebandData...
NOTE: Unable to find BbCalibrationManifestKeyHash node
NOTE: Unable to find BbFactoryActivationManifestKeyHash node
NOTE: Unable to find BbSkeyId node
Sending Baseband TSS request...
Request URL set to https://gs.apple.com/TSS/controller?action=2
Sending TSS request attempt 1... response successfully received
Received Baseband SHSH blobs
Reading data from C:\Users\Reteck\AppData\Local\Temp\bbfw_WCgoDb
Sending BasebandData now...
16:22:44 D:\libimobiledevice\libimobiledevice_vs_master_1102_1\libimobiledevice\src\property_list_service.c:132 internal_plist_send(): sending 379286 bytes
16:22:44 D:\libimobiledevice\libimobiledevice_vs_master_1102_1\libimobiledevice\src\service.c:144 service_send(): sending 4 bytes
16:22:44 D:\libimobiledevice\libimobiledevice_vs_master_1102_1\libimobiledevice\src\idevice.c:691 idevice_connection_send(): internal_connection_send 4, sent 4
16:22:44 D:\libimobiledevice\libimobiledevice_vs_master_1102_1\libimobiledevice\src\service.c:144 service_send(): sending 379286 bytes
16:22:44 D:\libimobiledevice\libimobiledevice_vs_master_1102_1\libimobiledevice\src\idevice.c:691 idevice_connection_send(): internal_connection_send 379286, sent 379286
16:22:44 D:\libimobiledevice\libimobiledevice_vs_master_1102_1\libimobiledevice\src\property_list_service.c:137 internal_plist_send(): sent 379286 bytes
16:22:44 D:\libimobiledevice\libimobiledevice_vs_master_1102_1\libimobiledevice\src\property_list_service.c:138 internal_plist_send(): supress printing 379286 bytes plist...

Done sending BasebandData
16:22:44 D:\libimobiledevice\libimobiledevice_vs_master_1102_1\libimobiledevice\src\property_list_service.c:205 internal_plist_receive_timeout(): initial read=4
16:22:44 D:\libimobiledevice\libimobiledevice_vs_master_1102_1\libimobiledevice\src\property_list_service.c:211 internal_plist_receive_timeout(): 266 bytes following
16:22:44 D:\libimobiledevice\libimobiledevice_vs_master_1102_1\libimobiledevice\src\property_list_service.c:224 internal_plist_receive_timeout(): received 266 bytes
16:22:44 D:\libimobiledevice\libimobiledevice_vs_master_1102_1\libimobiledevice\src\property_list_service.c:253 internal_plist_receive_timeout(): printing 717 bytes plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>MsgType</key>
        <string>BBUpdateStatusMsg</string>
        <key>Output</key>
        <dict>
                <key>CertID</key>
                <integer>2315222105</integer>
                <key>VendorID</key>
                <integer>3</integer>
                <key>FusingStatus</key>
                <integer>3</integer>
                <key>CertHash</key>
                <data>
                if98WU1oTt+jcaZlvUC9AOG/rlbJxZpIN+cg7Rv1bCY=
                </data>
                <key>ChipID</key>
                <integer>241889</integer>
                <key>attemptedToFuse</key>
                <false/>
                <key>done</key>
                <false/>
                <key>ChipSerialNo</key>
                <data>
                o9CcPg==
                </data>
        </dict>
        <key>Accepted</key>
        <true/>
</dict>
</plist>
Updating Baseband in progress...
16:22:44 D:\libimobiledevice\libimobiledevice_vs_master_1102_1\libimobiledevice\src\property_list_service.c:205 internal_plist_receive_timeout(): initial read=4
16:22:44 D:\libimobiledevice\libimobiledevice_vs_master_1102_1\libimobiledevice\src\property_list_service.c:211 internal_plist_receive_timeout(): 309 bytes following
16:22:44 D:\libimobiledevice\libimobiledevice_vs_master_1102_1\libimobiledevice\src\property_list_service.c:224 internal_plist_receive_timeout(): received 309 bytes
16:22:44 D:\libimobiledevice\libimobiledevice_vs_master_1102_1\libimobiledevice\src\property_list_service.c:253 internal_plist_receive_timeout(): printing 808 bytes plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>MsgType</key>
        <string>DataRequestMsg</string>
        <key>DataType</key>
        <string>BasebandData</string>
        <key>Arguments</key>
        <dict>
                <key>CertID</key>
                <integer>2315222105</integer>
                <key>VendorID</key>
                <integer>3</integer>
                <key>FusingStatus</key>
                <integer>3</integer>
                <key>CertHash</key>
                <data>
                if98WU1oTt+jcaZlvUC9AOG/rlbJxZpIN+cg7Rv1bCY=
                </data>
                <key>ChipID</key>
                <integer>241889</integer>
                <key>Nonce</key>
                <data>
                rsSEOjYCxKhpikn97SGEuIQh5b8=
                </data>
                <key>attemptedToFuse</key>
                <false/>
                <key>done</key>
                <false/>
                <key>ChipSerialNo</key>
                <data>
                o9CcPg==
                </data>
        </dict>
</dict>
</plist>
About to send BasebandData...
NOTE: Unable to find BbCalibrationManifestKeyHash node
NOTE: Unable to find BbFactoryActivationManifestKeyHash node
NOTE: Unable to find BbSkeyId node
Sending Baseband TSS request...
Request URL set to https://gs.apple.com/TSS/controller?action=2
Sending TSS request attempt 1... response successfully received
Received Baseband SHSH blobs
Reading data from C:\Users\Reteck\AppData\Local\Temp\bbfw_k9mI7c
Sending BasebandData now...
16:22:46 D:\libimobiledevice\libimobiledevice_vs_master_1102_1\libimobiledevice\src\property_list_service.c:132 internal_plist_send(): sending 46827472 bytes
16:22:46 D:\libimobiledevice\libimobiledevice_vs_master_1102_1\libimobiledevice\src\service.c:144 service_send(): sending 4 bytes
16:22:46 D:\libimobiledevice\libimobiledevice_vs_master_1102_1\libimobiledevice\src\idevice.c:691 idevice_connection_send(): internal_connection_send 4, sent 4
16:22:46 D:\libimobiledevice\libimobiledevice_vs_master_1102_1\libimobiledevice\src\service.c:144 service_send(): sending 46827472 bytes
16:22:46 D:\libimobiledevice\libimobiledevice_vs_master_1102_1\libimobiledevice\src\idevice.c:691 idevice_connection_send(): internal_connection_send 46827472, sent 46827472
16:22:46 D:\libimobiledevice\libimobiledevice_vs_master_1102_1\libimobiledevice\src\property_list_service.c:137 internal_plist_send(): sent 46827472 bytes
16:22:46 D:\libimobiledevice\libimobiledevice_vs_master_1102_1\libimobiledevice\src\property_list_service.c:138 internal_plist_send(): supress printing 46827472 bytes plist...

Done sending BasebandData
16:23:00 D:\libimobiledevice\libimobiledevice_vs_master_1102_1\libimobiledevice\src\property_list_service.c:205 internal_plist_receive_timeout(): initial read=4
16:23:00 D:\libimobiledevice\libimobiledevice_vs_master_1102_1\libimobiledevice\src\property_list_service.c:211 internal_plist_receive_timeout(): 653 bytes following
16:23:00 D:\libimobiledevice\libimobiledevice_vs_master_1102_1\libimobiledevice\src\property_list_service.c:224 internal_plist_receive_timeout(): received 653 bytes
16:23:00 D:\libimobiledevice\libimobiledevice_vs_master_1102_1\libimobiledevice\src\property_list_service.c:253 internal_plist_receive_timeout(): printing 2113 bytes plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Output</key>
        <dict>
                <key>CertID</key>
                <integer>2315222105</integer>
                <key>VendorID</key>
                <integer>3</integer>
                <key>FusingStatus</key>
                <integer>3</integer>
                <key>CertHash</key>
                <data>
                if98WU1oTt+jcaZlvUC9AOG/rlbJxZpIN+cg7Rv1bCY=
                </data>
                <key>ChipID</key>
                <integer>241889</integer>
                <key>Nonce</key>
                <data>
                rsSEOjYCxKhpikn97SGEuIQh5b8=
                </data>
                <key>attemptedToFuse</key>
                <false/>
                <key>done</key>
                <false/>
                <key>ChipSerialNo</key>
                <data>
                o9CcPg==
                </data>
        </dict>
        <key>Accepted</key>
        <false/>
        <key>Error</key>
        <dict>
                <key>EncodedObjectType</key>
                <string>CFErrorRef</string>
                <key>Content</key>
                <dict>
                        <key>Code</key>
                        <integer>3</integer>
                        <key>Domain</key>
                        <string>BBUpdater</string>
                        <key>UserInfo</key>
                        <dict>
                                <key>EncodedObjectType</key>
                                <string>CFDictionaryRef</string>
                                <key>Content</key>
                                <dict>
                                        <key>NSDescription</key>
                                        <dict>
                                                <key>EncodedObjectType</key>
                                                <string>CFStringRef</string>
                                                <key>Content</key>
                                                <string>Fail to ping baseband: kBBUReturnIOError</string>
                                        </dict>
                                        <key>NSUnderlyingError</key>
                                        <dict>
                                                <key>EncodedObjectType</key>
                                                <string>CFErrorRef</string>
                                                <key>Content</key>
                                                <dict>
                                                        <key>Code</key>
                                                        <integer>3</integer>
                                                        <key>Domain</key>
                                                        <string>BBUpdater</string>
                                                        <key>UserInfo</key>
                                                        <dict>
                                                                <key>EncodedObjectType</key>
                                                                <string>CFDictionaryRef</string>
                                                                <key>Content</key>
                                                                <dict>
                                                                        <key>NSDescription</key>
                                                                        <dict>
                                                                                <key>EncodedObjectType</key>
                                                                                <string>CFStringRef</string>
                                                                                <key>Content</key>
                                                                                <string>Timeout on waiting for BB init status
</string>
                                                                        </dict>
                                                                </dict>
                                                        </dict>
                                                </dict>
                                        </dict>
                                </dict>
                        </dict>
                </dict>
        </dict>
        <key>MsgType</key>
        <string>BBUpdateStatusMsg</string>
</dict>
</plist>
ERROR: device didn't accept BasebandData
ERROR: Unable to successfully restore device