BCD.LOGおよびBOOTSTAT.DATバイナリファイルを解釈するユーティリティ(W7ブートがハングする)



Utility Interpret Bcd



解決:

わからないBOOTSTAT.DATがBCDはレジストリハイブであり、他のすべてと同じ形式です。 NSBCD.LOG *ファイルは、回復を目的としたハイブのトランザクションジャーナルです。

Windowsマシンをお持ちの場合は、regeditからハイブをマウントできます。をクリックします。HKEY_LOCAL_MACHINEで、[ファイル]-> [ハイブのロード]に移動し、BCDファイルを参照します。 Windowsの起動に使用されたBCDは、通常、次のようにすでにマウントされています。BCD00000000。 WindowsNTレジストリハイブファイルの形式に関するドキュメントがいくつかあります。



デュアルブートプロジェクトの場合、ハードウェアプロファイルは、ネイティブハードウェアと仮想ハードウェアのさまざまな構成に役立つ場合があります。それぞれに1つのプロファイルを使用してみてください。


Windows10でBOOTSTAT.DATファイルを解析するための小さなPythonユーティリティを作成しました。Windows7で生成されたBOOTSTAT.DATで使用する手順もあります。このスクリプトでテストされたPythonの最小バージョンはpythonです。 3.6。



https://gitlab.com/rhave/bootstat.dat-efi-parser

出力は、JSONまたはsemi-CSVのいずれかです。

プログラムのファイル形式情報の主な情報源は、ChrisSmithが以前に別の回答で言及したGeoffChappellサイトです。



Windows10ファイルで実行する

プログラムは次の方法で実行できます。

python bootstat.dat-efi-parser.py json BOOTSTAT.DAT

どこpythonは、システムにインストールされているpythonインタープリターです。bootstat.dat-efi-parser.pyは、gitlabからのスクリプトのコピーです。jsonは出力タイプです(csv)およびBOOTSTAT.DATは、分析するファイルです。

上記の使用例からの出力は、次のようになります。

{'バージョン':4、 'header_size':24、 'file_size':65536、 'valid_data_size':208、 'unknown_header_dword_0':24、 'unknown_header_dword_1':0、 'events':[{'event_name': 'ログファイル初期化された '、'タイムスタンプ ':6176、' zero_field ':0、' source_guid ':' 2C86EA9DDD5C704EACC1F32B344D4795 '、' size_of_entry ':64、' severity_code ':1、' entry_version ':2、' event_identifier ':1、' event_time_struct ' : '2018-01-01 12:00:00'、 'event_zero_field_0':0、 'event_seven':7、 'event_one':1、 'event_zero_field_1':0}、{'event_name': 'ブートアプリケーションの起動'、 'timestamp':6177、 'zero_field':0、 'source_guid': '2C86EA9DDD5C704EACC1F32B344D4795'、 'size_of_entry':120、 'severity_code':1、 'entry_version':2、 'event_identifier':17、 'event_app_guid': '80A054721015 '、' event_type_of_start ':0、' event_app_pathname ':' \ windows \ system32 \ winload.efi '}]}

Windows7ファイルで実行する

Windows 7では、BOOTSTAT.DATファイルに追加の2048バイトのヘッダーがあります。これをファイルから切り離すと、スクリプトはファイルの残りの部分を解析できるようになります。 Linuxでは、ddコマンドを使用して、次の方法で最初の2048バイトを切り取ることができます。

dd if = bootstat.dat of = bootstat.dat.cut bs = 1 skip = 2048

ここbootstat.datは元のWindows7ファイルであり、bootstat.dat.cutファイルは、Pythonスクリプトの最後の引数として指定する必要があるファイルです。 ddまたはhexeditorと同等のWindowsを使用して、Windowsで同じカットを行うことができます。