
محلل لـ $LogFile على NTFS
الميزات فك وتفريغ سجلات $LogFile وإدخالات المعاملات. فك تغييرات سمات NTFS. اختياريًا حل جميع معلومات قائمة datarun المتاحة في $LogFile. الخيار: "Reconstruct data runs". استعادة المعاملات من المساحة المهملة داخل $LogFile. اختيار إعادة بناء الرؤوس المفقودة أو التالفة للمعاملات الموجودة في المساحة المهملة. الخيار: "Rebuild header". اختياريًا أيضًا ضبط النتيجة بقيمة مستوى خطأ LSN. الخيار: "LSN error level". تسجيل إلى csv واستيراد إلى قاعدة بيانات sqlite مع عدة جداول. اختياريًا استيراد مخرجات csv من mft2csv إلى قاعدة البيانات. الاختيار من بين 6 تنسيقات مختلفة للطوابع الزمنية. اختيار دقة الطابع الزمني: None و MilliSec و NanoSec. اختيار فاصل الدقة عند millisec. اختيار فاصل الدقة عند nanosec. اختيار تعديل المنطقة للطوابع الزمنية. الافتراضي هو عرض الطوابع الزمنية بتوقيت UTC 0.0. اختيار فاصل المخرجات. الخيار: "Set separator". مخرجات UNICODE أو ANSI قابلة للتكوين. الخيار "Unicode". حجم سجل MFT قابل للتكوين (1024 أو 4096). الخيار "MFT record size". اختياريًا فك معاملات فردية أو معاملات جزئية (fragment). خيار إعادة بناء RCRD من معاملة واحدة أو عدة معاملات (fragments). خيار تكوين $LogFile تالف. مفيد مع RCRD المستخرجة كمدخل. خيار تخطي fixups (لـ $LogFile التالف، عادةً المستخرج من الذاكرة). مخرجات مفصلة verbose في debug.log. قائمة قابلة للتكوين مفصولة بفواصل من lsn لتشغيل معلومات ultra verbose حول معاملات محددة في debug.log. تكوين لنظام تشغيل 32-bit. تكوين لاستخراج البيانات الثنائية لتحديثات البيانات المقيمة. sql مُولَّد تلقائيًا لاستيراد المخرجات إلى قاعدة بيانات MySql. خيار تخطي كل ما يتعلق بـ sqlite3 لتسريع التحليل الكلي. وضع سطر أوامر اختياري. يدعم errorlevel المناسب لبرمجة batch.
الخلفية صُمم NTFS كنظام ملفات قابل للاستعادة. يتم ذلك من خلال تسجيل جميع المعاملات التي تغير بنية وحدة التخزين. لذا فإن أي تغيير في ملف على وحدة التخزين سيتطلب أيضًا تسجيل شيء ما في $LogFile، بحيث يمكن عكسه في حالة فشل النظام في أي وقت. لذلك تُكتب كمية كبيرة من المعلومات في هذا الملف، وبما أنه دائري، فهذا يعني أن المعاملات الجديدة تكتب فوق السجلات الأقدم في الملف. وبالتالي فإن كمية البيانات التاريخية التي يمكن استرجاعها من هذا الملف محدودة إلى حد ما. مرة أخرى، يعتمد ذلك على نوع وحدة التخزين وحجم $LogFile. على قرص النظام لنظام يُستخدم بشكل متكرر، من المحتمل أن تحصل فقط على بضع ساعات من السجل، بينما قرص خارجي/ثانوي يحتوي على ملفات نسخ احتياطي، من المحتمل أن يحتوي على معلومات تاريخية أكثر. وملف بحجم 2MB سيحتوي على سجل أقل بكثير من ملف بحجم 256MB. إذن في أي نطاق حجم يمكن تكوين هذا الملف؟ أي شيء من 256 KB وما فوق. يمكن تكوين الحجم إلى 2 GB بهذه الطريقة، "chkdsk D: /L:2097152". كيف يؤثر ملف سجل كبير الحجم على الأداء خارج نطاق هذا النص. عادةً لا يمكن ضبطه أقل من 2048. ومع ذلك فمن الممكن عبر ترقيع untfs.dll: http://code.google.com/p/mft2csv/wiki/Tiny_NTFS
مقدمة سيقوم هذا المحلل بفك وتفريغ الكثير من معلومات المعاملات من $LogFile على NTFS. يتم إنشاء عدة ملفات csv بالإضافة إلى قاعدة بيانات sqlite باسم ntfs.db تحتوي على جميع المعلومات ذات الصلة. المخرجات مفصلة للغاية ومنخفضة المستوى جدًا، مما يعني أنها تتطلب معرفة جيدة بـ NTFS لفهمها. أنواع معاملات Redo المعالجة حاليًا مع فك مخرجات ذي معنى هي:
InitializeFileRecordSegment CreateAttribute DeleteAttribute UpdateResidentValue UpdateNonResidentValue UpdateMappingPairs SetNewAttributeSizes AddindexEntryRoot DeleteindexEntryRoot AddIndexEntryAllocation DeleteIndexEntryAllocation WriteEndOfIndexBuffer SetIndexEntryVcnRoot SetIndexEntryVcnAllocation UpdateFileNameRoot UpdateFileNameAllocation SetBitsInNonresidentBitMap ClearBitsInNonresidentBitMap OpenNonresidentAttribute OpenAttributeTableDump AttributeNamesDump DirtyPageTableDump TransactionTableDump UpdateRecordDataRoot UpdateRecordDataAllocation CompensationlogRecord
قائمة السمات المدعومة حاليًا: $STANDARD_INFORMATION $ATTRIBUTE_LIST $FILE_NAME $OBJECT_ID $SECURITY_DESCRIPTOR $VOLUME_NAME $VOLUME_INFORMATION $DATA $INDEX_ROOT $INDEX_ALLOCATION $REPARSE_POINT $EA_INFORMATION $EA $LOGGED_UTILITY_STREAM
لذا بشكل أساسي جميع السمات مدعومة.
شرح المخرجات المختلفة التي يتم إنشاؤها:
LogFile.csv: ملف csv الرئيسي المُنشأ من المحلل.
LogFile_DataRuns.csv معلومات الإدخال اللازمة لإعادة بناء dataruns
LogFile_DataRunsResolved.csv المخرجات النهائية لـ dataruns المعاد بناؤها
LogFile_INDX_I30.csv جميع سجلات الفهرس المفرغة والمفكوكة (IndexRoot/IndexAllocation)
LogFileJoined.csv مثل LogFile.csv، لكن مع ضم معلومات اسم الملف من $UsnJrnl أو csv من mft2csv.
MFTRecords.bin $MFT وهمي أُعيد إنشاؤه بناءً على سجلات MFT الموجودة في معاملات InitializeFileRecordSegment. يمكن استخدام mft2csv على هذا الملف (تذكر تكوين "broken MFT" و "Fixups" بشكل صحيح).
LogFile_lfUsnJrnl.csv سجلات $UsnJrnl التي تم فكها داخل $LogFile
LogFile_UndoWipe_INDX_I30.csv جميع عمليات undo لمسح فهارس الدليل (INDX).
LogFile_AllTransactionHeaders.csv جميع رؤوس المعاملات المفكوكة.
LogFile_BitsInNonresidentBitMap.csv جميع عمليات SetBitsInNonresidentBitMap المفكوكة.
LogFile_DirtyPageTable32bit.csv و LogFile_DirtyPageTable64bit.csv جميع الإدخالات في كل عملية DirtyPageTableDump مفكوكة لكل من نظام 32bit و 64bit.
LogFile_Mft_ObjectId_Entries.csv سمات $ObjectId المفكوكة.
LogFile_ObjIdO.csv جميع عمليات الفك من ملف النظام $ObjId:$O.
LogFile_OpenAttributeTable.csv جميع الإدخالات في كل عملية OpenAttributeTableDump مفكوكة.
LogFile_QuotaO.csv جميع عمليات الفك من ملف النظام $Quota:$O.
LogFile_QuotaQ.csv جميع عمليات الفك من ملف النظام $Quota:$Q.
LogFile_RCRD.csv جميع رؤوس سجلات RCRD المفكوكة.
LogFile_ReparseR.csv جميع عمليات الفك من ملف النظام $Reparse:$R.
LogFile_SecureSDH.csv جميع عمليات الفك من ملف النظام $Secure:$SDH.
LogFile_SecureSII.csv جميع عمليات الفك من ملف النظام $Secure:$SII.
LogFile_SecurityDescriptors.csv واصفات الأمان المفكوكة. يمكن أن يكون المصدر من $SECURITY_DESCRIPTOR أو $Secure:$SDS.
LogFile_SlackAttributeNamesDump.csv جميع الإدخالات من معاملات AttributeNamesDump المفكوكة الموجودة في المساحة المهملة.
LogFile_SlackOpenAttributeTable.csv جميع الإدخالات من معاملات OpenAttributeTableDump المفكوكة الموجودة في المساحة المهملة.
LogFile_TransactionTable.csv معاملات TransactionTableDump المفكوكة.
LogFile_Filenames.csv جميع أسماء الملفات المحلولة مع MftRef و MftRefSeqNo و Lsn.
LogFile_TxfData.csv البيانات المفكوكة من $DATA:$TXF_DATA في $LOGGED_UTILITY_STREAM.
LogFile_UpdateFileName_I30.csv جميع عمليات الفك لـ UpdateFileNameRoot و UpdateFileNameAllocation لكل من عمليات redo و undo.
LogFile_CompensationlogRecord.csv جميع عمليات الفك لـ CompensationlogRecord. غير ذي صلة بـ nt5.x.
Ntfs.db ملف قاعدة بيانات sqlite بجداول مكافئة تقريبًا لملفات csv أعلاه. تحتوي قاعدة البيانات على 5 جداول: DataRuns IndexEntries LogFile LogFileTmp (جدول مؤقت يُستخدم عند إعادة إنشاء dataruns). UsnJrnl
الطوابع الزمنية يتم عرض الإعدادات الافتراضية بتوقيت UTC 0.00، وبدقة nanosecond. التنسيق الافتراضي هو YYYY-MM-DD HH:MM:SS:MSMSMS:NSNSNSNS. يمكن تكوينها. تشير الطوابع الزمنية المختلفة إلى: CTime تعني وقت إنشاء الملف. ATime تعني وقت تعديل الملف. MTime تعني وقت تعديل إدخال MFT. RTime تعني وقت آخر وصول للملف.
إعادة بناء dataruns.
العديد من العمليات على نظام الملفات ستُشغّل معاملة في $LogFile. تلك المتعلقة بسمة $DATA، أي محتوى الملف، تم تحديدها حتى الآن على أنها؛
InitializeFileRecordSegment CreateAttribute UpdateMappingPairs SetNewAttributeSizes
كلها تترك معلومات مختلفة في $LogFile. تتصرف تعديلات البيانات المقيمة بشكل مختلف ولا يمكن إعادة بنائها بهذه البساطة، على الأقل على وحدات تخزين NTFS القادمة من إصدارات Windows الحديثة.
InitializeFileRecordSegment هو عندما يتم إنشاء ملف جديد. وبالتالي سيكون لديه سمة $FILE_NAME، بالإضافة إلى محتوى سمة $DATA الأصلي، بما في ذلك dataruns. بما أن $LogFile دائري، والأحداث الأقدم تُكتب فوقها الأحدث، فإن التحدي مع $LogFile هو الحصول على معلومات تعود بعيدًا بما يكفي في الزمن. ومع ذلك، إذا كان InitializeFileRecordSegment موجودًا، فيجب أن نكون قادرين على إعادة بناء كل شيء، لأن جميع السجلات المكتوبة بعده ستكون متاحة أيضًا. سيكون لدينا أيضًا معلومات حول الإزاحة إلى قائمة datarun. هذه إزاحة نسبية تُحسب من بداية سمة $DATA. هذه معلومات مهمة يجب توفرها عند حساب مكان تعديل UpdateMappingPairs في قائمة datarun.