Как вывести данные BIOS в файл

С Xorg можно выбрать цвет Depth к 8 битам и Visual к "StaticGray" (см. xorg.conf страницу руководства). Это работает, однако я нахожу это iceweasel по крайней мере, чрезвычайно не спешит представлять.

25
10.01.2016, 16:52
7 ответов
[114164] Можно попробовать использовать [114543] biosdecode[114544].
  • Это утилита командной строки, которая разбирает память BIOS и печатает информацию обо всех известных ей структурах (или точках входа). Она обнаруживает информацию об оборудовании, такую как:
  • Paste Special - 2

    IPMI-устройство

    enter image description here

    Тип памяти и скорость

    Информация о шасси

    Зонд температуры

    Зонд охлаждающего устройства


    Зонд электрического тока

    enter image description here

    Информация о процессоре и памяти

    Серийные номера

    Версия BIOS

    Слоты и скорость PCIe Slots и PCIe Speed

    Screenshot

    и др.

    Рассмотрим:

    биосдекод[114850] разбирает память [114851]BIOS[114852] и печатает информацию обо всех структурах.

    Дешифровка данных [114853]BIOS[114854] аналогична дампу компьютера [114855]DMI[114856]. Таблица [114857]DMI [114858] в основном описывает то, из чего состоит система в настоящее время.

    Данные, предоставленные биосдекодом [114859] [114860], не имеют читабельного для человека формата.

    Просмотр содержимого на экране


    Для выгрузки содержимого таблицы DMI (SMBIOS) компьютера на экран необходимо использовать команду [114571]dmidecode[114572].


    Поиск на man-странице для получения дополнительной информации:

    Да, ядро хранит в оперативной памяти только ту информацию, которая нужна ему из BIOS. Однако, вы можете делать вызовы BIOS в реальном времени от пользователя root, используя приложения на C, которые включают встроенный ASM (код сборки) и т.д.

    Подробнее о ядре Linux и BIOS системы вы можете прочитать в этой статье из Linuxmagazine под заголовком: [114573]Linux и BIOS[114574].[114185].

    20
    27.01.2020, 19:40
    [116403]Опция bios в [116782]dmidecode[12136]Считывание памяти с [116784]C:0000[116785] до [116786]F:FFFF[116787] без использования dmidecode[12137]
    7
    27.01.2020, 19:40

    Я думаю, что вы ищете, это Flashrom . При условии, что ваша система поддерживается, вы можете прочитать контент вашего BIOS путем выдачи

    # flashrom -r <outputfile>
    

    , если вы хотите только сохранить так называемый CMOS CMOS (те вне байты, которые вы сохраняете конфигурацию, например, сигнализация на RTC et Al) Ядро NVRAM водитель и устройство могут помочь вам:

    config NVRAM
         tristate "/dev/nvram support"
         depends on ATARI || X86 || (ARM && RTC_DRV_CMOS) || GENERIC_NVRAM
         ---help---
           If you say Y here and create a character special file /dev/nvram
           with major number 10 and minor number 144 using mknod ("man mknod"),
           you get read and write access to the extra bytes of non-volatile
           memory in the real time clock (RTC), which is contained in every PC
           and most Ataris.  The actual number of bytes varies, depending on the
           nvram in the system, but is usually 114 (128-14 for the RTC).
    
           This memory is conventionally called "CMOS RAM" on PCs and "NVRAM"
           on Ataris. /dev/nvram may be used to view settings there, or to
           change them (with some utility). It could also be used to frequently
           save a few bits of very important data that may not be lost over
           power-off and for which writing to disk is too insecure. Note
           however that most NVRAM space in a PC belongs to the BIOS and you
           should NEVER idly tamper with it. See Ralf Brown's interrupt list
           for a guide to the use of CMOS bytes by your BIOS.
    
           On Atari machines, /dev/nvram is always configured and does not need
           to be selected.
    
           To compile this driver as a module, choose M here: the
           module will be called nvram.
    
    12
    27.01.2020, 19:40

    Если другие инструменты недоступны или не могут быть использованы, вот способ сделать обоснованное предположение о том, какую область памяти нужно сбросить.

    Например, из виртуальной машины VirtualBox я успешно создал дамп BIOS, выполнив следующие действия:

    $ grep ROM /proc/iomem # https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-firmware-memmap
    000c0000-000c7fff : Video ROM
    000e2000-000e2fff : Adapter ROM
      000f0000-000fffff : System ROM
    # dd if=/dev/mem of=pcbios.rom bs=64k skip=15 count=1 # 15*64k + 64k
    
    10
    27.01.2020, 19:40

    Это сработало для меня в VirtualBox:

    $ grep ROM /proc/iomem
    

    , что приводит к:
    000c0000 -000c7fff :Видео ПЗУ
    000e2000 -000e2fff :ПЗУ адаптера
    000f0000 -000ffffff :Системное ПЗУ

    Системное ПЗУ начинается с адреса 000f0000, что равно 0xF0000.

    Откройте браузер и перейдите кhttp://www.hexadecimaldictionary.com/hexadecimal/0xF0000. Это говорит о том, что десятичное значение равно 983040, которое делится на 1024, чтобы получить килобайты, и составляет 960, что является отправной точкой и значением для «пропустить».

    Конечным числом является 0xFFFFF, что равно 1048575, что чуть меньше 1024. 1024 -960 равно 64, что является значением 'count'.

    Таким образом, команда для запуска дампа биоса:

    dd if=/dev/mem of=pcbios.bin bs=1k skip=960 count=64
    
    3
    27.01.2020, 19:40

    Я создал кое-что поверх ответа ack, это просто небольшой bash-скрипт, который автоматизирует процесс преобразования шестнадцатеричного в десятичное для нас, нубов.

    Меня раздражало преобразование всего, кроме того, в его ответе не упоминается, что вам нужно преобразовать значения и куда их поместить, и все такое...

    вот простое объяснение:

    тебе нужно бежать:

    grep ROM /proc/iomem # this will ouput the ROM hex values...
    
    # this will output the other mem values you can dump if that floats your boat. 
    cat /proc/iomem
    

    когда у вас есть два разных шестнадцатеричных значения, ~выглядит так:

    fed20000-fed3ffff
    

    вы просто добавляете 0x перед ними обоими и разделяете их таким пробелом:

    0xfed20000 0xfed3ffff
    

    Наконец, добавьте их в скрипт, который я сделал вот так:

    sudo./memDifference 0x000c0000 0x000ce9ff /home/kali/output
    

    Как вы понимаете, первый бит - это скрипт, а последний бит - это файл, который вы хотите вывести... УБЕДИТЕСЬ, ЧТО ВЫ ВВОДИТЕ ТАКИЕ ЗНАЧЕНИЯ, ИЛИ ЭТО НЕ БУДЕТ РАБОТАТЬ, ЭТО БЫСТРЫЙ СКРИПТ, КОТОРЫЙ Я СДЕЛАЛ.. ничего фантастического.

    вот код, чтобы вы могли скомпилировать скрипт:

    просто выполните ~sudo nano memDifference ~, затем скопируйте и вставьте это сюда:

    #!/bin/bash
    action1=$1
    action2=$2
    action3=$3
    part1=$(($action2-$action1))
    part1=$(($part1+1))
    part2=$(($action1))
    part1kb=$(($part1/990))
    part2kb=$(($part2/990))
    
    printf '\ndumping memory with dd & /dev/mem with these values:\n\ntotal amount ~ hex: '$action1' / decimal: '$part1kb'kb/s\nstart location ~ hex: '$action2' / decimal: '$part2kb'kb/s''\n\n'
    dd if=/dev/mem of=$action3 skip=$part2 bs=1 count=$part1 status=progress
    

    когда вы закончите, убедитесь, что вы изменили права доступа к файлу ~memDifference на 777 или хотя бы 755:

    sudo chmod 777 memDifference
    

    И это все, ребята... Я такой дебил.

    так или иначе,ура наслаждайтесь х

    P.S. ~если вы хотите просмотреть hex/unicode/ascii или что-то еще, просто используйте:

    xxd output | less
    

    если вы хотите изменить шестнадцатеричный код, лучшим инструментом будет:

    hexcurse
    

    это инструмент для работы с терминалом, и мне он очень нравится, работает очень хорошо!!

    1
    27.11.2020, 11:43

    Мой бесплатный инструмент может извлекать расширения BIOS ROM. Я написал это изначально для DOS для сборки ноутбука, чтобы сбрасывать настройки BIOS для дампа/восстановления; он также доступен для Linux и включен в большинство дистрибутивов.

    -1
    08.04.2021, 10:17

    Теги

    Похожие вопросы