ISO C (C99): File HexViewer

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Re: ANSI C: File HexViewer

Δημοσίευσηαπό Star_Light » 01 Μαρ 2012, 01:33

@migf1 επειδη απο την τοποθεσια που το εχεις ανεβασει σαν .rar δεν μου κατεβαινει στο λινουξ
μπορω να πάρω τον πηγαιο απο εδω -> http://ideone.com/ttnNJ και απλα να τον μεταγλωτισσω ή έχει εξαρτήσεις
και απο άλλα αρχεία? Απο οσο βλεπω τις δηλωνεις τις συναρτησεις ολες εδω.... και τις καλεις μετα. Aπλα τις 2 τις καλείς
μεσα απο την main και τις άλλες 2 filehexlist , s_read απο άλλη ρουτινα μεσα !
Τελευταία επεξεργασία από Star_Light και 01 Μαρ 2012, 01:39, έχει επεξεργασθεί 1 φορά/ες συνολικά
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: ANSI C: File HexViewer

Δημοσίευσηαπό Star_Light » 01 Μαρ 2012, 01:36

btw καμια πιο καλη πηγη για τους hex editors να διαβασουμε λιγη θεωρια υπάρχει?
Οχι πως εχω προβλημα με την Wikipedia απλα το συγκεκριμενο λήμμα δεν διαθέτει αξιόπιστες
αναφορές κατω κατω
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: ANSI C: File HexViewer

Δημοσίευσηαπό Star_Light » 01 Μαρ 2012, 02:47

Λοιπον δεν υπάρχει και τιποτα τρομερό απο θεωρία απο οσο ειδα και ελπιζω για τους hex editors... ενας καλος ορισμος νομιζω μπορει να ειναι ο κάτωθι :

Οι hex editors σου δινουν μια 16-δικη αναπαράσταση των δεδομένων ενος αρχείου , ένας hex editor ειναι ένας text editor που σου δινει οπως έγραψα την 16-δικη αναπαράσταση

ήμουν έτοιμος να πω οτι οι hex editors σου δίνουν την 16-δική αναπαράσταση των δεδομένων ενος δυαδικού αρχειου επειδη ολα στον πι σι ειναι αποθηκευμενα σε δυαδικη μορφη αλλα καποιος αρκετα σχολαστικός ξένος σε μια συζητηση που ειχα σε ενα τσατ παλι μου ειπε πως το τερμ "δυαδικο" αρχειο δεν εχει νοημα.

Ενα εκτελέσιμο αρχειο ρε παιδια δυαδικο δεν ειναι? που εχει οδηγιες μηχανης μεσα πχ...
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: ANSI C: File HexViewer

Δημοσίευσηαπό simosx » 01 Μαρ 2012, 03:39

Προσπάθησα να διαβάσω τον κώδικα του προγράμματος. Τελικά έφτιαξα αποθετήριο στο
https://github.com/ubuntu-gr/hexview
όπου για τη μεταγλώττιση

Κώδικας: Επιλογή όλων
git clone git://github.com/ubuntu-gr/hexview.git
cd hexview
make


Οι προειδοποιήσεις που εμφανίζονται είναι

Κώδικας: Επιλογή όλων
hexview.c: In function ‘show_help’:
hexview.c:171:2: warning: null argument where non-null required (argument 1)
hexview.c:185:2: warning: null argument where non-null required (argument 1)
hexview.c: In function ‘show_header’:
hexview.c:243:2: warning: null argument where non-null required (argument 1)
hexview.c:255:4: warning: null argument where non-null required (argument 1)
hexview.c:260:4: warning: null argument where non-null required (argument 1)
hexview.c:271:4: warning: null argument where non-null required (argument 1)
hexview.c:275:4: warning: null argument where non-null required (argument 1)
hexview.c:286:3: warning: null argument where non-null required (argument 1)
hexview.c:289:3: warning: null argument where non-null required (argument 1)
hexview.c: In function ‘show_prompt’:
hexview.c:324:2: warning: null argument where non-null required (argument 1)
hexview.c:336:2: warning: null argument where non-null required (argument 1)
hexview.c:342:2: warning: null argument where non-null required (argument 1)
hexview.c:352:2: warning: null argument where non-null required (argument 1)
hexview.c:417:2: warning: null argument where non-null required (argument 1)
hexview.c:420:2: warning: null argument where non-null required (argument 1)
hexview.c: In function ‘view_row’:
hexview.c:457:10: warning: assignment makes integer from pointer without a cast
hexview.c:458:2: warning: passing argument 1 of ‘printf’ makes pointer from integer without a cast
/usr/include/stdio.h:359:12: note: expected ‘const char * __restrict__’ but argument is of type ‘int’
hexview.c:458:2: warning: format not a string literal and no format arguments
hexview.c:458:2: warning: null argument where non-null required (argument 1)
hexview.c:477:12: warning: assignment makes integer from pointer without a cast
hexview.c:478:4: warning: passing argument 1 of ‘printf’ makes pointer from integer without a cast
/usr/include/stdio.h:359:12: note: expected ‘const char * __restrict__’ but argument is of type ‘int’
hexview.c:478:4: warning: format not a string literal and no format arguments
hexview.c:478:4: warning: null argument where non-null required (argument 1)
hexview.c:484:12: warning: assignment makes integer from pointer without a cast
hexview.c:485:4: warning: passing argument 1 of ‘printf’ makes pointer from integer without a cast
/usr/include/stdio.h:359:12: note: expected ‘const char * __restrict__’ but argument is of type ‘int’
hexview.c:485:4: warning: format not a string literal and no format arguments
hexview.c:485:4: warning: null argument where non-null required (argument 1)
hexview.c:491:12: warning: assignment makes integer from pointer without a cast
hexview.c:492:4: warning: passing argument 1 of ‘printf’ makes pointer from integer without a cast
/usr/include/stdio.h:359:12: note: expected ‘const char * __restrict__’ but argument is of type ‘int’
hexview.c:492:4: warning: format not a string literal and no format arguments
hexview.c:492:4: warning: null argument where non-null required (argument 1)
hexview.c:511:12: warning: assignment makes integer from pointer without a cast
hexview.c:512:4: warning: passing argument 1 of ‘printf’ makes pointer from integer without a cast
/usr/include/stdio.h:359:12: note: expected ‘const char * __restrict__’ but argument is of type ‘int’
hexview.c:512:4: warning: format not a string literal and no format arguments
hexview.c:512:4: warning: null argument where non-null required (argument 1)
hexview.c:515:12: warning: assignment makes integer from pointer without a cast
hexview.c:516:4: warning: passing argument 1 of ‘printf’ makes pointer from integer without a cast
/usr/include/stdio.h:359:12: note: expected ‘const char * __restrict__’ but argument is of type ‘int’
hexview.c:516:4: warning: format not a string literal and no format arguments
hexview.c:516:4: warning: null argument where non-null required (argument 1)
hexview.c:519:12: warning: assignment makes integer from pointer without a cast
hexview.c:520:4: warning: passing argument 1 of ‘printf’ makes pointer from integer without a cast
/usr/include/stdio.h:359:12: note: expected ‘const char * __restrict__’ but argument is of type ‘int’
hexview.c:520:4: warning: format not a string literal and no format arguments
hexview.c:520:4: warning: null argument where non-null required (argument 1)
hexview.c: In function ‘do_command’:
hexview.c:603:3: warning: null argument where non-null required (argument 1)
hexview.c:649:16: warning: comparison between signed and unsigned integer expressions
hexview.c:682:16: warning: comparison between signed and unsigned integer expressions
hexview.c:703:15: warning: comparison between signed and unsigned integer expressions
hexview.c:754:3: warning: null argument where non-null required (argument 1)
hexview.c:778:3: warning: null argument where non-null required (argument 1)
hexview.c:816:3: warning: null argument where non-null required (argument 1)
hexview.c:850:3: warning: null argument where non-null required (argument 1)


Για την colorPRINTF(), γίνονται κλήσεις σε άλλες δύο #define, η μία καλεί την άλλη. Για την πιο εύκολη κατανόηση του κώδικα, μπορείτε να τρέξετε
Κώδικας: Επιλογή όλων
cpp hexview.c

Οι περισσότερες προειδοποιήσεις προέρχονται από εντολές τις μορφής printf('\0'), οπότε θα μπορούσαν να διορθωθούν γρήγορα.
προσωπικό ιστολόγιο ϗ πλανήτης Ubuntu-gr
Συμβάλετε και εσείς στο ελληνικό βιβλίο Ubuntu!
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.10 saucy 3.11.0-031100rc1-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD E-450 APU with Radeon HD Graphics ‖ RAM 3555 MiB ‖ Sony Corporation VAIO
4 AMD nee ATI Wrestler [Radeon HD 6320] [1002:9806] {fglrx_pci}
5 eth0: Atheros Inc. AR8151 v2.0 Gigabit Ethernet [1969:1083] (rev c0) ⋮ wlan0: Atheros Inc. AR9285 [168c:002b] (rev 01)
Φτιάξτε και εσείς τη δική σας υπογραφή (παραπάνω κείμενο) αυτόματα με κλικ εδώ!
simosx
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10334
Εγγραφή: 11 Μάιος 2008, 18:52
Launchpad: simosx
IRC: simosx
Εκτύπωση

Re: ANSI C: File HexViewer

Δημοσίευσηαπό migf1 » 01 Μαρ 2012, 15:48

Ευχαριστώ πολύ για το ενδιαφέρον παιδιά! Σίμο ευχαριστώ επίσης για το git (μου έχεις "φάει" έναν άσσο στο τέλος του nickname μου :lol:).

Χτες ήμουν πολύ κουρασμένος και την έπεσα νωρίς, για αυτό απαντάω τώρα. Λοιπόν για τα warnings, έχω κάνει... λαλακία στον κώδικα, ξεχνώντας πως σε ANSI mode τα χρώματα του con_color.h είναι ορισμένα ως strings, ενώ σε Windows mode είναι ορισμένα ως int. Σε κάποια σημεία λοιπόν κάνω συγκρίσεις χρωμάτων σαν να είναι int (με == δηλαδή) ενώ σε ANSI mode πρέπει να γίνεται με strcmp().

Τα υπόλοιπα warnings που βγάζει( "null argument where non-null required (argument 1)" ) οφείλεται αφενός πως σε ANSI mode τα FG_NOCHANGE και BG_NOCHANGE είναι ορισμένα ως '\0' αντί για "\0" (αυτό το είχα κάνει για να μπορώ να τα χρησιμοποιώ σαν int σε συγκρίσεις, αλλά τελικά δημιουργούσε πρόβλημα σε άλλα πράματα). Τα διόρθωσα σε "\0" όπως κι έφτιαξα και τα strcmp() στο con_color.h. Όμως ο gcc εξακολουθεί να βγάζει προειδοποιήσεις: embedded ‘\0’ in format, μόνο που αυτή τη φορά είναι άκακες :) ... απλώς λέει πως το format-string της printf() περιέχει μέσα του μηδενικό χαρακτήρα... (no problem, το ξέρουμε ότι μπορεί να περιέχει :lol:)

Οπότε σας δίνω τα 2 διορθωμένα αρχεία: hexview.c και con_color.h (τα έβαλα στην αρχή του αρχικού ποστ, μέσα σε spoilers).

ΥΓ. Δώστε του να καταλάβει, να ανακαλύψουμε τυχόν αδυναμίες του μέχρι στιγμής, να τις φτιάξω πριν προχωρήσω περισσότερο :)
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: ISO C (C99): File HexViewer

Δημοσίευσηαπό migf1 » 01 Μαρ 2012, 16:03

Star_Light έγραψε:Λοιπον δεν υπάρχει και τιποτα τρομερό απο θεωρία απο οσο ειδα και ελπιζω για τους hex editors... ενας καλος ορισμος νομιζω μπορει να ειναι ο κάτωθι :

Οι hex editors σου δινουν μια 16-δικη αναπαράσταση των δεδομένων ενος αρχείου , ένας hex editor ειναι ένας text editor που σου δινει οπως έγραψα την 16-δικη αναπαράσταση

ήμουν έτοιμος να πω οτι οι hex editors σου δίνουν την 16-δική αναπαράσταση των δεδομένων ενος δυαδικού αρχειου επειδη ολα στον πι σι ειναι αποθηκευμενα σε δυαδικη μορφη αλλα καποιος αρκετα σχολαστικός ξένος σε μια συζητηση που ειχα σε ενα τσατ παλι μου ειπε πως το τερμ "δυαδικο" αρχειο δεν εχει νοημα.

Ενα εκτελέσιμο αρχειο ρε παιδια δυαδικο δεν ειναι? που εχει οδηγιες μηχανης μεσα πχ...

Γιατί κολλάς έτσι ρε συ; Οι hex-editors απλά σου δείχνουν την πραγματική εικόνα ενός οποιουδήποτε αρχείου (δίσκου, μνήμης, κλπ) byte προς byte. Απλώς το κάθε byte αναπαριστάνεται με 2 ψηφία 16αδικής βάσης. Η περιοχή τέρμα δεξιά που δείχνει τα bytes σαν χαρακτήρες, είναι για να σε βοηθάει αν π.χ. ανοίξεις ένα απλό αρχείο κειμένου να δεις σε ποιο πραγματικά byte αντιστοιχεί ο κάθε χαρακτήρας (την εσωτερική του απεικόνιση δηλαδή σε γλώσσα μηχανής, μόνο που αντί να στα δείχνει σε 2αδική βάση στα δείχνει σε 16αδική... είναι πολύ πιο ευανάγνωστο έτσι από το να βλέπεις μια οθόνη γεμάτη με άσους και μηδενικά).

Ορίστε άλλο ένα χρήσιμο link: http://www.makeuseof.com/tag/hex-editor ... explained/

ΥΓ. Μια χρήση των hex viewers είναι να βλέπεις τα header bytes ομοειδών αρχείων... π.χ. όλες οι εικόνες tiff έχουν μια συγκεκριμένη ακολουθία από bytes στην αρχή τους (header), με τα οποία bytes αναγνωρίζεις πως πρόκειται για εικόνα tiff.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: ISO C (C99): File HexViewer

Δημοσίευσηαπό simosx » 01 Μαρ 2012, 16:36

Έβαλα τις αλλαγές στο αποθετήριο, https://github.com/ubuntu-gr/hexview
Στο ιστορικό των αλλαγών του git δε φαίνονται εύκολα οι αλλαγές διότι το [cοde/] παράγει διαστήματα (spaces) αντί για τους στηλοθέτες (tabs).

Οπότε, για να δοκιμάσετε από το αποθετήριο,
Κώδικας: Επιλογή όλων
apt-get install git

(μια φορά, εγκατάσταση του λογισμικού git)

Κώδικας: Επιλογή όλων

git clone git clone git://github.com/ubuntu-gr/hexview.git

(μια φορά, για δημιουργία αρχικού κλώνου του αποθετηρίου)

Κώδικας: Επιλογή όλων

git pull --rebase

Αν έχουμε ήδη κλώνο του αποθετηρίου και θέλουμε να ενημερώσουμε τον κλώνο μας με τυχόν αλλαγές που έχουν ήδη δημοσιευθεί.

Για να βάλετε άμεσα τις δικές σας αλλαγές στο δημόσιο αποθετήριο, φτιάχνετε λογαριασμό στο github.com και δίνεται εδώ (ή σε pm) το όνομα χρήστη. Έτσι, θα μπορείτε να κάνετε commit και να τα στέλνετε απευθείας στο αποθετήριο. Οδηγίες για git στο viewtopic.php?f=9&t=19319

Αυτά είναι τα νεότερα σφάλματα κατά τη μεταγλώττιση.

Κώδικας: Επιλογή όλων
gcc -Wall -Wextra hexview.c -o hexview
hexview.c: In function ‘show_help’:
hexview.c:171:5: warning: embedded ‘\0’ in format
hexview.c:185:5: warning: embedded ‘\0’ in format
hexview.c: In function ‘show_header’:
hexview.c:242:5: warning: embedded ‘\0’ in format
hexview.c:256:13: warning: embedded ‘\0’ in format
hexview.c:258:13: warning: embedded ‘\0’ in format
hexview.c:266:13: warning: embedded ‘\0’ in format
hexview.c:270:13: warning: embedded ‘\0’ in format
hexview.c:281:9: warning: embedded ‘\0’ in format
hexview.c:286:13: warning: embedded ‘\0’ in format
hexview.c:288:9: warning: embedded ‘\0’ in format
hexview.c:297:9: warning: embedded ‘\0’ in format
hexview.c: In function ‘show_prompt’:
hexview.c:336:5: warning: embedded ‘\0’ in format
hexview.c:348:5: warning: embedded ‘\0’ in format
hexview.c:354:5: warning: embedded ‘\0’ in format
hexview.c:364:5: warning: embedded ‘\0’ in format
hexview.c:429:5: warning: embedded ‘\0’ in format
hexview.c:432:5: warning: embedded ‘\0’ in format
hexview.c: In function ‘view_row’:
hexview.c:469:9: warning: embedded ‘\0’ in format
hexview.c:474:9: warning: embedded ‘\0’ in format
hexview.c:493:17: warning: embedded ‘\0’ in format
hexview.c:497:17: warning: embedded ‘\0’ in format
hexview.c:504:17: warning: embedded ‘\0’ in format
hexview.c:508:17: warning: embedded ‘\0’ in format
hexview.c:515:17: warning: embedded ‘\0’ in format
hexview.c:519:17: warning: embedded ‘\0’ in format
hexview.c:539:17: warning: embedded ‘\0’ in format
hexview.c:543:17: warning: embedded ‘\0’ in format
hexview.c:550:17: warning: embedded ‘\0’ in format
hexview.c:553:17: warning: embedded ‘\0’ in format
hexview.c:560:17: warning: embedded ‘\0’ in format
hexview.c:563:17: warning: embedded ‘\0’ in format
hexview.c: In function ‘do_command’:
hexview.c:647:9: warning: embedded ‘\0’ in format
hexview.c:693:26: warning: comparison between signed and unsigned integer expressions
hexview.c:726:26: warning: comparison between signed and unsigned integer expressions
hexview.c:747:25: warning: comparison between signed and unsigned integer expressions
hexview.c:798:9: warning: embedded ‘\0’ in format
hexview.c:822:9: warning: embedded ‘\0’ in format
hexview.c:860:9: warning: embedded ‘\0’ in format
hexview.c:894:9: warning: embedded ‘\0’ in format
hexview.c: In function ‘buffer_dump’:
hexview.c:975:18: warning: cast from pointer to integer of different size
προσωπικό ιστολόγιο ϗ πλανήτης Ubuntu-gr
Συμβάλετε και εσείς στο ελληνικό βιβλίο Ubuntu!
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.10 saucy 3.11.0-031100rc1-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD E-450 APU with Radeon HD Graphics ‖ RAM 3555 MiB ‖ Sony Corporation VAIO
4 AMD nee ATI Wrestler [Radeon HD 6320] [1002:9806] {fglrx_pci}
5 eth0: Atheros Inc. AR8151 v2.0 Gigabit Ethernet [1969:1083] (rev c0) ⋮ wlan0: Atheros Inc. AR9285 [168c:002b] (rev 01)
Φτιάξτε και εσείς τη δική σας υπογραφή (παραπάνω κείμενο) αυτόματα με κλικ εδώ!
simosx
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10334
Εγγραφή: 11 Μάιος 2008, 18:52
Launchpad: simosx
IRC: simosx
Εκτύπωση

Re: ISO C (C99): File HexViewer

Δημοσίευσηαπό Star_Light » 01 Μαρ 2012, 17:01

migf1 έγραψε:
Γιατί κολλάς έτσι ρε συ; Οι hex-editors απλά σου δείχνουν την πραγματική εικόνα ενός οποιουδήποτε αρχείου (δίσκου, μνήμης, κλπ) byte προς byte. Απλώς το κάθε byte αναπαριστάνεται με 2 ψηφία 16αδικής βάσης. Η περιοχή τέρμα δεξιά που δείχνει τα bytes σαν χαρακτήρες, είναι για να σε βοηθάει αν π.χ. ανοίξεις ένα απλό αρχείο κειμένου να δεις σε ποιο πραγματικά byte αντιστοιχεί ο κάθε χαρακτήρας (την εσωτερική του απεικόνιση δηλαδή σε γλώσσα μηχανής, μόνο που αντί να στα δείχνει σε 2αδική βάση στα δείχνει σε 16αδική... είναι πολύ πιο ευανάγνωστο έτσι από το να βλέπεις μια οθόνη γεμάτη με άσους και μηδενικά).

Ορίστε άλλο ένα χρήσιμο link: http://www.makeuseof.com/tag/hex-editor ... explained/

ΥΓ. Μια χρήση των hex viewers είναι να βλέπεις τα header bytes ομοειδών αρχείων... π.χ. όλες οι εικόνες tiff έχουν μια συγκεκριμένη ακολουθία από bytes στην αρχή τους (header), με τα οποία bytes αναγνωρίζεις πως πρόκειται για εικόνα tiff.


Off topic:
Yπάρχει λόγος που κόλλησα έτσι!!!!! Κάποιες φορες υπάρχει ενα μπέρδεμα γυρω απο τα συστηματα αρίθμησης
Στην Wikipedia για παράδειγμα σε ένα αρθρο για τις MAC διευθυνσεις έλεγε οτι οι διευθυνσεις ειναι16-δικες. Αυτο ειναι λαθος.
Δεν υπαρχει 16-δικη διευθυνση... υπαρχει διευθυνση που παρουσιαζεται στην 16-δικη αναπαρασταση κατα τα αλλα ολα ειναι δυαδικα
στις μνημες. Και γενικοτερα μεσα στον υπολογιστη μας
http://el.wikipedia.org/wiki/%CE%94%CE% ... %CE%B7_MAC το λεει πεντακάθαρα και στην ξενογλωσσή
http://en.wikipedia.org/wiki/MAC_address

"The standard (IEEE 802) format for printing MAC-48 addresses in human-friendly form is six groups of two hexadecimal digits, .... "
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: ISO C (C99): File HexViewer

Δημοσίευσηαπό Ilias95 » 01 Μαρ 2012, 17:29

Λοιπόν δοκίμασα με διάφορα αρχεία (text, binaries, ταινίες, εικόνες) και φαίνεται να δουλεύει κανονικά ως προς τα βασικά.
Επίσης όλες οι λειτουργίες που φαίνονται στην βοήθεια δουλεύουν σωστά.


Προβλήματα:

1) Δεν μπορώ να ανοίξω ένα αρχείο iso. Δίνω κανονικά το full path προς το αρχείο αλλά μου λέει ότι δεν υπάρχει.

2) Ερώτηση. Οι φάκελοι πρέπει να ανοίγουν με έναν hex viewer;
Όταν δίνω ένα όνομα φακέλου με ρωτάει κανονικά αν θέλω να ανοίξει. Αν απαντήσω ναι, συνήθως απλά ανοίγει ένα κενό αρχείο. Μερικές φορές όμως κρασάρει το πρόγραμμα.
Επίσης έναν συγκεκριμένο φάκελο αν προσπαθήσω να τον ανοίξω την πρώτη φορά απλώς ανοίγει ένα άδειο αρχείο. Στην δεύτερη φορά που θα προσπαθήσω όμως κρασάρει.
Αυτό συμβαίνει όσες φορές και αν δοκιμάσω με τον συγκεκριμένο φάκελο. Με άλλους κρασάρει με την πρώτη.

Κώδικας: Επιλογή όλων
ilias@ilias-pc:~/hex$ ./hexview
Loading "./hexview"...
Done!

























OFFSET 0* 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF
---------..------------------------------------------------ .---------------
*00000000 7F 45 4C 46 01 01 01 00 00 00 00 00 00 00 00 00 .ELF............
00000010 02 00 03 00 01 00 00 00 90 89 04 08 34 00 00 00 ............4...
00000020 B0 51 00 00 00 00 00 00 34 00 20 00 09 00 28 00 .Q......4. ...(.
00000030 1E 00 1B 00 06 00 00 00 34 00 00 00 34 80 04 08 ........4...4...
00000040 34 80 04 08 20 01 00 00 20 01 00 00 05 00 00 00 4... ... .......
00000050 04 00 00 00 03 00 00 00 54 01 00 00 54 81 04 08 ........T...T...
00000060 54 81 04 08 13 00 00 00 13 00 00 00 04 00 00 00 T...............
00000070 01 00 00 00 01 00 00 00 00 00 00 00 00 80 04 08 ................
00000080 00 80 04 08 50 4C 00 00 50 4C 00 00 05 00 00 00 ....PL..PL......
00000090 00 10 00 00 01 00 00 00 14 4F 00 00 14 DF 04 08 .........O......
000000A0 14 DF 04 08 74 01 00 00 B8 01 00 00 06 00 00 00 ....t...........
000000B0 00 10 00 00 02 00 00 00 28 4F 00 00 28 DF 04 08 ........(O..(...
000000C0 28 DF 04 08 C8 00 00 00 C8 00 00 00 06 00 00 00 (...............
000000D0 04 00 00 00 04 00 00 00 68 01 00 00 68 81 04 08 ........h...h...
000000E0 68 81 04 08 44 00 00 00 44 00 00 00 04 00 00 00 h...D...D.......
000000F0 04 00 00 00 50 E5 74 64 98 48 00 00 98 C8 04 08 ....P.td.H......
00000100 98 C8 04 08 B4 00 00 00 B4 00 00 00 04 00 00 00 ................
00000110 04 00 00 00 51 E5 74 64 00 00 00 00 00 00 00 00 ....Q.td........
00000120 00 00 00 00 00 00 00 00 00 00 00 00 06 00 00 00 ................
00000130 04 00 00 00 52 E5 74 64 14 4F 00 00 14 DF 04 08 ....R.td.O......
00000140 14 DF 04 08 EC 00 00 00 EC 00 00 00 04 00 00 00 ................
./hexview : 0.024 Mb : 1576 rows | Pg:1/76 | ASCII
0=0/6277 [0] | d:127 127 | o:177 | 01111111 | ] : f/home/ilias/movie
Current file will be closed, are you sure (y/) ? y
Is a directory
Loading "/home/ilias/movie"...
























OFFSET 0* 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF
---------..------------------------------------------------ .---------------





















: 0.000 Mb : 0 rows | Pg:1/0 | ASCII
0=0/FFFFFFFFFFFFFFFF [0] | d:0 0 | o:0 | 00000000 | f/home/ilias/movie : f/home/ilias/movie
Current file will be closed, are you sure (y/) ? y
*** glibc detected *** ./hexview: double free or corruption (out): 0x087d7170 ***
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(+0x6ebc2)[0xb771dbc2]
/lib/i386-linux-gnu/libc.so.6(+0x6f862)[0xb771e862]
/lib/i386-linux-gnu/libc.so.6(cfree+0x6d)[0xb772194d]
./hexview[0x804ba06]
./hexview[0x804a71a]
./hexview[0x804b942]
./hexview[0x804c15d]
/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0xb76c8113]
./hexview[0x80489b1]
======= Memory map: ========
08048000-0804d000 r-xp 00000000 08:06 1312188 /home/ilias/hex/hexview
0804d000-0804e000 r--p 00004000 08:06 1312188 /home/ilias/hex/hexview
0804e000-0804f000 rw-p 00005000 08:06 1312188 /home/ilias/hex/hexview
087d7000-087f8000 rw-p 00000000 00:00 0 [heap]
b7500000-b7521000 rw-p 00000000 00:00 0
b7521000-b7600000 ---p 00000000 00:00 0
b767b000-b7697000 r-xp 00000000 08:06 1049530 /lib/i386-linux-gnu/libgcc_s.so.1
b7697000-b7698000 r--p 0001b000 08:06 1049530 /lib/i386-linux-gnu/libgcc_s.so.1
b7698000-b7699000 rw-p 0001c000 08:06 1049530 /lib/i386-linux-gnu/libgcc_s.so.1
b76ae000-b76af000 rw-p 00000000 00:00 0
b76af000-b7825000 r-xp 00000000 08:06 1049509 /lib/i386-linux-gnu/libc-2.13.so
b7825000-b7827000 r--p 00176000 08:06 1049509 /lib/i386-linux-gnu/libc-2.13.so
b7827000-b7828000 rw-p 00178000 08:06 1049509 /lib/i386-linux-gnu/libc-2.13.so
b7828000-b782b000 rw-p 00000000 00:00 0
b783e000-b7842000 rw-p 00000000 00:00 0
b7842000-b7843000 r-xp 00000000 00:00 0 [vdso]
b7843000-b7861000 r-xp 00000000 08:06 1049496 /lib/i386-linux-gnu/ld-2.13.so
b7861000-b7862000 r--p 0001d000 08:06 1049496 /lib/i386-linux-gnu/ld-2.13.so
b7862000-b7863000 rw-p 0001e000 08:06 1049496 /lib/i386-linux-gnu/ld-2.13.so
bff2a000-bff4b000 rw-p 00000000 00:00 0 [stack]
Ακυρώθηκε
ilias@ilias-pc:~/hex$


3) Εκεί που δίνουμε εντολές αν τυχόν η εντολή είναι μεγάλη και ξεπερνάει την μία γραμμή η εντολή συνεχίζεται παρακάτω όπως είναι λογικό.
Το πρόβλημα είναι ότι αν πατήσει κάποιος backspace για να σβήσει χαρακτήρες μπορεί να σβήσει μέχρι το τέλος της γραμμής που βρίσκεται και όχι προηγούμενες γραμμές.

4) Καλύτερα να εμφανίζεις ένα μήνυμα "invalid option" όταν χρειάζεται. Αν δώσω "hfsafasffafads" θα μου ανοίξει την βοήθεια. :wtf:


Τα παραπάνω με το λειτουργικό της υπογραφής μου.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: ISO C (C99): File HexViewer

Δημοσίευσηαπό simosx » 01 Μαρ 2012, 17:33

migf1 έγραψε:Σίμο ευχαριστώ επίσης για το git (μου έχεις "φάει" έναν άσσο στο τέλος του nickname μου :lol:).


Μόλις το διόρθωσα,
https://github.com/ubuntu-gr/hexview/co ... 483eb68e0a
προσωπικό ιστολόγιο ϗ πλανήτης Ubuntu-gr
Συμβάλετε και εσείς στο ελληνικό βιβλίο Ubuntu!
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.10 saucy 3.11.0-031100rc1-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD E-450 APU with Radeon HD Graphics ‖ RAM 3555 MiB ‖ Sony Corporation VAIO
4 AMD nee ATI Wrestler [Radeon HD 6320] [1002:9806] {fglrx_pci}
5 eth0: Atheros Inc. AR8151 v2.0 Gigabit Ethernet [1969:1083] (rev c0) ⋮ wlan0: Atheros Inc. AR9285 [168c:002b] (rev 01)
Φτιάξτε και εσείς τη δική σας υπογραφή (παραπάνω κείμενο) αυτόματα με κλικ εδώ!
simosx
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10334
Εγγραφή: 11 Μάιος 2008, 18:52
Launchpad: simosx
IRC: simosx
Εκτύπωση

ΠροηγούμενηΕπόμενο

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι