Reverse Engineering Firmware Update ConnectedDrive Kendaraan BMW

From Indonesian Research And Development Center
Jump to: navigation, search

Disclaimer

Tutorial ini hanya untuk tujuan pembelajaran semata. Penulis tidak bertanggungjawab atas penggunaan maupun penyalahgunaan tutorial ini. Use at your own risk.


Pendahuluan

Tutorial ini hanya merupakan analisis singkat dan bukan menyeluruh terhadap firmware update untuk fitur ConnectedDrive pada kendaraan BMW.


Langkah-langkah

Tahap ini terdiri dari beberapa bagian, yaitu untuk aplikasi yang berhubungan dengan perangkat bluetooth dan USB serta firmware update untuk ConnectedDrive itu sendiri.


Aplikasi Update Untuk Aksesoris

  • Unduh terlebih dahulu update aplikasi untuk aksesoris pada tautan ini. Unduh aplikasi untuk sistem operasi Microsoft Windows. Anda juga dapat mengunduh langsung melalui terminal dengan menggunakan aplikasi seperti wget atau yang lainnya seperti ini:
wget -q http://www.bmw.com/_common/shared/owners/connected_drive_services/07_Mobile_Devices/firmware_updates/BMW_Update_Accessories_V6.1.1.exe.zip
  • Ekstrak arsip tersebut menggunakan perintah berikut ini:
% unzip BMW_Update_Accessories_V6.1.1.exe.zip
  • Hasilnya adalah sebuah aplikasi executable untuk sistem operasi Microsoft Windows. Selanjutnya, gunakan perintah berikut untuk melihat informasi seputar aplikasi tersebut:
% file BMW_Update_Accessories_V6.1.1.exe
BMW_Update_Accessories_V6.1.1.exe: PE32 executable (GUI) Intel 80386, for MS Windows, UPX compressed
  • Bisa terlihat, bahwa aplikasi tersebut dikompres menggunakan UPX. Pastikan bahwa aplikasi UPX telah ada pada sistem operasi yang Anda gunakan. Jika belum ada, maka Anda perlu melakukan instalasi UPX terlebih dahulu. Setelah itu, gunakan cara berikut ini untuk melakukan dekompresi:
% upx -d BMW_Update_Accessories_V6.1.1.exe
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2013
UPX 3.91        Markus Oberhumer, Laszlo Molnar & John Reiser   Sep 30th 2013

        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
   1569253 <-   1525221   97.19%    win32/pe     BMW_Update_Accessories_V6.1.1.exe

Unpacked 1 file.
  • Aplikasi tersebut sebenarnya adalah tipe arsip self-extracting. Anda dapat menggunakan aplikasi seperti 7zip untuk melihat isi dari arsip tersebut seperti ini:
% 7z l BMW_Update_Accessories_V6.1.1.exe

7-Zip [64] 15.09 beta : Copyright (c) 1999-2015 Igor Pavlov : 2015-10-16
p7zip Version 15.09 beta (locale=en_US.utf8,Utf16=on,HugeFiles=on,64 bits,4 CPUs Intel(R) Core(TM) i3-2330M CPU @ 2.20GHz (206A7),ASM)

Scanning the drive for archives:
1 file, 1569253 bytes (1533 KiB)

Listing archive: BMW_Update_Accessories_V6.1.1.exe

--
Path = BMW_Update_Accessories_V6.1.1.exe
Type = zip
Offset = 70375
Physical Size = 1498878

   Date      Time    Attr         Size   Compressed  Name
------------------- ----- ------------ ------------  ------------------------
2014-10-02 01:02:52 ....A      4720793      1427968  Upd_Tool.exe
2015-10-27 16:51:28 ....A       178019        70608  Firmware PCB 169677 BMW MusicMediaAdapter_V6_1_1.hex
------------------- ----- ------------ ------------  ------------------------
2015-10-27 16:51:28            4898812      1498576  2 files
  • Bisa terlihat bahwa arsip self-extracting tersebut berisi 2 buah file. Lanjutkan dengan mengekstrak isi dari arsip self-extracting tersebut dengan perintah seperti ini:
% 7z x -oupdate BMW_Update_Accessories_V6.1.1.exe
  • Perintah di atas akan mengekstrak arsip tersebut ke sub direktori baru bernama update. Pindah ke sub direktori tersebut dan periksa jenis berkas yang telah diekstrak:
% cd update
% file *
Firmware PCB 169677 BMW MusicMediaAdapter_V6_1_1.hex: ASCII text, with CRLF line terminators
Upd_Tool.exe:                                         PE32 executable (GUI) Intel 80386, for MS Windows
  • Bisa terlihat bahwa berkas Upd_Tool.exe adalah aplikasi yang digunakan untuk melakukan pemutakhiran (update), sedangkan berkas Firmware PCB 169677 BMW MusicMediaAdapter_V6_1_1.hex adalah firmware update itu sendiri. Selanjutnya, Anda dapat melakukan sendiri proses debugging/disassembling terhadap aplikasi Upd_Tool.exe. Sedangkan untuk firmwarenya, Anda terlebih dahulu harus melakukan konversi, misalnya menggunakan aplikasi hex2bin seperti ini:
% hex2bin -e bin 'Firmware PCB 169677 BMW MusicMediaAdapter_V6_1_1.hex'
  • Perintah di atas akan melakukan konversi ke dalam format biner dan menyimpan hasilnya ke dalam berkas berekstensi bin. Namun demikian, berkas tersebut hanya dikenali sebagai data:
% file 'Firmware PCB 169677 BMW MusicMediaAdapter_V6_1_1.bin'
Firmware PCB 169677 BMW MusicMediaAdapter_V6_1_1.bin: data
  • Periksa printable string yang terdapat pada berkas firmware tersebut, maka Anda akan menemukan sertifikat seperti ini:
% strings 'Firmware PCB 169677 BMW MusicMediaAdapter_V6_1_1.bin'
...
-----BEGIN PKCS7-----
MIIG/QYJKoZIhvcNAQcCoIIG7jCCBuoCAQExADALBgkqhkiG9w0BBwGgggbQMIID
PzCCAiegAwIBAgIBFTANBgkqhkiG9w0BAQUFADBpMRMwEQYKCZImiZPyLGQBGRYD
Y29tMRgwFgYKCZImiZPyLGQBGRYIYm13Z3JvdXAxDDAKBgNVBAoTA3BraTEUMBIG
A1UECxMLYm13LWE0YS1wa2kxFDASBgNVBAMMC2E0YV9yb290LWNhMB4XDTcwMDYx
OTAwMDAwMFoXDTM3MTIzMTAwMDAwMFowbzETMBEGCgmSJomT8ixkARkWA2NvbTEY
MBYGCgmSJomT8ixkARkWCGJtd2dyb3VwMQwwCgYDVQQKEwNwa2kxFDASBgNVBAsT
C2Jtdy1hNGEtcGtpMRowGAYDVQQDFBFhNGFfYXBwX1RVSV8xLjAuMDCBnzANBgkq
hkiG9w0BAQEFAAOBjQAwgYkCgYEArLKAyK7domwj1wCmc0lq028zUQjt5CkBZMiA
0VVeUsjqhUrI0WVg4AkP7uY87uGGx3mEV8/RTdpFZJS+FVzzxuMSRIoonKC7J4Pm
HA9DbOI9oG0Yf2PeyWc3WNrTV/7K7eVg/12NPJyIOPWEmL/aKmhvGBu3QVMye/op
4zhHPb0CAwEAAaNwMG4wbAYKKwYBBAGEATsEAQReFlxwZXJzaXN0ZW5jZUlEPWlQ
b2RPdXQmaVBvZE91dDB4MDAwMDAwMDFQYXJrZWQ9MHgwMDAwMDAwMSZpUG9kT3V0
MHgwMDAwMDAwMURyaXZpbmc9MHgwMDAwMDAwMTANBgkqhkiG9w0BAQUFAAOCAQEA
aNemps5X7y+9pmCrEpJ5Q2p0npDS6xeNd27esnmOR/rtlNr4vi0ayhD7gr6piQ79
CslJG6WiZBODNtAogP4HBzatbvTEiZzKLPDP5nr5N9M+QgtlXWHg4EPyfjoniM7H
K0H9AGBaCqZS+sL6gSE8mahDYpYT6D+VQDH4DLO8WD/W9/GjL175/Ewsd+xiX78b
D2xlmMdylZfas9wAXKvnP1F4Xg0pLE0hV1gsRMmM9iNJ7T+yLlXd17IRTUhHGBR6
GriyYkGxMHFrYIIxY/GBhOGXd6ou6ZXweVEXLWskj2MDb/fAgI0YMN1DkAQefTYA
g6p72RQnFPxfUbTBb21U+zCCA4kwggJxoAMCAQICAQAwDQYJKoZIhvcNAQEFBQAw
aTETMBEGCgmSJomT8ixkARkWA2NvbTEYMBYGCgmSJomT8ixkARkWCGJtd2dyb3Vw
MQwwCgYDVQQKEwNwa2kxFDASBgNVBAsTC2Jtdy1hNGEtcGtpMRQwEgYDVQQDDAth
NGFfcm9vdC1jYTAeFw03MDAxMDEwMDAwMDBaFw0zNzEyMzEwMDAwMDBaMGkxEzAR
BgoJkiaJk/IsZAEZFgNjb20xGDAWBgoJkiaJk/IsZAEZFghibXdncm91cDEMMAoG
A1UEChMDcGtpMRQwEgYDVQQLEwtibXctYTRhLXBraTEUMBIGA1UEAwwLYTRhX3Jv
b3QtY2EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCHCHGiLt/ZmRnQ
MctWLxWqjlxn4IOgY2hXhr9IPDfHXeM7t6c7JTY/F7/gh91Nfdvi1MzafvA9xQpp
HJLYotWezFabYpMNATxngsIICyFwY0xAsziUWetZYgU2EFS7hqeOXQpzXwXtAPXh
1h4Lx9GK79iNxl1MImkYB4FQEhPcS+FRDxrrlQCTPnRJzwognq5YA031wa6jYrv9
d695GlLMmhCriGr/Ine3IR0MfAfjhba4R+dQsqXwDiojMIoQt3vXeXSlOI6btMIv
9n3KpUgkPdKJ+Eq4fzGzk4zoGVwlIQolouDusqLxGLZyjoyy+CzDjbWl92rFdufl
MjHR1VPjAgMA//+jPDA6MAsGA1UdDwQEAwIBRjAdBgNVHQ4EFgQU+vpedSx145Jm
xliaORpLWhbL/Q8wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEASZ2K
KpZuHBjAWxaeumdpN8aa9Sp+mn09v+dEUwTcJE0KOwUhteS3IVBHcesWKIusqP4w
Ygs50WyBEG29RfyamfMLeXNGcYUQa0m/0Ry4HjSQWld7SBGgxZoECVwk7Za9Ya/Z
VuchEzmOc3L8Vgbgf1/4cjGz2TRhoAUNph8lkKEr4ljiIH+XDK7Z/183GXiowb1o
eW0eYOboK5U1HvpBYkxw9r06vLZYzbk1F4dWG5w9WLReQzU5QA3VZXVe4yO9CquZ
gxt5wFlaxJ6y1LUD52G4/lh4qCwnTEbS4seSbnODbIfrAo8v1kM2+GdEdJ8w0yr8
6puD50pncW6Agay0AqEAMQA=
-----END PKCS7-----
57BHIMdegBMW ComBox
7R8B
  • Salin sertifikat tersebut mulai dari bagian -----BEGIN PKCS7----- hingga -----END PKCS7----- dan simpan dengan nama sertifikat.pem. Selanjutnya, gunakan openssl untuk melihat isi dari sertifikat tersebut dengan perintah seperti ini:
% openssl pkcs7 -in sertifikat.pem -print_certs
subject=/DC=com/DC=bmwgroup/O=pki/OU=bmw-a4a-pki/CN=a4a_app_TUI_1.0.0
issuer=/DC=com/DC=bmwgroup/O=pki/OU=bmw-a4a-pki/CN=a4a_root-ca
-----BEGIN CERTIFICATE-----
MIIDPzCCAiegAwIBAgIBFTANBgkqhkiG9w0BAQUFADBpMRMwEQYKCZImiZPyLGQB
GRYDY29tMRgwFgYKCZImiZPyLGQBGRYIYm13Z3JvdXAxDDAKBgNVBAoTA3BraTEU
MBIGA1UECxMLYm13LWE0YS1wa2kxFDASBgNVBAMMC2E0YV9yb290LWNhMB4XDTcw
MDYxOTAwMDAwMFoXDTM3MTIzMTAwMDAwMFowbzETMBEGCgmSJomT8ixkARkWA2Nv
bTEYMBYGCgmSJomT8ixkARkWCGJtd2dyb3VwMQwwCgYDVQQKEwNwa2kxFDASBgNV
BAsTC2Jtdy1hNGEtcGtpMRowGAYDVQQDFBFhNGFfYXBwX1RVSV8xLjAuMDCBnzAN
BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArLKAyK7domwj1wCmc0lq028zUQjt5CkB
ZMiA0VVeUsjqhUrI0WVg4AkP7uY87uGGx3mEV8/RTdpFZJS+FVzzxuMSRIoonKC7
J4PmHA9DbOI9oG0Yf2PeyWc3WNrTV/7K7eVg/12NPJyIOPWEmL/aKmhvGBu3QVMy
e/op4zhHPb0CAwEAAaNwMG4wbAYKKwYBBAGEATsEAQReFlxwZXJzaXN0ZW5jZUlE
PWlQb2RPdXQmaVBvZE91dDB4MDAwMDAwMDFQYXJrZWQ9MHgwMDAwMDAwMSZpUG9k
T3V0MHgwMDAwMDAwMURyaXZpbmc9MHgwMDAwMDAwMTANBgkqhkiG9w0BAQUFAAOC
AQEAaNemps5X7y+9pmCrEpJ5Q2p0npDS6xeNd27esnmOR/rtlNr4vi0ayhD7gr6p
iQ79CslJG6WiZBODNtAogP4HBzatbvTEiZzKLPDP5nr5N9M+QgtlXWHg4EPyfjon
iM7HK0H9AGBaCqZS+sL6gSE8mahDYpYT6D+VQDH4DLO8WD/W9/GjL175/Ewsd+xi
X78bD2xlmMdylZfas9wAXKvnP1F4Xg0pLE0hV1gsRMmM9iNJ7T+yLlXd17IRTUhH
GBR6GriyYkGxMHFrYIIxY/GBhOGXd6ou6ZXweVEXLWskj2MDb/fAgI0YMN1DkAQe
fTYAg6p72RQnFPxfUbTBb21U+w==
-----END CERTIFICATE-----

subject=/DC=com/DC=bmwgroup/O=pki/OU=bmw-a4a-pki/CN=a4a_root-ca
issuer=/DC=com/DC=bmwgroup/O=pki/OU=bmw-a4a-pki/CN=a4a_root-ca
-----BEGIN CERTIFICATE-----
MIIDiTCCAnGgAwIBAgIBADANBgkqhkiG9w0BAQUFADBpMRMwEQYKCZImiZPyLGQB
GRYDY29tMRgwFgYKCZImiZPyLGQBGRYIYm13Z3JvdXAxDDAKBgNVBAoTA3BraTEU
MBIGA1UECxMLYm13LWE0YS1wa2kxFDASBgNVBAMMC2E0YV9yb290LWNhMB4XDTcw
MDEwMTAwMDAwMFoXDTM3MTIzMTAwMDAwMFowaTETMBEGCgmSJomT8ixkARkWA2Nv
bTEYMBYGCgmSJomT8ixkARkWCGJtd2dyb3VwMQwwCgYDVQQKEwNwa2kxFDASBgNV
BAsTC2Jtdy1hNGEtcGtpMRQwEgYDVQQDDAthNGFfcm9vdC1jYTCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBAIcIcaIu39mZGdAxy1YvFaqOXGfgg6BjaFeG
v0g8N8dd4zu3pzslNj8Xv+CH3U192+LUzNp+8D3FCmkcktii1Z7MVptikw0BPGeC
wggLIXBjTECzOJRZ61liBTYQVLuGp45dCnNfBe0A9eHWHgvH0Yrv2I3GXUwiaRgH
gVASE9xL4VEPGuuVAJM+dEnPCiCerlgDTfXBrqNiu/13r3kaUsyaEKuIav8id7ch
HQx8B+OFtrhH51CypfAOKiMwihC3e9d5dKU4jpu0wi/2fcqlSCQ90on4Srh/MbOT
jOgZXCUhCiWi4O6yovEYtnKOjLL4LMONtaX3asV25+UyMdHVU+MCAwD//6M8MDow
CwYDVR0PBAQDAgFGMB0GA1UdDgQWBBT6+l51LHXjkmbGWJo5GktaFsv9DzAMBgNV
HRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQBJnYoqlm4cGMBbFp66Z2k3xpr1
Kn6afT2/50RTBNwkTQo7BSG15LchUEdx6xYoi6yo/jBiCznRbIEQbb1F/JqZ8wt5
c0ZxhRBrSb/RHLgeNJBaV3tIEaDFmgQJXCTtlr1hr9lW5yETOY5zcvxWBuB/X/hy
MbPZNGGgBQ2mHyWQoSviWOIgf5cMrtn/XzcZeKjBvWh5bR5g5ugrlTUe+kFiTHD2
vTq8tljNuTUXh1YbnD1YtF5DNTlADdVldV7jI70Kq5mDG3nAWVrEnrLUtQPnYbj+
WHioLCdMRtLix5Juc4Nsh+sCjy/WQzb4Z0R0nzDTKvzqm4PnSmdxboCBrLQC
-----END CERTIFICATE-----
  • Bisa terlihat bahwa terdapat 2 sertifikat lain di dalam berkas sertifikat.pem tersebut. Salin kedua sertifikat tersebut ke dalam dua berkas yang berbeda, misalnya c1.pem dan c2.pem. Cukup salin mulai dari bagian -----BEGIN CERTIFICATE----- hingga bagian -----END CERTIFICATE-----. Untuk memastikan, gunakan perintah berikut ini untuk memeriksa kedua berkas sertifikat tersebut:
% file c?.pem
c1.pem: PEM certificate
c2.pem: PEM certificate
  • Selanjutnya, Anda dapat melihat informasi lengkap dari setiap sertifikat tersebut dengan menggunakan aplikasi openssl. Berikut ini adalah informasi yang terdapat pada berkas c1.pem:
% openssl x509 -in c1.pem -text -noout
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 21 (0x15)
    Signature Algorithm: sha1WithRSAEncryption
        Issuer: DC=com, DC=bmwgroup, O=pki, OU=bmw-a4a-pki, CN=a4a_root-ca
        Validity
            Not Before: Jun 19 00:00:00 1970 GMT
            Not After : Dec 31 00:00:00 2037 GMT
        Subject: DC=com, DC=bmwgroup, O=pki, OU=bmw-a4a-pki, CN=a4a_app_TUI_1.0.0
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (1024 bit)
                Modulus:
                    00:ac:b2:80:c8:ae:dd:a2:6c:23:d7:00:a6:73:49:
                    6a:d3:6f:33:51:08:ed:e4:29:01:64:c8:80:d1:55:
                    5e:52:c8:ea:85:4a:c8:d1:65:60:e0:09:0f:ee:e6:
                    3c:ee:e1:86:c7:79:84:57:cf:d1:4d:da:45:64:94:
                    be:15:5c:f3:c6:e3:12:44:8a:28:9c:a0:bb:27:83:
                    e6:1c:0f:43:6c:e2:3d:a0:6d:18:7f:63:de:c9:67:
                    37:58:da:d3:57:fe:ca:ed:e5:60:ff:5d:8d:3c:9c:
                    88:38:f5:84:98:bf:da:2a:68:6f:18:1b:b7:41:53:
                    32:7b:fa:29:e3:38:47:3d:bd
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            1.3.6.1.4.1.513.59.4.1:
                .\persistenceID=iPodOut&iPodOut0x00000001Parked=0x00000001&iPodOut0x00000001Driving=0x00000001
    Signature Algorithm: sha1WithRSAEncryption
         68:d7:a6:a6:ce:57:ef:2f:bd:a6:60:ab:12:92:79:43:6a:74:
         9e:90:d2:eb:17:8d:77:6e:de:b2:79:8e:47:fa:ed:94:da:f8:
         be:2d:1a:ca:10:fb:82:be:a9:89:0e:fd:0a:c9:49:1b:a5:a2:
         64:13:83:36:d0:28:80:fe:07:07:36:ad:6e:f4:c4:89:9c:ca:
         2c:f0:cf:e6:7a:f9:37:d3:3e:42:0b:65:5d:61:e0:e0:43:f2:
         7e:3a:27:88:ce:c7:2b:41:fd:00:60:5a:0a:a6:52:fa:c2:fa:
         81:21:3c:99:a8:43:62:96:13:e8:3f:95:40:31:f8:0c:b3:bc:
         58:3f:d6:f7:f1:a3:2f:5e:f9:fc:4c:2c:77:ec:62:5f:bf:1b:
         0f:6c:65:98:c7:72:95:97:da:b3:dc:00:5c:ab:e7:3f:51:78:
         5e:0d:29:2c:4d:21:57:58:2c:44:c9:8c:f6:23:49:ed:3f:b2:
         2e:55:dd:d7:b2:11:4d:48:47:18:14:7a:1a:b8:b2:62:41:b1:
         30:71:6b:60:82:31:63:f1:81:84:e1:97:77:aa:2e:e9:95:f0:
         79:51:17:2d:6b:24:8f:63:03:6f:f7:c0:80:8d:18:30:dd:43:
         90:04:1e:7d:36:00:83:aa:7b:d9:14:27:14:fc:5f:51:b4:c1:
         6f:6d:54:fb
  • Dan berikut ini adalah informasi pada berkas sertifikat c2.pem:
% openssl x509 -in c2.pem -text -noout
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 0 (0x0)
    Signature Algorithm: sha1WithRSAEncryption
        Issuer: DC=com, DC=bmwgroup, O=pki, OU=bmw-a4a-pki, CN=a4a_root-ca
        Validity
            Not Before: Jan  1 00:00:00 1970 GMT
            Not After : Dec 31 00:00:00 2037 GMT
        Subject: DC=com, DC=bmwgroup, O=pki, OU=bmw-a4a-pki, CN=a4a_root-ca
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:87:08:71:a2:2e:df:d9:99:19:d0:31:cb:56:2f:
                    15:aa:8e:5c:67:e0:83:a0:63:68:57:86:bf:48:3c:
                    37:c7:5d:e3:3b:b7:a7:3b:25:36:3f:17:bf:e0:87:
                    dd:4d:7d:db:e2:d4:cc:da:7e:f0:3d:c5:0a:69:1c:
                    92:d8:a2:d5:9e:cc:56:9b:62:93:0d:01:3c:67:82:
                    c2:08:0b:21:70:63:4c:40:b3:38:94:59:eb:59:62:
                    05:36:10:54:bb:86:a7:8e:5d:0a:73:5f:05:ed:00:
                    f5:e1:d6:1e:0b:c7:d1:8a:ef:d8:8d:c6:5d:4c:22:
                    69:18:07:81:50:12:13:dc:4b:e1:51:0f:1a:eb:95:
                    00:93:3e:74:49:cf:0a:20:9e:ae:58:03:4d:f5:c1:
                    ae:a3:62:bb:fd:77:af:79:1a:52:cc:9a:10:ab:88:
                    6a:ff:22:77:b7:21:1d:0c:7c:07:e3:85:b6:b8:47:
                    e7:50:b2:a5:f0:0e:2a:23:30:8a:10:b7:7b:d7:79:
                    74:a5:38:8e:9b:b4:c2:2f:f6:7d:ca:a5:48:24:3d:
                    d2:89:f8:4a:b8:7f:31:b3:93:8c:e8:19:5c:25:21:
                    0a:25:a2:e0:ee:b2:a2:f1:18:b6:72:8e:8c:b2:f8:
                    2c:c3:8d:b5:a5:f7:6a:c5:76:e7:e5:32:31:d1:d5:
                    53:e3
                Exponent: 65535 (0xffff)
        X509v3 extensions:
            X509v3 Key Usage:
                Non Repudiation, Certificate Sign, CRL Sign
            X509v3 Subject Key Identifier:
                FA:FA:5E:75:2C:75:E3:92:66:C6:58:9A:39:1A:4B:5A:16:CB:FD:0F
            X509v3 Basic Constraints:
                CA:TRUE
    Signature Algorithm: sha1WithRSAEncryption
         49:9d:8a:2a:96:6e:1c:18:c0:5b:16:9e:ba:67:69:37:c6:9a:
         f5:2a:7e:9a:7d:3d:bf:e7:44:53:04:dc:24:4d:0a:3b:05:21:
         b5:e4:b7:21:50:47:71:eb:16:28:8b:ac:a8:fe:30:62:0b:39:
         d1:6c:81:10:6d:bd:45:fc:9a:99:f3:0b:79:73:46:71:85:10:
         6b:49:bf:d1:1c:b8:1e:34:90:5a:57:7b:48:11:a0:c5:9a:04:
         09:5c:24:ed:96:bd:61:af:d9:56:e7:21:13:39:8e:73:72:fc:
         56:06:e0:7f:5f:f8:72:31:b3:d9:34:61:a0:05:0d:a6:1f:25:
         90:a1:2b:e2:58:e2:20:7f:97:0c:ae:d9:ff:5f:37:19:78:a8:
         c1:bd:68:79:6d:1e:60:e6:e8:2b:95:35:1e:fa:41:62:4c:70:
         f6:bd:3a:bc:b6:58:cd:b9:35:17:87:56:1b:9c:3d:58:b4:5e:
         43:35:39:40:0d:d5:65:75:5e:e3:23:bd:0a:ab:99:83:1b:79:
         c0:59:5a:c4:9e:b2:d4:b5:03:e7:61:b8:fe:58:78:a8:2c:27:
         4c:46:d2:e2:c7:92:6e:73:83:6c:87:eb:02:8f:2f:d6:43:36:
         f8:67:44:74:9f:30:d3:2a:fc:ea:9b:83:e7:4a:67:71:6e:80:
         81:ac:b4:02
  • Selanjutnya, Anda dapat menggunakan IDAPro untuk melakukan analisis dengan terlebih dahulu memilih opsi arsitektur ARM (Little Endian) seperti pada gambar berikut ini:


Bmw-idapro.png


  • Berikut ini adalah tampilan IDAPro setelah selesai melakukan analisis terhadap firmware tersebut:


Bmw-idapro-disasm.png


  • Dari sini, Anda dapat melanjutkan sendiri proses analisa terhadap firmware tersebut.


Firmware Update Untuk ConnectedDrive

  • Pada bagian ini akan dibahas mengenai firmware update untuk fitur ConnectedDrive pada kendaraan BMW. Ada 2 cara untuk memperoleh firmware updatenya. Cara pertama adalah dengan membuka halaman situs BMW untuk mengunduh firmware update tersebut. Namun, Anda harus memasukkan nomor seri kendaraan Anda untuk dapat mengunduh firmware update tersebut, seperti yang dapat dilihat pada gambar berikut ini:


Bmw-vin.png


  • Setelah memasukkan nomor seri kendaraan yang benar, maka Anda akan ke halaman untuk mengunduh firmware update sesuai dengan seri kendaraan Anda. Berikut ini adalah tampilan halaman untuk mengunduh firmware update:


Bmw-dl connected drive.png


  • Seperti yang disebutkan di atas, Anda dapat menggunakan cara lain untuk mengunduh firmware update tersebut tanpa harus memasukkan nomor seri kendaraan. Caranya adalah dengan langsung mengakses ke berkas firmware update. Kelemahan dari cara ini adalah, Anda harus mengetahui alamat firmware update yang sesuai dengan seri kendaraan Anda. Tutorial ini akan menggunakan dua versi firmware update. Unduh terlebih dahulu firmware tersebut dengan menggunakan aplikasi seperti wget dengan perintah berikut ini:
% wget -q 'http://www.bmw.com/_common/shared/owners/bluetooth/bin/UPD01008.bin'
% wget -q 'http://www.bmw.com/_common/shared/owners/bluetooth/bin/UPD03007.bin'
  • Setelah selesai mengunduh kedua berkas firmware update tersebut, gunakan perintah seperti ini untuk mencari tahu tipe dari berkas tersebut:
% file *.bin
UPD01008.bin: POSIX tar archive (GNU)
UPD03007.bin: POSIX tar archive (GNU)
  • Bisa terlihat bahwa kedua berkas tersebut merupakan arsip yang menggunakan kompresi tar. Sebelum mengekstrak kedua arsip tersebut, terlebih dahulu ubah ekstensinya menjadi tar. Setelah itu, baru ekstrak setiap arsip tersebut ke sub direktori yang berbeda agar lebih teratur. Berikut ini adalah urutan perintah yang digunakan:
% ## ubah ekstensi arsip pertama menjadi .tar
% mv UPD01008.bin UPD01008.tar

% ## ubah ekstensi arsip kedua menjadi .tar
% mv UPD03007.bin UPD03007.tar

% ## ekstrak arsip pertama ke sub direktori UPD01008
% tar xvf UPD01008.tar --one-top-level

% ## ekstrak arsip kedua ke sub direktori UPD03007
% tar xvf UPD03007.tar --one-top-level
  • Selanjutnya, pindah ke sub direktori UPD01008 dan periksa tipe setiap berkas yang telah diekstrak:
% cd UPD01008
% file *
SWIP_00000B97_003_005_008.xml: ASCII text, with very long lines, with no line terminators
SWUP_00000B98_002_006_006.bin: tar archive
SWUP_00000B98_003_005_008.bin: tar archive
SWUP_00000B99_001_012_000.bin: tar archive
SWUP_00000B99_003_005_004.bin: tar archive
  • Ternyata dari kelima berkas tersebut, 4 diantaranya adalah arsip dengan kompresi tar dan satu diantaranya adalah dokumen dengan format XML. Berikut ini adalah isi dari dokumen XML tersebut:
% cat SWIP_00000B97_003_005_008.xml | xmllint --format -
<?xml version="1.0"?>
<SWIP xmlns="http://bmw.com/2008/spc.data.swip" version="0.2.4">
  <sweHeader CreatedBy="BMW" comment="KISU Update 11/2014" date="2014-10-01">
    <swipIdent>
      <processClass>SWIP</processClass>
      <id>00000B97</id>
      <mainVersion>003</mainVersion>
      <subVersion>005</subVersion>
      <patchVersion>008</patchVersion>
    </swipIdent>
    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
      <SignedInfo Id="CRYPTO_ASYM_SIG_KEY">
        <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
        <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-md5"/>
        <Reference URI="">
          <Transforms>
            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
          </Transforms>
          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#md5"/>
          <DigestValue>wnF34Dyuq1juy/OIZaCdkw==</DigestValue>
        </Reference>
      </SignedInfo>
      <SignatureValue>biO/iqWo1ephNVP6nFmdVZUrpKiKbOIpz4bMa3s/7/lAlg/ZUqhlV7ZNhhMbGMEl8h4Sh4r6R/uVeY+1456aNFAlinHG1t7uJcjt61ocshzJ7+V4yquIHwhPzJ5JT7S14L5vz+lO46GBMHSmaA6T8k8P0DOVVpizuvP4Vl3Nm0c=</SignatureValue>
    </Signature>
  </sweHeader>
  <spcData>
    <description>KISU Update 11/2014</description>
    <creationdate>2014-10-01</creationdate>
    <expirationdate>2024-01-01</expirationdate>
    <releasestatus>released</releasestatus>
    <targetECU>1</targetECU>
    <vinallow>
      <vin>*</vin>
    </vinallow>
    <ctrlcommand/>
    <spindex>
      <SWUP HashValue="yVf/PIcMC0YBLp+Lk6aMJw==" subsystemID="MX">
        <processClass>SWUP</processClass>
        <id>00000B99</id>
        <mainVersion>003</mainVersion>
        <subVersion>005</subVersion>
        <patchVersion>004</patchVersion>
        <resReqs>1MB</resReqs>
        <installTime>10s</installTime>
        <compatibilitytable>
          <depends>
            <dependedSWE>
              <processClass>SWFL</processClass>
              <id>00000B88</id>
              <minVersion>
                <mainVersion>003</mainVersion>
                <subVersion>004</subVersion>
                <patchVersion>031</patchVersion>
              </minVersion>
              <maxVersion>
                <mainVersion>003</mainVersion>
                <subVersion>004</subVersion>
                <patchVersion>031</patchVersion>
              </maxVersion>
            </dependedSWE>
          </depends>
        </compatibilitytable>
        <supportedDevices>
          <device type="Mediaplayer">
            <brand name="USB">
              <model name="Devices"/>
            </brand>
            <brand name="Apple">
              <model name="iPod touch"/>
              <model name="iPhone"/>
            </brand>
            <brand name="Archos">
              <model name="3 Vision"/>
            </brand>
            <brand name="Creative">
              <model name="MuVo V100"/>
            </brand>
            <brand name="iRiver">
              <model name="E100"/>
            </brand>
            <brand name="Palm">
              <model name="Pre"/>
            </brand>
            <brand name="Sony Ericsson">
              <model name="C905"/>
              <model name="Yari U200"/>
            </brand>
            <brand name="Symbian Foundation">
              <model name="S60"/>
            </brand>
          </device>
        </supportedDevices>
        <updateDescription>KISU Update 01/2013</updateDescription>
      </SWUP>
      <SWUP HashValue="paKp7VjJlE6h4QwGHRL+uA==" subsystemID="TX">
        <processClass>SWUP</processClass>
        <id>00000B98</id>
        <mainVersion>003</mainVersion>
        <subVersion>005</subVersion>
        <patchVersion>008</patchVersion>
        <resReqs>4MB</resReqs>
        <installTime>3min</installTime>
        <compatibilitytable>
          <depends>
            <dependedSWE>
              <processClass>SWFL</processClass>
              <id>00000B87</id>
              <minVersion>
                <mainVersion>003</mainVersion>
                <subVersion>004</subVersion>
                <patchVersion>031</patchVersion>
              </minVersion>
              <maxVersion>
                <mainVersion>003</mainVersion>
                <subVersion>004</subVersion>
                <patchVersion>031</patchVersion>
              </maxVersion>
            </dependedSWE>
          </depends>
        </compatibilitytable>
        <supportedDevices>
          <device type="Phone">
            <brand name="Apple">
              <model name="iPhone">
                <softwareRelease>iOS 5</softwareRelease>
                <softwareRelease>iOS 6</softwareRelease>
              </model>
            </brand>
            <brand name="HTC">
              <model name="Sensation"/>
              <model name="Trinity"/>
            </brand>
            <brand name="LG">
              <model name="Enlighten VS700"/>
            </brand>
            <brand name="Motorola">
              <model name="DROID RAZR 4G"/>
            </brand>
            <brand name="Nokia">
              <model name="C7"/>
              <model name="N8"/>
              <model name="X7"/>
            </brand>
            <brand name="RIM">
              <model name="Blackberry">
                <softwareRelease>(OS 6.x)</softwareRelease>
                <softwareRelease>(OS 7.x)</softwareRelease>
              </model>
            </brand>
            <brand name="Samsung">
              <model name="Nexus S"/>
              <model name="Galaxy S II">
                <softwareRelease>Android 2.3.3</softwareRelease>
              </model>
            </brand>
            <brand name="Sony Ericsson">
              <model name="W205"/>
            </brand>
            <brand name="Verizon Wireless">
              <model name="Casio C781"/>
              <model name="ZTE F450"/>
              <model name="Pantech 8992 "/>
            </brand>
            <brand name="Android">
              <model name="Devices">
                <softwareRelease>(OS 4.x)</softwareRelease>
              </model>
            </brand>
          </device>
        </supportedDevices>
        <updateDescription>KISU Update 11/2014</updateDescription>
      </SWUP>
      <SWUP HashValue="dv5wUM22rSG+XaVh5hdMfg==" subsystemID="TX">
        <processClass>SWUP</processClass>
        <id>00000B98</id>
        <mainVersion>002</mainVersion>
        <subVersion>006</subVersion>
        <patchVersion>006</patchVersion>
        <resReqs>4MB</resReqs>
        <installTime>3min</installTime>
        <compatibilitytable>
          <depends>
            <Or>
              <dependedSWE>
                <processClass>SWFL</processClass>
                <id>00000B87</id>
                <minVersion>
                  <mainVersion>002</mainVersion>
                  <subVersion>005</subVersion>
                  <patchVersion>021</patchVersion>
                </minVersion>
                <maxVersion>
                  <mainVersion>002</mainVersion>
                  <subVersion>005</subVersion>
                  <patchVersion>021</patchVersion>
                </maxVersion>
              </dependedSWE>
              <dependedSWE>
                <processClass>SWFL</processClass>
                <id>00000B87</id>
                <minVersion>
                  <mainVersion>002</mainVersion>
                  <subVersion>005</subVersion>
                  <patchVersion>025</patchVersion>
                </minVersion>
                <maxVersion>
                  <mainVersion>002</mainVersion>
                  <subVersion>005</subVersion>
                  <patchVersion>025</patchVersion>
                </maxVersion>
              </dependedSWE>
            </Or>
          </depends>
        </compatibilitytable>
      </SWUP>
      <SWUP HashValue="jQtviclPLstwdBCIoFrppA==" subsystemID="MX">
        <processClass>SWUP</processClass>
        <id>00000B99</id>
        <mainVersion>001</mainVersion>
        <subVersion>012</subVersion>
        <patchVersion>000</patchVersion>
        <resReqs>100KB</resReqs>
        <compatibilitytable>
          <depends>
            <Or>
              <dependedSWE>
                <processClass>SWFL</processClass>
                <id>00000B88</id>
                <minVersion>
                  <mainVersion>001</mainVersion>
                  <subVersion>010</subVersion>
                  <patchVersion>021</patchVersion>
                </minVersion>
                <maxVersion>
                  <mainVersion>001</mainVersion>
                  <subVersion>010</subVersion>
                  <patchVersion>021</patchVersion>
                </maxVersion>
              </dependedSWE>
              <dependedSWE>
                <processClass>SWFL</processClass>
                <id>00000B88</id>
                <minVersion>
                  <mainVersion>001</mainVersion>
                  <subVersion>011</subVersion>
                  <patchVersion>001</patchVersion>
                </minVersion>
                <maxVersion>
                  <mainVersion>001</mainVersion>
                  <subVersion>011</subVersion>
                  <patchVersion>001</patchVersion>
                </maxVersion>
              </dependedSWE>
            </Or>
          </depends>
        </compatibilitytable>
      </SWUP>
    </spindex>
  </spcData>
</SWIP>
  • Selanjutnya adalah mengganti ekstensi setiap berkas yang menggunakan ekstensi .bin menjadi .tar dan mengekstraknya. Berikut ini adalah perintah yang digunakan:
% for f in $(basename -s .bin -a *.bin); do
    mv $f.bin $f.tar && tar xvf $f.tar --one-top-level && rm $f.tar;
  done
  • Berikut ini adalah struktur direktori hasil ekstraksi menggunakan perintah di atas:
.
├── SWUP_00000B98_002_006_006
│   ├── beschreibungstabelle.sgbm
│   └── Phone-2.6.6.tar
├── SWUP_00000B98_003_005_008
│   ├── beschreibungstabelle.sgbm
│   └── Phone-3.5.8.tar
├── SWUP_00000B99_001_012_000
│   ├── beschreibungstabelle.sgbm
│   ├── MME-1.12.0.tar
│   ├── post_deinst.scr
│   └── post_inst.scr
└── SWUP_00000B99_003_005_004
    ├── beschreibungstabelle.sgbm
    └── MME-3.5.4.tar

4 directories, 10 files

  • Untuk mengetahui tipe setiap file yang telah diekstrak, gunakan perintah berikut ini:
% find . -type f -exec file {} \;
./SWUP_00000B99_003_005_004/MME-3.5.4.tar: POSIX tar archive (GNU)
./SWUP_00000B99_003_005_004/beschreibungstabelle.sgbm: data
./SWUP_00000B99_001_012_000/post_deinst.scr: POSIX shell script, ASCII text executable
./SWUP_00000B99_001_012_000/beschreibungstabelle.sgbm: data
./SWUP_00000B99_001_012_000/post_inst.scr: POSIX shell script, ASCII text executable
./SWUP_00000B99_001_012_000/MME-1.12.0.tar: tar archive
./SWUP_00000B98_002_006_006/beschreibungstabelle.sgbm: data
./SWUP_00000B98_002_006_006/Phone-2.6.6.tar: POSIX tar archive (GNU)
./SWUP_00000B98_003_005_008/beschreibungstabelle.sgbm: data
./SWUP_00000B98_003_005_008/Phone-3.5.8.tar: POSIX tar archive (GNU)
  • Karena pada tiap sub direktori tersebut terdapat arsip dengan kompresi tar, maka akan digunakan perintah berikut untuk mempercepat proses enumerasi isi dari tiap arsip tersebut:
% find . -name '*.tar' -exec tar tvf {} \;
drwxrwxrwx MVenus/mkpasswd   0 2011-12-09 19:52 MME-3.5.4/
drwxrwxrwx MVenus/mkpasswd   0 2011-12-09 19:52 MME-3.5.4/HBMedia/
drwxrwxrwx MVenus/mkpasswd   0 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/
drwxrwxrwx MVenus/mkpasswd   0 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/bin/
-rwxrwxrwx MVenus/mkpasswd 127321 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/bin/io-media-generic
drwxrwxrwx MVenus/mkpasswd      0 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/
drwxrwxrwx MVenus/mkpasswd      0 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/
-rwxrwxrwx MVenus/mkpasswd  26190 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/cipher-aes.so
-rwxrwxrwx MVenus/mkpasswd  23972 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/iofs-hbextdrive.so
-rwxrwxrwx MVenus/mkpasswd   2608 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/iofs-i2c-ipod.so
-rwxrwxrwx MVenus/mkpasswd  74791 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/iofs-ipod.so
-rwxrwxrwx MVenus/mkpasswd  13937 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/iofs-msdrm10.so
-rwxrwxrwx MVenus/mkpasswd  60710 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/iofs-pfs.so
-rwxrwxrwx MVenus/mkpasswd   6394 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/iofs-ser-ipod.so
-rwxrwxrwx MVenus/mkpasswd   9481 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/iofs-usb-ipod.so
-rwxrwxrwx MVenus/mkpasswd   5114 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/mme-imgprc-gf.so
drwxrwxrwx MVenus/mkpasswd      0 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/
-rwxrwxrwx MVenus/mkpasswd  28049 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/aac_parser.so
-rwxrwxrwx MVenus/mkpasswd   6190 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/audio_streamer.so
-rwxrwxrwx MVenus/mkpasswd  16193 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/audio_writer.so
-rwxrwxrwx MVenus/mkpasswd   5456 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/fildes_streamer.so
-rwxrwxrwx MVenus/mkpasswd   7155 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/media_streamer.so
-rwxrwxrwx MVenus/mkpasswd  50587 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/mp4_parser.so
-rwxrwxrwx MVenus/mkpasswd  30636 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/mpega_parser.so
-rwxrwxrwx MVenus/mkpasswd   5838 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/queue_filter.so
-rwxrwxrwx MVenus/mkpasswd   7258 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/ren_raac_decoder.so
-rwxrwxrwx MVenus/mkpasswd   7083 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/stream_reader.so
-rwxrwxrwx MVenus/mkpasswd   4752 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/tmpfile_streamer.so
-rwxrwxrwx MVenus/mkpasswd  25060 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/wav_parser.so
-rwxrwxrwx MVenus/mkpasswd 137938 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/wma9_decoder.so
-rwxrwxrwx MVenus/mkpasswd 156030 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/wma9_parser.so
-rwxrwxrwx MVenus/mkpasswd   7080 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/wms_control.so
-rwxrwxrwx MVenus/mkpasswd   3888 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/wms_streamer.so
-rwxrwxrwx MVenus/mkpasswd  45268 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/dll/mmedia/xing_mpega_decoder.so
-rwxrwxrwx MVenus/mkpasswd   5988 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/libaoi.so.1
-rwxrwxrwx MVenus/mkpasswd  19970 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/libmmedia.so.1
-rwxrwxrwx MVenus/mkpasswd   5884 2011-12-09 19:52 MME-3.5.4/HBMedia/qnx/lib/libmmfilter.so.1
-rwxrwxrwx MVenus/mkpasswd   1932 2011-12-09 19:52 MME-3.5.4/MANIFEST
drwxrwxrwx 0/0               0 1970-01-01 09:04 MME-1.12.0/
drwxrwxrwx 0/0               0 1970-01-01 09:04 MME-1.12.0/HBMedia/
drwxrwxrwx 0/0               0 2010-06-09 21:49 MME-1.12.0/HBMedia/db/
-rwxrwxrwx 0/0           12982 2010-06-09 21:49 MME-1.12.0/HBMedia/db/mme_combined.sql
drwxrwxrwx 0/0               0 2009-07-16 16:05 MME-1.12.0/HBMedia/qnx/
drwxrwxrwx 0/0               0 2010-06-09 21:49 MME-1.12.0/HBMedia/qnx/etc/
-rwxrwxrwx 0/0             398 2010-06-09 21:49 MME-1.12.0/HBMedia/qnx/etc/post_starting_qdb.sh
-rwxrwxrwx 0/0             581 2010-06-22 23:02 MME-1.12.0/MANIFEST
drwxrwxrwx user/group        0 2012-11-14 16:26 Phone-2.6.6/
drwxrwxrwx user/group        0 2012-11-14 16:26 Phone-2.6.6/HBPhone/
drwxrwxrwx user/group        0 2012-11-14 16:26 Phone-2.6.6/HBPhone/exe/
-rwxrwxrwx user/group   623040 2012-11-14 16:26 Phone-2.6.6/HBPhone/exe/libbssservice.so
-rwxrwxrwx user/group    14547 2012-11-14 16:26 Phone-2.6.6/HBPhone/exe/libdmlservice.so
-rwxrwxrwx user/group   688886 2012-11-14 16:26 Phone-2.6.6/HBPhone/exe/libdsiservice.so
-rwxrwxrwx user/group    98107 2012-11-14 16:26 Phone-2.6.6/HBPhone/exe/libmediaservice.so
-rwxrwxrwx user/group   528581 2012-11-14 16:26 Phone-2.6.6/HBPhone/exe/libphoneservice.so
-rwxrwxrwx user/group  1777921 2012-11-14 16:26 Phone-2.6.6/HBPhone/exe/libpimservice.so
-rwxrwxrwx user/group      647 2012-11-14 16:26 Phone-2.6.6/MANIFEST
drwxrwxrwx SBrandner/Domain Users 0 2014-10-01 21:04 Phone-3.5.8/
drwxrwxrwx SBrandner/Domain Users 0 2014-10-01 21:04 Phone-3.5.8/HBPhone/
drwxrwxrwx SBrandner/Domain Users 0 2014-10-01 21:04 Phone-3.5.8/HBPhone/exe/
-rwxrwxrwx Administratoren/Domain Users 623989 2014-10-01 21:04 Phone-3.5.8/HBPhone/exe/libbssservice.so
-rwxrwxrwx Administratoren/Domain Users 523104 2014-10-01 21:04 Phone-3.5.8/HBPhone/exe/libdataservice.so
-rwxrwxrwx Administratoren/Domain Users  14550 2014-10-01 21:04 Phone-3.5.8/HBPhone/exe/libdmlservice.so
-rwxrwxrwx Administratoren/Domain Users  99074 2014-10-01 21:04 Phone-3.5.8/HBPhone/exe/libmediaservice.so
-rwxrwxrwx Administratoren/Domain Users  94088 2014-10-01 21:04 Phone-3.5.8/HBPhone/exe/libpdiparser.so
-rwxrwxrwx Administratoren/Domain Users 529398 2014-10-01 21:04 Phone-3.5.8/HBPhone/exe/libphoneservice.so
-rwxrwxrwx Administratoren/Domain Users 1783867 2014-10-01 21:04 Phone-3.5.8/HBPhone/exe/libpimservice.so
-rwxrwxrwx Administratoren/Domain Users   24817 2014-10-01 21:04 Phone-3.5.8/HBPhone/exe/libsimservice.so
-rwxrwxrwx SBrandner/Domain Users           735 2014-10-01 21:04 Phone-3.5.8/MANIFEST
  • Untuk mengekstrak setiap arsip tar tersebut, gunakan perintah berikut ini:
% find . -name '*.tar' -exec tar xvf {} --one-top-level \;
  • Berkas yang berhasil diekstrak tidak dapat langsung Anda analisa, karena berkas-berkas tersebut dikompresi dengan metode kompresi yang tidak standar (custom). Tugas Anda adalah mencari tahu metode kompresi yang digunakan oleh berkas-berkas tersebut.
  • Selanjutnya, pindah ke sub direktori UPD03007 yang digunakan untuk menyimpan berkas hasil ekstraksi dari arsip UPD03007.bin. Pada sub direktori tersebut, terdapat 3 buah berkas. Berikut ini adalah tipe dari setiap berkas tersebut:
% file *
SWIP_00001122_008_005_005.xml: ASCII text, with very long lines, with no line terminators
SWUP_00001120_008_005_005.bin: data
SWUP_00001123_008_005_005.bin: data
  • Adapun isi dari dokumen SWIP_00001122_008_005_005.xml adalah sebagai berikut:
% cat SWIP_00001122_008_005_005.xml | xmllint --format -
<?xml version="1.0"?>
<SWIP xmlns="http://bmw.com/2008/spc.data.swip" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
      xmlns:swip="http://bmw.com/2008/spc.data.swip" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      version="0.2.4" xsi:schemaLocation="http://bmw.com/2008/spc.data.swip SWIP_0_2_4.xsd">
  <sweHeader CreatedBy="BMW" comment="8.05.00.05" date="2013-05-07">
    <swipIdent>
      <processClass>SWIP</processClass>
      <id>00001122</id>
      <mainVersion>008</mainVersion>
      <subVersion>005</subVersion>
      <patchVersion>005</patchVersion>
    </swipIdent>
    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
      <SignedInfo Id="CRYPTO_ASYM_SIG_KEY">
        <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
        <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-md5"/>
        <Reference URI="">
          <Transforms>
            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
          </Transforms>
          <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#md5"/>
          <DigestValue>t+izoCk5pavADSq8mpmbCA==</DigestValue>
        </Reference>
      </SignedInfo>
      <SignatureValue>A1vhVyZzYX34zV0GWV7OwIe2/1NOSDSnEFWufzT3b+XuRnLvZqWYMqabuJYbRq4agHB9KVUtN3BFyidi28Qd7rZSn5/ZJjszDWI9fe5FVe9Px65nqKLMMUg60l2zAHxEE7SON/L+gARgvGTneHV+5AVvnxGkD1EUkdTWbjLCYS4=</SignatureValue>
    </Signature>
  </sweHeader>
  <spcData>
    <description>Software Update Spring 2013</description>
    <creationdate>2013-05-07</creationdate>
    <expirationdate>2030-12-31</expirationdate>
    <releasestatus>released</releasestatus>
    <targetECU>63</targetECU>
    <spindex>
      <SWUP HashValue="t9Sz1Do7dDinVdbeSa56Xg==" subsystemID="ME">
        <processClass>SWUP</processClass>
        <id>00001123</id>
        <mainVersion>008</mainVersion>
        <subVersion>005</subVersion>
        <patchVersion>005</patchVersion>
        <resReqs>7MB</resReqs>
        <installTime>30s</installTime>
        <supportedDevices>
          <device type="Mediaplayer">
            <brand name="BlackBerry">
              <model name="Bold 9790">
                <softwareRelease>OS 7.1</softwareRelease>
              </model>
            </brand>
            <brand name="Apple">
              <model name="iPhone 5">
                <softwareRelease>iOS 6.1.3</softwareRelease>
              </model>
            </brand>
            <brand name="Samsung">
              <model name="Galaxy SIII"/>
            </brand>
            <brand name="Nokia">
              <model name="701"/>
            </brand>
            <brand name="Sony Ericsson">
              <model name="Xperia Arc S"/>
            </brand>
          </device>
        </supportedDevices>
        <updateDescription>Software Update Spring 2013</updateDescription>
      </SWUP>
      <SWUP HashValue="VrtvaX3UUs/SFrtUt6+87A==" subsystemID="TE">
        <processClass>SWUP</processClass>
        <id>00001120</id>
        <mainVersion>008</mainVersion>
        <subVersion>005</subVersion>
        <patchVersion>005</patchVersion>
        <resReqs>7MB</resReqs>
        <installTime>30s</installTime>
        <supportedDevices>
          <device type="Phone">
            <brand name="BlackBerry">
              <model name="Bold 9900">
                <softwareRelease>OS 7.1</softwareRelease>
              </model>
            </brand>
            <brand name="Apple">
              <model name="iPhone 5">
                <softwareRelease>iOS 6.1.3</softwareRelease>
              </model>
            </brand>
            <brand name="Samsung">
              <model name="Galaxy S III">
                <softwareRelease>4.1.2</softwareRelease>
              </model>
            </brand>
            <brand name="Nokia">
              <model name="Lumia 920">
                <softwareRelease>Windows 8</softwareRelease>
              </model>
            </brand>
            <brand name="HTC">
              <model name="One X+">
                <softwareRelease>4.1.1</softwareRelease>
              </model>
            </brand>
          </device>
        </supportedDevices>
        <updateDescription>Software Update Spring 2013</updateDescription>
      </SWUP>
    </spindex>
  </spcData>
</SWIP>
  • Sedangkan berkas SWUP_00001120_008_005_005.bin berisi banyak informasi walaupun hanya dari mengamati printable string yang terdapat pada berkas tersebut. Diantara informasi tersebut adalah mengenai Parrot yang produknya umum digunakan pada perangkat yang berhubungan dengan konektivitas/komunikasi. Selain itu, terdapat pula banyak informasi mengenai penggunaan SQLite dan firmware yang tersimpan di dalam berkas tersebut, yaitu pada bagian ini:
:0200000282007A
:20000000F0B582B0002400F07EF800F0ADF9A948037801210B43037000F0B5F9A5490B788B
:20002000802213400B700D28F1D00A28EFD040281CD101A8042100F074F8002854D001A8F5
:20004000057842788178C0785319CB18C6183606360E2B02151C1D430B021843964BC718A5
:20006000EB19581E954B984214D93DE05A280BD100F090F892490A68002A35D0201C002391
:20008000012100F09EF82FE057282DD1802389480370BCE7002C13D1002D13D03C1C68467C
:2000A0000330012100F03DF800281DD06946C87836183606360E38700137013D2D042D0C6C
:2000C000002DECD168460330012100F02AF800280AD06946C87883191B0605D179480022BA
:2000E000032100F068F992E77748582303700022012100F060F90022D0430123111C00F062
:2001000060F802B0F0BD01236A490B706F4B70490B806C4840230370302343703123837001
:20012000704770B5051C0E1C30E000F034F9031C303B0A2B01D230210AE0031C413B062BD2
:2001400001D2372104E0031C613B062B17D25721401A0407240E00F01EF9031C303B0A2BE6
:2001600001D230210DE0031C413B062B01D2372107E0031C613B062B01D2572101E0002058
:2001800007E0431A1C432C700135013E002ECCD1012070BD8F2080004E490023484A1360A4
:2001A00042688A4201D1043008E003688B4205D00020494A13688B4200D1101C40490860E5
:2001C0007047F0B585B0061C0C06240E1B061B0E02AD1CC5351C0024404B3433F71A404B4B
:2001E0009F4209D22B78012B06D16B78062B03D1AB78002B00D101242406240E394BF71882
:200200002E4B9F423DD91F1C3BE0AB781B0201B46878034328780290022801BC23D10A2BBB
:200220002DD12B1C0F33BB4229D82F1C0D37BB1B01932B791B0201B4E87818436B791B040C
:200240001843AB791B06034301BCBB4202D0019FBB4214D10727EB5D002B00D000240137DD
:200260000C2FF8D90FE001B40298FE2801BC00D300245B19DD1C2B1C0C33BB4201D900246C
:2002800001E0002CC1D1049B002B01D0002C3BD07D25ED01013DFDD1039D2F1C254300D12D
:2002A0000297114F3B682225AB433B60002C27D00E4F1DE01E240800705C0800FF8F0800A1
:2002C000182408001F24080022240800204E00001C24080008D09FE5B80800004C0008001B
:2002E000808F0000FF0F000020040E005A0008003C782407240F30252C433C70144F3E60CA
:20030000029CA44600F086F805B0F0BD00B5114BF9200003036010480378002B03D00F4BCA
:200320000F48038012E00E4908880138088000040CD10C48582303700022012100F03BF8BF
:200340000022D0430123111CFFF73BFF00BDC0464C0008000024F4001E240800204E000000
:200360001C2408002224080025490B68402003430B600B68202003430B600B6802210B43AD
:200380001F490B60704700B500F005F8012801D100F001F800BD10B51A4C01231A4803607C
:2003A000FFF7B4FF0820A066A36E1B07F8D423681806000E10BD30B5124C144B5B1A144D6B
:2003C0002B600223A366A36E9B07FAD5002A04D0042201E00278013022600A1C0139090443
:2003E000090C002AF6D10948431A094A1360002313600220A066A36E9B07FAD530BDC04650
:1404000020040E001C000E002C040E00DF01000030040E002C
:02000002824139
:02000400604753
:00000001FF
  • Simpan bagian di atas ke dalam berkas dengan nama fw.hex, lalu gunakan aplikasi hex2bin untuk melakukan konversi ke dalam format biner (binary):
% hex2bin -e bin fw.hex
hex2bin v1.0.10, Copyright (C) 2012 Jacques Pelletier & contributors

Lowest address  = 00082000
Highest address = 00082415
Pad Byte        = FF
8-bit Checksum = 9F
  • Hasilnya adalah sebuah berkas dengan nama fw.bin. Anda dapat menggunakan aplikasi IDAPro untuk menganalisa berkas tersebut dengan terlebih dahulu memilih arsitektur ARM (Little Endian). Hasilnya adalah sebagai berikut:


Bmw-idapro-fwbin.png


  • Selanjutnya, gunakan binwalk untuk memeriksa kembali berkas SWUP_00001120_008_005_005.bin seperti ini:
% binwalk SWUP_00001120_008_005_005.bin

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
1001          0x3E9           Microsoft executable, portable (PE)
183785        0x2CDE9         Microsoft executable, portable (PE)
339673        0x52ED9         mcrypt 2.2 encrypted data, algorithm: blowfish-256, mode: CBC, keymode: 8bit
968169        0xEC5E9         Microsoft executable, portable (PE)
1919134       0x1D489E        Certificate in DER format (x509 v3), header length: 4, sequence length: 1448
1921542       0x1D5206        Certificate in DER format (x509 v3), header length: 4, sequence length: 5504
2405294       0x24B3AE        Certificate in DER format (x509 v3), header length: 4, sequence length: 1452
3321389       0x32AE2D        Copyright string: "Copyright Parrot SA 2010"
3764605       0x39717D        Base64 standard index table
3947533       0x3C3C0D        SQLite 3.x database,, user version 846095392
  • Dapat terlihat adanya 3 buah aplikasi yang menggunakan format Portable Executable (PE) pada firmware tersebut. Nama untuk ketiga berkas tersebut, terdapat pada bagian akhir dari 1000 byte pertama pada firmware tersebut, seperti yang terlihat berikut ini:
000003a0  01 00 0f 63 76 74 6f 42  43 4d 55 64 65 76 2e 64  |...cvtoBCMUdev.d|
000003b0  6c 6c 13 29 42 00 f8 0b  01 00 11 4d 4f 53 54 41  |ll.)B......MOSTA|
000003c0  54 57 72 61 70 70 65 72  2e 64 6c 6c 13 df 14 00  |TWrapper.dll....|
000003d0  18 2f 01 00 0c 50 61 72  72 6f 74 43 4b 2e 64 6c  |./...ParrotCK.dl|
000003e0  6c 77 69 6e 64 6f 77 73  00 4d 5a 90 00 03 00 00  |lwindows.MZ.....|
  • Portable Executable tersebut merupakan Dynamic Link Library (DLL). Dengan menggunakan informasi yang diberikan oleh binwalk, Anda dapat mengekstrak ketiga berkas tersebut seperti ini:
% ## ekstrak berkas cvtoBCMUdev.dll
% dd if=SWUP_00001120_008_005_005.bin of=cvtoBCMUdev.dll bs=1 skip=1001 count=$((183785-1001))
182784+0 records in
182784+0 records out
182784 bytes (183 kB) copied, 0.375497 s, 487 kB/s

% ## ekstrak berkas MOSTATWrapper.dll
% dd if=SWUP_00001120_008_005_005.bin of=MOSTATWrapper.dll bs=1 skip=183785 count=$((339673-183785))
155888+0 records in
155888+0 records out
155888 bytes (156 kB) copied, 0.305403 s, 510 kB/s

% ## ekstrak berkas ParrotCK.dll
% dd if=SWUP_00001120_008_005_005.bin of=ParrotCK.dll bs=1 skip=968169 count=$((1919134-968169))
950965+0 records in
950965+0 records out
950965 bytes (951 kB) copied, 1.75572 s, 542 kB/s
  • Setelah mengekstrak ketiga berkas dynamic link library tersebut, periksa kembali untuk memastikan bahwa hasilnya sudah benar:
% file *.dll
cvtoBCMUdev.dll:   PE32 executable (DLL) (Windows CE) ARM Thumb, for MS Windows
MOSTATWrapper.dll: PE32 executable (DLL) (Windows CE) ARM Thumb, for MS Windows
ParrotCK.dll:      PE32 executable (DLL) (Windows CE) ARM (stripped to external PDB), for MS Windows
  • Selanjutnya, Anda dapat menggunakan IDAPro atau aplikasi yang lain untuk melakukan analisis. Cara seperti di atas dapat Anda gunakan untuk analisis berkas firmware lainnya, yaitu SWUP_00001123_008_005_005.bin.


Penutup

Pada umumnya kendaraan yang beredar di pasaran ketika tutorial ini ditulis, menggunakan produk buatan Parrot untuk fitur konektivitas. Sekian tutorial singkat kali ini, semoga bermanfaat. Terima kasih kepada Tuhan Yang Maha Esa, Maxindo, N3 dan Anda yang telah membaca tutorial ini.


Referensi