4.1 KiB
Lösung: Dateien mit file
untersuchen (files.zip)
Nach dem Auspacken des Archivs kann man durch den Aufruf von file *
die entsprechenden Dateien analysieren.
Datei | Ausgabe von file |
Werkzeug | Inhalt |
---|---|---|---|
a |
PNG image data, 100 x 100, 8-bit gray+alpha, non-interlaced | Bildbetrachter | Rick Astley |
b |
JPEG image data, ... , 250x157, components 3 | Bildbetrachter | JPG-Bild eines Egg Mac Muffins |
c |
PE32 executable (DLL) (console) Intel 80386 (stripped to external PDB), for MS Windows | rabin2 |
Shared Library für Windows mit nur zwei Exports: GetDiskKey und GetDiskKey_Version |
d |
PE32 executable (GUI) Intel 80386, for MS Windows | rabin2 |
Ausführbare Datei für Windows. Symbole und Strings können mit rabin2 ausgegeben werden. Ausführen der Datei ist zu riskant. |
e |
ELF 64-bit LSB shared object, ... , not stripped | rabin2 |
Bibliothek (shared object) für Linux x86, nicht gestrippt |
f |
ELF 64-bit LSB pie executable, ... , not stripped | rabin2 |
Ausführbares Programm für Linux. Ausführen der Datei ist zu riskant. |
g |
ELF 64-bit LSB shared object, ... , stripped | rabin2 |
Bibliothek (shared object) für Linux x86, gestrippt |
h |
ELF 64-bit LSB pie executable, ... , stripped | rabin2 |
Ausführbares Programm für Linux. Ausführen der Datei ist zu riskant. |
i |
ELF 64-bit LSB relocatable, ... , not stripped | rabin2 |
Objekt-Datei mit der Main-Funktion eines Programms. |
j |
Compiled Java class data, version 61.0 | javap |
Java-Klasse mit dem Namen FlagPrinter , die nur eine main -Methode enthält. |
k |
ASCII text | less |
Rick Astley Song |
l |
data | hexyl |
Binärdaten: ff ff 00 00 ca fe ba be 00 00 00 |
m |
Atari ST M68K contiguous executable | strings |
Teil des Softwarepaketes Degas |
n |
gzip compressed data, was "n" ... | gzip , less |
Komprimierte Version von k |
zu e
, f
, g
, h
Betrachtet man die Build-IDs, die von file
ausgegeben werden sieht man:
e: ELF ... BuildID[sha1]=82d337f3906e7639b404001a5c501e9308848c80
f: ELF ... BuildID[sha1]=94fbda07657d2a358c1844e7682632621affde92
g: ELF ... BuildID[sha1]=82d337f3906e7639b404001a5c501e9308848c80
h: ELF ... BuildID[sha1]=94fbda07657d2a358c1844e7682632621affde92
e
+ g
und f
+ h
haben jeweils dieselben Build-IDs. Dies deutet darauf hin, dass es auch dieselben Programme bzw. Bibliotheken sind -- nur einmal jeweils gestrippt.
Zu j
javap
braucht den Namen der Java-Klasse, um sie zu laden und auszugeben. Den Namen kann leicht mit dem strings
-Kommando finden, weil der Namen der Quelldatei ebenfalls in der Klasse gespeichert ist.
$ strings j
...
SourceFile
FlagPrinter.java
...
Damit kann man die Datei umbenennen und javap
verwenden:
$ cp j FlagPrinter.class
$ javap -cp . FlagPrinter
Compiled from "FlagPrinter.java"
public class FlagPrinter {
public FlagPrinter();
public static void main(java.lang.String[]) throws java.lang.Exception;
static {};
}
zu l
Der Inhalt der Datei kann einfach mit einem Hexeditor, z.B. hexyl
oder hexedit
angesehen werden:
$ hexyl l
┌────────┬─────────────────────────┬─────────────────────────┬────────┬────────┐
│00000000│ ff ff 00 00 ca fe ba be ┊ 00 00 00 │××00××××┊000 │
└────────┴─────────────────────────┴─────────────────────────┴────────┴────────┘
zu m
Da es sich um ein sehr altes Format handelt (1980er Jahre), kommen die normalen Werkzeuge damit nicht klar. Man kann allerdings zumindest die enthaltenen Strings ausgeben lassen.
$ strings -n 10
...
D:\DEGASART\ART1.SCPD:\DEGASART\PICS\D:\DEGASART\DEGASART.RSCTITLE.PC1
...
zu n
Nach dem Auspacken sieht man, dass n
nur eine komprimierte Version von k
ist.