Удалить whitelist в bios lenovo
Есть задача, заменить Wi-Fi/Bluetooth адаптер на ноутбуке Lenovo. И платиновый вопрос, как обойти whitelist?
Решение задачи усугубляется отсутствующими навыками программирования и отсутствующим желанием повредить ноут. Речь про ноут Ideapad 100-14, готовый патченный биос не гуглится. Есть вариант обойти whitelist в два клика?
- Вопрос задан более трёх лет назад
- 2054 просмотра
А что мешает просто физически заменить адаптер и проверить? Взять у соседа аналогичный модуль и попробовать?
Может вашему BIOS все равно, какой у вас адаптер?
А если нет, то знайте: все ОС так или иначе сами разыскивают оборудование напрямую, без BIOS. И если вам не принципиален этот модуль в BIOS, то проблем не должно быть.
Ох лол. Думал ответить иронично, только такой категоричный человек уверенный что окружающие тупые/ленивые, иронии не поймёт.
Отвечу коротко. Пробовал, ноут не стартует с другим модулем, это ограничение прошито именно в BIOS, блочится до старта ОС.
Рекомендую быть чуть более любопытным, прежде чем пердеть в лужу.
Предпочел бы иронию вместо хамства. Может получилось бы интереснее.
Я не обладаю даром ясновидения и не могу знать, что Вы уже проделали со своим ноутбуком. А вы как-то не описали это, торопились видимо. Жизнь быстротечна, не правда ли? Пепси выветрится из-за лишнего килобайта? :-) Уровень Вашей компетенции я мог только предполагать, сейчас же в нем уверен. А сформулированная Вами проблема подразумевает в том числе и самые простые решения.
cap_nemo: Сорян, ничо личного. Твой коммент носит характер размышления вслух без понимания что происходит. Тут был как раз тот случай когда стоило пройти мимо и промолчать, вместо размышления о совсем уж очевидных вариантах решения проблемы. Увы, Леново (и не только) угорели по жестким ограничениям модернизации их продуктов. Конкретно с Wi-Fi, там дело связано со сложностями сертификации пар антенна+адаптер, у большинства новых моделей крайне мало вариантов сертифицированных пар и все они ограничиваются фирменными модулями.
Люди зачастую забывают решения, которые лежат на поверхности.
Тонкостей про Lenovo не знал, только догадывался. Не всем ведь нужно быть в курсе особенностей BIOS Lenovo?
Может внешний USB-wifi поможет решить проблему? Ничего менять не надо, в ОС настроил и все?
Есть вполне компактные модули, которые сильно из корпуса не выступают.
cap_nemo: портов USB всего два, и они таки заняты. Это весьма бюджетная модель:D Тут либо BIOS шить, либо отлавливать нужный адаптер в инете. Я бы предпочёл прошить BIOS, но адаптер не перестаю искать.
Написать этот топик меня подтолкнул свой тернистый опыт установки wifi платы 802.11n, которая отсутствовала в whitelist BIOS в моём ноутбуке. Мотивацию и уверенность придал пост Устанавливаем неподдерживаемую Wifi карту в HP Pavilion dv6-1319er
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 не удалась. Биос был собран на какой-то более старой основе.
Программированием биосов я никогда не занимался, да и с ассемблером я на ВЫ. Поиск утилиты для распаковки биоса Compaq не дал никаких результатов, и было решено ковырять биос по живому, с помощью WinHEX. Прошивка представляет из себя флешер HPQFlash.exe и CAB-архив с файлами прошивки.
У родной wifi платы ИД оборудования был такой
PCI\VEN_8086&DEV_4222&SUBSYS_135C103C
значения в прошивке хранятся в обратном порядке:
VEN_8086 -> 8680
DEV_4222 -> 2242
SUBSYS_135C103C -> 3C105C13
Поиск по двум первым значениям дал очень много результатов, а по 3C105C13 ни одного, были подозрения и мысли что прошивка ROM.bin ещё как-то запакована или зашифрована. Очередной мозговой штурм, гугление, и в течении нескольких часов была составлена карта адресов с искомыми значениями и место нахождения whitelist в прошивке локализовано. Дабы не использовать много места, программисты биоса решили сэкономить пару байт и полностью записали SUBSYS только для 3C105B13, а остальные значения судя по всему подставляли алгоритмом.
где зеленым выделены 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, с помощью которой я собрал первый изменённый БИОС архив.
Где хранится контрольная сумма БИОС-а, я не знал, никакой информации о структуре прошивки найти не удалось.
Подозрения падали на файл 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, чтоб найти таки контрольную сумму. Однако до этого дело не дошло. Очередной штурм гугла дал ссылку на стену плача, где пользователи просят пропатчить биос их ноутов. Дальнейшие изыскания я решил прекратить, ибо биться как муха в стекло, когда рядом открытая форточка посчитал не целесообразным.
Недавно понадобилось поставить новую wifi карточку стандарта ac в свой ноутбук Lenovo x230, в котором есть whitelist для wlan карточек. Ниже опишу свои изыскания по отключению whitelist'а.
Для начала нам надо слить дамп нашего биоса, сделать это можно с помощью утилиты FPT
fpt -d bios.rom -BIOS
Далее нам понадобится утилита PhoenixTool 2.52. Запускаем её, выбираем наш bios.rom и ждём, пока она его распакует, далее в поле Manufacturer выбираем Lenovo и жмём кнопку Advanced, там ставим галочки «Allow user to modify other modules» и «No SLIC»
Нажимаем «Done» и «Go», когда откроется окошко
ничего не нажимаем и идём в папку DUMP, куда распакован наш биос. Далее нужно найти файл отвечающий за whitelist. Ищем просто по тексту ошибки (в кодировке UTF-16), которая выводится на экран при вставленном модуле не из вайтлиста «1802: Unauthorized network card is plugged in»
Находим файл 79E0EDD7-9D1D-4F41-AE1A-F896169E5216_2207.ROM — это модуль биоса для вайтлиста.
Далее грузим его в IDA, смотрим код и ищем нашу строку «1802: Unauthorized network card is plugged in»
К этой строке идёт обращение в процедуре Sub_A0C. Т.е. процедура Sub_A0C предположительно занимается выводом ошибки на экран, смотрим откуда она вызывается (кликаем по имени процедуры и нажимем клавишу X на клавиатуре)
Видим что это процедура Sub_B20. Идём в эту процедуру и нажимаем пробел для перехода к схематичному представления кода.
Видим что процедура Sub_A0C вызывается из блока кода на метке Loc_BDD. Далее можно проследить условные переходы к этой метке и т.д. Но я решил, чтобы лучше понять код работы этой процедуры, пройти код от начала процедуры.
Итак, первое условное ветвление проверяет регистр edx на ноль
т.к. регистр edx выше в этой процедуре нигде не инициализируется, то понятно, что ему должно присваиваться значение перед вызовом процедуры Sub_B20. Это можно увидеть в коде
и
Что означает значение в регистре edx я не понял, поэтому пройдёмся по обоим веткам ветвления.
Пойдём для начала по правой веке, на Loc_C6E
В eax кладётся адрес данных qword_270, двойным щелчком по qword_270 переходим к просмотру этой записи, далее переходим на вкладку Hex View-A. Это и есть наш whitelist, он идёт с адреса 270h до 3FFh. С форматом тоже всё просто, каждая запись длинной в 16 байт (4 слова по 32bit) соответствует одному устройству: первое слово — какой-то флаг, принимающий значение 0, 1, 5 или 6, второе слово — это system id, третье — subsystem id, четвёртое — ещё один флаг, имеющий значение 0 или 1. Предполагаю что первый флаг определяет тип устройства: 0 — wifi карточка, 1 — модем, 5 — ?, 6 — конец списка.
Вернёмся к коду. Сравниваем eax с шестёркой, а шестёрка у нас — это конец вайтлиста, т.е. если вайтлист получается пустой, то идём сразу на Loc_BDD, которая у нас вызывает ошибку. Это условие нам не интересно, т.к. вайтлист у нас не пустой, и условие не выполнится. Далее кладём адрес qword_270 в регистр rdx, проверяем eax (первый флаг записи в вайтлисте) на ноль, если флаг отличный от нуля, переходим к ошибке. Это условие нас тоже не интересует. Это же условие является началом цикла обхода вайтлиста.
Дальше командами
Помещаем system id из вайтлиста в регистр ecx. Регистр r8 здесь выступает в роли инкремента в цикле, изначально он равен нулю.
Далее сравниваем ecx (system id из вайтлиста) и значение в памяти по адресу в регистре rdi.
Несложно догадаться, что по адресу в регистре rdi у нас лежит идентификатор нашей вставленной wifi карточки, а в начале процедуры в регистр rdi мы кладём r8, т.е. процедуре Sub_B20 в качестве параметра использется регистр r8, где должен лежать адрес ячейки памяли с идентификатором нашей карточки.
Если идентификатор не совпал, то идём на Loc_CBA, там мы увеличиваем инкрементный регистр r8 на 10h (для этого в регистре r13w у нас заранее должна лежать единица)
и проверяем, не в конце ли мы вайтлиста
Если в конце, то выходим из цикла и выдаём ошибку, если не в конце, то идём в начало цикла.
Понятно, что для обхода вайлиста, нам надо убрать условный переход при сравнении system id, т.е. заменить jnz short loc_CBA на jmp $+2 .
Далее, если system id совпал, идёт аналогичный код для сравнения subsystem id
Так, с правой веткой разобрались, теперь пройдёмся по левой ветке.Там у нас код работы с вайтлистом начинается с метки Loc_C18. Аналогично проверяется, не пустой ли whitelist:
Далее сравнивается eax (первый флаг) и r13d (что за параметр лежит в r13d я так и не разобрался, в начале процедуры него кладётся значение по адресу [rbx+1]), далее в зависимости от выполнения этого условия, попадаем сразу на код проверки system id, либо выполняем интересное сравнение
Проверяем первый флаг в записи вайтлиста на 5, если условие выполняется, то пропускаем эту запись вайтлиста (т.е. игнорируем wifi карточку) и идём далее по циклу проверки.
Чтобы понять что же это за такой интересный флаг, надо понимать, что передаётся в процедуру Sub_B20. Если помните, в правой ветке кода, если этот флаг был отличный от нуля, то выдавалась ошибка о неподдерживаемой карте. Т.е. чтобы карточка с флагом 5 загрузилась, должны выполниться следующие условия вызова процедуры Sub_B20: регистр edx должен быть отличным от нуля, а регистр r13d не должен быть равен пяти ( cmp eax, r13d , а в eax у нас лежит наш флаг равный пяти). Можно лишь догадаться, что для запуска карточки с таким флагом, требуется ещё какое-то условие, кроме нахождения её в вайтлисте. Дальше выполнять анализ для меня было довольно сложно, поэтому, что же это за условие, узнать не удалось.
Далее по коду, мы аналогично правой ветке, проверяем в цикле system id
Здесь нам надо также заменить условный переход jz loc_DF3 на безусловный jmp loc_DF3 .
Что интересно, далее в левой ветке нет проверки subsystem id, т.е. достаточно совпадения system id. Из вышеизложенного можно предположить, что правая ветка — проверка wifi карточек, а левая проверка модемов. А в регистре edx при вызове функции содержится тип устройства: 0 — wifi, 1 — модем. Но тут тоже непонятка, т.к. каточка 0087:8086 с флагом 5 — это wifi+wimax, а не модем, да и в edx может быть больше единицы, т.к. из edx вычитается r13d, а потом сравнивается с четвёркой:
Собственно на этом анализ можно заканчивать. Нужные места для патча мы нашли.
Переводим команды в опкоды и делаем замены в hex редакторе, в итоге получаем такой патч:
Сохраняем пропатченый файл 79E0EDD7-9D1D-4F41-AE1A-F896169E5216_2207.ROM и нажимеам в окне PhoenixTool кнопку Ok.
PhoenixTool соберёт новый биос с именем bios_SLIC.rom.
Осталось дело за малым, необходимо прошить новый биос. В свежих ноутбуках Lenovo, включая мой x230, изменённый bios нельзя прошить программно, поэтому шьём его программатором. Фото процесса прошивки через программатор к сожалению не делал. Биос находится в микросхеме MX25L3206E рядом с разъёмом ExpressCard. Эта микросхема представляет из себя обычный SPI EEPROM 25ой серии, простой программатор для которой стоит 300р.
BIOS
В этом посте мы обсудим, что такое белый список BIOS , как его использовать и как его удалить. Короче говоря, белый список BIOS – это, по сути, список оборудования, одобренного для использования на этом компьютере – если вы попытаетесь использовать что-то еще, компьютер его не обнаружит. OEM-производители используют белый список BIOS для аппаратного обеспечения, чтобы они могли запретить пользователям покупать любые другие бренды.
BIOS расшифровывается как Basic Input Output System. Это часть компьютерной системы, которая проверяет компьютер перед загрузкой операционной системы. Некоторые из важных функций BIOS:
Что такое белый список BIOS
Белый список – это, как правило, список программ, программного обеспечения и системных файлов, которые разрешены на компьютере. В случае брандмауэра вы, возможно, уже создали список программ, которые могут получить доступ к Интернету. Это белый список брандмауэра. Белый список BIOS тоже работает по аналогичным линиям.
Если вы добавляете новое оборудование на свой компьютер или заменяете старое, поврежденное оборудование, компьютер сначала проверит белый список BIOS, чтобы узнать, разрешено ли это конкретное оборудование (марка, марка или модель).
Таким образом, белый список BIOS представляет собой список аппаратного обеспечения, одобренного для использования на этом компьютере. Если вы попытаетесь использовать что-либо еще, компьютер не обнаружит это. Вы можете спросить, зачем нужен белый список BIOS. В следующих параграфах рассказывается об использовании белого списка BIOS.
Какой смысл использовать белый список BIOS
Предполагаемое использование белого списка BIOS заключается в том, чтобы конечные пользователи не устанавливали какое-либо оборудование, которое может вызвать конфликты с другим оборудованием на компьютере. Белый список BIOS означает список всех устройств, которые можно использовать на компьютере, не вступая в конфликт с существующим оборудованием.
Но это так вчера. Реальная цель белого списка BIOS, на мой взгляд, состоит в блокировке аппаратных частей, купленных у любой другой модели и марки. Например, если вы покупаете компьютер марки XYZ и хотите добавить к нему сетевую карту Wi-Fi, вам придется покупать только те из них, которые внесены в белый список в BIOS. Это в значительной степени означает, что бренды ограничивают ваши возможности, так что вы придерживаетесь той же марки, что и у вашего компьютера.
Почему пользователям не нравится белый список BIOS
Как уже говорилось выше, не все производители компьютеров согласны с тем, что на их компьютерах используется оборудование любой другой марки. Следовательно, они вводят ограничения в названии белого списка BIOS. Даже если у вас есть совместимое оборудование, такое как сетевая карта, вы не сможете использовать его, если оно не указано в белом списке BIOS. Это основная причина, по которой людям не нужен белый список BIOS.
Если в BIOS нет белого списка или он отключен, пользователи могут использовать любое аппаратное обеспечение по своему усмотрению – с исходным компьютером. Чтобы иметь возможность установить любое оборудование на фирменный компьютер, необходимо удалить белый список BIOS.
Как удалить белый список BIOS
Поскольку теперь многие бренды, включая HP, утверждают, что удалили белый список BIOS, вы сможете обойти его путем обновления BIOS. Обратите внимание, что вам необходимо загрузить программное обеспечение для обновления BIOS с веб-сайтов поставщиков компьютеров, таких как HP, Lenovo и т. Д., Например Lenovo System Uptade Tool, HP Support Assistant и т. Д.
Пользователи Леново при замене wifi модуля могут столкнуться с проблемой несовместимости. Можно перебрать множество wifi адаптеров, но результат один и тот же, либо не определяет wifi в Windows, либо ошибка при включении «1802: Unauthorized network card is plugged in — Power off and remove the miniPCI network card. System halt.»
Дело в том, что производитель ноутбуков Lenovo прописывает в биос каждой конкретной модели свой Whitelist wifi.
Whitelist — в переводе на русский означает белый список. В этот список производитель заносит поддерживаемые модели wi-fi модулей, тем самым ограничивая использование других сетевых устройств. Чтобы решить проблему, нужно приобрести адаптер, указанный Lenovo Whitelist wifi.
Введите модель ноутбука в строку поиска. Покажу на примере Lenovo G570.
В разделе «Информация о продукте», кликните по ссылке «Руководство по оборудованию».
Как видно из мануала, руководство создано для Lenovo G470/G475/G570/G575.
В содержании в категории «Parts List» находим подкатегорию «Overall», переходим на указанную страницу.
Здесь вы увидите ноутбук в разобранном виде, где каждая комплектующая пронумерована. Как видно из скриншота, сетевой модуль указан под цифрой 12.
Пролистываем ниже до цифры 12 в таблице и видим список поддерживаемых моделей pci card сетевых устройств, в нашем примере их 9.
Установив любую модель Wi-Fi модуля из таблицы, ноутбук запустится без проблем и будет функционировать в полноценном режиме.
Описанные методы можно применить на любые модели ноутбуков Lenovo.
Лучшее "Спасибо" - ваш репост
Вячеслав. Специалист по ремонту ноутбуков и компьютеров, настройке сетей и оргтехники, установке программного обеспечения и его наладке. Опыт работы в профессиональной сфере 9 лет.
Вам также может понравиться
На что стоит обратить внимание при выборе ноутбука
Как запретить мыши выводить ноутбук из спящего режима
Ноутбук не включается кнопкой включения
Добавить комментарий Отменить ответ
Ваш адрес email не будет опубликован. Обязательные поля помечены *
Читайте также: