Preliminary Reverse Engineering of the Livestream Broadcaster Drubicza Indonesian Research and Development Center June 4, 2013 Abstract Tulisan kali ini akan membahas mengenai tahap awal reverse engineering perangkat livestream broadcaster. Livestream broadcaster itu sendiri adalah sebuah perangkat yang dapat digunakan untuk melakukan streaming dengan menggunakan input dari kamera dan koneksi jaringan menggunakan ethernet, wifi atau modem usb. Sebagai catatan, tulisan ini masih berupa rintisan dan untuk saat ini hanya akan membahas livestream broadcaster dari sisi hardware serta metode yang dapat digunakan untuk reverse engineering.
1
1
Disclaimer
Tulisan ini dibuat untuk tujuan pembelajaran semata. Penulis tidak bertanggungjawab atas penggunaan maupun penyalahgunaan informasi yang ada pada tulisan ini. Use at your own risk.
2
Informasi Hardware
Berikut ini adalah informasi dari beberapa chip yang digunakan oleh livestream broadcaster beserta fungsinya masing-masing: Ogemray GWF-3E Modul nirkabel (wireless) 2.4GHz buatan Shenzen Ogemray Technology Co., Ltd. Modul ini menggunakan chip Ralink RT3070 dengan peak rate 150Mbps dan peak throughput 27Mbps dan dilengkapi dengan built-in-PCB antenna dan power management. Standar yang digunakan adalah 802.11 B/G/N dan koneksi dengan perangkat menggunakan USB. Maxim MG3500A3-376B Chip H.264 HD 1920x1080i Codec SoC (System on Chip) ini bertugas untuk menangani pemrosesan multimedia berupa gambar dan suara. Chip ini berbasis ARM9 dan dilengkapi dengan dua buah real-time programmable multimedia engines (MME), masing-masing untuk pengolahan gambar dan audio. Analog Devices ADV7611 Chip ini bertugas sebagai pemroses input dari HDMI dan beroperasi dengan frekuensi 165MHz. Contoh inputnya adalah dari kamera. SMSC USB2513B Chip ini berfungsi sebagai USB hub controller yang mengatur segala aspek yang berkaitan dengan koneksi USB pada perangkat livestream broadcaster. Samsung K4T51163QJ-BCE6 Ini adalah chip DDR2 SDRAM buatan Samsung. Micron MT29F2G08ABAEAWP-IT Ini adalah chip NAND dengan kapasitas 2Gb yang bertugas sebagai media penyimpanan OS/firmware livestream broadcaster.
2
3
Cara Kerja
Ketika livestream broadcaster aktif, maka secara otomatis akan berusaha melakukan koneksi ke internet. Pengguna livestream broadcaster pun diberi beberapa pilihan untuk koneksi, yaitu menggunakan ethernet, WiFi atau USB modem. Pengguna juga dapat mengatur alamat IP pada perangkat livestream broadcaster secara manual jika tidak ingin menggunakan DHCP. Setelah terhubung dengan server livestream, maka perangkat livestream broadcaster akan menampilkan URL yang harus diakses oleh pengguna untuk memasukkan PIN berupa 5 digit angka unik yang juga ditampilkan pada layar perangkat livestream broadcaster. Selain itu, pada perangkat livestream broadcaster juga terdapat 2 port TCP yang terbuka yaitu port 22 dan port 8080, seperti yang dapat dilihat pada potongan hasil scan menggunakan nmap berikut ini: PORT STATE SERVICE VERSION 22/ tcp open ssh Dropbear sshd 0.52 ( protocol 2.0) 8080/ tcp open http - proxy ? MAC Address : 7 C : DD :90:2 A :41:8 B ( Shenzhen Ogemray Technology Co .) Service Info : OS : Linux ; CPE : cpe :/ o : linux : linux_kernel
Khusus untuk port 22, bisa terlihat bahwa service yang dijalankan adalah SSH. Dan walaupun kita dapat melakukan koneksi ke port tersebut, namun kita akan mengalami kendala yaitu public key kita harus berada pada perangkat livestream broadcaster. % ssh root@XXX . XXX . XX . XX The authenticity of host ’ XXX . XXX . XX . XX ( XXX . XXX . XX . XX ) ’ can ’ t be established . RSA key fingerprint is xx : xx : xx : xx : xx : xx : xx : xx : xx : xx : xx : xx : xx : xx : xx : xx . Are you sure you want to continue connecting ( yes / no ) ? yes Warning : Permanently added ’ XXX . XXX . XX . XX ’ ( RSA ) to the list of known hosts . Permission denied ( publickey ) .
Adapun untuk port 8080, sampai tulisan ini dibuat, belum diketahui fungsinya. Walaupun pada umumnya port tersebut berfungsi sebagai web proxy, namun setelah melalui beberapa kali pengujian, port tersebut tidak memberikan respon sama sekali.
4
Koneksi Serial
Board livestream broadcaster memiliki 6 buah pin yang terletak diantara soket power dan port hdmi. Namun pin ini hanya memiliki informasi minimalis yaitu tertulis DB1, sehingga kita harus berusaha mencari sendiri fungsi setiap pin. Jika diperhatikan sejenak, pin yang berjumlah 6 buah tersebut agak mirip dengan pin serial UART pada board ubnt routerstation. Namun untuk lebih jelasnya, kita akan menggunakan multimeter untuk mencari pin yang berfungsi sebagai Gnd, Tx dan Rx. Caranya adalah dengan mengaktifkan power pada livestream broadcaster, dan yang pertama harus dicari adalah pin yang berfungsi sebagai ground. Untuk mencari pin yang berfungsi sebagai ground, cukup cari bagian yang terbuka dan memiliki konduktor pada board livestream
3
broadcaster dan sentuh dengan salah satu konektor multimeter. Kemudian dengan konektor multimeter yang lain, mulai cari satu persatu pin serial yang memiliki nilai hambatan 0. Hasilnya adalah, pin yang terletak paling dalam pada board livestream broadcaster berfungsi sebagai Gnd. Selanjutnya untuk mencari pin Tx/Rx, hubungkan salah satu konektor multimeter pada pin Gnd yang diperoleh pada langkah sebelumnya. Sedangkan konektor lainnya digunakan untuk menguji satu persatu dari ke-5 pin yang tersisa. Sentuh satu persatu pin tersebut dengan konektor multimeter yang lain. Biasanya pin Tx memiliki nilai voltase 1.8v atau 2.8v dan pin Rx nilainya 1.7v atau 2.7v. Informasi ini diperoleh dari salah satu forum gsm di internet. Dan setelah melakukan beberapa pengujian, akhirnya pin Tx dan Rx dapat ditemukan dengan konfigurasi yang sama dengan pin serial yang terdapat pada board ubnt routerstation. Berikut ini adalah informasi mengenai pin serial pada perangkat livestream broadcaster:
5
Serial Log
Setelah menemukan pin Tx dan Rx pada perangkat livestream broadcaster, maka kita dapat melakukan koneksi ke komputer menggunakan serial adapter. Untuk tulisan ini, digunakan bus pirate v3.6, dan karena letak pin pada perangkat livestream broadcaster cukup rapat, dan sulit dijangkau oleh konektor hook, maka digunakan kabel tambahan. Terdapat perbedaan ketika melakukan koneksi serial dengan perangkat livestream broadcaster dimana panel lcd sedang terpasang dan ketika panel lcd tidak terpasang. Ketika panel lcd sedang terpasang, input yang dimasukkan untuk menghentikan proses booting hanya akan membuat livestream broadcaster melakukan reboot. Sedangkan apabila panel lcd tidak terpasang, maka proses booting akan berjalan lebih verbose sebelum akhirnya mengalami error. Pesan yang muncul ketika terjadi error memberikan banyak informasi mengenai perangkat livestream broadcaster. Berikut ini adalah potongan pesan error yang memberikan informasi mengenai lokasi program counter (PC) ketika terjadi error:
4
[42949376.910000] [42949376.910000] [42949376.910000] #1) [42949376.910000]
Internal error : Oops : 17 [#1] PREEMPT Modules linked in : ssd1305 (+) board_teradek board_odyssey CPU : 0 Not tainted (2.6.30. mobi . merlin - mg3500 . custom PC is at g p i o _ g e t _ v a l u e _ c a n s l e e p +0 x20 /0 x44
Dari potongan informasi di atas, bisa diketahui bahwa kemungkinan perangkat livestream broadcaster ini mirip dengan perangkat Teradek VidiU dan ditegaskan dengan informasi berikut ini yang tertulis pada situs teradek: VidiU is certified by Ustream and the new Livestream platforms, but also includes a generic RTMP interface that enables streaming to any other platform on the Web. Untuk lebih jelasnya, berikut ini adalah pesan yang muncul ketika perangkat livestream broadcaster melakukan proses booting tanpa panel lcd: Mboot start ... bootdevice : NAND initramfs script version 1.0. [ 4 2 9 4 9 3 7 6 . 4 3 0 0 0 0 ] Loading additional devices for Deck [ 4 2 9 4 9 3 7 6 . 4 4 0 0 0 0 ] pca953x 5 -0077: failed writing register [ 4 2 9 4 9 3 7 6 . 8 9 0 0 0 0 ] Unable to handle kernel NULL pointer dereference at virtual address 00000018 [ 4 2 9 4 9 3 7 6 . 9 0 0 0 0 0 ] pgd = c0a48000 [ 4 2 9 4 9 3 7 6 . 9 0 0 0 0 0 ] [00000018] * pgd =00 a9e031 , * pte =00000000 , * ppte =00000000 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] Internal error : Oops : 17 [#1] PREEMPT [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] Modules linked in : ssd1305 (+) board_teradek board_odyssey [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] CPU : 0 Not tainted (2.6.30. mobi . merlin - mg3500 . custom #1) [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] PC is at g p i o _ g e t _ v a l u e _ c a n s l e e p +0 x20 /0 x44 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] LR is at ssd1305_probe +0 x210 /0 x2d8 [ ssd1305 ] [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] pc : [ < c02164fc >] lr : [ < bf014210 >] psr : 60000013 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] sp : c147fdc0 ip : 00000050 fp : c147fdcc [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] r10 : bf0110dc r9 : 00000000 r8 : bf00f338 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] r7 : 00000000 r6 : c0a7c9a0 r5 : bf010b94 r4 : bf0114f0 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] r3 : 000003 c0 r2 : c0372540 r1 : c147e000 r0 : 00000000 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] Flags : nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] Control : 0005317 f Table : 00 a48000 DAC : 00000015 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] Process insmod ( pid : 363 , stack limit = 0 xc147e260 ) [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] Stack : (0 xc147fdc0 to 0 xc1480000 ) [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] fdc0 : c147fdf8 c147fdd0 bf014210 c02164ec bf0114f0 bf014000 c0a7c9a0 bf010df0 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] fde0 : c03732ac c0ac3560 c035b810 c147fe10 c147fdfc c025cb5c bf014010 c0a7c9c0 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] fe00 : c0a7c9f4 c147fe30 c147fe14 c0230a18 c025caf8 c0a7c9c0 c0a7c9f4 bf010df0 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] fe20 : c0230b14 c147fe4c c147fe34 c0230ba0 c02309a0 00000000 c147fe50 bf010df0 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] fe40 : c147fe74 c147fe50 c022ffac c0230b24 c1403458 c0ac3650 bf010dc4 c0357ca4 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] fe60 : bf010df0 00000000 c147fe84 c147fe78 c023089c c022ff60 c147feb4 c147fe88 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] fe80 : c02305cc c023088c bf00f338 bf010dc4 c0357ca4 bf010df0 00000000 bf0142d8 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] fea0 : 00000000 c035fbcc c147fed8 c147feb8 c0230f28 c0230534 bf010dc4 c0357ca4 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] fec0 : c147e000 00000000 bf0142d8 c147fef0 c147fedc c025dc84 c0230ed8 bf0114f0 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] fee0 : c0357ca4 c147ff08 c147fef4 bf014380 c025dc10 00004 d18 bf010fb8 c147ff80 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] ff00 : c147ff0c c011d324 bf0142e8 c4849ece c0a76f00 c484b4d0 00000014 0000000 c
5
[ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] ff20 : 00000009 00000000 000000 b4 00000016 c484a2c8 00000000 00000000 00000000 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] ff40 : 00000000 00000000 00000000 00004 d18 bf010fb8 00090028 00004 d18 bf010fb8 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] ff60 : 00090028 00000000 c011e084 c147e000 bebb3e34 c147ffa4 c147ff84 c016de20 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] ff80 : c011d300 00090028 00004 d18 00090028 0000 c608 00000080 00000000 c147ffa8 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] ffa0 : c011dee0 c016dda8 00004 d18 00090028 00090028 00004 d18 00090008 00000000 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] ffc0 : 00004 d18 00090028 0000 c608 00000000 00000000 00000036 bebb3e34 bebb3bac [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] ffe0 : bebb3bb0 bebb3b84 00014 b70 4004 dbd0 60000010 00090028 00000000 00000000 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] Backtrace : [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] [ < c02164dc >] ( g p i o _ g e t _ v a l u e _ c a n s l e e p +0 x0 /0 x44 ) from [ < bf014210 >] ( ssd1305_probe +0 x210 /0 x2d8 [ ssd1305 ]) [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] [ < bf014000 >] ( ssd1305_probe +0 x0 /0 x2d8 [ ssd1305 ]) from [ < c025cb5c >] ( i 2 c _ d e v i c e _p r o b e +0 x74 /0 x84 ) [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] [ < c025cae8 >] ( i 2 c _ d e v i c e _ p r o b e +0 x0 /0 x84 ) from [ < c0230a18 >] ( d r i v e r _ p r o b e _ d e v i c e +0 x88 /0 x184 ) [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] r5 : c0a7c9f4 r4 : c0a7c9c0 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] [ < c0230990 >] ( d r i v e r _ p r o b e _ d e v i c e +0 x0 /0 x184 ) from [ < c0230ba0 >] ( __ dr iv e r_ at t ac h +0 x8c /0 x90 ) [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] r7 : c0230b14 r6 : bf010df0 r5 : c0a7c9f4 r4 : c0a7c9c0 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] [ < c0230b14 >] ( __ d ri ve r _a tt ac h +0 x0 /0 x90 ) from [ < c022ffac >] ( b u s _ f o r _ e a c h _ d e v +0 x5c /0 x88 ) [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] r6 : bf010df0 r5 : c147fe50 r4 :00000000 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] [ < c022ff50 >] ( b u s _ f o r _ e a c h _ d e v +0 x0 /0 x88 ) from [ < c023089c >] ( driver_attach +0 x20 /0 x28 ) [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] r7 :00000000 r6 : bf010df0 r5 : c0357ca4 r4 : bf010dc4 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] [ < c023087c >] ( driver_attach +0 x0 /0 x28 ) from [ < c02305cc >] ( bus_ add_driv er +0 xa8 /0 x238 ) [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] [ < c0230524 >] ( b us_add_ driver +0 x0 /0 x238 ) from [ < c0230f28 >] ( d ri ve r_ r eg is t er +0 x60 /0 x148 ) [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] [ < c0230ec8 >] ( dr i ve r_ r eg is te r +0 x0 /0 x148 ) from [ < c025dc84 >] ( i 2 c _ r e g i s t e r _ d r i v e r +0 x84 /0 xf0 ) [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] r8 : bf0142d8 r7 :00000000 r6 : c147e000 r5 : c0357ca4 r4 : bf010dc4 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] [ < c025dc00 >] ( i 2 c _ r e g i s t e r _ d r i v e r +0 x0 /0 xf0 ) from [ < bf014380 >] ( ssd1305_init +0 xa8 /0 xc8 [ ssd1305 ]) [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] r5 : c0357ca4 r4 : bf0114f0 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] [ < bf0142d8 >] ( ssd1305_init +0 x0 /0 xc8 [ ssd1305 ]) from [ < c011d324 >] ( do _o ne _ in it c al l +0 x34 /0 x194 ) [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] r5 : bf010fb8 r4 :00004 d18 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] [ < c011d2f0 >] ( do _ on e_ i ni tc al l +0 x0 /0 x194 ) from [ < c016de20 >] ( sy s_ i ni t_ mo d ul e +0 x88 /0 x19c ) [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] [ < c016dd98 >] ( sy s _i ni t _m od ul e +0 x0 /0 x19c ) from [ < c011dee0 >] ( r e t _ f a s t _ s y s c a l l +0 x0 /0 x2c ) [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] r7 :00000080 r6 :0000 c608 r5 :00090028 r4 :00004 d18 [ 4 2 9 4 9 3 7 6 . 9 1 0 0 0 0 ] Code : e1a03200 e0433100 e1a0c000 e7930002 ( e5903018 ) [ 4 2 9 4 9 3 7 6 . 9 2 0 0 0 0 ] - - -[ end trace 6 f 1a 96 b9 3 7c 7c f6 6 ] - - Segmentation fault Executing autoupdate script [ 4 2 9 4 9 3 7 8 . 4 7 0 0 0 0 ] Loading AU - MB3000 NAND Driver [ 4 2 9 4 9 3 7 8 . 4 7 0 0 0 0 ] AU - MB3000 NAND Driver running in PIO mode . [ 4 2 9 4 9 3 7 8 . 4 9 0 0 0 0 ] NAND device : Manufacturer ID : 0 x2c , Chip ID : 0 xda ( Micron NAND 256 MiB 3 ,3 V 8 - bit ) [ 4 2 9 4 9 3 7 8 . 4 9 0 0 0 0 ] Scanning device for bad blocks [ 4 2 9 4 9 3 7 8 . 6 2 0 0 0 0 ] Bad eraseblock 533 at 0 x0000042a0000 [ 4 2 9 4 9 3 7 8 . 8 9 0 0 0 0 ] Bad eraseblock 1753 at 0 x00000db20000 [ 4 2 9 4 9 3 7 8 . 9 6 0 0 0 0 ] 11 cmdlinepart partitions found on MTD device aumb3000 - nand [ 4 2 9 4 9 3 7 8 . 9 7 0 0 0 0 ] Creating 11 MTD partitions on " aumb3000 - nand ": [ 4 2 9 4 9 3 7 8 . 9 8 0 0 0 0 ] 0 x000000000000 -0 x000000100000 : " mboot1 " [ 4 2 9 4 9 3 7 8 . 9 9 0 0 0 0 ] 0 x000000100000 -0 x000000200000 : " mboot2 " [ 4 2 9 4 9 3 7 9 . 0 0 0 0 0 0 ] 0 x000000200000 -0 x000000520000 : " recovery1 " [ 4 2 9 4 9 3 7 9 . 0 1 0 0 0 0 ] 0 x000000520000 -0 x0000011a0000 : " recovery2 " [ 4 2 9 4 9 3 7 9 . 0 3 0 0 0 0 ] 0 x0000011a0000 -0 x0000014c0000 : " kernel1 "
6
[ 4 2 9 4 9 3 7 9 . 0 4 0 0 0 0 ] 0 x0000014c0000 -0 x0000017e0000 [ 4 2 9 4 9 3 7 9 . 0 5 0 0 0 0 ] 0 x0000017e0000 -0 x000001c60000 [ 4 2 9 4 9 3 7 9 . 0 6 0 0 0 0 ] 0 x000001c60000 -0 x0000020e0000 [ 4 2 9 4 9 3 7 9 . 0 8 0 0 0 0 ] 0 x0000020e0000 -0 x000006760000 [ 4 2 9 4 9 3 7 9 . 0 9 0 0 0 0 ] 0 x000006760000 -0 x000008b20000 [ 4 2 9 4 9 3 7 9 . 1 0 0 0 0 0 ] 0 x000008b20000 -0 x000010000000 Root filesystem is now ready , start init .
: : : : : :
" kernel2 " " initrd1 " " initrd2 " " rootfs " " config " " data "
init started : BusyBox v1 .14.2 (2012 -12 -03 15:46:14 PST ) _ . -+. _ . -""
’. +:"" ’. J \ Box ’. L \ _ . -+ | ’. _ . -" | J \ _ . -" L L +" J + | | \ | .+ \ | .-’ \ | .-’ \| . - ’ + Version : 6.1.0 r15195 MG Version : SDK7 . RC15r14692 [ 4 2 9 4 9 3 8 5 . 7 7 0 0 0 0 ] QHAL : QHAL linux driver for kernel 2.6.30. mobi . merlin mg3500 . custom , SVN revision branches1 .0 m o b i l y g e n s d k r 1 5 1 9 6 [ 4 2 9 4 9 3 8 5 . 8 1 0 0 0 0 ] QHAL : QHAL initialized properly . [ 4 2 9 4 9 3 8 6 . 0 2 0 0 0 0 ] input : gpio - keys - polled as / class / input / input0 [ 4 2 9 4 9 3 8 8 . 3 2 0 0 0 0 ] Button init : gpio =38 interval =250 ms (25 j ) [ 4 2 9 4 9 3 9 0 . 4 5 0 0 0 0 ] i2c - adapter i2c -5: sendbytes : NAK bailout from 0 x4c . i2crw : write failed with error -3 Initializing network [ 4 2 9 4 9 3 9 0 . 7 5 0 0 0 0 ] s s d 1 3 0 5 _ i 2 c _ t r a n s f e r : i2c_transfer requested 7 returned -6 [ 4 2 9 4 9 3 9 0 . 7 6 0 0 0 0 ] s s d 1 3 0 5 _ i 2 c _ t r a n s f e r : i2c_transfer requested 2 returned -6 [ 4 2 9 4 9 3 9 1 . 4 1 0 0 0 0 ] usbcore : registered new interface driver usbfs [ 4 2 9 4 9 3 9 1 . 4 1 0 0 0 0 ] usbcore : registered new interface driver hub [ 4 2 9 4 9 3 9 1 . 4 4 0 0 0 0 ] usbcore : registered new device driver usb [ 4 2 9 4 9 3 9 1 . 5 6 0 0 0 0 ] dwc_otg : version 2.60 a 22 - NOV -2006 [ 4 2 9 4 9 3 9 1 . 7 7 0 0 0 0 ] DWC_otg : Memory allocated for channel :0 [ 4 2 9 4 9 3 9 1 . 7 8 0 0 0 0 ] DWC_otg : Memory allocated for channel :1 [ 4 2 9 4 9 3 9 1 . 7 9 0 0 0 0 ] DWC_otg : Memory allocated for channel :2 [ 4 2 9 4 9 3 9 1 . 7 9 0 0 0 0 ] DWC_otg : Memory allocated for channel :3 [ 4 2 9 4 9 3 9 1 . 8 0 0 0 0 0 ] DWC_otg : Memory allocated for channel :4 [ 4 2 9 4 9 3 9 1 . 8 1 0 0 0 0 ] DWC_otg : Memory allocated for channel :5 [ 4 2 9 4 9 3 9 1 . 8 2 0 0 0 0 ] DWC_otg : Memory allocated for channel :6 [ 4 2 9 4 9 3 9 1 . 8 2 0 0 0 0 ] DWC_otg : Memory allocated for channel :7 [ 4 2 9 4 9 3 9 1 . 8 3 0 0 0 0 ] DWC_otg : Using DMA mode [ 4 2 9 4 9 3 9 1 . 8 4 0 0 0 0 ] dw_otg dw_otg : DWC OTG Controller [ 4 2 9 4 9 3 9 1 . 8 6 0 0 0 0 ] dw_otg dw_otg : new USB bus registered , assigned bus number 1 [ 4 2 9 4 9 3 9 1 . 8 7 0 0 0 0 ] dw_otg dw_otg : irq 3 , io mem 0 x00000000 [ 4 2 9 4 9 3 9 1 . 8 8 0 0 0 0 ] DWC_otg : Init : Port Power ? op_state =1 [ 4 2 9 4 9 3 9 1 . 8 8 0 0 0 0 ] DWC_otg : Init : Power Port (0) [ 4 2 9 4 9 3 9 1 . 8 9 0 0 0 0 ] usb usb1 : New USB device found , idVendor =1 d6b , idProduct =0002 [ 4 2 9 4 9 3 9 1 . 9 0 0 0 0 0 ] usb usb1 : New USB device strings : Mfr =3 , Product =2 , SerialNumber =1 [ 4 2 9 4 9 3 9 1 . 9 1 0 0 0 0 ] usb usb1 : Product : DWC OTG Controller [ 4 2 9 4 9 3 9 1 . 9 2 0 0 0 0 ] usb usb1 : Manufacturer : Linux 2.6.30. mobi . merlin - mg3500 . custom dwc_otg_hcd [ 4 2 9 4 9 3 9 1 . 9 3 0 0 0 0 ] usb usb1 : SerialNumber : dw_otg [ 4 2 9 4 9 3 9 1 . 9 6 0 0 0 0 ] usb usb1 : configuration #1 chosen from 1 choice [ 4 2 9 4 9 3 9 1 . 9 9 0 0 0 0 ] hub 1 -0:1.0: USB hub found [ 4 2 9 4 9 3 9 2 . 0 0 0 0 0 0 ] hub 1 -0:1.0: 1 port detected [ 4 2 9 4 9 3 9 2 . 3 8 0 0 0 0 ] usb 1 -1: new high speed USB device using dw_otg and address 2
7
[ 4 2 9 4 9 3 9 2 . 6 0 0 0 0 0 ] usb 1 -1: New USB device found , idVendor =0424 , idProduct =2513 [ 4 2 9 4 9 3 9 2 . 6 0 0 0 0 0 ] usb 1 -1: New USB device strings : Mfr =0 , Product =0 , SerialNumber =0 [ 4 2 9 4 9 3 9 2 . 6 5 0 0 0 0 ] usb 1 -1: configuration #1 chosen from 1 choice [ 4 2 9 4 9 3 9 2 . 6 6 0 0 0 0 ] hub 1 -1:1.0: USB hub found [ 4 2 9 4 9 3 9 2 . 6 6 0 0 0 0 ] hub 1 -1:1.0: 3 ports detected [ 4 2 9 4 9 3 9 2 . 7 9 0 0 0 0 ] s t m m a c p h y _ d v r _ p r o b e : added phy for bus 0 [ 4 2 9 4 9 3 9 2 . 7 9 0 0 0 0 ] STMMAC : found Synopsys IP version 0 x33 [ 4 2 9 4 9 3 9 2 . 8 7 0 0 0 0 ] STMMAC MII Bus : probed [42949392.870000] 1. phy_id 20005 c90 drv NONE [ 4 2 9 4 9 3 9 3 . 0 0 0 0 0 0 ] usb 1 -1.1: new high speed USB device using dw_otg and address 3 [ 4 2 9 4 9 3 9 3 . 1 3 0 0 0 0 ] usb 1 -1.1: New USB device found , idVendor =148 f , idProduct =3070 [ 4 2 9 4 9 3 9 3 . 1 4 0 0 0 0 ] usb 1 -1.1: New USB device strings : Mfr =1 , Product =2 , SerialNumber =3 [ 4 2 9 4 9 3 9 3 . 1 5 0 0 0 0 ] usb 1 -1.1: Product : 802.11 n WLAN [ 4 2 9 4 9 3 9 3 . 1 6 0 0 0 0 ] usb 1 -1.1: Manufacturer : Ralink [ 4 2 9 4 9 3 9 3 . 1 6 0 0 0 0 ] usb 1 -1.1: SerialNumber : 1.0 [ 4 2 9 4 9 3 9 3 . 2 2 0 0 0 0 ] usb 1 -1.1: configuration #1 chosen from 1 choice [ 4 2 9 4 9 3 9 3 . 9 5 0 0 0 0 ] 00:04: a3 :3 d :21:54 [ 4 2 9 4 9 3 9 4 . 1 1 0 0 0 0 ] usbcore : registered new interface driver cdc_acm [ 4 2 9 4 9 3 9 4 . 1 4 0 0 0 0 ] cdc_acm : v0 .26: USB Abstract Control Model driver for USB modems and ISDN adapters [ 4 2 9 4 9 3 9 4 . 4 5 0 0 0 0 ] usbcore : registered new interface driver cdc_ether [ 4 2 9 4 9 3 9 4 . 6 4 0 0 0 0 ] usbcore : registered new interface driver rndis_host [ 4 2 9 4 9 3 9 4 . 8 8 0 0 0 0 ] usbcore : registered new interface driver usbserial [ 4 2 9 4 9 3 9 4 . 9 0 0 0 0 0 ] usbserial : USB Serial Driver core [ 4 2 9 4 9 3 9 5 . 0 2 0 0 0 0 ] USB Serial support registered for Sierra USB modem [ 4 2 9 4 9 3 9 5 . 0 5 0 0 0 0 ] usbcore : registered new interface driver sierra [ 4 2 9 4 9 3 9 5 . 0 5 0 0 0 0 ] sierra : v .1.7.40: USB Driver for Sierra Wireless USB modems [ 4 2 9 4 9 3 9 5 . 2 2 0 0 0 0 ] usbcore : registered new interface driver sierra_net [ 4 2 9 4 9 3 9 5 . 4 1 0 0 0 0 ] USB Serial support registered for GSM modem (1 - port ) [ 4 2 9 4 9 3 9 5 . 4 3 0 0 0 0 ] usbcore : registered new interface driver option [ 4 2 9 4 9 3 9 5 . 4 7 0 0 0 0 ] option : v0 .7.2: USB Driver for GSM modems [ 4 2 9 4 9 3 9 5 . 8 9 0 0 0 0 ] rtusb init ---> [ 4 2 9 4 9 3 9 5 . 9 1 0 0 0 0 ] ra0 ( usb ) : not using net_d evice_o ps yet [ 4 2 9 4 9 3 9 5 . 9 4 0 0 0 0 ] usbcore : registered new interface driver rt3070 [ 4 2 9 4 9 3 9 7 . 5 3 0 0 0 0 ] 0 x1300 = 00064300 [ 4 2 9 4 9 3 9 8 . 6 9 0 0 0 0 ] s s d 1 3 0 5 _ i 2 c _ t r a n s f e r : i2c_transfer requested 7 returned -6 [ 4 2 9 4 9 3 9 8 . 7 0 0 0 0 0 ] s s d 1 3 0 5 _ i 2 c _ t r a n s f e r : i2c_transfer requested 2 returned -6 Starting BOX [ 4 2 9 4 9 4 0 1 . 0 8 0 0 0 0 ] i2c - adapter i2c -5: sendbytes : NAK bailout from 0 x4c . [ 4 2 9 4 9 4 0 1 . 4 7 0 0 0 0 ] s s d 1 3 0 5 _ i 2 c _ t r a n s f e r : i2c_transfer requested 7 returned -6 [ 4 2 9 4 9 4 0 1 . 5 0 0 0 0 0 ] s s d 1 3 0 5 _ i 2 c _ t r a n s f e r : i2c_transfer requested 2 returned -6 Done booting . Please press Enter to activate this console . [ 4 2 9 4 9 4 0 3 . 5 0 0 0 0 0 ] s s d 1 3 0 5 _ i 2 c _ t r a n s f e r : i2c_transfer requested 7 returned -6 [ 4 2 9 4 9 4 0 3 . 5 2 0 0 0 0 ] s s d 1 3 0 5 _ i 2 c _ t r a n s f e r : i2c_transfer requested [ 4 2 9 4 9 4 0 5 . 6 8 0 0 0 0 ] 00:04: a3 :3 d :21:54 [ 4 2 9 4 9 4 1 3 . 8 6 0 0 0 0 ] 0 x1300 = 00064300 [ 4 2 9 4 9 4 4 1 . 0 6 0 0 0 0 ] s s d 1 3 0 5 _ i 2 c _ t r a n s f e r : i2c_transfer requested [ 4 2 9 4 9 4 4 1 . 0 8 0 0 0 0 ] s s d 1 3 0 5 _ i 2 c _ t r a n s f e r : i2c_transfer requested [ 4 2 9 4 9 4 4 3 . 3 8 0 0 0 0 ] s s d 1 3 0 5 _ i 2 c _ t r a n s f e r : i2c_transfer requested [ 4 2 9 4 9 4 4 3 . 3 9 0 0 0 0 ] s s d 1 3 0 5 _ i 2 c _ t r a n s f e r : i2c_transfer requested [ 4 2 9 4 9 4 5 3 . 9 2 0 0 0 0 ] s s d 1 3 0 5 _ i 2 c _ t r a n s f e r : i2c_transfer requested [ 4 2 9 4 9 4 5 3 . 9 4 0 0 0 0 ] s s d 1 3 0 5 _ i 2 c _ t r a n s f e r : i2c_transfer requested [ 4 2 9 4 9 4 5 6 . 4 1 0 0 0 0 ] s s d 1 3 0 5 _ i 2 c _ t r a n s f e r : i2c_transfer requested [ 4 2 9 4 9 4 5 6 . 4 3 0 0 0 0 ] s s d 1 3 0 5 _ i 2 c _ t r a n s f e r : i2c_transfer requested [ 4 2 9 4 9 4 6 2 . 7 5 0 0 0 0 ] s s d 1 3 0 5 _ i 2 c _ t r a n s f e r : i2c_transfer requested [ 4 2 9 4 9 4 6 2 . 7 7 0 0 0 0 ] s s d 1 3 0 5 _ i 2 c _ t r a n s f e r : i2c_transfer requested
8
2 returned -6
7 2 7 2 7 2 7 2 7 2
returned returned returned returned returned returned returned returned returned returned
-6 -6 -6 -6 -6 -6 -6 -6 -6 -6
6
Penutup
Tulisan ini hanya membahas tahap awal proses reverse engineering perangkat livestream broadcaster, dan pada saat tulisan ini dibuat, proses lanjutan masih sedang berjalan. Untuk proses lanjutan akan ditulis pada tutorial yang akan datang.
9