Λύση

Λύση της σπαζοκεφαλιάς αποκρυπτογράφησης.

[Τα πρόβλημα αυτό προέκυψε από ανάλυση του Κωνσταντίνου Τόγια στη λίστα συνδρομητών Ubuntu-users στο ubuntu-gr τελεία org. Ο δικτυακός τόπος του ελληνικού Ubuntu είναι ενεργός από προσπάθειες του Γιώργου Λογιοτατίδη, και υπάρχει και ελληνική σελίδα της ομάδας στο κεντρικό Wiki του Ubuntu Linux.]

Χρησιμοποιώντας το πρόγραμμα “unzip” από Linux δείχνει ότι το πρωταρχικό όνομα του αρχείου .doc είναι σε κωδικοποίηση άλλη από UTF-8. Άλλες εφαρμογές όπως file-roller (ποιο είναι το αντίστοιχο του KDE;) δείχνουν κενό όνομα. Ο Γιάννης Μ. αναφέρει ότι το WinZip μπορεί να εμφανίσει σωστά το όνομα.

Ποιό είναι το πραγματικό όνομα του αρχείου .doc;

Το πρότυπο ZIP δεν περιγράφει την κωδικοποίηση στην οποία είναι αποθηκευμένο το όνομα ενός αρχείου, με αποτέλεσμα να χρειάζεται να μαντέψει κάποιος δοκιμάζοντας τυπικές κωδικοποιήσεις για το ποιο είναι το τελικό όνομα. Υπάρχει βιβλιοθήκη ΕΛΛΑΚ που να δοκιμάζει τυπικές κωδικοποιήσεις σε ένα αλφαριθμητικό για να βρει την κωδικοποίησή του;

planet@iceberg /home/projects/planet
> unzip -l apoxairetisthrio-logos-mathith.zip
Archive: apoxairetisthrio-logos-mathith.zip
Length Date Time Name
——– —- —- —-
24576 05-08-04 09:49 Ǻ▒▒▒ΰ▒ᮽҿ᪬ ▒ܪ▒ ▒▒▒׽▒.doc
——– ——-
24576 1 file

planet@iceberg /home/projects/planet
> _

Αν πάρουμε την παραπάνω έξοδο του unzip και δοκιμάσουμε να την μετατρέψουμε σε utf-8, θα δούμε ότι κανένα από τα γνωστά iso-8859-7, 737, 928 δεν ταιριάζει.

planet@iceberg /home/projects/planet
> unzip apoxairetisthrio-logos-mathith.zip | iconv -f iso-8859-7 -t utf-8
Archive: apoxairetisthrio-logos-mathith.zip
inflating: ΗΊiconv: μη έγκυρη ακολουθία εισόδου στη θέση 60

planet@iceberg /home/projects/planet
> _

Τι συμβαίνει άραγε; Αν δούμε το περιεχόμενο του πρωταρχικού αρχείου με ένα hex editor (ghex2, από το GNOME) και συγκρίνουμε με την έξοδο του unzip, θα παρατηρήσουμε ότι είναι διαφορετικό. Αν και το unzip δεν γνωρίζει από κωδικοποιήσεις, χαλάει την κωδικοποίηση του ελληνικού ονόματος.

Πως προχωράμε; Με το ghex2 εντοπίζουμε και αποθηκεύουμε το όνομα του αρχείου .doc σε ξεχωριστό αρχείο και εκτελούμε:

planet@iceberg /home/projects/planet
> cat nameoffile.txt | iconv -f CP737 -t utf-8
Αποχαιρετιστήριος λόγος μαθητή.doc

planet@iceberg /home/projects/planet
> _

(Υποτίθεται ότι δοκιμάσαμε iso-8859-7, CP737, κτλ).

Τι κάνουμε τώρα;

Υπάρχει το ενδεχόμενο να έχει λυθεί το πρόβλημα στην έκδοση 2.10.3 του file-roller. Δυστυχώς μέχρι στιγμής δεν καταφέραμε να το μεταγλωττίσουμε (το Ubuntu 5.04 έχει 2.10.1), οπότε το ζήτημα εκκρεμεί…

Θα ήταν καλό να λυθεί το πρόβλημα στο νέο GNOME, οπότε οι χρήστες να μην αντιμετωπίσουν πρόβλημα με παλιές κωδικοποιήσεις ονομάτων αρχείων. It just works ™.

3 comments

%d bloggers like this: