एक पुरानी फ्लॉपी छवि फ़ाइल (.ima प्रारूप) को माउंट करना - यह कितना कठिन हो सकता है?


10

मैं mountआर्चलिनक्स पर .ima प्रारूप (फ्लॉपी के लिए कच्चे डंप, .img के समान ) में एक फ्लॉपी छवि फ़ाइल का उपयोग करने और करने का प्रयास कर रहा हूं ।

यह फ़ाइल 30 के सेट का हिस्सा है। यह बूट करने योग्य नहीं है, बल्कि एक सेट की निरंतरता है। उद्देश्य स्थापना या क्लोनिंग के लिए हेरफेर नहीं है। मुझे डिस्क पर अन्य डेटा के साथ मौजूद दस्तावेज़ में दिलचस्पी है।

छवि फ़ाइल जानकारी

यहाँ इस छवि फ़ाइल के बारे में कुछ जानकारी दी गई है:

# file U19.IMA
U19.IMA: PC formatted floppy with no filesystem

# fdisk -lu U19.IMA
Disk U19.IMA: 1.4 MiB, 1474560 bytes, 2880 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

(parted) print
Error: /home/meh/Downloads/U19.IMA: unrecognised disk label
Model: (file)
Disk /home/meh/Downloads/U19.IMA: 1475kB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:

माउंट फेल

यहाँ सामान्य त्रुटि संदेश है:

mount -o ro,loop U19.IMA /mnt/cd/
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
missing codepage or helper program, or other error

मैंने कई संयोजनों को -t यानी ntfs, msdos, iso9660, vfat के साथ टाइप करने की कोशिश की, और हमेशा वही त्रुटि मिलती रही। मैंने सोचा कि यह शायद किसी प्रकार का ntfs फ़ाइल प्रारूप है, लेकिन ntfs-3G बहुत बेहतर नहीं करता है इसलिए यह नहीं है:

# ntfs-3g -o loop U19.IMA /mnt
NTFS signature is missing.
Failed to mount '/home/meh/Downloads/U19.IMA': Invalid argument
The device '/home/meh/Downloads/U19.IMA' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?

# ntfsclone -r -o file.img U19.IMA
ntfsclone v2013.1.13 (libntfs-3g)
ERROR: Input file is not an image! (invalid magic)

किसी ने सुझाव दिया कि शायद मिनिक्स एफ.एस. हालांकि यह स्पष्ट नहीं है कि क्या मैं वास्तव में अपने वर्तमान विन्यास के साथ इस तरह के फाइल सिस्टम को माउंट कर सकता हूं जो मैंने कोशिश की:

mount -t minix -o loop U19.IMA /mnt/cd
which gave the generic error but there was this at the bottom of the log:
VFS: Can't find a Minix filesystem V1 | V2 | V3 on device loop0.

ऐसा लगता है कि यह निर्णायक नहीं है, क्योंकि जब आप एक विशिष्ट प्रकार की फाइल सिस्टम निर्दिष्ट करते हैं, तो आपको लॉग में एक विशिष्ट प्रकार की त्रुटि होगी। यह भी आज़माया [fuseiso][2]:

# fuseiso U19.IMA /mnt/cd
init: wrong standard identifier in volume descriptor 0, skipping..
init: wrong standard identifier in volume descriptor 1, skipping..
init: wrong standard identifier in volume descriptor 2, skipping..
init: wrong standard identifier in volume descriptor 3, skipping..
init: wrong standard identifier in volume descriptor 4, skipping..
init: wrong standard identifier in volume descriptor 5, skipping..
init: wrong standard identifier in volume descriptor 6, skipping..
init: wrong standard identifier in volume descriptor 7, skipping..
init: wrong standard identifier in volume descriptor 8, skipping..
init: wrong standard identifier in volume descriptor 9, skipping..
init: wrong standard identifier in volume descriptor 10, skipping..
init: wrong standard identifier in volume descriptor 11, skipping..
init: wrong standard identifier in volume descriptor 12, skipping..
init: wrong standard identifier in volume descriptor 13, skipping..
init: wrong standard identifier in volume descriptor 14, skipping..
init: wrong standard identifier in volume descriptor 15, skipping..
init: wrong standard identifier in volume descriptor 16, skipping..
init: wrong standard identifier in volume descriptor 17, exiting..

जहां मैं इस तरह की चीजों को देख सकता हूं dmesg:

[ 5316.082629] FAT-fs (loop0): invalid media value (0xf6)
[ 5316.082644] FAT-fs (loop0): Can't find a valid FAT filesystem

भी, lsmod | grep loopदेता है

loop 18511 0

किसी प्रकार का कोई वैकल्पिक सुपरब्लॉक नहीं है :

# mkfs -n U19.IMA
mke2fs 1.42.8 (20-Jun-2013)
U19.IMA is not a block special device.
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
184 inodes, 1440 blocks
72 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=1572864
1 block group
8192 blocks per group, 8192 fragments per group
184 inodes per group

मेरे द्वारा पढ़े गए कई मामलों के विपरीत , यहाँ किसी भी ऑफसेट को निर्दिष्ट करने की आवश्यकता नहीं है क्योंकि छवि में कोई विभाजन नहीं बनाया गया है। ऐसे मामलों में, कभी-कभी ddआदेश का उपयोग ऑफसेट मूल्य का उपयोग करके समान छवि में सामग्री को स्थानांतरित करने के लिए किया जाता है जो बढ़ते की अनुमति देता है। यह एक ऑफसेट को mountसीधे कमांड को निर्दिष्ट करने के समान लगता है । लेकिन यह आसान होना चाहिए, जैसे इस अन्य मामले में जहां एक साधारण losetupका उपयोग किया जाता है और फिर लूप डिवाइस को माउंट किया जाता है। मैं .ima फ़ाइल को लॉसेटअप के साथ लिंक कर सकता हूं लेकिन जब मैं लूप डिवाइस को माउंट करने का प्रयास करता हूं तो मैं अपने प्रारंभिक त्रुटि संदेश के साथ समाप्त हो जाता हूं।

डेटा अखंडता

अंत में, safecopy --stage1किसी भी समस्या की रिपोर्ट डेटा और स्टेज 3 तक आउटपुट के साथ नहीं रहती है और वही त्रुटि देता है:

# safecopy U19.IMA test.img --stage1
Low level device calls enabled mode: 2
Reported hw blocksize: 4096
Reported low level blocksize: 4096
File size: 1474560
Blocksize: 4096
Fault skip blocksize: 147456
Resolution: 147456
Min read attempts: 1
Head moves on read error: 0
Badblocks output: stage1.badblocks
Marker string: BaDbLoCk
Starting block: 0
Source: U19.IMA
Destination: test.img
. ;-} 100%
Done!
Recovered bad blocks: 0
Unrecoverable bad blocks (bytes): 0 (0)
Blocks (bytes) copied: 360 (1474560)

यहां फ़ाइल का शीर्ष और सामग्री बरकरार है:

dd if=U19.IMA | hexdump -C | head -n 10
00000000 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 |................|
*
00004600 34 2e 30 2e 32 20 33 38 36 75 6e 69 78 20 46 6e |4.0.2 386unix Fn|
00004610 64 20 53 65 74 20 35 20 6f 66 20 31 30 0a 00 00 |d Set 5 of 10...|
00004620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|

"फोरेंसिक"

चूंकि कच्ची छवि में स्रोत माध्यम के सेक्टर-दर-क्षेत्र द्विआधारी प्रतिलिपि शामिल होती है, फ़ाइल सामग्री का वास्तविक प्रारूप उस डिस्क की फ़ाइल प्रणाली पर निर्भर करेगा जहां से छवि बनाई गई थी (जैसे कि एफएटी के एक संस्करण के रूप में)। [...] चूंकि IMG फ़ाइलें डिस्क सामग्री से परे कोई अतिरिक्त डेटा नहीं रखती हैं, इन फ़ाइलों को केवल उन प्रोग्रामों द्वारा नियंत्रित किया जा सकता है जो अपने फ़ाइल सिस्टम का पता लगा सकते हैं।

