
Windows लिंक फ़ाइल (शॉर्टकट) परीक्षक
विंडोज लिंक फ़ाइल जांच (यानी विंडोज शॉर्टकट) के लिए एक फोरेंसिक उपकरण
'lifer' एक विंडोज या *nix कमांड-लाइन टूल है जो हैरी पार्सनेज द्वारा लिखित श्वेतपत्र 'द मीनिंग ऑफ लिंक फाइल्स इन फोरेंसिक एग्जामिनेशन' से प्रेरित है और यहाँ उपलब्ध है। इसकी शुरुआत एक हल्के उपकरण के रूप में हुई थी जिसे मैंने लिंक फ़ाइलों से कुछ जानकारी निकालने के लिए लिखा था, ताकि कंप्यूटर फोरेंसिक विश्लेषक के रूप में काम करते समय मेरी जांच में सहायता मिल सके। अब मैं सेवानिवृत्त हो गया हूं लेकिन मैं इसकी उपयोगिता बढ़ाने और इसे प्रकाशित करने की योजना बना रहा हूं ताकि दूसरे लाभ उठा सकें।
निकाली गई जानकारी माइक्रोसॉफ्ट ओपन स्पेसिफिकेशन दस्तावेज़ 'MS-SHLLNK' के अनुसार है, जो ऑनलाइन यहाँ पाया जा सकता है। लेखन के समय, विनिर्देश संस्करण 4.0 के अधिकांश भाग लागू किए गए हैं। मुझे उम्मीद है कि भविष्य में अनओपन किए गए जंप सूची फ़ाइलों का पार्सिंग लागू करूंगा।
टेस्ट निर्देशिका में मिलने वाली फ़ाइलों और उनके उपयोग के विवरण '.\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/
कमांड जारी करके टूल को OS पर स्थापित करें:
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
Visual Studio स्थापित किए बिना विंडोज में lifer बनाना संभव है, लेकिन आपको अभी भी यहाँ उपलब्ध Visual C++ बिल्ड टूल्स डाउनलोड और स्थापित करने की आवश्यकता होगी। एक बार स्थापित होने के बाद, ./src/ निर्देशिका में कमांड जारी करके lifer बनाया जा सकता है:
CL lifer.c .\liblife\liblife.c .\Win\dirent.c .\Win\getopt.c .\libbin2hex\libbin2hex.c
'lifer' मूल रूप से केवल Linux/GNU टूल था जो विंडोज में वास्तव में पोर्टेबल नहीं था जब तक कि मुझे निर्देशिका को नेविगेट करने और GNU के समान तरीके से कमांड-लाइन विकल्पों को पार्स करने की मुख्य बाधाओं का समाधान नहीं मिला। इसके लिए मैं निम्नलिखित दो परियोजनाओं का गहरा आभारी हूं:
उपयोगकर्ताओं को परिणामों को कोई अर्थ देने से पहले श्वेतपत्र पढ़ने के लिए प्रोत्साहित किया जाता है। बिना पूरी समझ के कि आउटपुट क्या दर्शाता है, इस टूल को कोई भी परिणाम नहीं दिया जाना चाहिए; यह विशेष रूप से अदालत में निर्धारण के लिए तथ्यों के मामलों पर लागू होता है। ऐसे मामलों में उपयोगकर्ता का कर्तव्य है कि वह उपरोक्त दोनों दस्तावेज़ों को पूरी तरह से समझे, साथ ही इस बात की व्यापक समझ रखे कि विंडोज और अन्य OS ऐसी फ़ाइलों के निर्माण, स्थानांतरण, विलोपन को कैसे संभालते हैं। 'lifer' ने डेटा की व्याख्या और प्रस्तुति कैसे की है, इसकी कार्यशील जानकारी भी आवश्यक है (इसके लिए कोड को पढ़ना और समझना आवश्यक है)।
मैं केवल एक स्व-सिखाया प्रोग्रामर हूं, इसलिए इसमें कोई संदेह नहीं है कि कोड में बहुत सारी त्रुटियां और 'गॉचास' हैं। इसके लिए, मैं बिल्कुल कोई वादा नहीं करता कि यह टूल आपके सिस्टम को नुकसान नहीं पहुंचाएगा। मैंने आपकी मशीन को नुकसान न पहुंचाने की पूरी कोशिश की, लेकिन नरक की सड़क अच्छे इरादों से बिछी होती है...
यह सामग्री "जैसी है" प्रदान की गई है, बिना किसी प्रकार की वारंटी के, व्यक्त या निहित, जिसमें शामिल हैं, लेकिन इन्हीं तक सीमित नहीं, व्यापारिकता, किसी विशेष उद्देश्य के लिए उपयुक्तता, या गैर-उल्लंघन की निहित वारंटी। कुछ क्षेत्राधिकार निहित वारंटी के बहिष्कार की अनुमति नहीं देते हैं, इसलिए उपरोक्त बहिष्कार आप पर लागू नहीं हो सकता है। किसी भी स्थिति में मैं इस सामग्री के किसी भी उपयोग के लिए किसी भी पक्ष के प्रति किसी भी प्रत्यक्ष, अप्रत्यक्ष, विशेष या अन्य परिणामी हानियों के लिए उत्तरदायी नहीं होऊंगा, जिसमें शामिल हैं, बिना किसी सीमा के, कोई भी खोया हुआ लाभ, व्यवसाय में रुकावट, आपकी सूचना प्रबंधन प्रणाली या अन्यथा पर प्रोग्राम या अन्य डेटा की हानि, भले ही हमें ऐसी हानियों की संभावना के बारे में स्पष्ट रूप से सलाह दी गई हो।
Paul Tew - March 2020