Linux और ext3 / 4 में कच्चे डिवाइस में ऑफसेट से इनकोड / फाइल का रिवर्स लुकअप?


6

लिनक्स में, एक कच्ची डिस्क डिवाइस में एक ऑफसेट दिया जाता है, क्या विभाजन + इनोड पर वापस मैप करना संभव है?

उदाहरण के लिए, मान लें कि मुझे पता है कि स्ट्रिंग "xyz" बाइट ऑफसेट 1000000 / देव / sda पर समाहित है: (उदा। xxd -l 100s -s 1000000 / dev / sda एक डंप दिखाता है जो "xyz" से शुरू होता है)

1) मैं यह कैसे पता लगाऊं कि कौन सा विभाजन (यदि कोई है) 1000000 ऑफसेट में स्थित है (मुझे लगता है कि यह आसान है, लेकिन पूर्णता के लिए यह शामिल है)

2) मान लें कि ऑफसेट एक विभाजन में स्थित है, मैं यह कैसे पता लगा सकता हूं कि यह किस इनोड का है (या यह निर्धारित करता है कि यह खाली स्थान का हिस्सा है) संभवतः यह फाइलसिस्टम विशिष्ट है, जिस स्थिति में कोई भी यह जानता है कि ext4 और ext3 के लिए यह कैसे करना है?


1
यह निश्चित रूप से संभव है और कुछ साल पहले मैंने HOWTO को इंटरनेट में कहीं देखा था। चाल में फाइलसिस्टम और विभाजन तालिका के विभिन्न मापदंडों पर कुछ गणित शामिल है। इसके लिए खोज करने का प्रयास करें। यह उपयोगी हो सकता है: unix.stackexchange.com/questions/37119/...
Serge

जवाबों:


12

मुझे बस एक समान काम करना था, इसलिए मैंने सोचा कि मैं अपना समाधान साझा करूंगा।

आप देख सकते हैं कि किस ड्राइव बाइट ऑफ़सेट में udisks --show-info आउटपुट के 'ऑफसेट' और 'साइज़' तत्वों की जाँच होती है; जैसे

user@host:~$ sudo udisks --show-info /dev/sda1 | grep -i 'offset'
    offset:                    1048576
    alignment offset:          0

विभाजन में बाइट ऑफसेट प्राप्त करने के लिए डिस्क ऑफसेट से इस ऑफसेट को घटाएं। तो डिस्क ऑफसेट (10000000) / देव / एसडीए में विभाजन ऑफसेट है (10000000 - 1048576) = 8951424 / देव / sda1 में

आप निम्न कमांड का उपयोग करके पता लगा सकते हैं कि विभाजन में कितने बड़े ब्लॉक हैं:

user@host:~$ sudo tune2fs -l /dev/sda1  | grep -i 'block size'
Block size:               4096

ब्लॉक बाइट को ब्लॉक ऑफसेट द्वारा निर्धारित करने के लिए विभाजन बाइट ऑफसेट को विभाजित करें, इस मामले में 8951424/4096 = 2185

उस ब्लॉक में कौन सा इनकोड व्याप्त है, यह जानने के लिए निम्नलिखित कमांड चलाएँ:

user@host:~$ sudo debugfs -R "icheck 2185" /dev/sda1
debugfs 1.41.11 (14-Mar-2010)
Block   Inode number
2185    123456 

फिर निम्न निर्देश यह पता लगाने के लिए कि इनोड के लिए फाइलनेम क्या है

user@host:~$ sudo debugfs -R "ncheck 123456" /dev/sda1
debugfs 1.41.11 (14-Mar-2010)
Inode   Pathname
123456  /tmp/some-filename.txt

इस पर एक लंबा विवरण है http://www.randomnoun.com/wp/2013/09/12/determining-the-file-at-a-specific-vmdk-offset

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.