ЕИМ  СВЯТ - Списанието на Юнаците...
  БРОЙ - 10 (август 2001)
Брой 10 (август 2001) Начална страница

Как се хаква CMOS-а на BIOS-а
Автор: Янислав Картелов (Arhont) - arho.hit.bg



       CC CC   MM    MM   OO OO    SS SS
     CC    CC  MMM  MMM  OO   OO  SS
     CC        MM MM MM  OO   OO   SS SS
      CC   CC  MM    MM  OO   OO       SS
       CC CC   MM    MM   OO OO   SS SS

Предисловие:
 В настоящият файл се предполага да знаете поне малко как
работят някои неща в компютрите .... ама всъщност и да не знаете, поне имате 
интерес да четете това, значи за мен пак е ok!
  И така, моята цел не е да правя от вас хакери нито да ви казвам какво  
трябва да/не прави един хакер или пък изобщо да се занимавам с тази  
дискусионна тема ... ами то всъщност изобщо нямам цел насочена към вас ами
просто исках да напишаn едно HOWTO и се сетих първо за това. Значи използвам
 думата HACK единствено за да е на всеки, и последния lamer, ясно за какво 
точно ще става дума в HOWTOто, а не с цел да пиша туториал за т'ва как да се 
правим на малки хакерчета и т.н. Като 
излезем от общия стил на монолог :

 В ТОЗИ ФАЙЛ СЕ ДАВА ОБЩА ИНФОРМАЦИЯ ЗА ТОВА:
- КАКВО УМНИТЕ ЧИЧКОВЦИ СА НАРЕКЛИ СМОS ПАМЕТ В КОМПЮТЪРА
- КЪДЕ СЕ НАМИРА, КАК ИЗГЛЕЖДА, ЗА КАКВО СЛУЖИ
- ЯДЕ ЛИ СЕ ?!
- КАКВО, КАК СЕ ПРАВИ С НЕЯ
НЯКОИ ТРИКОВЕ И НОМЕРА ОТ ОБЩ ХАРАКТЕР :)

   - СТРАНИЧНИ ПРИЛОЖЕНИЯ
   - ЗАКЛЮЧЕНИЕ


 Много е достатъчно да прочетете
само последния артикъл и да си оправите сметките с CMOS-a но аз искам да 
използвам изпипания метод да ви flood-на с всевъзможните безполезици и 
подробности преди това за да съм сигурен, че знаете много повече от това 
което ще ви трябва ... ама няма как!
  CMOS (Complementary Metal Oxide Semiconductor) дава инфо как е направен 
чипа а именно, това е една Свръх Голяма Интегрална Схема (СГИС - :))  метал, 
окис, полупроводник и общо взето означава че такъв е строежа на транзистора. 
MOS транзистори...неща с вграден или индуциран P или N канал като 
комплементарна двойка означава че имаме два транзистора с
абсолютно еднакви параметри но единия е N a другия е P ... ако знаете какво
е транзистор вероятно имате идея че освен MOS има и БИполярни транзистори
и на всичкото отгоре те се смятат за по-основни ... но хубавото на MOS е това 
че се управляват с напрежение и всички цифрови схеми предпочитат да са изградени от тях :)
Ами от горното става ясно нищо, освен това че си има
работа с някакъв хардуер , обаче лошото е че за абсолютно всички чипове в
 компютъра (аз май забравих да поясня че чип е едно черно с много крака и
седи върху едно зелено с много други неща върху него и с много дупки 
и тези две неща стоят в кутията (бяла) на компютъра) :)) та за тях може да се каже 
че са CMOS.
 BIOS Това е базова входно изходна система .... в миналото целта и е била да 
се занимава точно с входните и изходните устройства на компютъра при това не 
на целия компютър ами на процесора.
 Сега пак се занимава с това и освен с него и с някои други неща. За 
програмите може би е ясно че те се изпълняват от процесора, и представляват 
определен брой числа (байтове), и всеки байт има позиция например последния е 
последен :) . По отношение на процесора всичко останало е външно дори RAM-a, 
а пък на всичкото отгоре той е съвсем празен в началото като се пусне 
компютъра и процесора съвсем не знае откъде
да вземе някаква програма за да я сложи в паметта и да вземе да я изпълнява 
оттам (за к'во ли му е да си прави тоя труд?!),
 BIOSа представлява една програма записана в памет в която за разлика от RAM-a 
винаги има едно и също нещо, което си седи дори като се изключи тока (и 
се нарича ROM)... това е чудесно за целта на началното зареждане, като се 
включи компютъра, на процесора се казва и той насилствеон озапочва да 
изпълнява BIOSa
а той пък има за цел да укаже на процесора как ще става общуването нататък и 
да провери всички устроиства (паметта, диска, вентилатора на захранването :) и
 преди да го е направил процесора изобщо не може да ги използва (особено 
вентилатора).
 Една програма обикновено има някакъв начинс, поред който този който я 
използва да може да и укаже как точно да работи. При BIOSа това е небезизвестното меню с настройки, в което се влиза веднага щом се пусне 
компютъра като се натисне DEL (или ESC или някой още по-измислен клавиш). В 
света производителите на такива неща са точно 4 и затова разнообразието от 
начини не е чак толкова голямо. Всяко едно от нещата което менюто предлага  
( е, ами Menu се казва сега или поне Setup ) за избор си има някаква стойност 
възможно е тя да е точно определена от няколко (enabled/disabled , 
yes/no,AC/CA/DCA).  default се нарича тази стойност, която е активна, когато 
нещо още не е било използвано (напр. едно момиче по default e.... знаете). 
 След като попадне това нещо можете да му промените стойността ако искате, в 
BIOS-a за разлика от момичетата има начин да се върнете към dafault винаги 
когато си искате или да променяте стойността колкото си искате без да се 
интересувате коя точно от няколкото е била default. Дааа, обаче в ROM-a няма 
начин да се правят промени, обикновените програми за тази цел използват диска 
и там записват един конфигурационен файл който отначало има default за всяка
стойност (или може и въобще да го няма), така че нещото да работи обаче, ако
направите промяна тя се записва и следващия път като изпълните програмта
вече се използва новата стойност вместо default. Хубаво,
но за BIOSа да се използва диска за записване на конфигурацията не е добра идея,
защото както казах процесора не може да използва нищо преди да е изпълнил BIOSа,
а пък BIOS-a няма как да използва нещо което не може да се използва преди поне
да си е прочел настройките и да е видял от там как точно се използва същото нещо
и да каже на процесора това (технически погледнато има начин) ...
добре дори и да се ползва този начин пак не е добра идея защото тези
настройки са характерни точно за ТОЗИ компютър и за никой друг и ако
някои вземе и премести диска ще има неочаквани последици.... Обаче:

1: какви видове памет има
2: къде се намират
3: може да се чете от тях
4: може да се пише в тях
5: може да се местят от този компютър в друг
6: това което е записано остава като се спре захранването (тока)
7: обем: СГ: свръхголям, Г: голям, С: среден М: малък, ММ:много малък
     

+----------+---------+---+---+--------+---+-----+
|    1     |    2    |3  | 4 |    5   | 6 |  7  |
+----------+---------+---+---+--------+---+-----+
| регистри | процесор| Y | Y |    N   | N |  MМ |
| кеш      | чип     | Y | Y | трудно | N |  С  |
| RAM      | чип     | Y | Y |    Y   | N |  Г  |
| ROM      | чип     | Y | N | трудно | Y |  С  |                                                       | NVRAM    | чип     | Y
|                        | Y |мн.трудн| Y |  М  | 
| диск     | диск    | Y | Y |    Y   | Y |  СГ |
| cd/дикети| незнам  | Y | ? |    Y   | Y |  СГ |
+----------+---------+---+---+--------+---+-----+


 С тази таблица надминах себе си ... дааа, обаче в
нея май няма CMOS??!!!!! Обобщение на артикъла : CMOS в компютри
те (не съвсем правилно) се нарича тази част от паметта която,
хардуерно е обособена (!?) и в нея са записани
потребителски настройки на компютърния хардуер, използва се от BIOS (предимно)
освен това има начин да се използва и от програмист :)
По правилни за нея са следните названия: EEPROM, NVRAM, FLASH, и най-правилно от
тях е средното!
 На практика представлява просто имидж (картинка :) ) с бинарен код
на всички опции от сетъпа, освен тях първите байтове се използват от
часовник който се захранва от батерия и си работи когато компютъра е спрян.
Наличието на батерия дава възможност да не е необходимо да се използва EEPROM,
която е малко по-скъпа и освен тва преди не съм сигурен колко години още не е
била изобретена за PC-тата :) а се използва обикновена RAM която обаче се
захранва от батерията и освен нея се захранва и часовника за който стана дума.
 CMOSа не е съвсем гарантирано как точно е обособен като хардуер и дали освен часовника 
наистина и въпросната памет винаги се захранва от батерията, но да разглеждам 
различните реализации до момента и други хардуерни аспекти излиза извън обекта на HOWTOто.
 Важното е, че като се даде накъсо батерията има обективна причина да очакваме 
тази памет да се нулира, също както става с конвенционалната RAM
( вероятно някои са го правили вече и имат точно идея каква е целта :) )
обаче също толкова обективна причина има да спре часовника а паметта
да си остане особено ако е по-нов тип и е EEPROM (FLASH) :P (тези две помнят
каквото е записано в тях дори и захранването им да се изключи напълно)

 case of ?
1: какъв е тоя 'case of': все едно...
2: горното го разбрахте и ви стана ясно: аз съм щастлив!!!
3: горното го знаехте вече ама не изцяло, беше интересно: пак!!!
4: всичко знам, абе ти си много тъп: не е вярно :)....
5: всичко знам и ми е скучно: нататък има още...
6: абе човек тия работи много добре звучи, ама
7:ти сигурен ли си че си наред: не разбира се, що за въпрос! :)
8:ами мисля че е логично ... но ще разбера нещо ако го прочета пак:
...... едва ли сега ви стана по-ясно, но едно е съвсем сигурно:
               CMOS НЕ МОЖЕ ДА СЕ ЯДЕ ОТ ХОРА!!!!!!

  Колко съжалявам, наистина! :)
             
        Computer CMOS memory HOWTO by Arho  arho_ochz@yahoo.com

-----------------------------------------------------
obj: this document covers some details about CMOS computer storage memory.
CMOS паметта съдържа описание на инсталирания хардуер на компютъра,
също и някои допълнителни променливи, необходими на BIOS. Оновно тя се
използва от BIOS, но е достъпна и на системно ниво. Някои операционни
системи (UNIX, Linux) имат защита и е необходимо да имате съответн
ите потребителски права за да извършвате четене/запис в нея.                                               
  Прочитане на CMOS обикновено се прави от програми даващи хардуерна
информация за системата (sysinfo, и т.н.) BIOS предлага пълен
набор от функции, които връщат като резултат данни с информация за
съответното устройство така, че директното четене на CMOS не е необходимо.
 Запис в CMOS принципно НЕ Е необходим, когато има нужда да се направи
промяна това е най добре да става със SETUP менюто на BIOS или със
функции на BIOS в средата на операционната система по-рядко. На мен
не ми е известен широко разпространен софтуер, с помощта на който да се
прави последното.
 Запис в CMOS е оправдан единствено когато това не може да се направи по
нормален начин или иначе казано от SETUP менюто... а както е известно горното в
повечето модели на BIOS има възможност да се защитава с парола ....                                                       
  АКО НА НЯКОЙ КОМПЮТЪР BIOS SETUP МЕНЮТО Е ЗАЩИТЕНО С ПАРОЛА И ТОВА НЕ Е 
ВАШИЯ КОМПЮТЪР, НА КОЙТО СТЕ ЗАБРАВИЛИ ПАРОЛАТА СЛЕДОВАТЕЛНО ИМА ХОРА, КОИТО НЕ
ЖЕЛАЯТ ВИЕ ДА ИМАТЕ ДОСТЪП ДО ТОВА МЕНЮ (ИЛИ ДО ЦЕЛИЯ КОМПЮТЪР) И ПРИЛАГАНЕ НА 
ИНФОРМАЦИЯ С ЦЕЛ ДА СЕ ИЗПОЛЗВА КОМПЮТЪРА Е НЕЗАКОННО!!!
  НАСТОЯЩИЯТ ФАЙЛ ИМА ЕДИНСТВЕНО ОБРАЗОВАТЕЛНА ЦЕЛ И (НЕ)ИЗПОЛЗВАНЕТО
 НА ИНФОРМАЦИЯ ОТ НЕГО Е ИЗЦЯЛО ВАШЕ РЕШЕНИЕ, ЗА КОЕТО НОСТИЕ ОТГОВОРНОСТ!!!


 Програмистите на BIOS съзнателно са оставили backdoors (задни врати, бел. на ред.)
в някои модели BIOS-и, при заключен компютър най-оправдано е първо да се изпробват те:

 За AwardBIOS_ опитайте следните задни вратички:

AWARD_SW j262 HLT SER SKY_FOX BIOSTAR ALFAROME Lkwpeter j256 AWARD?SW
 LKWPETER syxz ALLy
589589 589721 awkward CONCAT d8on
 CONDO  j64 szyx

 За AMI BIOS_ опитайте следните пароли:

 AMI BIOS  PASSWORD HEWITT RAND AMI?SW AMI_SW LKWPETER
 A.M.I.  CONDO

За PHOENIX BIOS_ опитайте следните пароли: phoenix

     Горните са предназанчени за различни версии на BIOS и някои
от тях предлагат само ограничен, но не пълен достъп.

 ТРИТЕ СТЪПКИ НАПРЕД:
 При необходимост (забравили сте паролата си!) е най-оправдано да се
 използват първо тези служебни пароли за да получите достъп до компютъра или
до менютоза настройки на BIOS, като производителя на BIOS на вашия компютър
може да разберете най-лесно от съобщение, което се получава на екрана в
момента на начално зареждане, или съответна техническа документация,
придружаваща компютъра.
 В случай, че имате версия на BIOS в която горните служебни пароли
не се поддържат или предлагат само ограничен достъп е възможно да извършите
нулиране на съдържанието на CMOS по начина за който стана дума малко по-горе
в този артикъл. За целта е необходимо да имате физически достъп до
хардуера на компютъра (да отворите кутията му) и след това с помощта на 
поставяне на джъмпер там, където е указано в документацията на дънната платка
(mainboard) или със създаване на късо съединение (мост) между полюсите на
батерията ще се извърши желаното нулиране (вероятно ?! :) )
 Този начин е най-често използван на практика, но освен достъп трябва разбира 
се да знаете какво е джъмпер, как изглежда батерията, една отвертка (вероятно един
кламер :) ) и достатъчно смелост, освен това съществува теоретична възможност
да повредите компютъра.
 Последно след като имате достъп до операционната система е възможно
да изпълните програма, която както казах може да прочете и/или промени 
съдържанието на BIOS. За това ще стане дума нататък.
 Очевидни особености: в разпространените модели BIOS съществуват
обикновенно комбинация от два вида защита чрез парола (system/setup),
като първият изисква въвеждане на парола за да получите достъп до целия
компютър а втория е само за достъп до системното меню з
а настройки (сетъпа).
 Последният предлага опция с възможност да се избере между никаква или един от
тези два вида защита. 
В конкретния случай можете сами да съобразите кой от горните подходи или 
комбинация от тях ще ви свърши работа.

 Пример:защитата е системна (на целия компютър), не можете или не желаете да го
разглобявате. Тогава изпробвате служебните пароли .... те не работят -
отказвате се :) 
Пример 2: компютъра е на някой ваш приятел и искате да знаете неговата парола, но без
да я променяте. Това е съществен момент, както ще стане ясно нататък подходите 
може да се разделят на: - такива, които премахват паролата
                        - такива, които я деактивират (променят статуса и все едно сте направили това с менюто SETUP) ,
                        - такива, които разрушават информацията (физически не я изтриват, но я правят негодна за използване от BIOS и той сам прави това :))
                        - методи, които разкодират паролата и ви я показват или ви показват валидна комбинация от символи, еквивалентна на паролата
                                                    (пр. паролата е PAROLATA, a FDF23#6 е еквивалентна комбинация, която не е самата парола но може да се използва вместо нея)
                        Последното се предполага от начина, по който информацията се
                        представя (кодира) в CMOS и ще стане ясно нататък.
 Други приложения:
 Представете си следната ситуация, имате компютър на който паролата е само за 
setup, значи той може да се включи и да се зареди ОС на него.
Не знаете тази парола и никой не ви е казал за съществуването на служебните
пароли (backdoоrs). В системното меню има опция която описва наличните
флопидискови устройства и в момента тази опция указва че компютъра няма
инсталирани такива, въпреки че те физически съществуват . Какво ще стане
тогава... тези устройства (о) на практика няма да могат да се ползват от
компютъра все едно те деиствително не съществуват . Аналогично е за всички
останали видове устройства с изключение на паметта, но за нея трябва да
има зададени настройки по отношение на това как да работи коректно.
 Е имате голямо желание да използвате флопито защото този компютър
няма мрежови способности, няма интернет и няма начин да качите на него
програма, която вие искате. Има начин да изтриете вече наличните, но това
едва ли ви върши работа :Р Какво правите в този случай: написвате една малка
програма, която не се занимава с паролата на BIOS-a или с нещо друго а
просто променя статуса на флопито, което уж го няма и вече можете да си го
ползвате.
 Още по-други:
 Памет от вида на CMOS (напълно или частично подобна) се използва в много 
технически устройства (GSM, АвтоРадио) и манилулирането й обикновено
е свързано с качествени и най-лесно осъществяеми промени в тяхната работа.
 Компютърна FLASH памет означава ROM частта от компютърната памет
(част от тази част в която е записан BIOS) е възможно електрически да се
изменя подобно на CMOS и е сравнително нова технология (Pentium или по-нов),
по този начин е възможно да се обновява BIOS с по-нови версии с помощта на
драйверни програми. Това крие повече рискове отколкото проблеми разрешава... по мое мнение!

        Заключение: CMOS паметта е с определен обем примерно 256 bytes и всеки бит
 отговаря на определено състояние на опциите от менюто, част от тези параметри са унифицирани и са еднакви за всички модели на BIOS
и тяхно описание може да се намери под формата на карта на паметта (memory map , например [asq.exe]).
 Битовете, който са специфични само за определена версия на BIOS фигурират
като specific в подобни карти и често не са толкова съществени, а по-важните
(също статуса на флопито) са стандартизирани и е възможно да се променят
целесъобразно. Част от тези битове са със специфично проложение, както стана
ясно първите 6 от тях отразяват системното време, дата и системната alarm. ,
след което следва блок от около 24 стандартни. Тяхната текуща стойо
ст е сумирана (с превъртане) и е записана в два бита точно след края на блока.
 Тази стойност се нарича контролна сума (checksum) и обикновенно целта и е да се гарантира
коректността на предходните данни. В блока от защитени стойности са включени
статуса на паролата (не и самия код на паролата) статуса на флопитата и др.
 При промяна на някоя от тези стойности, когато това е направено
чрез прекъсване на BIOS или от SETUP, стойността на checksum се преизчислява
до новата коректна стойност. Ако промянатае станала случайно, примерно
хардуерна грешка, отпадане на захранването на физическата памет или
случаен запис BIOS при началното стартиране извежда съобщение за
грешка "CMOS Checksumm error" и дава пълен достъп до системното меню (setup).
 Съществуват програми за проверка на тази стойност (често погрешно тази проверка се нарича проверка на батерията) [sysinfo.exe на symantec],
но те НЕ предлагат възможност за преизчисляване и записване на правилна стойност в полето checksum.
 Софтуерни продукти, които извършват друг вид работа с CMOS примерно
промяна на стандартизираните битове, преизчисляване на checksum и още по-малко намиране 
на паролата НЕ СА ОБЕКТ НА РАЗРАБОТКА И МАСОВО РАЗПРОСТРАНЕНИЕ ЗА ПОТРЕБИТЕЛИ ДОРИ НА
ПРОФЕСИОНАЛНО НИВО, въпреки това такива съществуват и свободно се разпространяват включително и със сорс код . 
 Съдържание на подобни програми:
  - четене и запис на физическото (системно ниво портове) съдържание на CMOS.
  - запис на същото в/от файл.
  - възможност за редактиране/интерпретиране на отделни битове
  - разпознаване на конфигурацията на устройства чрез CMOS                                                                           
  - промяна на -||-
  - изчисляване на коректна checksum                                                                
  - генериране /разкодиране / променяне / деактивиране на парола
  - изчисляване на некоректна checksum :)

  Последното е по-извесно като опция CMOSKILL и се поддържа от
повечето подобни програми [HU.EXE на dest TM или CMOSPWD.EXE]
  Съществуват много различни варианти на последната или програми с друго
име и сходна дейност, но няма масово утвърдени и разпространени поради 
спецификата им, която е изложена по-горе. Лесно могат да се намерят такива
в Интернет.

        ИЗПОЛЗВАНЕТО НА СОФТУЕРНИ СРЕДСТВА, КОИТО ИЗВЪРШВАТ НЯКОИ ОТ
ГОРЕПОСОЧЕНИТЕ ДЕЙСТВИЯ ЧЕСТО Е НЕЖЕЛАНО И НЕДОПУСТИМО СПОРЕД
УСЛОВИЯТА (ГАРАНЦИОННИ СПОГОДБИ, и пр.) ЗА ИЗПОЛВАНЕ НА КОМПЮТЪРНА ТЕХНИКА
И НЕ СЕ ПОЗВОЛЯВА ОТ ФИРМАТА ПРОДАВАЧ, ОСВЕН В СЛУЧАИТЕ КОГАТО ТОВА СА "UTIL-ИТИ"
ПРОГРАМИ С ОДОБРЕНИ ЛИЦЕНЗНИ УСЛОВИЯ ОТ МАСОВИ ПРОИЗВОДИТЕЛИ.

        ДРУГО ИЗПОЛЗВАНЕ ОСВЕН В ПОСОЧЕНИТЕ СИТУАЦИИ Е НЕЗАКОННО И НОСИТЕ СЪОТВЕТНАТА ОТГОВОРНОСТ!!!!!!

 Ако имате коментари, МОЛЯ споделете ги:

+--------------------------------------------------------------------+
|АВТОР: arho_ochz@yahoo.com (c) ochz 10.2k (Arhont-Янислав Картелов) |
|       http://arho.hit.bg  					     |
+---------------------------------------------------------------------

// Оригиналният файл е в MS DOS Cyr формат (cyr.com драйвер от СТЕМО)
// Редакция, HTML-версия и MS Win-Cyr-1251 кодиране : Тодор Арнаудов (TodProg) от списание "ЕИМ СВЯТ". | Юли.2001 г.