
वोलैटिलिटी 3 को Rust में पोर्ट किया गया। समान आउटपुट, कहीं अधिक तेज़।
Volatility 3 मेमोरी फोरेंसिक्स फ्रेमवर्क का Python से Rust में एक पोर्ट। यह वही मेमोरी इमेज पढ़ता है, वही प्लगइन्स समान विकल्पों के साथ चलाता है, और वही आउटपुट बाइट-दर-बाइट प्रिंट करता है, काफ़ी अधिक तेज़ी से।
यह प्रोजेक्ट Volatility 3 का एक पोर्ट है और इसलिए यह Volatility Software License 1.0 के अंतर्गत एक "Addition" है, अतः इसे उसी लाइसेंस के अंतर्गत प्रकाशित किया गया है। पूरा पाठ LICENSE में और ऑनलाइन https://www.volatilityfoundation.org/license/vsl-v1.0 पर उपलब्ध है। प्रत्येक स्रोत फ़ाइल में वह सूचना बनी रहती है जो दर्ज करती है कि वह किससे व्युत्पन्न की गई थी।
यह प्रोजेक्ट Volatility Foundation से संबद्ध या उसके द्वारा समर्थित नहीं है। Volatility नाम केवल यह बताने के लिए प्रयोग किया गया है कि यह किसका पोर्ट है।
Rust 1.85 या नया, फिर:
cargo build --release
बाइनरी target/release/vol-rs पर आती है। कुछ भी वैकल्पिक आवश्यक नहीं है। सिंबल डीकंप्रेशन, RC4, DES, AES, YARA मिलान, PNG लेखन और tar आर्काइव सभी अंतर्निहित हैं, जहाँ Python संस्करण pycryptodomex, yara-python और pillow की ओर जाता है। निर्देशों को capstone 5.0.6 द्वारा डिकोड किया जाता है, वही लाइब्रेरी जिसका उपयोग Python संस्करण समान कॉलमों के लिए करता है, साथ में इंस्टॉल होने के बजाय कंपाइल इन किया गया है।
./target/release/vol-rs -f memory.raw windows.pslist.PsList
./target/release/vol-rs -f memory.lime linux.bash.Bash
./target/release/vol-rs -f memory.raw -r csv windows.netscan.NetScan
./target/release/vol-rs windows.malfind.Malfind --help
./target/release/vol-rs --list-plugins
Python संस्करण जो भी विकल्प लेता है, वह यहाँ भी लिया जाता है, उन्हीं नामों और उन्हीं डिफ़ॉल्ट्स के साथ, जिनमें -o, -r, -s, -c, -e, --filters, --hide-columns, --save-config, --stackers और --single-swap-locations शामिल हैं। प्रत्येक प्लगइन के अपने विकल्प भी मेल खाते हैं, जैसा कि सहायता पृष्ठ दिखाते हैं: उनमें से सभी 197 Python वाले के समान हैं, अक्षरशः।
प्रतीक पैक $XDG_DATA_HOME/vol-rs/symbols में जाते हैं, या जब वह चर सेट न हो तो ~/.local/share/vol-rs/symbols में। कहीं और रखे पैक को --symbol-dirs या VOLRS_SYMBOL_PATH पर्यावरण चर के माध्यम से नामित किया जाता है। जिस Windows कर्नेल का कोई पैक वर्णन नहीं करता, उसे Microsoft प्रतीक सर्वर पर खोजा जाता है, और वहाँ मिली डेटाबेस को प्रतीक फ़ाइल में बदलकर रखा जाता है, इसलिए लाना एक ही बार होता है। डेटाबेस स्वयं ~/.cache/vol-rs के अंतर्गत कैश किया जाता है और प्रतीक फ़ाइल पैक के बगल में लिखी जाती है।
दोनों पक्षों को समान कैप्चर पर चलाया गया और अंतर निकाला गया, जिसमें हेडर फ़्रेमिंग और अनुगामी न्यूलाइनें शामिल हैं:
| कैप्चर | चलाए गए प्लगइन | समान |
|---|---|---|
| Windows 11 24H2, build 26100, 4.3 GB क्रैश डंप | 113 | 105 |
| Ubuntu 22.04, kernel 6.5.0-41, 4.3 GB VMware स्नैपशॉट | 69 | 61 |
| Windows 10 19041, 2.0 GB क्रैश डंप | 114 | 112 |
| Windows XP, 512 MB रॉ कैप्चर | 114 | 113 |
| Linux 3.2, 512 MB रॉ कैप्चर | 60 | 60 |
जो आठ प्लगइन एक पैटर्न या नियम लेते हैं, उन्हें एक दिया गया, दोनों पक्षों पर समान, बजाय छोड़े जाने के। इस तरह पाई गई तीन भिन्नताएँ इस पोर्ट में दोष थीं और उन्हें ठीक कर दिया गया है।
| अन्य जाँच | परिणाम |
|---|---|
| निकालने वाले प्लगइन द्वारा लिखी गई फ़ाइलें | 24,441 की तुलना की गई, हर एक समान |
| प्लगइन सहायता पृष्ठ | 197 में से 197 समान |
| रेंडरर | csv, json, jsonl, quick और pretty की कई प्लगइन पर तुलना की गई, सभी समान |
निर्देशों को उसी लाइब्रेरी द्वारा डिकोड किया जाता है जो Python संस्करण उपयोग करता है, संस्करण 5.0.6 पर संकलित, जो वह संस्करण है जिस पर इन तुलनाओं के लिए संदर्भ पिन किया गया था। संस्करण 5.0.7 एक और निर्देश रूप को डिकोड करता है, जिससे Windows 10 कैप्चर पर windows.mbrscan की लगभग दो प्रतिशत पंक्तियों की वर्तनी बदल जाती है और कुछ नहीं।
यहाँ उपयोग किए गए कैप्चर के लिए Windows प्रतीक Volatility Foundation द्वारा प्रकाशित प्रतीक पैक से आते हैं, जिन्हें दोनों उपकरण पढ़ते हैं, सिवाय Windows 11 24H2 कर्नेल के, जिसका कोई पैक वर्णन नहीं करता और जिसका विवरण Microsoft द्वारा प्रकाशित डेटाबेस से बनाया जाता है। पहले के Windows 10 19045 कैप्चर के लिए इस पोर्ट द्वारा उसी डेटाबेस से इस तरह बनाया गया विवरण Python संस्करण द्वारा बनाए गए विवरण से बिल्कुल मेल खाता था, सभी 16 आधार प्रकारों, 293 प्रगणनाओं, 1,653 संरचनाओं और 40,007 प्रतीकों में।
प्रत्येक कैप्चर पर दस सबसे बड़े अंतराल। हर आँकड़ा, और हर तुलना किया गया प्लगइन, BENCHMARKS.md में है।
| प्लगइन | Rust | Python | तेज़ |
|---|---|---|---|
windows.malfind.Malfind | 0.494 s | 392 s | x793 |
windows.malware.suspicious_threads.SuspiciousThreads | 0.621 s | 488 s | x786 |
windows.malware.malfind.Malfind | 0.569 s | 393 s | x691 |
windows.suspicious_threads.SuspiciousThreads | 0.739 s | 461 s | x624 |
windows.hollowprocesses.HollowProcesses | 0.646 s | 326 s | x504 |
windows.malware.hollowprocesses.HollowProcesses | 0.661 s | 322 s | x487 |
layerwriter.LayerWriter | 0.044 s | 17.4 s | x395 |
configwriter.ConfigWriter | 0.046 s | 16.7 s | x363 |
windows.vadinfo.VadInfo | 1.36 s | 488 s | x358 |
windows.verinfo.VerInfo | 0.541 s | 159 s | x294 |
| प्लगइन | Rust | Python | तेज़ |
|---|---|---|---|
linux.sockstat.Sockstat | 6.36 s | 2030 s | x319 |
timeliner.Timeliner | 9.56 s | 1070 s | x112 |
linux.lsmod.Lsmod | 0.282 s | 29.0 s | x103 |
linux.psscan.PsScan | 1.09 s | 111 s | x102 |
linux.mountinfo.MountInfo | 0.697 s | 70.3 s | x101 |
yarascan.YaraScan | 0.909 s | 79.6 s | x88 |
linux.malware.netfilter.Netfilter | 0.6 s | 49.9 s | x83 |
linux.ptrace.Ptrace | 0.253 s | 20.4 s | x81 |
linux.pstree.PsTree | 0.213 s | 16.2 s | x76 |
linux.ip.Link | 0.22 s | 16.4 s | x74 |
| प्लगइन | Rust | Python | तेज़ |
|---|---|---|---|
windows.malware.suspicious_threads.SuspiciousThreads | 0.677 s | 346 s | x511 |
windows.suspicious_threads.SuspiciousThreads | 0.677 s | 343 s | x507 |
windows.malfind.Malfind | 0.734 s | 320 s | x436 |
windows.hollowprocesses.HollowProcesses | 0.565 s | 244 s | x432 |
windows.malware.malfind.Malfind | 0.73 s | 313 s | x429 |
windows.vadinfo.VadInfo | 0.983 s | 412 s | x419 |
windows.malware.hollowprocesses.HollowProcesses | 0.648 s | 240 s | x370 |
configwriter.ConfigWriter | 0.043 s | 14.5 s | x337 |
layerwriter.LayerWriter | 0.039 s | 11.9 s | x304 |
windows.registry.hivelist.HiveList | 0.038 s | 7.54 s | x198 |
| प्लगइन | Rust | Python | तेज़ |
|---|---|---|---|
windows.suspicious_threads.SuspiciousThreads | 0.184 s | 34.5 s | x188 |
windows.malware.suspicious_threads.SuspiciousThreads | 0.2 s | 33.2 s | x166 |
windows.malware.hollowprocesses.HollowProcesses | 0.209 s | 31.0 s | x148 |
windows.vadinfo.VadInfo | 0.263 s | 38.5 s | x146 |
windows.hollowprocesses.HollowProcesses | 0.207 s | 28.1 s | x136 |
windows.mftscan.ResidentData | 0.205 s | 27.6 s | x135 |
windows.malfind.Malfind | 0.203 s | 26.3 s | x130 |
windows.mftscan.MFTScan | 0.393 s | 48.2 s | x123 |
windows.malware.malfind.Malfind | 0.24 s | 28.2 s | x118 |
windows.verinfo.VerInfo | 0.215 s | 25.1 s | x117 |
| प्लगइन | Rust | Python | तेज़ |
|---|---|---|---|
linux.library_list.LibraryList | 0.525 s | 917 s | x1747 |
linux.pscallstack.PsCallStack | 0.31 s | 98.8 s | x319 |
linux.lsmod.Lsmod | 0.059 s | 9.58 s | x162 |
linux.malware.check_idt.Check_idt | 0.11 s | 15.2 s | x138 |
linux.check_idt.Check_idt | 0.115 s | 15.1 s | x131 |
linux.tty_check.tty_check | 0.114 s | 14.3 s | x125 |
linux.malware.tty_check.Tty_Check | 0.129 s | 15.0 s | x116 |
linux.malware.check_modules.Check_modules | 0.055 s | 5.74 s | x104 |
linux.kallsyms.Kallsyms | 0.278 s | 28.9 s | x104 |
linux.capabilities.Capabilities | 0.056 s | 5.82 s | x104 |