Montowanie starego pliku obrazu dyskietki (format .ima) - jak trudne może być?


10

Próbuję mountuzyskać dostęp do pliku obrazu dyskietki w formacie .ima (surowy zrzut na dyskietkę, podobny do .img ) w ArchLinux.

Ten plik jest częścią zestawu 30. Nie można go uruchomić, ale stanowi on kontynuację zestawu. Celem nie jest manipulacja w celu instalacji lub klonowania. Interesuje mnie dokumentacja zawarta z innymi danymi na dysku.

Informacje o pliku obrazu

Oto kilka informacji o tym pliku obrazu:

# 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 fail

Oto ogólny komunikat o błędzie:

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

Próbowałem wielu kombinacji próbujących określić typ z -t tj. Ntfs, msdos, iso9660, vfat i zawsze otrzymuję ten sam błąd. Myślałem, że to może jakiś format pliku NTFS, ale NTFS-3G nie radzi sobie dużo lepiej, więc nie, nie jest:

# 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)

Ktoś zasugerował może fs Minix. Chociaż nie jest jasne, czy naprawdę mogę zamontować taki system plików przy mojej obecnej konfiguracji, próbowałem:

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.

Wydaje się, że nie jest to rozstrzygające, ponieważ po określeniu określonego rodzaju systemu plików w dzienniku wystąpi określony rodzaj błędu. Próbowałem także [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..

Gdzie mogę zobaczyć takie rzeczy za pomocą dmesg:

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

Również lsmod | grep loopdaje

loop 18511 0

Nie ma żadnego alternatywnego superbloku :

# 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

W przeciwieństwie do wielu przypadków, o których czytałem, wydaje się, że nie ma potrzeby określania tutaj żadnego przesunięcia, ponieważ w obrazie nie ma wbudowanej partycji. W takich przypadkach czasami ddpolecenie służy do przeniesienia zawartości do podobnego obrazu przy użyciu wartości przesunięcia, która umożliwia montaż. Wydaje się to to samo, co mountbezpośrednie przesunięcie polecenia. Ale powinno to być łatwe, tak jak w tym innym przypadku, w którym stosuje się prosty, losetupa następnie montuje się urządzenie pętli. Mogę połączyć plik .ima z losetup, ale kiedy próbuję zamontować urządzenie pętli, kończę na moim początkowym komunikacie o błędzie.

Integralność danych

Wreszcie, safecopy --stage1nie zgłasza żadnego problemu z danymi, a dane wyjściowe do etapu 3 pozostają takie same i powoduje ten sam błąd:

# 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)

Oto początek pliku, a treść wydaje się nienaruszona:

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 |................|

"Kryminalni"

Ponieważ surowy obraz składa się z binarnej kopii sektor po nośniku źródłowym, faktyczny format zawartości pliku będzie zależał od systemu plików dysku, z którego obraz został utworzony (na przykład wersja FAT). [...] Ponieważ pliki IMG nie zawierają żadnych dodatkowych danych poza zawartością dysku, pliki te mogą być obsługiwane tylko przez programy wykrywające ich systemy plików.

Po sugestiach przystąpiłem do analizy niektórych innych plików graficznych w zestawie (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

Przepraszamy, ale wygląda jak tablica partycji, ale jest niezwykła. Obejmuje ona id 90 właściwość :

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)

Próbując zamontować obraz, otrzymuję:

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

Jak ktoś zasugerował, musisz mieć w jądrze coś specyficznego, np. „Obsługa systemu V i spójnego systemu plików ” , aby użyć czegoś takiego . Ciąg sysv nie jest tak zaskakujący, ponieważ jest to część nośnika instalacyjnego AT&T UNIX System V / 386 wydanie 4 wersja 2.1 - port obsługiwany przez firmę Sun do 2006 roku - i te obrazy wylądowały na wolności w 2007 roku. Właściwie to tekst plik dołączony do obrazów wskazuje, że są one wymagane do instalacji ze względu na charakter sektora rozruchowego i używany format. Jest to wskazówka, że materiał był pierwotnie w Teledisk (TD0) formaciemount -t sysv. Chcę tutaj podkreślić, że to nie jest oryginalny materiał. W każdym razie nie jestem w stanie obliczyć przesunięć, jak wyjaśniono w pytaniu - albo nie dzielę liczb całkowitych przy dzieleniu przez 512, a nawet jeśli spróbuję, nie mogę znaleźć odpowiedniego przesunięcia - dd: cannot skip to specified offset, 0 writesitd. w tym momencie odpowiedź dotyczy kryminalistyki, a nie pliku obrazu.

Szybka emulacja historycznego źródła obrazu systemu operacyjnego z qemu

AT&T UNIX System V wydanie 4 wersja 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

Jak sugerowano, zainstalowałem z wcześniejszego obrazu w zestawie. Polega ona na użyciu qemu tak, jak wyjaśniono tutaj, zaczynając od obrazu 14 (najpierw losetup /dev/loop0 U14.IMAprosty qemu-system-x86_64 -m 256 -hda test.img -fda /dev/loop0 -boot a), ponieważ U19 nie jest bootowalny. Ładne jest to, że nie trzeba montować / umountować obrazów w samym systemie operacyjnym, wystarczy użyć ctrl-alt-2lub 1 z qemu, aby uzyskać dostęp do monitora lub wyjść z niego, i użyć, list blocksaby zobaczyć, co jest zamontowane i change floppy0 imagenamew tym interfejsie, aby zmienić obraz plik, np. podczas instalacji.

Musiałem dostarczyć U19.IMA (dysk 5) podczas instalacji (aby zobaczyć tekstowy dziennik instalacji, zobacz to - najważniejsze jest odniesienie do MS-DOS!), I skończyłem z tym, tj. Poprawnie zainstalowanym systemem AT&T UNIX Sys V 386 OS, więc prawie potwierdza U19.IMA jest działającym obrazem dysku:

wprowadź opis zdjęcia tutaj

Domyślnie / dev / fd jest montowany na / dev / fd i istnieje również dostęp do stacji dyskietek poprzez urządzenie blokowe (/ dev / dsk / f0) i raw (/ dev / dsk / f0). Zmiana katalogu na dyskietkę pokazuje tylko pliki o numerach od 1 do 23 (to chyba tylko struktura urządzenia znakowego). Możesz także catprzetwarzać i blokować urządzenia i zobaczyć, że dyskietka jest na miejscu, ale jest tak blisko, jak to tylko możliwe.

Zauważyłem, że w tym systemie operacyjnym nie instalujesz rzeczy z dyskietek, uruchamiając na nich jakiś skrypt z katalogu, tak jak na przykład ze zdekompresowanymi plikami binarnymi - tutaj używasz pkgadd -d diskette1(z pewnością ostatnim słowem jest jakiś alias, ale ja znaleziono odniesienie do przełącznika -d w SCO dla pkgadd (1M)i ogólnie pojawia się często w komercyjnym Uniksie (Oracle, HP udostępnij pkgadd (1M)). Wydanie polecenia uruchamia procedurę, w której dostarczasz dyskietki i nie masz kontroli, z wyjątkiem powiedzenia „nie” po tym, jak procedura dowie się, co jest w napędzie. W przypadku dysków, które rozpoczynają sekwencję instalacyjną (U03, U05 itp.), Zostanie ona zainstalowana, a następnie poprosi o następną dyskietkę itp., Aż instalacja zostanie zakończona. Jeśli umieścisz dyskietkę, która nie jest początkiem zestawu, w zasadzie nic nie znajdzie, ale powie, że być może musisz installpkgzamiast tego użyć polecenia.

Czy będę instalować fizyczny napęd dyskietek na moim urządzeniu, aby uzyskać dostęp do danych w tym pliku obrazu?


Tylko zgadnij: może to być system plików Minix. Prawdopodobnie będziesz musiał ponownie skompilować jądro, aby je obsługiwać. Instalowanie fizycznej stacji dyskietek nie pomaga. Jak duży jest plik obrazu? Jeśli plik jest zwykłym obrazem, na pewno nie zawiera żadnego z (obecnych / nowoczesnych) systemów plików, które wypróbowałeś. Wygląda na to, że nie można go uruchomić w systemach i386.
jofel

@jofel Plik ma rozmiar 1475k. Jeśli spróbuję zamontować go w ten sposób mount -t minix -o loop U19.IMA /mnt/cdi otrzymam ogólny błąd, ale to wyląduje w dmesg VFS: Can't find a Minix filesystem V1 | V2 | V3 on device loop0.Czy to jakieś wskazanie, że jądro już go ma, czy nie mogę na tym polegać ?. W każdym razie zbadam to, co powiedziałeś. Wiem, że nie można go uruchomić, ale chcę uzyskać dostęp do zawartości. Dzięki.

Dane wyjściowe filesugerują, że na obrazie nie ma systemu plików. Czy na pewno Twoje dane tam są? Wygląda na to, że próbujesz zamontować obraz surowego dysku bez partycji i systemu plików.
terdon

@terdon To właśnie dokładnie chcę zrobić. Czy to nie jest logika? To jest zestaw instalacyjny. Miałem nadzieję znaleźć „pliki”, w tym dokumentację. Czy nie mogę uzyskać dostępu do tego poza instalowaniem całości?

2
Jeśli jest to dysk instalacyjny, możliwe, że tylko pierwszy dysk zawiera system plików / jest bootowalny. Pozostałe dyski mogą zawierać tylko dane w niestandardowym formacie bez obciążenia systemu plików.
jofel

Odpowiedzi:


4

Jeśli nie możesz zamontować obrazu, w niektórych przypadkach nadal możesz „przesyłać strumieniowo” niektóre jego dane cpio.

Po upewnieniu się, czy obraz jest:

  • Obraz korzystający z obsługiwanego systemu plików i partycji -> mount
  • Obraz korzystający z obsługiwanego systemu plików i więcej niż jednej partycji -> mount with offsetlub użyj dddo wyodrębnienia partycji z przesunięciem, a następnie zamontuj tylko tę partycję lub użyj czegoś w rodzajukpartx
  • Obraz nie używa obsługiwanego systemu plików lub w ogóle go nie ma -> obsługa jądra i dalsze badanie ...

Możesz użyć narzędzi hexdumpi, stringsaby spróbować przeanalizować nagłówek i wyodrębnić ciągi tekstowe z obrazu i uzyskać więcej informacji o pliku obrazu i jego strukturze.


Coś mnie zainteresowało:

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

Na każdym pliku binarnym na obrazie jest taka linia, więc wiesz, co tam jest. Również w tym przypadku, gdy przyjrzysz się bliżej procesowi instalacji na oryginalnej platformie installpkg, dowiesz się, że:

Podstawowym mechanizmem przesyłania oprogramowania z dyskietki na dysk twardy UNIX System V / 386 jest CPIO.

Zasadniczo dane są wyodrębniane za pomocą cpio/ usr / tmp / install i dołącza do nich szereg plików (plik instalacyjny, ascii, plik, nazwa i rozmiar). Zdarza się tutaj, że to polecenie:

cat U19.IMA | cpio -imdv

wyświetla na początku błędy o nieprawidłowej liczbie , ale następnie tworzy folder / usr / bin z zawartością obrazu! To, trczego szukałem, jest tam:

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

Próba cpioprzede wszystkim nie zaszkodzi!


Bądź ostrożny z opcją -d i cpio. Wydaje mi się, że pamiętam, jak to próbowałem wyodrębnić bezpośrednio na mój dysk root!
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.