Στο man page του foremost λέει ότι μπορείς να ορίσεις το τύπο αρχείου που ψάχνεις μεσω του header του και του ονόματος του
- Κώδικας: Επιλογή όλων
man foremost | grep -A 18 " CONFIGURATION FILE"
- Κώδικας: Επιλογή όλων
CONFIGURATION FILE
The configuration file is used to control what types of files foremost searches for. A sample configuration file, foremost.conf, is included
with this distribution. For each file type, the configuration file describes the file's extension, whether the header and footer are case
sensitive, the maximum file size, and the header and footer for the file. The footer field is optional, but header, size, case sensitivity,
and extension are not!
Any line that begins with a pound sign is considered a comment and ignored. Thus, to skip a file type just put a pound sign at the beginning
of that line
Headers and footers are decoded before use. To specify a value in hexadecimal use \x[0-f][0-f], and for octal use \[1-9][1-9][1-9]. Spaces
can be represented by \s. Example: "\x4F\123\I\sCCI" decodes to "OSI CCI".
To match any single character (aka a wildcard) use a ?. If you need to search for the ? character, you will need to change the wildcard line
*and* every occurrence of the old wildcard character in the configuration file. Do not forget those hex and octal values! ? is equal to \x3f
and \063.
There is a sample set of headers in the README file.
Τα mp3 δεν είναι όλα ίδια ακριβώς αλλά έχουν το δικό τους pattern .. . Εξαρτάται από διάφορους παράγοντες
Πιθανόν αν τα αρχεία τα έκανε κάποιος encode με ένα συγκεκριμένο τρόπο θα έχουν όλα κάτι κοινό στο header ...
Τουλάχιστον αν τα αρχεία mp3 έχουν ID3 tags θα έχουν κάτι κοινό...Τα ID3 tags σε αρχεία που είναι για streaming μπαίνουν στην αρχή του αρχείου ώστε να ξέρει το όνομα ο player που συνδέεται με τον streaming server
αλλά δεν μπαίνουν πάντα στην αρχή μπαίνουν και στο τέλος... εξαρτάται από αυτόν που θα τα κάνει encode...
Τα id3 tags περιέχουν frames με το όνομα του πχ καλλιτέχνη και άλλα δεδομένα...
πάντως όπου και να είναι είτε στην αρχή είτε στο τέλος μπορούν να εντοπιστούν αν υπάρχουν
Θα εξηγήσω,
για παράδειγμα:
σε ένα φάκελο τα headers αρχείων ήχου αναγνωρίζονται από την ύπαρξη και μόνο του ID3 tag τους το οποίο είναι ένα ομοιόμορφο ένα κοινό pattern σε όλα
πχ σε ένα φάκελο με αρχεία mp3 που έγιναν encode με το ίδιο πρόγραμμα με τις ίδιες παραμέτρους έκανα
- Κώδικας: Επιλογή όλων
for i in *.mp3; do hexdump -C -n 16 $i;echo; done
και πήρα
- Κώδικας: Επιλογή όλων
00000000 49 44 33 03 00 00 00 00 0c 40 54 50 45 31 00 00 |ID3......@TPE1..|
00000010
00000000 49 44 33 03 00 00 00 00 0c 40 54 50 45 31 00 00 |ID3......@TPE1..|
00000010
00000000 49 44 33 03 00 00 00 00 0c 40 54 50 45 31 00 00 |ID3......@TPE1..|
00000010
00000000 49 44 33 03 00 00 00 00 0c 40 54 50 45 31 00 00 |ID3......@TPE1..|
00000010
00000000 49 44 33 03 00 00 00 00 0c 40 54 50 45 31 00 00 |ID3......@TPE1..|
00000010
00000000 49 44 33 03 00 00 00 00 0c 40 54 50 45 31 00 00 |ID3......@TPE1..|
00000010
00000000 49 44 33 03 00 00 00 00 0c 40 54 50 45 31 00 00 |ID3......@TPE1..|
00000010
00000000 49 44 33 03 00 00 00 00 0c 40 54 50 45 31 00 00 |ID3......@TPE1..|
00000010
00000000 49 44 33 03 00 00 00 00 0c 40 54 50 45 31 00 00 |ID3......@TPE1..|
00000010
00000000 49 44 33 03 00 00 00 00 0c 40 54 50 45 31 00 00 |ID3......@TPE1..|
00000010
00000000 49 44 33 03 00 00 00 00 0c 40 54 50 45 31 00 00 |ID3......@TPE1..|
00000010
00000000 49 44 33 03 00 00 00 00 0c 40 54 50 45 31 00 00 |ID3......@TPE1..|
00000010
00000000 49 44 33 03 00 00 00 00 0c 40 54 50 45 31 00 00 |ID3......@TPE1..|
00000010
00000000 49 44 33 03 00 00 00 00 0c 40 54 50 45 31 00 00 |ID3......@TPE1..|
00000010
00000000 49 44 33 03 00 00 00 00 0c 40 54 50 45 31 00 00 |ID3......@TPE1..|
00000010
00000000 49 44 33 03 00 00 00 00 0c 40 54 50 45 31 00 00 |ID3......@TPE1..|
00000010
00000000 49 44 33 03 00 00 00 00 0c 40 54 50 45 31 00 00 |ID3......@TPE1..|
00000010
00000000 49 44 33 03 00 00 00 00 0c 40 54 50 45 31 00 00 |ID3......@TPE1..|
00000010
00000000 49 44 33 03 00 00 00 00 0c 40 54 50 45 31 00 00 |ID3......@TPE1..|
00000010
00000000 49 44 33 03 00 00 00 00 0c 40 54 50 45 31 00 00 |ID3......@TPE1..|
00000010
00000000 49 44 33 03 00 00 00 00 0c 40 54 50 45 31 00 00 |ID3......@TPE1..|
00000010
00000000 49 44 33 03 00 00 00 00 0c 40 54 50 45 31 00 00 |ID3......@TPE1..|
00000010
αυτά τώρα με το foremost ( αλλά και με άλλα προγράμματα ) γίνεται στο configutation αρχείο τους να δώσεις
το header το hex pattern ας πούμε καθώς έιναι στάνταρντ
δηλαδή
το
49 44 33 03 00 00 00 00 0c 40 54 50 45 31 00 00 η σε δεκαεξαδική αναπαράσταση για το foremost.conf
πχ
\x49\x44\x33\x03\x00\x00\x00\x00\x0c\x40\x54\x50\x45\x31\x00\x00προφανώς για παραπέρα bytes κάθε αρχείο είναι διαφορετικό από το άλλο και δεν μας αφορα.
Σε κάποια άλλα αρχεία mp3 που έχω πχ διαφέρουν αλλα το 49 44 33 είναι στάνταρτ (λόγω του ID3 )
πχ
- Κώδικας: Επιλογή όλων
00000000 49 44 33 04 00 00 00 00 00 16 54 45 4e 43 00 00 |ID3.......TENC..|
- Κώδικας: Επιλογή όλων
00000000 49 44 33 03 00 00 00 00 12 47 54 4c 41 4e 00 00 |ID3......GTLAN..|
- Κώδικας: Επιλογή όλων
00000000 49 44 33 03 00 00 00 01 3f 76 54 41 4c 42 00 00 |ID3.....?vTALB..|
Στο /etc/foremost/conf
έχει πχ για τις png εικόνες σε comments
# PNG (used in web pages)
# (NOTE THIS FORMAT HAS A BUILTIN EXTRACTION FUNCTION)
# png y 200000 \x50\x4e\x47? \xff\xfc\xfd\xfe
και πράγματι οι png είναι πολύ εύκολο να τις εντοπίσει κανείς
πχ το
- Κώδικας: Επιλογή όλων
hexdump -C -n 16 .qdvdauthor/history1.png
δίνει
00000000 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 |.PNG........IHDR|και το
- Κώδικας: Επιλογή όλων
hexdump -C -n 16 ./Firefox_wallpaper.png
δίνει
00000000 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 |.PNG........IHDR|Στο /etc/foremost.conf δίνει παραδείγματα για την σύνταξη που θέλει το αρχείο που θα χρησιμοποιήσει κανείς για να βρεί τα αρχεία του
Είναι δυνατόν να προσθέσεις και διαφορετικά headers να καθορίζουν το ίδιο format πχ όπως βλέπετε στο foremost.conf
λέει για τα MPEG video 3 περιπτώσεις
- Κώδικας: Επιλογή όλων
# MPEG Video
# mpg y 4000000 mpg eof
# mpg y 20000000 \x00\x00\x01\xba \x00\x00\x01\xb9
# mpg y 20000000 \x00\x00\x01\xb3 \x00\x00\x01\xb7
επίσης το footer (δεξιά ) είναι προαιρετικό
το μέγεθος του αρχείου που δίνεις είναι το μέγιστο που μπορεί να πιάσει στο mpeg έχει για παράδειγμα 20000000 bytes
~= 19 MB
δηλαδή προφανώς για μια εικόνα δεν θα βάλει κανείς να ψάχνει για αρχεία του ενός GB
για τα mp3 έχει κάποια παραδείγματα σε comments (
δοκίμασε κανείς να βγάλει τα comments να δει αν πιάνει καθόλου
)
για όσα formats γράφει από πάνω
(NOTE THIS FORMAT HAS A BUILTIN EXTRACTION FUNCTION)
σημαίνει ότι τα βρίσκει από μόνο του ... στα αρχεία ήχου βρίσκει δηλαδή από μόνο του μόνο τα WAV αρχεία...
Τα αρχεία του lmms τα mmpz για παράδειγμα έχουν το
78 9c στο
5ο byte
πχ
00000000 00 02 b0 6a 78 9c ed 5d 6b 8f e3 38 76 fd 3e bf |...jx..]k..8v.>.|και
00000000 00 00 5d 5e 78 9c dd 9c 6d 8f db c6 11 c7 df fb |..]^x...m.......|άρα η σύνταξη για το foremost.conf είναι:
- Κώδικας: Επιλογή όλων
# Linux multimedia studio files (LMMS) files
mmpz y 1000000 \x78\x9c
#---------------------------------------------------------------------
όπως βλέπετε η γραμμή που μας ενδιαφέρει δεν έχει comments
Δηλαδή με την παράμετρο -t αφού φτιάξει σωστά το foremost.conf
γίνεται να βρει κανείς τα mp3 του ειδικά αν ξέρει αν είχαν ID3 TAGS με το foremost
καθώς έχουν κάτι κοινό πολλά μπορούν να γίνουν με τις κατάλληλες αλλαγές στο foremost.conf
Περισσότερα στο
http://en.wikipedia.org/wiki/ID3http://www.forensicfocus.com/familiar-i ... c-analysishttp://www.mp3-converter.com/mp3codec/id3.htmhttp://www.mpgedit.org/mpgedit/mpeg_format/mpeghdr.htmκαι
- Κώδικας: Επιλογή όλων
man foremost
και στο αρχείο README