Προς το περιεχόμενο

\xce\xba\xce\xb1\xce\xbb\xcf\x8c\xcf\x82


Προτεινόμενες αναρτήσεις

Δημοσ.

καλησπερα παιδια

εχω μια απορια σχετικα με αυτο

\xce\xba\xce\xb1\xce\xbb\xcf\x8c\xcf\x82

 

μου εχουν πει οτι ειναι shellcode εψαξα σε sites να δω τι ειναι αλλα καταλαβα

μπορει καπιος να μου εξηγησει τι ακριβως ειναι αυτο ??

ευχαριστω πολυ

Δημοσ.

Η απορία σου είναι τι είναι shell code ή τι κάνει ο συγκεκριμένος (εφόσον υποθέσουμε ότι είναι όντως shell code);

 

Σχετικά με το πρώτο ερώτημα, shell code είναι εντολές σε γλώσσα μηχανής που κάνουν οι hackers encode σε string (εξ' ού και τα \x) το οποίο χρησιμοποιείται σε exploit ενός buffer overflow.

Ουσιαστικά είναι η compiled έκδοση ενός κομματιού κώδικα που ανοίγει ένα remote shell στον χακαρισμένο υπολογιστή.

 

Τώρα αν αυτό είναι shellcode και τι κάνει δεν ξέρω, αλλά μου φαίνεται πολύ μικρό για να είναι όντως.

Δημοσ.

Αυτό που σου λέει κι ο kagelos πιο πάνω, χρησιμοποιούντέ ώστε όταν κάνει buffer overflow να εκτελεί τον κώδικα που

binary μορφή του είναι ίδια με την μορφή το shell code.

Γενικά τα shel codes είναι πιο μεγάλα...

 

Sorry αλλά έχω κι εγώ μια απορία/ανησυχία...

 

"καλός"...?

Τι καλός?

Καλός ορίσατε

Καλός τα :X μας τα δυο

Καλός :X είσαι και του λόγου σου

Ποιο απ όλα?

 

:-D :-D

Δημοσ.

Το \x λέει ότι αυτό που ακολουθεί δίνεται σε δεκαεξαδική μορφή. Έτσι το \xce δηλώνει τον δεκαεξαδικό αριθμό CE (δηλαδή τον αριθμό 206) και το \xba δηλώνει τον αριθμό BA (δηλαδή 186). Για να γράψεις κάτι στον υπολογιστή, πρέπει να χρησιμοποιήσεις μια αναπαράσταση των γραμμάτων. Μία από αυτές τις "κωδικοποιήσεις" είναι η UTF-8 στην οποία τα Ελληνικά καταλαμβάνουν 2 bytes για κάθε χαρακτήρα. Για παράδειγμα αυτά που γράφουμε εδώ στο φόρουμ όλα αποθηκεύονται σε UTF-8. Όπως λοιπόν σου έδειξε ο defacer, ο συνδυασμός των bytes CEBA αντιστοιχεί στο Ελληνικό πεζό γράμμα κ. Μαζί με τα υπόλοιπα σχηματίζεται η λέξη "καλός".

  • Like 2
Δημοσ.

Να συμπληρώσω επίσης πως το UTF8 είναι συμβατό με το ascii. Επίσης, αν αναφέρεσαι σε C context, τότε από C11 και μετά μπορείς να γράψεις απευθείας σε UTF8 τα string literal σου, με το πρόθεμα u8: char *s = u8"είμαι ένα UTF8 αλφαριθμητικό".

Δημοσ. (επεξεργασμένο)

Μιας και γίναμε πολλές να συμπληρώσω μερικά ακόμα για τον 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...

 

 

Επεξ/σία από defacer
  • Like 4
Δημοσ.

...

Κάθε χαρακτήρας 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.

Δημοσ. (επεξεργασμένο)

To Unicode code-space δεν περιλαμβάνει 65.536 αλλά 1.114.112 code-points (το οποίο, αν το θυμάμαι σωστά, έχει συμφωνηθεί να μην αλλάξει ποτέ σαν όριο). 65.536 code-points περιέχει το καθένα από τα 17 planes που απαρτίζουν το συνολικό code-space, το σύνολο δηλαδή των code-points.

 

 

Πατάς "εμφάνιση" και ανοίγει. Διαβάζεις τι λέει μέσα. Το έχεις κάνει ήδη, είμαι σίγουρος πως μπορείς να το επαναλάβεις και στο προηγούμενο post.

 

Στην επόμενη απάντηση εξήγησέ μου αν θέλεις και τι είναι normalization form, το χω κι αυτό απορία.

 

 

Επεξ/σία από defacer
Δημοσ.

 

 

 

Πατάς "εμφάνιση" και ανοίγει. Διαβάζεις τι λέει μέσα. Το έχεις κάνει ήδη, είμαι σίγουρος πως μπορείς να το επαναλάβεις και στο προηγούμενο post.

 

Στην επόμενη απάντηση εξήγησέ μου αν θέλεις και τι είναι normalization form, το χω κι αυτό απορία.

 

 

 

Από την πόλη έρχομαι και στην κορφή κανέλλα.

 

Δημοσ.

Σήμερα που ξανακοίταζα το νήμα, βλέπω πως άφησα μισό το ποστ μου περί 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, υπάγονται δυστυχώς για μια ακόμα φορά στην συνήθη τακτική του για ειρωνικό αποπροσανατολισμό (εκτός αν το εννοεί, οπότε μιλάμε για αμάθεια - δεν είναι κακό) προκειμένου να μην παραδεχτεί ότι αυτό που έγραψε ως γενική παρατήρηση εξαρχής, πολύ απλά δεν ισχύει.

 

 

Δημοσ.

Another day another fight.

 

Η άτιμη κοινωνία του insomnia με αρχηγό τον ποταπό defacer πολεμούν τον κατατρεγμένο migf1. Μην το παίζεις συνέχεια θιγμένος. Ξέρεις πολύ καλά ότι μερικές φορές, χάριν ευκολίας, λέμε ανακρίβειες στο πλαίσιο του να βοηθήσουμε αυτόν που έχει την απορία. Και εγώ το κάνω πολύ συχνά και εσύ το έχεις κάνει και όλοι.

 

Ο OP δεν ρώτησε πως δουλεύει το unicode ώστε να τον πνίξουμε με πληροφορίες αλλά ρώτησε τι είναι αυτό το μακρυνάρι που του έδωσαν. Σε αυτό το πλαίσιο η απάντηση του defacer είναι μια χαρά. Χρησιμοποιεί μια ανακρίβεια για να ευκολύνει τον OP και παράλληλα μέσα στο spoiler δίνει την σωστή πληροφορία.

 

Ο defacer είναι άτιμος και δεν παραδέχεται ότι κάτι που είπε είναι λάθος. Εσύ λοιπόν που το παραδέχεσαι, θα μπορούσες να πεις ότι δεν πρόσεξες το spoiler που εξηγούσε ότι δεν υπάρχουν μόνο 65536 αλλά περισσότεροι χαρακτήρες και να μην γίνει για άλλη μια φορά θέμα.

 

 

  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...