Πίνακας περιεχομένων:

Netcat στην Python: 6 βήματα
Netcat στην Python: 6 βήματα

Βίντεο: Netcat στην Python: 6 βήματα

Βίντεο: Netcat στην Python: 6 βήματα
Βίντεο: Python for Automating Information Security: What Is Netcat? | packtpub.com 2024, Νοέμβριος
Anonim
Netcat στην Python
Netcat στην Python

Τι είναι το netcat; Η χειροκίνητη σελίδα για το netcat λέει τα εξής: "Το βοηθητικό πρόγραμμα nc (ή netcat) χρησιμοποιείται για σχεδόν οτιδήποτε κάτω από τον ήλιο που περιλαμβάνει πρίζες TCP, UDP ή UNIX. Μπορεί να ανοίξει συνδέσεις TCP, να στείλει πακέτα UDP, να ακούσει αυθαίρετα Οι θύρες TCP και UDP, κάνουν σάρωση θυρών και αντιμετωπίζουν τόσο το IPv4 όσο και το IPv6. Σε αντίθεση με το telnet (1), τα σενάρια nc είναι ωραία και διαχωρίζει τα μηνύματα σφάλματος στο τυπικό σφάλμα αντί να τα στέλνει στην τυπική έξοδο, όπως κάνει το telnet (1) με ορισμένα"

Ουσιαστικά, το netcat σας επιτρέπει να συνδεθείτε με άλλους διακομιστές χρησιμοποιώντας το πρωτόκολλο TCP ή UDP. Το TCP σημαίνει Transmission Control Protocol και είναι προσανατολισμένο στη σύνδεση. Το UDP σημαίνει Universal Datagram Protocol και είναι χωρίς σύνδεση. Το TCP χρησιμοποιείται συνήθως για εφαρμογές διαδικτύου, ενώ το UDP χρησιμοποιείται για ροή πολυμέσων ή VPN.

Βήμα 1: Πώς ξεκινάμε;

Πώς Αρχίζουμε
Πώς Αρχίζουμε

Παρακάτω είναι το πώς ονομάζεται netcat. Μπορείτε να δείτε ότι υπάρχουν δύο ορίσματα στο τέλος που ονομάζονται "προορισμός" και "θύρα". Ο προορισμός αναφέρεται σε όνομα κεντρικού υπολογιστή ή διεύθυνση IP του διακομιστή στον οποίο προσπαθούμε να συνδεθούμε, ενώ η θύρα αναφέρεται στη θύρα του διακομιστή στον οποίο προσπαθούμε να συνδεθούμε.

Βήμα 2: Ας ξεκινήσουμε

Ας ξεκινήσουμε
Ας ξεκινήσουμε

Πάνω υπάρχει ένας αρχικός κώδικας python. Όπως μπορείτε να δείτε, θέλουμε να επεξεργαζόμαστε τα ορίσματα στο πρόγραμμα με τον ίδιο τρόπο όπως το πραγματικό βοηθητικό πρόγραμμα. Το όνομα κεντρικού υπολογιστή θα είναι το πρώτο όρισμα μετά το όνομα του εκτελέσιμου, ενώ η θύρα θα είναι το δεύτερο όρισμα μετά το όνομα του εκτελέσιμου στη γραμμή εντολών.

Βήμα 3: Δημιουργία σύνδεσης

Δημιουργία σύνδεσης
Δημιουργία σύνδεσης

Ας δημιουργήσουμε μια συνάρτηση netcat που μπορούμε να χρησιμοποιήσουμε. Αυτό που κάνουμε βασικά εδώ είναι να δημιουργήσουμε μια πρίζα και να συνδεθούμε στο διακομιστή χρησιμοποιώντας τις παραμέτρους που δίνονται. Για την εντολή netcat, οι τρέχουσες παράμετροι είναι το όνομα κεντρικού υπολογιστή και η θύρα του διακομιστή στον οποίο προσπαθούμε να συνδεθούμε. Η πρίζα περιέχει τις παραμέτρους "socket. AF_INET" και "socket. SOCK_STREAM", επειδή έχουμε προεπιλεγμένη σύνδεση TCP για αυτό το σεμινάριο.

Βήμα 4: Ας στείλουμε λίγο περιεχόμενο

Ας στείλουμε λίγο περιεχόμενο
Ας στείλουμε λίγο περιεχόμενο

Επεκτείναμε τη λειτουργία netcat για να λάβουμε μια τρίτη παράμετρο, το "περιεχόμενο". Υπάρχει πολύ περιεχόμενο εδώ, οπότε ας το αναλύσουμε κατά αριθμό γραμμής.

Γραμμή 14-16: στέλνουμε όλο το περιεχόμενο στην πρίζα, περιμένουμε λίγο και μετά κλείνουμε την πρίζα σε τυχόν εξερχόμενα δεδομένα, ώστε η πρίζα να γνωρίζει ότι δεν έρχονται άλλα δεδομένα.

Γραμμή 18-26: δημιουργούμε ένα buffer για την αποθήκευση της απόκρισης του διακομιστή και ενώ η υποδοχή λαμβάνει δεδομένα, προσθέτουμε έως και 1024 byte δεδομένων στο αποτέλεσμα, εφόσον υπάρχουν δεδομένα για ανάγνωση.

Γραμμή 28-29: θέλουμε αυτή η σύνδεση netcat να είναι μια εφάπαξ σύνδεση, οπότε δηλώνουμε τη σύνδεση κλειστή και στη συνέχεια κλείνουμε τη σύνδεση.

Γραμμή 31: Αυτό είναι ένα τυπικό αίτημα HTTP. Εάν εκτελέσετε τον κώδικα με τα ορίσματα της γραμμής εντολών "google.com" και "80", τότε θα δείτε μια σωστή απάντηση

Βήμα 5: Ας έχουμε μια ανοιχτή σύνδεση

Ας έχουμε μια ανοιχτή σύνδεση
Ας έχουμε μια ανοιχτή σύνδεση

Ο παραπάνω κώδικας (ο οποίος βρίσκεται κάτω από τον κωδικό από την προηγούμενη ενότητα) μας επιτρέπει απλώς να εκτελέσουμε πολλές εντολές netcat σε μια ψευδο-ανοιχτή σύνδεση. (Στην πραγματικότητα, κάθε φορά που εκτελείτε μια εντολή, ανοίγει και μετά κλείνει μια νέα σύνδεση TCP, οπότε δεν μιμείται πραγματικά τη συμπεριφορά του netcat, το κάνουμε απλώς για μαθησιακούς σκοπούς). Ας σπάσουμε και αυτό ανά γραμμή:

Γραμμή 31: Θέλουμε να διαβάζουμε εντολές επ 'αόριστον για να διατηρήσουμε τη "διαδραστικότητα"

Γραμμή 32: Αυτό είναι το buffer που θα αποθηκεύσει το περιεχόμενο του αιτήματός μας

Γραμμή 36-45: Θα διαβάσουμε στο buffer μέχρι να διαβάσουμε μια κενή γραμμή

Γραμμή 48: απλώς καλούμε τη λειτουργία netcat με το όνομα κεντρικού υπολογιστή, τη θύρα και το νέο περιεχόμενο (το οποίο έχει κωδικοποιηθεί σωστά)

Γραμμή 50: εάν το περιεχόμενο του buffer μας περιέχει ποτέ "Connection: Close" (υποδεικνύοντας ότι θέλουμε να κλείσουμε τη σύνδεση), απλώς ξεφεύγουμε από τον βρόχο

Βήμα 6: Συμπέρασμα

Στο τέλος αυτού του σεμιναρίου θα πρέπει να έχετε μια ελάχιστη εφαρμογή netcat. Θα αφήσω ως άσκηση στον χρήστη την εφαρμογή χαρακτηριστικών όπως:

1. υποστήριξη άλλων πρωτοκόλλων

2. καθορίζοντας τον κωδικό ώστε να μην κλείνει η σύνδεση κάθε φορά

3. προσθήκη σημαιών που έχει ήδη το netcat για να τροποποιήσει τη συμπεριφορά

Συνιστάται: