Δημοσιεύτηκε: 22 Φεβ 2012, 14:06
EDIT: ConsoleHexViewer 0.28e75A - Public
Download: http://www.box.com/s/9744f89956b4944457c1
Έχω σταματήσει να ασχολούμαι με το συγκεκριμένο project εδώ και περίπου 10 ημέρες (επειδή κουράστηκα, ίσως το ξαναπιάσω κάποια στιγμή). Το αναβάθμισα και συγκέντρωσα τα πάντα σε ένα μόνο rar αρχείο (το παραπάνω link).
Το πακέτο περιέχει αρχεία και οδηγίες για όλες τις πλατφόρμες τόσο για το compilation του κώδικα όσο και για τα εκτελέσιμα και για ANSI/Windows-1253 περιβάλλοντα και για UTF-8. Περιέχει επίσης οδηγίες για τη δημιουργία μεταφράσεων και σε άλλες γλώσσες (πέραν της Αγγλικής και της Ελληνικής που υπάρχουν ήδη).
Σε περιβάλλοντα Posix, υποστηρίζονται μέσω makefiles o gcc (Unix/Linux/MacOS) και το cygwin gcc tool-chain (Windows XP/Vista/7). Περιέχονται προς άμεση χρήση και τα εκτελέσιμα που βγάζουν σε Ubuntu 11.04, FreeBSD 8.2 και CygWin.
Σε Windows, υποστηρίζονται μέσω makefiles ή/και project-files η Pelles C και οποιοδήποτε port του gcc tool-chain λειτουργεί σε native Windows περιβάλλον (όπως για παράδειγμα το MinGW). Περιλαμβάνονται προς άμεση χρήση και τα εκτελέσιμα που βγάζουν.
Ότι bug βρείτε, πέραν αυτών που αναφέρονται στο readme, γράψτε το στο νήμα (θα προσπαθήσω να το διορθώσω, ειδικά αν είναι κάτι εύκολο) Επίσης, αν κάνετε τίποτα βελτιώσεις, διορθώσεις, μεταφράσεις, υποστήριξη άλλων compilers, δημιουργία εκτελέσιμων σε άλλες πλατφόρμες, κλπ, βάλτε τα κι αυτά στο νήμα (ή στείλτε τα μου) ,να τα βάλω προσθέσω στο συγκεντρωτικό Download
FEATURES
SCREEN-SHOTS
Νεότερα screen-shots μπορείτε να δείτε εδώ: http://www.insomnia.gr/topic/442635-cro ... p__4675424
ΥΓ1. Ο κώδικας σε πολλά σημεία είναι σε κατάσταση "1st draft".
ΥΓ2. Αφήνω παρακάτω μέσα σε παραθέσεις τα μηνύματα από τις προηγούμενες εκδόσεις.
Download: http://www.box.com/s/9744f89956b4944457c1
Έχω σταματήσει να ασχολούμαι με το συγκεκριμένο project εδώ και περίπου 10 ημέρες (επειδή κουράστηκα, ίσως το ξαναπιάσω κάποια στιγμή). Το αναβάθμισα και συγκέντρωσα τα πάντα σε ένα μόνο rar αρχείο (το παραπάνω link).
Το πακέτο περιέχει αρχεία και οδηγίες για όλες τις πλατφόρμες τόσο για το compilation του κώδικα όσο και για τα εκτελέσιμα και για ANSI/Windows-1253 περιβάλλοντα και για UTF-8. Περιέχει επίσης οδηγίες για τη δημιουργία μεταφράσεων και σε άλλες γλώσσες (πέραν της Αγγλικής και της Ελληνικής που υπάρχουν ήδη).
Σε περιβάλλοντα Posix, υποστηρίζονται μέσω makefiles o gcc (Unix/Linux/MacOS) και το cygwin gcc tool-chain (Windows XP/Vista/7). Περιέχονται προς άμεση χρήση και τα εκτελέσιμα που βγάζουν σε Ubuntu 11.04, FreeBSD 8.2 και CygWin.
Σε Windows, υποστηρίζονται μέσω makefiles ή/και project-files η Pelles C και οποιοδήποτε port του gcc tool-chain λειτουργεί σε native Windows περιβάλλον (όπως για παράδειγμα το MinGW). Περιλαμβάνονται προς άμεση χρήση και τα εκτελέσιμα που βγάζουν.
Ότι bug βρείτε, πέραν αυτών που αναφέρονται στο readme, γράψτε το στο νήμα (θα προσπαθήσω να το διορθώσω, ειδικά αν είναι κάτι εύκολο) Επίσης, αν κάνετε τίποτα βελτιώσεις, διορθώσεις, μεταφράσεις, υποστήριξη άλλων compilers, δημιουργία εκτελέσιμων σε άλλες πλατφόρμες, κλπ, βάλτε τα κι αυτά στο νήμα (ή στείλτε τα μου) ,να τα βάλω προσθέσω στο συγκεντρωτικό Download
FEATURES
Spoiler: show
SCREEN-SHOTS
Νεότερα screen-shots μπορείτε να δείτε εδώ: http://www.insomnia.gr/topic/442635-cro ... p__4675424
ΥΓ1. Ο κώδικας σε πολλά σημεία είναι σε κατάσταση "1st draft".
ΥΓ2. Αφήνω παρακάτω μέσα σε παραθέσεις τα μηνύματα από τις προηγούμενες εκδόσεις.
έγραψε:
EDIT: Fix 0.261A - Public (αποκλειστικά για Alpha testing)
Ανοίξτε τα spoilers για τον διορθωμένο κώδικα των αρχείων: con_color.h και hexview.c (το αρχείο hexview.h δεν αλλάχτηκε, οπότε δεν το συμπεριλαμβάνω). Διορθώνει πρόβλημα με τα χρώματα σε ANSI τερματικά (λεπτομέρειες εδώ: https://forum.ubuntu-gr.org/viewtopic.p ... 82#p233082).
Αρχείο: con_color.h (0.261A)Spoiler: show
Αρχείο: hexview.c (0.261A)Spoiler: showέγραψε:
EDIT: Έκδοση 0.26A - Public (αποκλειστικά για Alpha testing) : http://www.box.com/s/gl87fptnqq1a7cenn61n
[i]Οι hex viewers/editors (ή binary viewers/editors) δείχνουν τα ακριβή περιεχόμενα οποιουδήποτε αρχείου byte προς byte και συνήθως παρέχουν διάφορες low-level λειτουργίες.
Δυο χρήσιμα links:
1. http://en.wikipedia.org/wiki/Hex_editor
2. http://www.linfo.org/hex_editor.html
Παραθέτω παραπάνω τον κώδικα της έκδοσης 0.26A απλά και μόνο για να με βοηθήσουν όποιοι έχουν διάθεση εντοπίζοντας πιθανά προβλήματα, όσο εγώ θα σουλουπώνω τον μέχρι τώρα κώδικα. Όταν λέω να με βοηθήσετε δεν εννοώ στον κώδικα, αλλά ως απλοί χρήστες του προγράμματος... να δείτε δηλαδή αν λειτουργούν όλα σωστά μέχρι στιγμής.
Ο κώδικας είναι ακόμα σε ψιλο-άθλια κατάσταση. Θα ξεκινήσω τώρα να τον οργανώνω σωστά (επανεξέταση δομών, συναρτήσεων, μεταβλητών, κλπ) όσο ψάχνετε για πιθανά bugs. Στόχος είναι να διορθώσω οτιδήποτε στραβό υπάρχει μέχρι αυτή τη στιγμή, ώστε να είναι πολύ πιο εύκολο να προσθέσω νέα χαρακτηριστικά στη συνέχεια.
Η μέχρι τώρα λειτουργικότητα περιγράφεται εν συντομία στην οθόνη Help (πατήστε h + ENTER στην βασική οθόνη για να τη δείτε), ενώ η τρέχουσα κατάσταση της βασικής οθόνης αναλύεται στις 2 τελευταίες γραμμές της.
Η 1η γραμμή δίνει πληροφορίες για το ανοιχτό αρχείο: όνομα (τους τελευταίους 11 χαρακτήρες), μέγεθος σε Mbytes, μέγεθος σε γραμμές προβολής, μέγεθος σε σελίδες προβολής (και την τρέχουσα σελίδα μπροστά από τις συνολικές). Δείχνει επίσης το επιλεγμένο character set που χρησιμοποιείται για την προβολή των περιεχομένων ως χαρακτήρες στη δεξιά περιοχή: ASCII (εμφανίζονται όσοι χαρακτήρες έχουν ASCII code από 32 έως 127) ή xASCII (εμφανίζονται όσοι χαρακτήρες έχουν ASCII code από 32 έως 255 ... το χ σημαίνει eXtended). Οι υπόλοιποι χαρακτήρες (non-printable) εμφανίζονται ως τελείες.
Η 2η γραμμή επικεντρώνεται περισσότερο στο byte (χαρακτήρα) που βρίσκεται ο δρομέας, δείχνοντας τα εξής:
στο 1ο κουτάκι δείχνει την θέση του τρέχοντος byte μέσα στο αρχείο...
- Κώδικας: Επιλογή όλων
10δική θέση = 16αδική θέση / τελευταία θέση σε 16δική μορφή [ τρέχουσα γραμμή σε 16δική μορφή ]
στα 3 επόμενα κουτάκια δείχνει το ASCII code του τρέχοντος byte ως α) 10δική τιμή (unsigned και signed) β) 8αδική τιμή (unsigned) και γ) 2αδική τιμή.
- Κώδικας: Επιλογή όλων
d(ec): unsigned, signed | o(ct): unsigned | unsigned
Το επόμενο κουτάκι δείχνει την τελευταία εντολή που πληκτρολογήσατε, ώστε πατώντας ENTER να την επαναλάβετε. Αυτό είναι πάρα πολύ χρήσιμο, επειδή το περιβάλλον είναι text-based και κυρίως επειδή ο κώδικας είναι γραμμένος σε στάνταρ C99 για να γίνεται compile χωρίς αλλαγές σε πολλές πλατφόρμες, άρα δεν υποστηρίζει άμεση μετακίνηση στην οθόνη (την επανασχεδιάζει σε ρυθμό κονσόλας μετά από κάθε σας εντολή.
Για παράδειγμα, μπορείτε να πληκτρολογήσετε την εντολή μετακίνησης στον επόμενο χαρακτήρα και κατόπιν να πατάτε απλά ENTER για να πηγαίνετε στους επόμενους. Οι εντολές μετακίνησης δέχονται προαιρετικά και ένα (θετικό) βήμα μετακίνησης. Οπότε αν θέλετε για παράδειγμα να μετακινείστε ας πούμε κατά 4 bytes τη φορά, πληκτρολογήστε την 1η φορά...και όλες τις επόμενες φορές θα πατάτε σκέτο ENTER
- Κώδικας: Επιλογή όλων
>4 + ENTER
Όλα τα πλήκτρα των εντολών ορίζονται προς το παρόν στην αρχή του αρχείου: hexview.c, στο enum KeyCommand (και προφανώς μπορείτε να τα αλλάξετε).
Σημειώστε επίσης πως η τρέχουσα γραμμή είναι πάντα η 1η γραμμή, δηλαδή γίνεται αυτόματη κύλιση ώστε η τρέχουσα γραμμή να εμφανίζεται πάντα πρώτη. Αυτό ξενίζει, αλλά είναι απαραίτητο για όταν είναι απενεργοποιημένα τα χρώματα (αλλιώς θα ήταν εξαιρετικά δύσκολο να δείτε σε ποιο byte βρίσκεστε ανά πάσα στιγμή... ενώ έτσι και σε συνδυασμό με το αστεράκι που εμφανίζεται στην τρέχουσα στήλη είναι σαφώς ευκολότερο). Για να δείτε τι εννοώ, πατήστε c + ENTER στην βασική οθόνη για να απενεργοποιήσετε τα χρώματα και θα καταλάβετε (πατήστε ξανά c + ENTER για να επαναφέρετε τα χρώματα).
Προς το παρόν το Theme των χρωμάτων είναι μονάχα για κονσόλες με μαύρο φόντο (θα βρείτε τα σχετικά #define στο αρχείο: hexview.h, αν θελήσετε να πειραματιστείτε με τα εμφανιζόμενα χρώματα).
Έχει μερικά ακόμα χρήσιμα πραγματάκια, δείτε την οθόνη Help και πειραματιστείτε και ρωτήστε ότι θέλετε. Σε αυτήν την έκδοση έχω απενεργοποιήσει την παράμετρο -raw στη γραμμή εντολών.
Η διαδικασία μεταγλώττισης παραμένει ίδια...
Unix/Linux
- Κώδικας: Επιλογή όλων
gcc hexview.c -o hexview
Windows
- Κώδικας: Επιλογή όλων
gcc hexview.c -o hexview.exe
Αν το τρέξετε χωρίς όνομα αρχείου στη γραμμή εντολών, τότε ανοίγει τον εαυτό του. Μπορείτε να ανοίξετε άλλο αρχείο και από μέσα από το πρόγραμμα, με την εντολή:χωρίς κενά διαστήματα μετά το f.
- Κώδικας: Επιλογή όλων
ffilename
Παραθέτω και 3 screen-shots από αυτή την έκδοση (ανοίξτε το spoiler)Spoiler: showέγραψε:
Έκδοση 0.1Α: http://ideone.com/ttnNJ
Παραθέτω κώδικα από έναν πολύ απλό δεκαεξαδικό viewer αρχείων (HexViewer): http://ideone.com/ttnNJ
Χωρίς παράμετρο στη γραμμή εντολών, ρωτάει ποιο αρχείο να ανοίξει και το δείχνει σελιδοποιημένο, όπως φαίνεται στην παρακάτω εικόνα (από Windows). Μπορείτε όμως να περάστε το όνομα του αρχείου και απευθείας στη γραμμή εντολών, π.χ...
- Κώδικας: Επιλογή όλων
./a.out a.out
Επειδή το πρόγραμμα δεν παρέχει μετακίνηση μέσα στο αρχείο που δείχνει (πέρα από την σειριακή του εμφάνιση, ανά σελίδα) μπορείτε να χρησιμοποιήστε ως 1η παράμετρο στην γραμμή εντολών του το "-raw" και κατόπιν το όνομα του αρχείου που θέλετε να ανοίξει. Κάνοντας το κατόπιν pipe στο less (ή στο more, ή σε όποιον άλλον file viewer κονσόλας χρησιμοποιείτε) έχετε έναν λειτουργικότατο hex-viewer...
- Κώδικας: Επιλογή όλων
./a.out -raw a.out | less
Η παραπάνω εικόνα δείχνει το εκτελέσιμο αρχείο του προγράμματος περασμένο στον εαυτό του, σε Windows. Όσοι έχετε ασχοληθεί με την εσωτερική δομή αρχείων στα Windows, μπορείτε να διακρίνετε στο "Chars area" το χαρακτηριστικό "MZ" στα 2 πρώτα bytes, που υποδηλώνουν πως πρόκειται για Win32 εκτελέσιμο (το οποίο π.χ. δεν τρέχει σε DOS). Λίγο πιο κάτω μπορείτε να δείτε τον χαρακτηριστικό PE header που υπάρχει σε όλα τα εκτελέσιμα των Windows. Στο Linux σε πλατφόρμες x86 τα αναγνωριστικά bytes των εκτελέσιμων γράφουν "ELF".
Αν έχω όρεξη μπορεί να του προσθέσω PageUp και PageDown λειτουργικότητα
Μεταγλώττιση:
- Κώδικας: Επιλογή όλων
gcc -Wall -Wextra hexview.c -o hexview
Χρήση:
- Κώδικας: Επιλογή όλων
hexview [-raw] [filename]
ΥΓ. Στη γραμμή εργαλείων των Windows δεν υπάρχει ο viewer less. Μπορείτε να κατεβάσετε μια Windows εκδοχή του από εδώ. Εναλλακτικά, μπορείτε να κατεβάσετε ολόκληρα πακέτα με unix-like εργαλεία γραμμής εντολών για Windows, όπως το GnuWin, ένα παλαιότερο υποσύνολό του, τα UnixUtils ή αν θέλετε έναν πλήρη Linux emulator στα Windows, το Cygwin.



