PCganster Δημοσ. 11 Δεκεμβρίου 2012 Δημοσ. 11 Δεκεμβρίου 2012 καλησπερα παιδια εχω μια απορια σχετικα με αυτο \xce\xba\xce\xb1\xce\xbb\xcf\x8c\xcf\x82 μου εχουν πει οτι ειναι shellcode εψαξα σε sites να δω τι ειναι αλλα καταλαβα μπορει καπιος να μου εξηγησει τι ακριβως ειναι αυτο ?? ευχαριστω πολυ
kagelos Δημοσ. 11 Δεκεμβρίου 2012 Δημοσ. 11 Δεκεμβρίου 2012 Η απορία σου είναι τι είναι shell code ή τι κάνει ο συγκεκριμένος (εφόσον υποθέσουμε ότι είναι όντως shell code); Σχετικά με το πρώτο ερώτημα, shell code είναι εντολές σε γλώσσα μηχανής που κάνουν οι hackers encode σε string (εξ' ού και τα \x) το οποίο χρησιμοποιείται σε exploit ενός buffer overflow. Ουσιαστικά είναι η compiled έκδοση ενός κομματιού κώδικα που ανοίγει ένα remote shell στον χακαρισμένο υπολογιστή. Τώρα αν αυτό είναι shellcode και τι κάνει δεν ξέρω, αλλά μου φαίνεται πολύ μικρό για να είναι όντως.
defacer Δημοσ. 11 Δεκεμβρίου 2012 Δημοσ. 11 Δεκεμβρίου 2012 Εμένα με το μάτι μου φαίνεται για ελληνικά UTF-8. Update: όντως. 1
nilosgr Δημοσ. 12 Δεκεμβρίου 2012 Δημοσ. 12 Δεκεμβρίου 2012 Αυτό που σου λέει κι ο kagelos πιο πάνω, χρησιμοποιούντέ ώστε όταν κάνει buffer overflow να εκτελεί τον κώδικα που binary μορφή του είναι ίδια με την μορφή το shell code. Γενικά τα shel codes είναι πιο μεγάλα... Sorry αλλά έχω κι εγώ μια απορία/ανησυχία... "καλός"...? Τι καλός? Καλός ορίσατε Καλός τα μας τα δυο Καλός είσαι και του λόγου σου Ποιο απ όλα? :-D
PCganster Δημοσ. 12 Δεκεμβρίου 2012 Μέλος Δημοσ. 12 Δεκεμβρίου 2012 λογω απειριας μπορειτε να τα εξηγησετε λιγο πιο...αναλυτικα??? ευχαριστω πολυ παιδια!!
imitheos Δημοσ. 12 Δεκεμβρίου 2012 Δημοσ. 12 Δεκεμβρίου 2012 Το \x λέει ότι αυτό που ακολουθεί δίνεται σε δεκαεξαδική μορφή. Έτσι το \xce δηλώνει τον δεκαεξαδικό αριθμό CE (δηλαδή τον αριθμό 206) και το \xba δηλώνει τον αριθμό BA (δηλαδή 186). Για να γράψεις κάτι στον υπολογιστή, πρέπει να χρησιμοποιήσεις μια αναπαράσταση των γραμμάτων. Μία από αυτές τις "κωδικοποιήσεις" είναι η UTF-8 στην οποία τα Ελληνικά καταλαμβάνουν 2 bytes για κάθε χαρακτήρα. Για παράδειγμα αυτά που γράφουμε εδώ στο φόρουμ όλα αποθηκεύονται σε UTF-8. Όπως λοιπόν σου έδειξε ο defacer, ο συνδυασμός των bytes CEBA αντιστοιχεί στο Ελληνικό πεζό γράμμα κ. Μαζί με τα υπόλοιπα σχηματίζεται η λέξη "καλός". 2
migf1 Δημοσ. 12 Δεκεμβρίου 2012 Δημοσ. 12 Δεκεμβρίου 2012 Να συμπληρώσω επίσης πως το UTF8 είναι συμβατό με το ascii. Επίσης, αν αναφέρεσαι σε C context, τότε από C11 και μετά μπορείς να γράψεις απευθείας σε UTF8 τα string literal σου, με το πρόθεμα u8: char *s = u8"είμαι ένα UTF8 αλφαριθμητικό".
defacer Δημοσ. 12 Δεκεμβρίου 2012 Δημοσ. 12 Δεκεμβρίου 2012 (επεξεργασμένο) Μιας και γίναμε πολλές να συμπληρώσω μερικά ακόμα για τον topic starter και όποιον άλλο το βρίσκει ενδιαφέρον. Πρώτον, γιατί το "κ" σε UTF-8 αντιστοιχεί στα bytes 206, 186. To UTF-8 είναι μια κωδικοποίηση του συνόλου χαρακτήρων Unicode. Κάθε χαρακτήρας Unicode αντιστοιχεί σε έναν μοναδικό αριθμό που ονομάζεται code point. Τα code points καταγράφονται ως U+xxxx, όπου xxxx είναι τέσσερα δεκαεξαδικά ψηφία (άρα συνολικά όλα τα code points είναι 16^4 = 65536). Επίσης οι χαρακτήρες είναι ομαδοποιημένοι σε γκρουπάκια που ονομάζονται blocks. Σε κάποιο προηγούμενο thread έχω αναφερθεί πολύ εκτενέστερα στο Unicode, εδώ θα τα περάσω επι τροχάδην. Στην πραγματικότητα δεν είναι μόνο 65536 τα code points, αλλά δε χρειάζεται να μπούμε σε συζητήσεις περι Unicode planes. To block που περιέχει τα νέα ελληνικά ονομάζεται "Greek and Coptic". Από τον πίνακα του link βλέπουμε ότι το "κ" είναι το U+03BA. Για να αναπαραστήσουμε το "κ" σε bytes πρέπει να χρησιμοποιήσουμε κάποια κωδικοποίηση (encoding). Υπάρχουν αρκετές και η επιλογή είναι αυθαίρετη αρκεί να ξέρουμε ποιά χρησιμοποιούμε. Μπορεί κανείς να το φανταστεί σαν τους βαθμούς Kelvin, Celsius και Fahrenheit: είναι διαφορετικοί τρόποι με τους οποίους μπορεί κανείς να εκφράσει το ίδιο πράγμα. Η ίδια θερμοκρασία μπορεί να κωδικοποιηθεί είτε ως 0° C είτε ως 273° Κ, και μεις μπορούμε να χρησιμοποιήσουμε όποια κωδικοποίηση μας αρέσει. Η δουλειά του UTF-8 λοιπόν είναι να πάρει το 03BA δεκαεξαδικό, και να το μετατρέψει σε bytes. Αυτό θα γίνει βάσει των κανόνων της κωδικοποίησης. Όπως βλέπουμε από τον πίνακα, τα code points ανάμεσα στο U+007F και το U+07FF κωδικοποιούνται ως >110xxxxx 10xxxxxx όπου x είναι 11 bits τα οποία καλούμαστε να γεμίσουμε. Μιας και κάθε δεκαεξαδικό ψηφίο αντιστοιχεί σε 4 bits, έχουμε εύκολα τη μετατροπή > U+03BA 0 3 Β Α 0000 0011 1011 1010 Από αυτά τα 16 bits παίρνουμε τα 11 απο δεξιά, δηλαδή 011 1011 1010 και πάμε και τα κολλάμε στα σημεία όπου είχαμε το x παραπάνω, δηλαδή: > 110xxxxx 10xxxxxx 01110 111010 ================= 11001110 10111010 Μετατρέπουμε το δυαδικό σε δεκαδικό και what do you know? > 11001110 => 206 10111010 => 186 Σ' αυτό το σημείο έχουμε αρκετά δεδομένα για να καταλάβουμε πώς μπορούσα να το δω "με το μάτι", μιας και όλοι οι ελληνικοί χαρακτήρες είναι στο διάστημα [u+0380, U+03CF]. Τα 4 πρώτα από τα 11 bits που παίρνουμε είναι για όλο το παραπάνω διάστημα σταθερά 0111. Άρα τα 7 από τα 8 πρώτα bits του πρώτου byte κάθε ζευγαριού είναι 1100111?, άρα το πρώτο byte είναι πάντα 206 ή 207 (0xCE ή 0xCF). Άρα αν δείς ένα μάτσο bytes όπου το πρώτο, τρίτο, πέμπτο, κλπ είναι πάντα 0xCE ή 0xCF... Επεξ/σία 13 Δεκεμβρίου 2012 από defacer 4
PCganster Δημοσ. 13 Δεκεμβρίου 2012 Μέλος Δημοσ. 13 Δεκεμβρίου 2012 Σας ευχαριστω ολους παιδια μου δωσατε και.......καταλαβα αχαχαχαχχ :-D :-D :-D
migf1 Δημοσ. 13 Δεκεμβρίου 2012 Δημοσ. 13 Δεκεμβρίου 2012 ... Κάθε χαρακτήρας Unicode αντιστοιχεί σε έναν μοναδικό αριθμό που ονομάζεται code point. Τα code points καταγράφονται ως U+xxxx, όπου xxxx είναι τέσσερα δεκαεξαδικά ψηφία (άρα συνολικά όλα τα code points είναι 16^4 = 65536). ... To Unicode code-space δεν περιλαμβάνει 65.536 αλλά 1.114.112 code-points (το οποίο, αν το θυμάμαι σωστά, έχει συμφωνηθεί να μην αλλάξει ποτέ σαν όριο). 65.536 code-points περιέχει το καθένα από τα 17 planes που απαρτίζουν το συνολικό code-space, το σύνολο δηλαδή των code-points.
defacer Δημοσ. 14 Δεκεμβρίου 2012 Δημοσ. 14 Δεκεμβρίου 2012 (επεξεργασμένο) To Unicode code-space δεν περιλαμβάνει 65.536 αλλά 1.114.112 code-points (το οποίο, αν το θυμάμαι σωστά, έχει συμφωνηθεί να μην αλλάξει ποτέ σαν όριο). 65.536 code-points περιέχει το καθένα από τα 17 planes που απαρτίζουν το συνολικό code-space, το σύνολο δηλαδή των code-points. Πατάς "εμφάνιση" και ανοίγει. Διαβάζεις τι λέει μέσα. Το έχεις κάνει ήδη, είμαι σίγουρος πως μπορείς να το επαναλάβεις και στο προηγούμενο post. Στην επόμενη απάντηση εξήγησέ μου αν θέλεις και τι είναι normalization form, το χω κι αυτό απορία. Επεξ/σία 14 Δεκεμβρίου 2012 από defacer
migf1 Δημοσ. 14 Δεκεμβρίου 2012 Δημοσ. 14 Δεκεμβρίου 2012 Πατάς "εμφάνιση" και ανοίγει. Διαβάζεις τι λέει μέσα. Το έχεις κάνει ήδη, είμαι σίγουρος πως μπορείς να το επαναλάβεις και στο προηγούμενο post. Στην επόμενη απάντηση εξήγησέ μου αν θέλεις και τι είναι normalization form, το χω κι αυτό απορία. Από την πόλη έρχομαι και στην κορφή κανέλλα.
migf1 Δημοσ. 15 Δεκεμβρίου 2012 Δημοσ. 15 Δεκεμβρίου 2012 Σήμερα που ξανακοίταζα το νήμα, βλέπω πως άφησα μισό το ποστ μου περί planes. Ας το συμπληρώσω λοιπόν σήμερα που έχω περισσότερο χρόνο, για να γίνει κατανοητό και το σχόλιό μου περί "Πόλης" και "κανέλας" στην "εξυπνάδα" του defacer, σε όσους ενδεχομένως δεν κατάλαβαν γιατί το έκανα. Σε αντίθεση λοιπόν με αυτά που γράφει ο defacer, τα Unicode code-points καταγράφονται ως U+xxxxx, δηλαδή με 5 hex ψηφία (και όχι με 4 που γράφει εκείνος). To 1o ψηφίο συμβολίζει το plane, και όταν παραλλείπεται εννοείται πως αναφερόμαστε στο Plane 0, δηλαδή το Basic Multilingual Plane (BMP)(link 1, link 2, link 3) που είναι και το πιο γεμισμένο και χρησιμοποιούμενο μεταξύ των 17 συνολικά Unicode planes (αρχικά ήταν 16 νομίζω). Όταν βλέπουμε 6 ψηφία, π.χ. U+10xxxx τα 2 πρώτα είναι decimal, το 10 δλδ εδώ που είναι το hex A (άρα επανερχόμαστε στα 5 hex x: U+Axxxx, αναφερόμενοι στο 10o plane). Ομοίως, π.χ. το U+01D000 (το 1ο unicode code-point για τα βυζαντινά μουσικά σύμβολα) είναι το 5ψήφιο: U+1D000. Για παράδειγμα, από την έκδοση 6.1 του Unicode, οι αρχαίοι ελληνικοί αριθμοί απεικονίζονται στο εύρος: U+10140 - U+1018F, δηλαδή στο Plane 1 (Supplamentary Multilingual Plane - SMP) όπως καταλαβαίνουμε από το πρώτο ψηφίο εκ των 5, που είναι το 1. Τα περί normalization και λοιπά του defacer, υπάγονται δυστυχώς για μια ακόμα φορά στην συνήθη τακτική του για ειρωνικό αποπροσανατολισμό (εκτός αν το εννοεί, οπότε μιλάμε για αμάθεια - δεν είναι κακό) προκειμένου να μην παραδεχτεί ότι αυτό που έγραψε ως γενική παρατήρηση εξαρχής, πολύ απλά δεν ισχύει.
imitheos Δημοσ. 15 Δεκεμβρίου 2012 Δημοσ. 15 Δεκεμβρίου 2012 Another day another fight. Η άτιμη κοινωνία του insomnia με αρχηγό τον ποταπό defacer πολεμούν τον κατατρεγμένο migf1. Μην το παίζεις συνέχεια θιγμένος. Ξέρεις πολύ καλά ότι μερικές φορές, χάριν ευκολίας, λέμε ανακρίβειες στο πλαίσιο του να βοηθήσουμε αυτόν που έχει την απορία. Και εγώ το κάνω πολύ συχνά και εσύ το έχεις κάνει και όλοι. Ο OP δεν ρώτησε πως δουλεύει το unicode ώστε να τον πνίξουμε με πληροφορίες αλλά ρώτησε τι είναι αυτό το μακρυνάρι που του έδωσαν. Σε αυτό το πλαίσιο η απάντηση του defacer είναι μια χαρά. Χρησιμοποιεί μια ανακρίβεια για να ευκολύνει τον OP και παράλληλα μέσα στο spoiler δίνει την σωστή πληροφορία. Ο defacer είναι άτιμος και δεν παραδέχεται ότι κάτι που είπε είναι λάθος. Εσύ λοιπόν που το παραδέχεσαι, θα μπορούσες να πεις ότι δεν πρόσεξες το spoiler που εξηγούσε ότι δεν υπάρχουν μόνο 65536 αλλά περισσότεροι χαρακτήρες και να μην γίνει για άλλη μια φορά θέμα. 1
παπι Δημοσ. 15 Δεκεμβρίου 2012 Δημοσ. 15 Δεκεμβρίου 2012 Ασε που δεν εχουν ενδιαφερον θεματα αυτες οι "μαχες"... 2
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα