
مُفحص ملفات الارتباط (الاختصارات) في ويندوز
أداة فحص جنائي لملفات الروابط في ويندوز (أي اختصارات ويندوز)
lifer هي أداة سطر أوامر تعمل على ويندوز أو أنظمة يُونكس، مستوحاة من الورقة البحثية "معنى ملفات الروابط في الفحوصات الجنائية" بقلم هاري بارسونج والمتاحة هنا. بدأت حياتها كأداة خفيفة كتبتها لاستخراج معلومات معينة من ملفات الروابط للمساعدة في الاستفسارات التي كنت أجريها أثناء عملي كمحلل جنائي حاسوبي. والآن بعد تقاعدي، أسعى لتوسيع نطاق فائدتها ونشرها ليستفيد منها الآخرون.
المعلومات المستخرجة تتوافق مع وثيقة المواصفات المفتوحة من مايكروسوفت 'MS-SHLLNK' والتي يمكن العثور عليها عبر الإنترنت هنا. في وقت كتابة هذه السطور، تم تنفيذ معظم أجزاء الإصدار 4.0 من المواصفات. آمل في المستقبل تنفيذ تحليل ملفات قوائم الانتقال غير المفتوحة.
تفاصيل الملفات الموجودة في دليل Test وكيفية استخدامها موجودة في ملف '.\Test\Tests.txt'. فيما يلي ملخص موجز...
بمجرد تثبيت الأداة، افتح نافذة سطر أوامر (مثل bash أو Powershell) ومن المجلد './lifer/src' اكتب:
lifer -s ./Test/Test1.lnk
يجب أن يعطيك هذا الناتج:
LINK FILE -------------- .\Test\Test1.lnk
{**OPERATING SYSTEM (stat) DATA**}
Last Accessed: 2017-04-18 20:28:19 (UTC)
Last Modified: 2017-04-18 20:28:19 (UTC)
Last Changed: 2017-04-18 20:28:19 (UTC)
{**LINK FILE EMBEDDED DATA**}
{S_2.1 - ShellLinkHeader}
Attributes: 0x00000020 FILE_ATTRIBUTE_ARCHIVE
Creation Time: 2008-09-12 20:27:17 (UTC)
Access Time: 2008-09-12 20:27:17 (UTC)
Write Time: 2008-09-12 20:27:17 (UTC)
Target Size: 0 bytes
{S_2.3 - LinkInfo}
{S_2.3.1 - LinkInfo - VolumeID}
Drive Type: DRIVE_FIXED
Drive Serial No: 307A8A81
Volume Label: [EMPTY]
Local Base Path: C:\test\a.txt
{S_2.4 - StringData}
{S_2.4 - StringData - RELATIVE_PATH}
Relative Path: .\a.txt
{S_2.4 - StringData - WORKING_DIR}
Working Dir: C:\test
{S_2.5 - ExtraData}
{S_2.5.10 - ExtraData - TrackerDataBlock}
MachineID: chris-xps
Droid1: {94C77840-FA47-46C7-B356-5C2DC6B6D115}
Droid2: {7BCD46EC-7F22-11DD-9499-00137216874A}
UUID Sequence: 153
UUID Time: 2008-09-10 10:23:17 (UTC)
UUID Node (MAC): 00:13:72:16:87:4A
ملاحظة: القسم أعلاه بعنوان '{OPERATING SYSTEM (stat) DATA}' سيكون له تواريخ مختلفة حيث تعتمد على تواريخ تثبيتك ووصولك لذلك الملف الارتباطي على نظامك الخاص. أما البيانات المضمنة فستكون هي نفسها.
يمكن الحصول على ناتج أكثر شمولاً (بما في ذلك أختام زمنية أكثر دقة) بحذف الخيار '-s'.
يمكن الحصول على أكبر قدر من التفاصيل حول ملف ارتباط باستخدام الخيار '-i' الذي سيطبع أيضاً تفاصيل معروفة عن أي كائنات idlist. هذا الخيار غير متوافق مع الخيار '-s'.
يمكن تحليل جميع ملفات الارتباط في دليل (مجلد) بمجرد تمرير اسم الدليل:
lifer ./src/Test/WinXP
(للإيجاز لم يتم عرض الناتج).
يمكن إنشاء ناتج أكثر فائدة لعدد من ملفات الارتباط عن طريق إرسال الناتج كقائمة مفصولة بعلامات جدولة (أو فواصل) إلى ملف يمكن استيراده لاحقاً إلى جدول بيانات للتحليل في وقت فراغك. يمكن تحقيق ذلك كما يلي:
lifer -o tsv ./src/Test/WinXP > WinXP.tsv
أو
lifer -so tsv ./src/Test/WinXP > WinXP.tsv
لحصول على ملف تم حذف بعض البيانات الزائدة وغير المثيرة للاهتمام منه.
قد تحتوي السلاسل النصية داخل ملفات الارتباط أحياناً على فواصل. نظراً لأن هذا يتعارض مع محدد الحقل، فقد تم استبدال أي فواصل داخل السلاسل بفواصل منقوطة (أي استبدال ',' بـ ';'). هذا صحيح فقط لخيار '-o csv' وليس للخيار الافتراضي '-o txt' أو خيارات '-o tsv' و '-o xml'.
قم بزيارة صفحة الإصدارات واختر الملف التنفيذي المناسب لجهازك من أحدث إصدار وقم بتنزيله. أعد تسمية الملف التنفيذي إلى 'lifer' (أو 'lifer.exe' لويندوز). تأكد من أن لديه السمات الصحيحة ليعمل كملف تنفيذي، ثم ضعه في مجلد يحتوي على ملفات الارتباط التي تريد فحصها أو أضف موقعه إلى متغير PATH الخاص بك وستكون جاهزاً للعمل.
أول شيء يجب فعله هو التأكد من تثبيت git على جهازك/جهازك المحمول؛ في نافذة سطر أوامر، انتقل إلى الدليل الجذر المطلوب لمشروعك وأصدر الأمر:
git clone https://github.com/Paul-Tew/lifer.git
سيتم إنشاء دليل جديد باسم 'lifer'.
(قد يعمل هذا لتثبيتات ماك ولكن ليس لدي المال الكافي لاختباره بالتأكيد...) نظراً لأن هذه الأداة أساسية جداً، فإن التبعيات ضئيلة، تأكد من تثبيت مترجم 'gcc' ومكتبات التطوير الخاصة بـ 'libc'، هذا كل شيء. ابدأ نافذة طرفية وانتقل إلى الدليل ./lifer/src. أصدر الأمر:
gcc -Wall ./lifer.c ./liblife/liblife.c ./libbin2hex/libbin2hex.c -o lifer
بشرط عدم ظهور أي تحذيرات أو أخطاء، يجب أن يكون لديك الآن ملف تنفيذي 'lifer' في الدليل، قد ترغب في التحقق من ذلك بإصدار الأمر:
ls -la
إذا كان كل شيء على ما يرام، يمكنك اختبار أن lifer يعمل عن طريق تجربته على الملف المحدد في وثيقة مايكروسوفت والذي قمت بتضمينه كجزء من مستودع git الذي قمت باستنساخه ويجب أن يكون موجوداً في الدليل ./Test/. يمكنك القيام بذلك بإصدار الأمر:
./lifer ./Test/Test.lnk
يمكنك أيضاً اختبار أن lifer يعمل على مجموعة من ملفات الارتباط الموجودة في دليل بإصدار الأمر:
./lifer ./Test/WinXP/
قم بتثبيت الأداة على نظام التشغيل بإصدار الأمر:
sudo install ./lifer /usr/bin/
هذا سيمكنك من استخدام lifer في أي مكان على نظامك دون تحديد بادئة الدليل (مثلاً lifer ./Test/Test.lnk بدلاً من ./lifer ./Test/Test.lnk)
يأتي مشروع lifer على github مع حل مشروع Visual Studio 2017، لذا فإن أسهل طريقة لإنشاء ملف تنفيذي لويندوز هي تثبيت Visual Studio 2017 أولاً. هناك إصدار مجاني (يُعرف بإصدار 'community') متاح هنا. بعد تثبيت Visual Studio:
cd "F:\\lifer\src\x64\Debug\"
.\lifer.exe ..\..\Test\Test1.lnk
من الممكن إنشاء lifer في ويندوز دون تثبيت Visual Studio ولكنك ستظل بحاجة إلى تنزيل وتثبيت أدوات بناء Visual C++ المتاحة هنا بمجرد التثبيت، يمكن بناء lifer في الدليل ./src/ بإصدار الأمر:
CL lifer.c .\liblife\liblife.c .\Win\dirent.c .\Win\getopt.c .\libbin2hex\libbin2hex.c
كانت 'lifer' في الأصل أداة خاصة بلينكس/GNU فقط، لم تكن محمولة حقاً إلى ويندوز حتى وجدت حلولاً للعقبات الرئيسية المتمثلة في التنقل في الدليل وتحليل خيارات سطر الأوامر بنفس الطريقة التي يقوم بها GNU. لهذا، أنا ممتن بشدة للمشروعين التاليين:
يُشجع المستخدمون على قراءة الورقة البحثية قبل إسناد أي معنى للنتائج. لا ينبغي إسناد أي نتائج إلى هذه الأداة دون فهم كامل لما يمثله الناتج؛ وهذا ينطبق بشكل خاص على مسائل الوقائع المقررة في محكمة قانونية. في مثل هذه الحالات، يقع على عاتق المستخدم فهم كلتا الوثيقتين المذكورتين بشكل كامل بالإضافة إلى فهم شامل لكيفية تعامل ويندوز وأنظمة التشغيل الأخرى مع إنشاء ونقل وحذف هذه الملفات. كما أن المعرفة العملية بكيفية قيام 'lifer' بتفسير وعرض البيانات مطلوبة أيضاً (وهذا يتطلب قراءة وفهم الكود).
أنا مجرد مبرمج علم نفسه بنفسه، لذلك لا شك أن هناك الكثير من الأخطاء و 'المفاجآت' في الكود. لهذا، لا أقدم أي وعود على الإطلاق بأن هذه الأداة لن تضر نظامك. لقد حاولت جاهداً ألا أعطل جهازك، ولكن الطريق إلى الجحيم مفروش بالنوايا الحسنة...
هذه المادة مُقدمة "كما هي" دون أي ضمان من أي نوع، سواء كان صريحاً أو ضمنياً، بما في ذلك على سبيل المثال لا الحصر، الضمانات الضمنية لقابلية التسويق، الملاءمة لغرض معين، أو عدم الانتهاك. بعض السلطات القضائية لا تسمح باستبعاد الضمانات الضمنية، لذلك قد لا ينطبق عليك الاستبعاد أعلاه. في أي حال، لن أكون مسؤولاً تجاه أي طرف عن أي أضرار مباشرة أو غير مباشرة أو خاصة أو تبعية أخرى ناتجة عن أي استخدام لهذه المادة بما في ذلك، على سبيل المثال لا الحصر، أي أرباح مفقودة، انقطاع الأعمال، فقدان البرامج أو البيانات الأخرى على نظام معالجة المعلومات الخاص بك أو غير ذلك، حتى لو تم إبلاغنا صراحةً بإمكانية حدوث مثل هذه الأضرار.
Paul Tew - مارس 2020