Привет всем! Никак не могу найти на просторах интернета инфу о том как правильно вычыслить контрольную сумму CMOS. Знаю что контрольной суммой защищены ячейки памяти из 10h до 20h. Сама контрольная сумма сохраняется в ячейках 2ЕН и 2FH (2ЕН - старший байт и 2FH - младший байт) А еще нашёл упоминание о том что Контрольная сумма - это просто 16-битовая сумма защищаемых байт памяти. Это как понять? перевести значения всех ячеек памяти (из 10h до 20h) в 16-й формат и додать. А то что получется как-то записать в эти два байта? И все?
и не найдешь. Контрольная сумма вычисляется по разному в разных биосах, даже для биосов одного производителя (Phoenix, к примеру) в разных версиях могут быть отличия. В простейшем случае, да, это может быть просто сумма. А может и нет. Может и CRC, может и xor. Нет стандарта на алгоритм, есть стандарт на защиту определенных ячеек контрольной суммой. Поскольку нет ни одного легального применения для модификации защищаемой области, и модификации контрольной суммы cmos... да и нелегального, кстати, я тоже не придумаю. Тема - в хип или в hardware, не по ассемблеру явно. Если тебе надо сбить пароль, то просто измени любые байты по защищаемым адресам, или саму КС - после перезагрузки система обнаружит это и предложит сделать правильные настройки. Уже без пароля.
Ясно, понятно... Ну мне не сброс пароля нужен, когда я читал о 70 і 71-й порты я уже много начитался о сбросах пароля Мне надо второй флопик к компу добавить а в биосе есть выбор только одного Я писал в поддержку АСУС а они, гады, ответили что второй флоп не добавлят Так вот что теперь делать? Десассемблировать биос в поисках алгоритма кодирования CMOS или подбирать что-то вручную... ну например когда у меня есть один флоп на 1,44 то контрольная сума 7147 а когда я его выключаю то уже 782 (значения в DEC) но это тожу трудно, подскажыте в какую сторону рыть? Сам биос я уже успешно разковырял на модули, там их штук 20, где искать?
monoxrom Наиболее распростронены два вида контрольных сумм. 1) сумма с дополнением до нуля. Называется cheksum. 2) Вторая это уже CRC Что касается CMOS то то в ячейках 2e-2f хрониться скорее всего первый вариант. 10h-20h читаешь по словам. Первый байт младши второй старший. Первый второй. Просто сумируешь слова. Есть вариант что храниться просто сумма проверь. А после дополнение тут просто отрицательное значение берем тогда при сложении еще и этой ячейки должно получаться 0000 переполнение не учитываем.
Pavia Насколько я понял - суммировать нужно всё-таки байты, а не слова, а результат есно 16 битный, поскольку в байт не поместится, во всяком случае в древних манускриптах встречал именно такой вариант.
У меня плата Gigabyte GA-8IPE1000MK. Когда юзал будильник, который включает блок питания тоже нужно было корректировать чексумму. У меня их две. Первая стандартная, вторая - побайтная сумма значений регистров [65%124] находится в регистре 0x7D. Я это выяснил сравнив несколько дампов. В принципе можно поступить следующим образом. Суммируем результат с значением регистра. Декремент регистра. Сканим все регистры начиная с 0x30 на результат. Если не наёдено, то опять цикл выполняем. Для моей CMOS это будет работать.
ААА, заработало! Я что-то не понимал как это считать значения всех ячеек, а потом додавать это число только с отрицательным значением и должно выити 0, конечно но я читал адреса 2ЕН и 2FH до того как что нибуть изменять и там небыл "0" там были разные числа и если что-то меняеш в биосе то они изменяются... Так вот я подумал и решыл сделать так, если я добавляю флопик В на 1,2 Мб то у меня значение в 10h заместь 64 должно быть 66 (в DEC) Значит если я добавил 2 то надо просто откуда-то эти 2 отнять и может контрольная сума не поменяется )))))))))))) Так я и сделал, отнял 2 из значения 255 что в ячейке 18h. И о чудо! биос не ругнулся на не правильную контрольную сумму! все заработало, загрузился виндовс ХР и нашёл диск В на 5,25 дюйма )))))))))))) Но это еще не все! потом когда я просмотрел снова диапазон ячеек с 10h до 20h то ячейка 18h не имела значения 253 а дале имела 255, тоесть наверно биос ее всегда устанавливает в 255 и обновляет свою контрольную сумму при этом не ругаясь! А вот когда я попробовал добавить так флопик на АСУС ЕЕЕ РС то там биос сказал при загрузке что нету у вас флопа но тоже не ругнулся на контрольную сумму Так что всем спасибо, проблема решына... буду вечером дома пробовать на том компе где я хотел флоп а сейчас я все пробовал на работе, но думаю должно работать...
кхе-кхе... а при чем тут CMOS? Вопрос получается, если применить аналогию, "Мне надо чтобы замок открывался двумя ключами. Я спрашивал завод-изготовитель, они говорят, что их замки на 2 ключа не рассчитаны. Кто знает, как правильно нарисовать вторую замочную скважину?" Короче, нарисовать наверно можно. Если не в кмосе, то перехватывая прерывание, возвращающее количество дисководов... Или еще каким-то хитрым образом. Возможно, ОС после загрузки нормально увидит оба флопика... но просто изменить значения в CMOS и надеяться, что это заработает, слишком оптимистично блин... )) только в России... могут добавить себе второй флоп прямым редактированием CMOS-памяти
Код (Text): но просто изменить значения в CMOS и надеяться, что это заработает, слишком оптимистично ;) Я знаю! но когда я разковырял биос то увидел что асусы страшные халявщики, у них там в биосе досих пор валяются надписи о том что монитор EGA или VGA есть еще 47 типов винтов, надписи от флопа А и В тоже есть, а программа EZ FLASH которая обновляет биос так это вобше прога под винду!!! только там заместь stub-a записана досовская прога которая уже прошывает биос! Ужас да и только, я думаю что там уже все есть просто самой установки флопа нет... ну посмотрим, о результатах потом напишу
Ага, таки да, ничего не получилось, в CMOS то флоп добавил успешно и он появился в винде но не работает Значит в биосе вырезан тот кусок что обрабатывает запросы к второму флопу по адресу 370h-377h... Интересно эти адреса свободны или чем-то заняты?
Вообще-то два флоппика могут висеть на одном шлейфе (с перекруткой) и управляться исключительно через 3F0h-3F7h. Кроме того хотя я давно и не экспериментировал в этом направлении направлении, но по идее два флоппика должны поддерживаться везде и сейчас. Конечно в BIOS setup ты диск B (Floppy 2) в загрузочной последовательности не увидишь и не выставишь, но для этого есть опция "Swap floppies".
Phantom_84 Так они так и висят, а как по другому? А вот это вроди нет, 3F0h-3F7h это для первого флопа, а для второго адреса 370h-377h... Наверно в биосе вырезан тот кусок кода что должен обрабатывать запросы по адресу 370h-377h потому и флоп не работает, даже лампочкой не светит Меня вот что интересует, запросы системы к флопу обрабатывает основной биос или система сама работает с котроллером?
Таки добил я этот флопик. На форуме cracklab.ru мне подсказали что надо рыть в микросхеме Super I/O на мамке. Так вот после ряда эксперементов я выяснил что в старых микросхемах Super I/O были контакты на запуск мотора на флопике В и выбор дисковода В, а сейчас контакты есть только для дисковода А Но я все равно заставил работать флоп, чтобы его запустить надо просто замкнуть эти контакты с землей. Я их и замкнул прямо на флопе, конечно через тумблер Вот мой комп теперь: А это еще видео заснял как запускать такой флоп: http://www.youtube.com/watch?v=_HbB-Yfa29Q