निम्नलिखित सुझावों के बाद, मैं सेट में कुछ अन्य छवि फ़ाइलों का विश्लेषण करने के लिए आगे बढ़ा (30):

fdisk -lu U14.IMA
Disk U14.IMA: 1.4 MiB, 1474560 bytes, 2880 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
This doesn't look like a partition table. Probably you selected the wrong device.

Device Boot Start End Blocks Id System
U14.IMA1   3840       11519      3840       0  Empty
U14.IMA2   2425393152 4850786447 1212696648 0  Empty
U14.IMA3 ? 2425393296 4850786591 1212696648 90 Unknown
U14.IMA4 ? 2425393296 4850786591 1212696648 90 Unknown

क्षमा करें, लेकिन यह एक विभाजन तालिका की तरह दिखता है लेकिन यह असामान्य है। इसमें आईडी 90 संपत्ति शामिल है :

90h     MBR, EBR    CHS, LBA    x86, 68000, 8080/Z80    Hidden, Filesystem  FreeDOS     Free FDISK  Hidden FAT16 (corresponds with 04h i.e. MS Fat16 DOS 3.0+ < 65536 sectors)

इसलिए मुझे मिलने वाली छवि को माउंट करने की कोशिश कर रहा है:

# mount -t auto U14.IMA /mnt/cd
mount: unknown filesystem type 'sysv'  <-----

जैसा कि किसी ने संकेत दिया है, आपको कुछ ऐसा उपयोग करने के लिए कर्नेल में संकलित ' सिस्टम V और सुसंगत फाइल सिस्टम सपोर्ट ' जैसे कुछ विशिष्ट होना चाहिए । Sysv स्ट्रिंग इतना सुपरराइजिंग नहीं है, क्योंकि यह AT & T UNIX System V / 386 रिलीज़ 4 संस्करण 2.1 संस्करण मीडिया का हिस्सा है - एक पोर्ट जो 2006 तक सन द्वारा समर्थित था - और ये चित्र 2007 में जंगल में समाप्त हो गए। वास्तव में एक पाठ छवियों के साथ बंडल फ़ाइल इंगित करती है कि उन्हें बूट सेक्टर की प्रकृति और उपयोग में प्रारूप के कारण स्थापना के लिए आवश्यक है। एक संकेत है कि सामग्री मूल रूप से टेलिडिस्क (TD0) प्रारूप में थीmount -t sysv। मैं यहां पर जोर देना चाहता हूं कि यह मूल सामग्री नहीं है। किसी भी मामले में मैं वास्तव में समझाए गए ऑफसेट की गणना नहीं कर सकता हूं - या तो मैं 512 से विभाजित होने पर पूर्णांक के साथ समाप्त नहीं करता हूं, और यहां तक ​​कि अगर मैं कोशिश करता हूं तो लगता है कि मैं उचित ऑफसेट नहीं ढूंढ सकता हूं - dd: cannot skip to specified offset, 0 writesआदि। इस बिंदु पर उत्तर फोरेंसिक के बारे में है, और अब एक छवि फ़ाइल के बारे में नहीं है।

Qemu के साथ त्वरित ऐतिहासिक छवि स्रोत OS अनुकरण

