Μετάβαση στο κύριο περιεχόμενο

Ένα απλό Python keylogger

Η περιέργεια είναι μια θεμέλια λειτουργία του ανθρώπινου νου. Τόσο θεμέλια που χωρίς αυτήν πολλά σύγχρονα επιστημονικά επιτεύγματα δεν θα είχαν πραγματωθέι ποτέ. Αποτελεί ευχή και κατάρα του ανθρώπινου είδους, μια αρετή που μπορεί να σε φέρει σε φαντασμαγορικές ανακαλύψεις μα και καταστροφικές καταστάσεις.  


The important thing is not to stop questioning. Curiosity has its own reason for existing. -Albert Einstein
Η Python είναι μια γλώσσα που πρωτογνώρισα αρκετά νωρίς στα βήματα μου στο κόσμο της πληροφορικής. Ένα software που χρησιμοποιούσα παλαιότερα για αν φτιάχνω τα particle effects στα βίντεο Doctor Who που δημιουργούσα ήταν το Particle Illusion. Το συγκεκριμένο διέθετε μια φανταστική  scripting engine στην Python με την οποία μπορούσες να παραμετροποιήσεις το core λογισμικό και να το φέρεις πραγματικά στα μέτρα σου. Έτσι στα 13 μου και εγώ, μην έχοντας ιδέα τι εστί γλώσσα προγραμματισμού ξεκίνησα να μαθαίνω την Python μέσα από το Particle Illusion, νομίζοντας πως είναι απλά κάτι ακόμα που πρέπει να μάθω για να με κάνω time lord, ωσάν τον Δόκτορα από το BBC.

Ο πύθωνας, αν και ονομασμένος έτσι χάρη στους Monty Python, είναι μια φανταστική γλώσσα προγραμματισμού. Ένα jack of all trades μα όχι και master of none. Ναι, ίσως είναι λιγάκι basic αν δεν χρησιμοποιήσεις όλες τα modules αλλά ποια γλώσσα δεν είναι; Με τα modules η Python πραγματικά γίνεται master of all trades.

Αυτή είναι και η περίπτωσή μας, δηλαδή το να χρησιμοποιήσουμε την Python για ένα keylogger χωρίς να χρειαστεί να πειράξουμε πολύ τα Windows ή να γνωρίζουμε καλά το low-level τρόπο λειτουργίας τους.

Καταρχάς, ας ξεκαθαρίσουμε κάτι. Ακολουθόντας τη γραμμή όλων όσων προσπαθούν με εκπαιδευτικά άρθρα να μυήσουν όλο και περισσότερους ανθρώπους στο κόσμο του software engineering και του hacking, θέλω να δηλώσω το εξής: hack for learning, not hacking.

Εν ολίγοις, οι γνώσεις που θα πάρετε, θα ήμουν περήφανος αν τις χρησιμοποιήσετε μονάχα για να μάθετε μερικά πράγματα σχετικά με τη συγκεκριμένη τεχνική και την νοοτροπία χρήσης της Python.

But, let's get started...  

Βήμα 1ο: Εγκατάσταση της Python στο σύστημα που θα εργαστούμε




 Κατεβάζουμε το επίσημο αρχείο εγκατάστασης της Python από το website ή τρέχουμε την κατάλληλη εντολή εγκατάστασης από το τερματικό μας εάν βρισκόμαστε σε -UNIX σύστημα. (να σημειωθεί πως το συγκεκριμένο keylogger θα δουλέψει μονάχα σε λειτουργικό σύστημα Windows μιας και ο τρόπος προγραμματισμού του είναι τέτοιος ώστε να αλληλεπιδρά μονάχα με το εξής σύστημα. Από την άλλη, μπορεί να προγραμματιστεί σε οποιδήποτε σύστημα διαθέτει έναν απλό text editor)

Βήμα 2ο: Κατεβάζουμε και εγκαθιστούμε τα απαρραίτητα modules 

Καθώς για να μπορέσουμε να αλληλεπιδράσουμε με το λειτουργικό σύστημα του υπολογιστή θα χρειαστούμε "εξωτερική" βοήθεια είναι καλό να κατεβάσουμε από τώρα τα απαρραίτητα modules. Αυτά είναι τα PyWin32 και PyHook και μπορούμε να τα βρούμε στην εξής ιστοσελίδα. 


(ΠΡΟΑΙΡΕΤΙΚΟ)Βήμα 3ο: Εγκατάσταση ενός text editor στο σύστημά μας 

Παρόλο που η Python διαθέτει το δικό της text editor (ένα IDLE ουσιαστικά) και εγκαθίσταται ταυτόχρονα με την ίδια τη γλώσσα, δεν ξέρω αν είναι και ο πιο εύχρηστος τρόπος να γράψει κανείς Python. Για μένα, η χρήση του IDLE δεν είναι η καλύτερη δυνατή εμπειρία.

Έτσι προτείνω - χωρίς να έχω καμία σχέση με τη δημιουργία ή την ανάπτυξη - το Notepad++. 




Βήμα 4ο: Ο κώδικας του keylogger 

Ο κώδικας του συγκεκριμένου keylogger είναι εξαιρετικά απλός και λιτός. Η αλήθεια είναι πως εξεπλάγην όταν παλαιότερα είχα δει ένα keylogger στην Python το οποίο είχε περί τις 100 γραμμές κώδικα περισσότερες συγκριτικά με αυτό εδώ, το οποίο καταφέρνει να παρέχει την ουσιώδη λειτουργία ενός keylogger σε ελάχιστες γραμμές κώδικα. Σίγουρα, το keylogger-μεγαθήριο θα προσέφερε και άλλες λειτουργίες αλλά πραγματικά σε όσες περιστάσεις - νόμιμες - μου χρειάστηκε ένα keylogger δεν κατάφερα να τις αξιοποιήσω. 

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


Μετά, δημιουργούμε μια μεταβλητή η οποία θα δείχνει στο αρχείο καταγραφής των keystrokes. 


Δημιουργούμε τώρα τη συνάρτηση την οποία θα χρησιμοποιήσουμε ώστε να καταγράψουμε τα χτυπήματα στο πληκτρολόγιο. Για αυτή, θα χρησιμοποιήσουμε το module "logging" έτσι ώστε να το θέσουμε σε λειτουργία debugging και να του υποδείξουμε το όνομα του αρχείου καταγραφής αλλά και θα ζητήσουμε να καταγράφεται κάθε χαρακτήρας που εισάγεται από το πληκτρολόγιο και η αντιστοιχία του στο κώδικα ASCII .


Τελευταίο κομμάτι του κώδικά μας θα είναι να δημιουργήσουμε ένα hook στα Windows events μέσω του module pyHook και να αξιοποιήσουμε το module pythoncom για να αιχμαλωτίσουμε όλα τα μυνήματα πληκτρολογίου. 



Βήμα 5ο: Αποθήκευση του αρχείου 

Είναι πολύ σημαντικό να αποθηκεύσουμε σωστά το αρχείο του κώδικα στο δίσκο, που αποτελεί κατ'επέκταση και το εκτελέσιμο αρχείο μας. Αντί για το σύνηθες, θα σώσουμε το python αρχείο με την κατάληξη .pyw . Αυτό είναι χρήσιμο μιας και ο κώδικας θα εκτελεστεί στο παρασκήνιο, δίχως να ανοίξει κάποιο παράθυρο. Βέβαια, αν θέλουμε να προσθέσουμε στο κώδικά μας ένα μύνημα επιτυχίας στο τέλος έτσι ώστε να ξέρουμε ότι ο κώδικάς μας δούλεψε σωστά, τότε επανερχόμαστε στην αποθήκευσή του ως αρχείο .py .


 

Enjoy! :)



The important thing is not to stop questioning. Curiosity has its own reason for existing. Albert Einstein
Read more at: https://www.brainyquote.com/topics/curiosity
The important thing is not to stop questioning. Curiosity has its own reason for existing. Albert Einstein
Read more at: https://www.brainyquote.com/topics/curiosity
The important thing is not to stop questioning. Curiosity has its own reason for existing. Albert Einstein
Read more at: https://www.brainyquote.com/topics/curiosity
The important thing is not to stop questioning. Curiosity has its own reason for existing. Albert Einstein
Read more at: https://www.brainyquote.com/topics/curiosity

Σχόλια

Δημοφιλείς αναρτήσεις από αυτό το ιστολόγιο

Ο αδύναμος κρίκος στη κυβερνοασφάλεια είναι το IoT

Για να μιλήσουμε για την ασφάλεια του Internet of Things θα ήταν καλό να δώσουμε μια ταυτότητα σε αυτή την έννοια. Σύφμωνα με τη WIkipedia λοιπόν:  " Το  Διαδίκτυο των πραγμάτων  ή  Ίντερνετ των πραγμάτων  ( αγγλικά :  Internet of things ) αποτελεί το δίκτυο επικοινωνίας πληθώρας συσκευών, οικιακών συσκευών, αυτοκινήτων καθώς και κάθε αντικειμένου που ενσωματώνει ηλεκτρονικά μέσα, λογισμικό, αισθητήρες και συνδεσιμότητα σε δίκτυο ώστε να επιτρέπετε η σύνδεση και η ανταλλαγή δεδομένων."  Ποιος είμαι εγώ λοιπόν για να διαφωνήσω με τη Wikipedia ?  Στα μάτια ενός προγραμματιστή εφαρμογών για το IoT επρόκειται για αυτό το συγκεκριμένο δίκτυο από εκατομύρρια κόμβους οι οποίοι αξιοποιούν τη μια ή την άλλη τεχνολογία για να συλλέξουν δεδομένα σχετικά με διάφρες συνθήκες. Κατόπιν, τα δεδομένα είτε επεξεργάζονται τοπικά και δίνουν αποτέλεσμα , πάντα όμως μοιραζόμενα τη συλλογή στοιχείων με το cloud είτε αποστέλλουν τα δεδομένα στο δεύτερο και περιμένοντας να κάνει αυτό

Γιατί αυτές οι διαφημίσεις της Apple είναι ανεκτίμητης αξίας

Οι διαφημίσεις της Apple είχαν πάντα κάτι το εξωτικό . Είτε αυτό ήταν τα καλογυρισμένα πλάνα από ειδυλιακές τοποθεσίες - βαφτισμένα "Shot on iPhone" - είτε τα πανέμορφα render των συσκευών της.  Όμως, σαν γενιά η οποία έζησε την άνοδο των smartphones από το τίποτα και το πρώτο λειτουργικό σύστημα που χρησιμοποιήσαμε δεν είχε περίεργα aero effects και γλυκά animations θυμόμαστε εκείνες τις διαφημίσεις που μας έκαναν να μισήσουμε ή να αγαπήσουμε την Apple και το Mac . Έτσι δεν είναι;

Τα καλύτερα τραγούδια για τις γλώσσες προγραμματισμού

Στο διαδίκτυο κυκλοφορούν δεκάδες χιουμοριστικά βίντεοκλιπ με τραγούδια-παρωδίες που έχουν δημιουργηθεί για να εξυμνήσουν ή να θίξουν τα κακώς κείμενα διάφορων γλωσσών προγραμματισμού. Στην παρακάτω λίστα δείτε ποια θεωρούμε εμείς τα πιο αξιόλογα!  Python  Java  C  Το general ;)