Контрольная сумма CMOS (как вычыслить)

Тема в разделе "WASM.ASSEMBLER", создана пользователем monoxrom, 14 апр 2009.

  1. monoxrom

    monoxrom New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2008
    Сообщения:
    18
    Привет всем! Никак не могу найти на просторах интернета инфу о том как правильно вычыслить контрольную сумму CMOS. Знаю что контрольной суммой защищены ячейки памяти из 10h до 20h. Сама контрольная сумма сохраняется в ячейках 2ЕН и 2FH (2ЕН - старший байт и 2FH - младший байт) А еще нашёл упоминание о том что Контрольная сумма - это просто 16-битовая сумма защищаемых байт памяти. Это как понять? перевести значения всех ячеек памяти (из 10h до 20h) в 16-й формат и додать. А то что получется как-то записать в эти два байта? И все?
     
  2. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    и не найдешь. Контрольная сумма вычисляется по разному в разных биосах, даже для биосов одного производителя (Phoenix, к примеру) в разных версиях могут быть отличия. В простейшем случае, да, это может быть просто сумма. А может и нет. Может и CRC, может и xor. Нет стандарта на алгоритм, есть стандарт на защиту определенных ячеек контрольной суммой. Поскольку нет ни одного легального применения для модификации защищаемой области, и модификации контрольной суммы cmos... да и нелегального, кстати, я тоже не придумаю.
    Тема - в хип или в hardware, не по ассемблеру явно. Если тебе надо сбить пароль, то просто измени любые байты по защищаемым адресам, или саму КС - после перезагрузки система обнаружит это и предложит сделать правильные настройки. Уже без пароля.
     
  3. monoxrom

    monoxrom New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2008
    Сообщения:
    18
    Ясно, понятно... Ну мне не сброс пароля нужен, когда я читал о 70 і 71-й порты я уже много начитался о сбросах пароля :) Мне надо второй флопик к компу добавить а в биосе есть выбор только одного :dntknw: Я писал в поддержку АСУС а они, гады, ответили что второй флоп не добавлят :dntknw: Так вот что теперь делать? Десассемблировать биос в поисках алгоритма кодирования CMOS или подбирать что-то вручную... ну например когда у меня есть один флоп на 1,44 то контрольная сума 7147 а когда я его выключаю то уже 782 (значения в DEC)
    но это тожу трудно, подскажыте в какую сторону рыть? Сам биос я уже успешно разковырял на модули, там их штук 20, где искать?
     
  4. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    monoxrom
    Наиболее распростронены два вида контрольных сумм.
    1) сумма с дополнением до нуля. Называется cheksum.
    2) Вторая это уже CRC

    Что касается CMOS то

    то в ячейках 2e-2f хрониться скорее всего первый вариант.
    10h-20h читаешь по словам. Первый байт младши второй старший. Первый второй.
    Просто сумируешь слова. Есть вариант что храниться просто сумма проверь.
    А после дополнение тут просто отрицательное значение берем тогда при сложении еще и этой ячейки должно получаться 0000 переполнение не учитываем.
     
  5. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Pavia
    Насколько я понял - суммировать нужно всё-таки байты, а не слова, а результат есно 16 битный, поскольку в байт не поместится, во всяком случае в древних манускриптах встречал именно такой вариант.
     
  6. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Y_Mur
    Да глянул в исходниках биоса Award сумирование идет по байтам.
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    У меня плата Gigabyte GA-8IPE1000MK. Когда юзал будильник, который включает блок питания тоже нужно было корректировать чексумму. У меня их две. Первая стандартная, вторая - побайтная сумма значений регистров [65%124] находится в регистре 0x7D. Я это выяснил сравнив несколько дампов. В принципе можно поступить следующим образом.
    Суммируем результат с значением регистра. Декремент регистра. Сканим все регистры начиная с 0x30 на результат. Если не наёдено, то опять цикл выполняем. Для моей CMOS это будет работать.
     
  8. monoxrom

    monoxrom New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2008
    Сообщения:
    18
    ААА, заработало!

    Я что-то не понимал как это считать значения всех ячеек, а потом додавать это число только с отрицательным значением и должно выити 0, конечно но я читал адреса 2ЕН и 2FH
    до того как что нибуть изменять и там небыл "0" там были разные числа и если что-то меняеш в биосе то они изменяются... Так вот я подумал и решыл сделать так, если я добавляю флопик В на 1,2 Мб то у меня значение в 10h заместь 64 должно быть 66 (в DEC) Значит если я добавил 2 то надо просто откуда-то эти 2 отнять и может контрольная сума не поменяется ))))))))))))

    Так я и сделал, отнял 2 из значения 255 что в ячейке 18h. И о чудо! биос не ругнулся на не правильную контрольную сумму! все заработало, загрузился виндовс ХР и нашёл диск В на 5,25 дюйма )))))))))))) Но это еще не все! потом когда я просмотрел снова диапазон ячеек с 10h до 20h то ячейка 18h не имела значения 253 а дале имела 255, тоесть наверно биос ее всегда устанавливает в 255 и обновляет свою контрольную сумму при этом не ругаясь!

    А вот когда я попробовал добавить так флопик на АСУС ЕЕЕ РС то там биос сказал при загрузке что нету у вас флопа :) но тоже не ругнулся на контрольную сумму :)

    Так что всем спасибо, проблема решына... буду вечером дома пробовать на том компе где я хотел флоп а сейчас я все пробовал на работе, но думаю должно работать...
     
  9. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    кхе-кхе... а при чем тут CMOS? Вопрос получается, если применить аналогию, "Мне надо чтобы замок открывался двумя ключами. Я спрашивал завод-изготовитель, они говорят, что их замки на 2 ключа не рассчитаны. Кто знает, как правильно нарисовать вторую замочную скважину?"
    Короче, нарисовать наверно можно. Если не в кмосе, то перехватывая прерывание, возвращающее количество дисководов... Или еще каким-то хитрым образом. Возможно, ОС после загрузки нормально увидит оба флопика... но просто изменить значения в CMOS и надеяться, что это заработает, слишком оптимистично ;)
    блин... :))) только в России... могут добавить себе второй флоп прямым редактированием CMOS-памяти
     
  10. monoxrom

    monoxrom New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2008
    Сообщения:
    18
    Код (Text):
    1. но просто изменить значения в CMOS и надеяться, что это заработает, слишком оптимистично ;)
    Я знаю! но когда я разковырял биос то увидел что асусы страшные халявщики, у них там в биосе досих пор валяются надписи о том что монитор EGA или VGA есть еще 47 типов винтов, надписи от флопа А и В тоже есть, а программа EZ FLASH которая обновляет биос так это вобше прога под винду!!! только там заместь stub-a записана досовская прога которая уже прошывает биос! Ужас да и только, я думаю что там уже все есть просто самой установки флопа нет... ну посмотрим, о результатах потом напишу :)
     
  11. monoxrom

    monoxrom New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2008
    Сообщения:
    18
    Ага, таки да, ничего не получилось, в CMOS то флоп добавил успешно и он появился в винде но не работает :dntknw: Значит в биосе вырезан тот кусок что обрабатывает запросы к второму флопу по адресу 370h-377h... Интересно эти адреса свободны или чем-то заняты?
     
  12. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Вообще-то два флоппика могут висеть на одном шлейфе (с перекруткой) и управляться исключительно через 3F0h-3F7h. Кроме того хотя я давно и не экспериментировал в этом направлении направлении, но по идее два флоппика должны поддерживаться везде и сейчас. Конечно в BIOS setup ты диск B (Floppy 2) в загрузочной последовательности не увидишь и не выставишь, но для этого есть опция "Swap floppies".
     
  13. monoxrom

    monoxrom New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2008
    Сообщения:
    18
    Phantom_84

    Так они так и висят, а как по другому?
    А вот это вроди нет, 3F0h-3F7h это для первого флопа, а для второго адреса 370h-377h...
    Наверно в биосе вырезан тот кусок кода что должен обрабатывать запросы по адресу 370h-377h потому и флоп не работает, даже лампочкой не светит :dntknw: Меня вот что интересует, запросы системы к флопу обрабатывает основной биос или система сама работает с котроллером?
     
  14. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    monoxrom нет - выбор привода на шлейфе в порту 3F2h.
     
  15. monoxrom

    monoxrom New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2008
    Сообщения:
    18
    Таки добил я этот флопик. На форуме cracklab.ru мне подсказали что надо рыть в микросхеме Super I/O на мамке. Так вот после ряда эксперементов я выяснил что в старых микросхемах Super I/O были контакты на запуск мотора на флопике В и выбор дисковода В, а сейчас контакты есть только для дисковода А :dntknw: Но я все равно заставил работать флоп, чтобы его запустить надо просто замкнуть эти контакты с землей. Я их и замкнул прямо на флопе, конечно через тумблер :) Вот мой комп теперь:
    [​IMG]

    А это еще видео заснял как запускать такой флоп:
    http://www.youtube.com/watch?v=_HbB-Yfa29Q