Pull to refresh

Отключаем белый список Wifi в ноутбуках HP

Reading time 4 min
Views 127K
Написать этот топик меня подтолкнул свой тернистый опыт установки wifi платы 802.11n, которая отсутствовала в whitelist BIOS в моём ноутбуке. Мотивацию и уверенность придал пост Устанавливаем неподдерживаемую Wifi карту в HP Pavilion dv6-1319er

Когда первый раз поставил другую wifi плату и увидел это сообщение:
104-Unsupported wireless network device detected.
System halted. Remove device and restart.

первая мысль была о том что это какая-то аппаратная не совместимость устройств и что вопрос замены платы полностью безнадёжен. Но поиск в гугле дал понять что не всё ещё потеряно. Вариантов решения интернеты предлагали не много:

1. Прошить BIOS с правильным патчем, который отключает полностью whitelist или добавляет\заменяет в whitelist VEN, DEV, SUBSYS на необходимую плату.
2. Перепрошить саму wifi плату чтоб заменить в ней VEN, DEV, SUBSYS на те которые есть в whitelist, по которым и проверяется возможность установки той или иной платы.

Процесс добывания wifi-n платы был грязен и криминален, потому описывать его я не буду, спасибо Dr.Marteens за содействие. Родная плата в ноутбуке стояла Intel WM3945ABG. На замену ей была добыта Intel Wifi Link 5100 AGN. Действовать начал по шагам описанным в посте выше.

Когда я только начал заниматься этим вопросом 3 месяца назад, поиски в интернет дали понять что перепрошить wifi-карту от intel не представляется возможным, а готового пропатченого БИОС-а как-то совсем не находилось… возможно плохо искал.

Распаковка биоса с помощью Phoenix Tool не удалась. Биос был собран на какой-то более старой основе.
image

Программированием биосов я никогда не занимался, да и с ассемблером я на ВЫ. Поиск утилиты для распаковки биоса Compaq не дал никаких результатов, и было решено ковырять биос по живому, с помощью WinHEX. Прошивка представляет из себя флешер HPQFlash.exe и CAB-архив с файлами прошивки.

image

image

У родной wifi платы ИД оборудования был такой
PCI\VEN_8086&DEV_4222&SUBSYS_135C103C

значения в прошивке хранятся в обратном порядке:
VEN_8086 -> 8680
DEV_4222 -> 2242
SUBSYS_135C103C -> 3C105C13

Поиск по двум первым значениям дал очень много результатов, а по 3C105C13 ни одного, были подозрения и мысли что прошивка ROM.bin ещё как-то запакована или зашифрована. Очередной мозговой штурм, гугление, и в течении нескольких часов была составлена карта адресов с искомыми значениями и место нахождения whitelist в прошивке локализовано. Дабы не использовать много места, программисты биоса решили сэкономить пару байт и полностью записали SUBSYS только для 3C105B13, а остальные значения судя по всему подставляли алгоритмом.

image

где зеленым выделены Intel платы, синим Broadcom. Отдельными значениями идут модификации плат 5C, 5D, 5E, 5F. И аналогично записан Broadcom.

открываем INF-файл драйверов Intel и находим те же VEN, DEV, SUBSYS

; HP_3945_ABG
%NIC_MPCIEX_3945ABG% = Install_MPCIEX_HP_3945_ABG_VISTA64_MOW1 , PCI\VEN_8086&DEV_4222&SUBSYS_135B103C ; MOW1
%NIC_MPCIEX_3945ABG% = Install_MPCIEX_HP_3945_ABG_VISTA64_MOW2 , PCI\VEN_8086&DEV_4222&SUBSYS_135C103C ; MOW2
%NIC_MPCIEX_3945ABG% = Install_MPCIEX_HP_3945_ABG_VISTA64_RoW , PCI\VEN_8086&DEV_4222&SUBSYS_135D103C ; RoW
%NIC_MPCIEX_3945ABG% = Install_MPCIEX_HP_3945_ABG_VISTA64_JPN , PCI\VEN_8086&DEV_4222&SUBSYS_135E103C ; JPN
%NIC_MPCIEX_3945ABG% = Install_MPCIEX_HP_3945_ABG_VISTA64_KRA , PCI\VEN_8086&DEV_4222&SUBSYS_135F103C ; KRA


И кажется что уже всё совсем просто, заменяем одни значения на другие, всё сохраняем и перепрошиваем BIOS. Однако модификаций Intel 3945 всего 5 разных, а модификаций Intel 5100, судя по INF-файлу драйверов аж 8. Хотя по идее достаточно прописать ИД только одной платы. Естественно чтоб узнать VEN, DEV, SUBSYS, её надо вставить в другой ноутбук, в котором нет whitelist. Эту затею я решил отложить, и проверить один важный момент: а проверяет ли флешер CRC прошивки? Ведь утилита Phoenix Tool сама всё собирает обратно и пересчитывает\перезаписывает CRC, а в моём случае это пришлось бы делать руками.

Изменив пару байт в ROM.bin, появился ещё один вопрос: а как всё это собрать обратно в CAB-архив? Ведь стандартный набор архиваторов работает только со своими форматами и плюс 3 — 4 сторонних, а CAB-формат был разработан в Microsoft, и никем особо не поддерживается для запаковки. Через некоторое время была найдена программа 2007 года Cab Maker 2.0.0.120, с помощью которой я собрал первый изменённый БИОС архив.

image

Где хранится контрольная сумма БИОС-а, я не знал, никакой информации о структуре прошивки найти не удалось.

Подозрения падали на файл ROM.sig, однако проверить это было нечем. Попытки найти хешь файла хешированием ROM.bin разными алгоритмами (CRC32, MD5, SHA1 — SHA512 и ещё несколькими), как в нём самом так и ROM.sig ничем не увенчались, что не удивительно.

Идея как действовать дальше родилась мгновенно. Если флешер проверят CRC, значит он его где-то берёт или высчитывает, и сравнивает с другим значением. Значит надо дизассамблировать HPQFlash.exe и в режиме Debug по шагам найти алгоритм или то место где проходит эта проверка контрольной суммы.

Ещё была идея в флешере отключить проверку CRC, однако это было чревато убитым железом вообще, в случае если БИОС проверяет свой CRC при запуске ноутбука.

Был и другой вариант, как поступили немцы на одном сайте. Они также не нашли где хранится контрольная сумма, но где-то узнали или подобрали алгоритм её подсчёта, и решили в оставшиеся байты где хранится информация о Broadcom-овской плате подсунуть правильно подсчитанные значения, чтоб CRC файла Rom.bin в итоге не изменился. И судя по всему у них это получилось.

Как я уже писал выше, с ASM у меня всё очень плохо и максимум до чего я смог докопаться — это в дизассаемблере IDA Pro Advanced, в режиме отладки найти место где проходит цикл проверки контрольной суммы, но значений CRC найти не смог. Тут я обратился за помощью к другу, который долгое время писал на ASM, чтоб найти таки контрольную сумму. Однако до этого дело не дошло. Очередной штурм гугла дал ссылку на стену плача, где пользователи просят пропатчить биос их ноутов. Дальнейшие изыскания я решил прекратить, ибо биться как муха в стекло, когда рядом открытая форточка посчитал не целесообразным.

Cписок уже пропатченных БИОСов для HP с отключенным whitelist
Tags:
Hubs:
+19
Comments 9
Comments Comments 9

Articles