एटी एंड टी यूनिक्स सिस्टम वी रिलीज़ 4 संस्करण 2.1

                          LABEL             Version         X of X
  AT&T UNIX SVR4.0 2.1 --------------------------------------------------

  U01.IMA                 Maintanace Disk1  2.1             2 of 2
  U02.IMA                 Remote Terminal   2.1             1 of 1
                          Package
  U03.IMA                 BSD Comp. Pkg.    2.1             1 of 2
  U04.IMA                 BSD Comp. Pkg.    2.1             2 of 2
  U05.IMA                 Networking Supp.  2.1             1 of 1
                          Util. Pkg.
  U06.IMA                 Xenix Comp. Pkg   2.1             1 of 1
  U07.IMA                 FACE Pkg.         2.1             1 of 1
  U08.IMA                 FMLI Pkg.         2.1             1 of 1
  U09.IMA                 Editing Utils.    2.1             1 of 1
  U10.IMA                 OA&M Basic & Ext. 2.1             1 of 3
  U11.IMA                 OA&M Basic & Ext. 2.1             2 of 3
  U12.IMA                 OA&M Basic & Ext. 2.1             3 of 3
  U13.IMA                 Foundation Set    2.1             1 of 10
                          Base System Pkg.
                          2 User System
  U14.IMA                 Base              2.1a            1 of 10
  U15.IMA                 Base              2.1             2 of 10
  U16.IMA                 Base              2.1a            2 of 10
  U17.IMA                 Base              2.1             3 of 10
  U18.IMA                 Base              2.1             4 of 10
  U19.IMA                 Base              2.1             5 of 10
  U20.IMA                 Base              2.1             6 of 10
  U21.IMA                 Base              2.1             7 of 10
  U22.IMA                 Base              2.1             8 of 10
  U23.IMA                 Base              2.1             10 of 10
  U24.IMA                 Maintanance 1     2.1             1 of 2
  U25.IMA                 Base              2.1             9 of 10
  U26.IMA                 Printer Pkg       2.1             3 of 3
  U27.IMA                 Printer Pkg       2.1             2 of 3
  U28.IMA                 Printer Pkg       2.1             1 of 3
  U29.IMA                 16 to unlimited   2.1             1 of 1
                          User License
  U30.IMA                 2 to 16 User      2.1             1 of 1
                          License

जैसा कि सुझाव दिया गया था, मैंने सेट में एक पूर्व छवि से स्थापित किया। इसमें मूल रूप से छवि 14 (पहले एक साधारण ) के साथ शुरू होने वाले qemu समझाया जैसे कि U19 बूट करने योग्य नहीं है, का उपयोग करना शामिल है । यहाँ जो अच्छा है वह यह है कि आपको ओएस में ही इमेजों को माउंट / ऑमाउंट नहीं करना है, आप मॉनिटर को एक्सेस करने या छोड़ने के लिए qemu के साथ सिर्फ 1 या 1 का उपयोग करते हैं और आप यह देखने के लिए उपयोग करते हैं कि छवि को बदलने के लिए और उस इंटरफ़ेस में क्या है। फ़ाइल उदाहरण के लिए स्थापित करने के दौरान।losetup /dev/loop0 U14.IMAqemu-system-x86_64 -m 256 -hda test.img -fda /dev/loop0 -boot actrl-alt-2list blockschange floppy0 imagename

मुझे स्थापना के दौरान U19.IMA (डिस्क 5) की आपूर्ति करनी थी (स्थापना के एक शाब्दिक लॉग के लिए, यह देखें - एक हाइलाइट एमएस-डॉस का संदर्भ है!), और मैं इसके साथ समाप्त हुआ अर्थात एक ठीक से स्थापित एटी एंड टी यूनिक्स सिस! V 386 OS, इसलिए यह बहुत अधिक पुष्टि करता है U19.IMA एक काम करने वाली डिस्क छवि है:

यहाँ छवि विवरण दर्ज करें

डिफ़ॉल्ट रूप से / dev / fd को / dev / fd पर आरोहित किया जाता है और ब्लॉक (/ dev / dsk / f0) और कच्चे (/ dev / dsk / f0) डिवाइस के माध्यम से फ्लॉपी एक्सेस भी होता है। फ्लॉपी में डायरेक्टरी को बदलने से सिर्फ 1 से 23 तक की गई फाइल दिखाई जाती है (यह सिर्फ मेरे द्वारा अनुमान किए गए कैरेक्टर डिवाइस की संरचना है)। आप catकच्चे और ब्लॉक उपकरणों को भी देख सकते हैं और फ्लॉपी डेटा देख सकते हैं लेकिन यह उतना ही पास है जितना कि यह मिलता है।

मैंने देखा है कि उस OS में, आप उन पर निर्देशिका से कुछ स्क्रिप्ट लॉन्च करके फ्लॉपी से सामान स्थापित नहीं करते हैं, जैसे कि आप उदाहरण के लिए विघटित बाइनरी फ़ाइलों के साथ करते हैं - यहाँ आप उपयोग करते हैं pkgadd -d diskette1(निश्चित रूप से अंतिम शब्द कुछ उपनाम है, लेकिन मैं Pkgadd (1M) के लिए SCO सामान में -d स्विच का संदर्भ मिलाऔर आम तौर पर यह वाणिज्यिक यूनिक्स (ओरेकल, एचपी शेयर pkgadd (1M)) में अक्सर दिखाई देता है। आदेश जारी करने से एक दिनचर्या शुरू होती है जहां आप फ्लॉपी की आपूर्ति करते हैं और आपके पास कोई नियंत्रण नहीं होता है, सिवाय इसके कि दिनचर्या के बाद "नहीं" कहने के अलावा ड्राइव में क्या है। डिस्क के मामले में जो एक इंस्टालेशन सीक्वेंस (U03, U05 इत्यादि) शुरू करते हैं, यह तब इंस्टाल होगा जब तक कि अगला फ्लॉपी आदि के लिए पैकेज इंस्टाल न हो जाए। यदि आप एक फ्लॉपी डालते हैं जो एक सेट की शुरुआत नहीं है, तो यह मूल रूप से कुछ भी नहीं पाता है, लेकिन आपको बताता है कि आपको installpkgइसके बजाय कमांड का उपयोग करना होगा।

क्या मैं उस छवि फ़ाइल में डेटा तक पहुंचने के लिए अपने रिग पर एक भौतिक फ़्लॉपी ड्राइव स्थापित करूंगा?


बस एक अनुमान: यह एक मिनिक्स फाइलसिस्टम हो सकता है। आपको संभवतः इसका समर्थन करने के लिए अपने कर्नेल को फिर से जोड़ना होगा। एक भौतिक फ़्लॉपी ड्राइव स्थापित करने से मदद नहीं मिलती है। छवि फ़ाइल कितनी बड़ी है? यदि आपकी फ़ाइल सिर्फ एक कच्ची छवि है, तो इसमें निश्चित रूप से आपके द्वारा किए गए किसी भी (वर्तमान / आधुनिक) फ़ाइल सिस्टम में नहीं है। ऐसा लगता है कि यह i386 सिस्टम पर बूट करने योग्य नहीं है।
जोफेल

@jofel फ़ाइल 1475k बड़ी है। अगर मैं इसे ऐसे ही माउंट करने की कोशिश करता mount -t minix -o loop U19.IMA /mnt/cdहूं और मुझे जेनेरिक त्रुटि मिलती है, लेकिन dmesg में यह भूमि है VFS: Can't find a Minix filesystem V1 | V2 | V3 on device loop0.कि किसी भी संकेत के कर्नेल में पहले से ही यह है या मैं उस पर भरोसा नहीं कर सकता। वैसे भी, मैं जांच करूँगा कि आपने क्या कहा था। मुझे पता है कि यह बूट करने योग्य नहीं है, मैं सामग्री का उपयोग करना चाहता हूं। धन्यवाद।

fileसुझाव के आउटपुट में छवि पर कोई फ़ाइल सिस्टम नहीं है। क्या आपको यकीन है कि आपका डेटा वास्तव में है? ऐसा लगता है कि आप कच्ची ड्राइव की एक छवि को बिना किसी विभाजन और बिना फाइल सिस्टम के माउंट करने की कोशिश कर रहे हैं।
terdon

@terdon यह वही है जो मैं वास्तव में करना चाहता हूं। क्या वह तर्क विफल है? यह एक इंस्टॉलेशन सेट है। मुझे प्रलेखन सहित "फाइलें" मिलने की उम्मीद थी। क्या मैं इस पूरी चीज़ को स्थापित करने के बाहर नहीं पहुँच सकता?

2
यदि यह एक इंस्टॉलेशन डिस्क है, तो यह हो सकता है कि केवल पहली डिस्क में फाइल सिस्टम हो / बूट करने योग्य हो। अन्य डिस्क में बिना किसी फ़ाइल सिस्टम ओवरहेड के कस्टम प्रारूप में केवल डेटा हो सकता है।
जोफेल

जवाबों:


4

यदि आप उस छवि को माउंट नहीं कर सकते हैं जो आप अभी भी कुछ मामलों में सक्षम कर सकते हैं तो इसके कुछ डेटा को "स्ट्रीम आउट" करें cpio

एक बार जब आपको पता चल जाए कि क्या छवि है:

  • एक समर्थित फ़ाइल सिस्टम और एक विभाजन का उपयोग करके एक छवि -> mount
  • एक समर्थित फाइलसिस्टम और एक से अधिक विभाजन का उपयोग करते हुए एक छवि -> mount with offset, या ddऑफ़सेट के साथ एक विभाजन को निकालने के लिए उपयोग करें फिर उस विभाजन को माउंट करें या कुछ का उपयोग करेंkpartx
  • एक समर्थित फ़ाइल सिस्टम का उपयोग नहीं करने वाली छवि या बिना किसी फ़ाइल सिस्टम के साथ -> कर्नेल समर्थन और आगे की जांच ...

आप उपयोग कर सकते हैं hexdumpऔर stringsहैडर का विश्लेषण करने के लिए प्रयास करें और छवि से पाठ स्ट्रिंग्स को निकालने के लिए और छवि फ़ाइल और इसकी संरचना बारे में अधिक जानकारी हासिल करने के लिए उपयोगिताओं।


कुछ ऐसा करने में मेरी रुचि पर कब्जा कर लिया:

@(#)/usr/bin/echo.sl 1.1 4.0 10/01/90 16865 AT&T-SF

छवि में हर एक बाइनरी के लिए इस तरह की एक पंक्ति है ताकि आप कुछ हद तक जान सकें कि वहां क्या है। इसके अलावा, इस मामले में, जब आप एक लेने के निकट से देखने पर कैसे स्थापना की प्रक्रिया के साथ मूल मंच पर होता है पर installpkg, आप यह पता है कि लगता है:

एक फ्लॉपी डिस्क से UNIX सिस्टम V / 386 हार्ड डिस्क में सॉफ्टवेयर ट्रांसफर करने का मूल तंत्र cpio है।

मूल रूप से, डेटा cpioको / usr / tmp / install के साथ निकाला जाता है और फाइलों की एक श्रृंखला को इसके साथ शामिल किया जाता है (एक स्थापित, ascii, फ़ाइल, नाम और आकार फ़ाइल)। यहाँ ऐसा होता है कि यह कमांड:

cat U19.IMA | cpio -imdv

विकृत संख्या त्रुटियों के साथ शुरू करने के लिए आउटपुट , लेकिन फिर छवि की सामग्री के साथ एक / usr / बिन फ़ोल्डर बनाता है! trमैं खोज रहा था वहाँ है:

#file tr
tr: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), stripped.

cpioपहली जगह में कोशिश कर चोट नहीं कर सकता!


बस -d विकल्प के साथ सावधान रहें और cpio। मुझे याद है यह सीधे मेरे रूट ड्राइव पर निकालने की कोशिश की गई है!
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.