Yvision.kz
kk
Разное
Разное
399 773 постов42 подписчика
Всяко-разно
0
01:20, 03 января 2012

Получаем root-доступ к Kindle 4

Все выполненное на данном этапе где-то уже описано. Просто некоторые подробности. Начало здесь.

Исходные данные: Kindle 4 (не сенсорный экран) + Windows 7 Профессиональная (64 bit).

Первым делом подсоединяем устройство к USB и переименовываем файл DONT_HALT_ON_REPAIR в ENABLE_DIAGS в корне.

Перезагружаем устройство в диагностический режим.

Включаем USBNetworking: "Misc individual diagnostics -> Utilities -> Enable USBnet".

Драйвер для USBNetworking в Windows 7 уже есть. Нужно только немного обмануть Windows.

Для этого "подсовываем" файл linux.inf с таким содержимым:

 
linux.inf
  1. ; MS-Windows driver config matching some basic modes of the
  2. ; Linux-USB Ethernet/RNDIS gadget firmware:
  3. ;
  4. ; - RNDIS plus CDC Ethernet ... this may be familiar as a DOCSIS
  5. ; cable modem profile, and supports most non-Microsoft USB hosts
  6. ;
  7. ; - RNDIS plus CDC Subset ... used by hardware that incapable of
  8. ; full CDC Ethernet support.
  9. ;
  10. ; Microsoft only directly supports RNDIS drivers, and bundled them into XP.
  11. ; The Microsoft "Remote NDIS USB Driver Kit" is currently found at:
  12. ; http://www.microsoft.com/whdc/hwdev/resources/HWservices/rndis.mspx
  13. [Version]
  14. Signature = "$CHICAGO$"
  15. Class = Net
  16. ClassGUID = {4d36e972-e325-11ce-bfc1-08002be10318}
  17. Provider = %Linux%
  18. Compatible = 1
  19. MillenniumPreferred = .ME
  20. DriverVer = 03/30/2004,0.0.0.0
  21. ; catalog file would be used by WHQL
  22. ;CatalogFile = Linux.cat
  23. [Manufacturer]
  24. %Linux% = LinuxDevices,NTamd64
  25. [LinuxDevices]
  26. ; NetChip IDs, used by both firmware modes
  27. %LinuxDevice% = RNDIS, USB\VID_0525&PID_a4a2
  28. [LinuxDevices.NTamd64]
  29. %LinuxDevice% = RNDIS.NT.5.1, USB\VID_0525&PID_a4a2
  30. [ControlFlags]
  31. ExcludeFromSelect=*
  32. ; Windows 98, Windows 98 Second Edition specific sections --------
  33. [RNDIS]
  34. DeviceID = usb8023
  35. MaxInstance = 512
  36. DriverVer = 03/30/2004,0.0.0.0
  37. AddReg = RNDIS_AddReg_98, RNDIS_AddReg_Common
  38. [RNDIS_AddReg_98]
  39. HKR, , DevLoader, 0, *ndis
  40. HKR, , DeviceVxDs, 0, usb8023.sys
  41. HKR, NDIS, LogDriverName, 0, "usb8023"
  42. HKR, NDIS, MajorNdisVersion, 1, 5
  43. HKR, NDIS, MinorNdisVersion, 1, 0
  44. HKR, Ndi\Interfaces, DefUpper, 0, "ndis3,ndis4,ndis5"
  45. HKR, Ndi\Interfaces, DefLower, 0, "ethernet"
  46. HKR, Ndi\Interfaces, UpperRange, 0, "ndis3,ndis4,ndis5"
  47. HKR, Ndi\Interfaces, LowerRange, 0, "ethernet"
  48. HKR, Ndi\Install, ndis3, 0, "RNDIS_Install_98"
  49. HKR, Ndi\Install, ndis4, 0, "RNDIS_Install_98"
  50. HKR, Ndi\Install, ndis5, 0, "RNDIS_Install_98"
  51. HKR, Ndi, DeviceId, 0, "USB\VID_0525&PID_a4a2"
  52. [RNDIS_Install_98]
  53. CopyFiles=RNDIS_CopyFiles_98
  54. [RNDIS_CopyFiles_98]
  55. usb8023.sys, usb8023w.sys, , 0
  56. rndismp.sys, rndismpw.sys, , 0
  57. ; Windows Millennium Edition specific sections --------------------
  58. [RNDIS.ME]
  59. DeviceID = usb8023
  60. MaxInstance = 512
  61. DriverVer = 03/30/2004,0.0.0.0
  62. AddReg = RNDIS_AddReg_ME, RNDIS_AddReg_Common
  63. Characteristics = 0x84 ; NCF_PHYSICAL + NCF_HAS_UI
  64. BusType = 15
  65. [RNDIS_AddReg_ME]
  66. HKR, , DevLoader, 0, *ndis
  67. HKR, , DeviceVxDs, 0, usb8023.sys
  68. HKR, NDIS, LogDriverName, 0, "usb8023"
  69. HKR, NDIS, MajorNdisVersion, 1, 5
  70. HKR, NDIS, MinorNdisVersion, 1, 0
  71. HKR, Ndi\Interfaces, DefUpper, 0, "ndis3,ndis4,ndis5"
  72. HKR, Ndi\Interfaces, DefLower, 0, "ethernet"
  73. HKR, Ndi\Interfaces, UpperRange, 0, "ndis3,ndis4,ndis5"
  74. HKR, Ndi\Interfaces, LowerRange, 0, "ethernet"
  75. HKR, Ndi\Install, ndis3, 0, "RNDIS_Install_ME"
  76. HKR, Ndi\Install, ndis4, 0, "RNDIS_Install_ME"
  77. HKR, Ndi\Install, ndis5, 0, "RNDIS_Install_ME"
  78. HKR, Ndi, DeviceId, 0, "USB\VID_0525&PID_a4a2"
  79. [RNDIS_Install_ME]
  80. CopyFiles=RNDIS_CopyFiles_ME
  81. [RNDIS_CopyFiles_ME]
  82. usb8023.sys, usb8023m.sys, , 0
  83. rndismp.sys, rndismpm.sys, , 0
  84. ; Windows 2000 specific sections ---------------------------------
  85. [RNDIS.NT]
  86. Characteristics = 0x84 ; NCF_PHYSICAL + NCF_HAS_UI
  87. BusType = 15
  88. DriverVer = 03/30/2004,0.0.0.0
  89. AddReg = RNDIS_AddReg_NT, RNDIS_AddReg_Common
  90. CopyFiles = RNDIS_CopyFiles_NT
  91. [RNDIS.NT.Services]
  92. AddService = USB_RNDIS, 2, RNDIS_ServiceInst_NT, RNDIS_EventLog
  93. [RNDIS_CopyFiles_NT]
  94. ; no rename of files on Windows 2000, use the 'k' names as is
  95. usb8023k.sys, , , 0
  96. rndismpk.sys, , , 0
  97. [RNDIS_ServiceInst_NT]
  98. DisplayName = %ServiceDisplayName%
  99. ServiceType = 1
  100. StartType = 3
  101. ErrorControl = 1
  102. ServiceBinary = %12%\usb8023k.sys
  103. LoadOrderGroup = NDIS
  104. AddReg = RNDIS_WMI_AddReg_NT
  105. [RNDIS_WMI_AddReg_NT]
  106. HKR, , MofImagePath, 0x00020000, "System32\drivers\rndismpk.sys"
  107. ; Windows XP specific sections -----------------------------------
  108. [RNDIS.NT.5.1]
  109. Characteristics = 0x84 ; NCF_PHYSICAL + NCF_HAS_UI
  110. BusType = 15
  111. DriverVer = 03/30/2004,0.0.0.0
  112. AddReg = RNDIS_AddReg_NT, RNDIS_AddReg_Common
  113. ; no copyfiles - the files are already in place
  114. [RNDIS.NT.5.1.Services]
  115. AddService = USB_RNDIS, 2, RNDIS_ServiceInst_51, RNDIS_EventLog
  116. [RNDIS_ServiceInst_51]
  117. DisplayName = %ServiceDisplayName%
  118. ServiceType = 1
  119. StartType = 3
  120. ErrorControl = 1
  121. ServiceBinary = %12%\usb8023.sys
  122. LoadOrderGroup = NDIS
  123. AddReg = RNDIS_WMI_AddReg_51
  124. [RNDIS_WMI_AddReg_51]
  125. HKR, , MofImagePath, 0x00020000, "System32\drivers\rndismp.sys"
  126. ; Windows 2000 and Windows XP common sections --------------------
  127. [RNDIS_AddReg_NT]
  128. HKR, Ndi, Service, 0, "USB_RNDIS"
  129. HKR, Ndi\Interfaces, UpperRange, 0, "ndis5"
  130. HKR, Ndi\Interfaces, LowerRange, 0, "ethernet"
  131. [RNDIS_EventLog]
  132. AddReg = RNDIS_EventLog_AddReg
  133. [RNDIS_EventLog_AddReg]
  134. HKR, , EventMessageFile, 0x00020000, "%%SystemRoot%%\System32\netevent.dll"
  135. HKR, , TypesSupported, 0x00010001, 7
  136. ; Common Sections -------------------------------------------------
  137. [RNDIS_AddReg_Common]
  138. HKR, NDI\params\NetworkAddress, ParamDesc, 0, %NetworkAddress%
  139. HKR, NDI\params\NetworkAddress, type, 0, "edit"
  140. HKR, NDI\params\NetworkAddress, LimitText, 0, "12"
  141. HKR, NDI\params\NetworkAddress, UpperCase, 0, "1"
  142. HKR, NDI\params\NetworkAddress, default, 0, " "
  143. HKR, NDI\params\NetworkAddress, optional, 0, "1"
  144. [SourceDisksNames]
  145. 1=%SourceDisk%,,1
  146. [SourceDisksFiles]
  147. usb8023m.sys=1
  148. rndismpm.sys=1
  149. usb8023w.sys=1
  150. rndismpw.sys=1
  151. usb8023k.sys=1
  152. rndismpk.sys=1
  153. [DestinationDirs]
  154. RNDIS_CopyFiles_98 = 10, system32/drivers
  155. RNDIS_CopyFiles_ME = 10, system32/drivers
  156. RNDIS_CopyFiles_NT = 12
  157. [Strings]
  158. ServiceDisplayName = "USB Remote NDIS Network Device Driver"
  159. NetworkAddress = "Network Address"
  160. Linux = "Linux Developer Community"
  161. LinuxDevice = "Linux USB Ethernet/RNDIS Gadget"
  162. SourceDisk = "Ethernet/RNDIS Gadget Driver Install Disk"

Этот файл специфичен именно для Windows 7 (64 bit). Тут ключевое слово - это NTamd64.

Настраиваем IP-адрес для полученного соединения следующим образом (подробности опускаем):

Blog post image

Следующий этап - это подбор пароля. Для этого нам потребуется серийный номер Kindle (ищется в настройках) и лучше всего доступ к Linux с Python. Это просто оказалось самым простым лично для меня. Другие варианты: установить Python для Windows, переписать для другого языка и т.п.

Под Linux все просто:

Вычисляем пароль
  1. victor@host:~$ python
  2. Python 2.5.2 (r252:60911, Oct 5 2008, 19:29:17)
  3. [GCC 4.3.2] on linux2
  4. Type "help", "copyright", "credits" or "license" for more information.
  5. >>> import hashlib
  6. >>> print("fiona%s"%hashlib.md5("B00E150114043GLR\n".encode('utf-8')).hexdigest()[7:11])
  7. fiona8721
  8. >>>

Итак пароль для root-а fiona8721.

Далее просто соединяемся любым SSH-клиентом. Я использовал PuTTY:

Blog post image

Для загрузки файлов на устройство из под Windows удобно использовать Far c плагином WinSCP:

Blog post image

Обратите внимание, что выбран SCP (по-умолчанию стоит SFTP) иначе работать не будет.

Blog post image

Все. Дело сделано.

Далее в планах установка Cool Reader 3. Версия для Kindle имеется. Проблема в том, что запуск программы производится с помощью launchpad, который на Kindle 4 без клавиатуры использовать мягко говоря проблематично.

Думаю написать что-нибудь для запуска. Хорошо бы прямо из меню Kindle. Идеи есть.

Продолжение следует...

0
1574
0