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

Netcat


sarakinos

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

Αν κάνω ctrl+c τον client το μήνυμα βγαίνει και τερματίζεται η επικοινωνία..

Ναι, εκεί στόχευαν τα 2 τελευταία hints που έδωσα στο post 11.

 

Από το script θα τερματίζεις τη Netcat αυτόματα για κάθε μήνυμα, με την παράμετρο -c της.

Και θα εκκινείς επίσης αυτόματα μία νέα netcat αμέσως μετά, χρησιμοποιώντας μία while true loop.

 

>[color="Gray"][i]# έτσι θα τρέχει πάντα μία netcat στη συγκεκριμένη Port, 
# η οποία θα παραλαμβάνει τα μηνύματα και θα τα στέλνει στην openssl για αποκρυπτογράφηση.
# Η openssl θα to τυπώνει στο terminal[/i][/color]

while true; do nc -vv -l -p yyyy | openssl rsautl -inkey private.key -decrypt; done &

 

 

>[i][color="Gray"]# έτσι θα κρυπτογραφείς κάθε μήνυμα
# και θα το στέλνεις στη netcat που κάνει listen στο άλλο άκρο
# Όμως θα πρέπει να χρησιμοποιήσεις και  μία αντίστοιχη loop και εδώ,
# για να είναι πάντα το script έτοιμο να διαβάσει και να χειριστεί την είσοδο του χρήστη.[/i][/color]

echo "Message" | openssl rsautl -pubin -inkey public.key -encrypt | nc -c x.x.x.x yyyy

 

Και τα δύο αυτά θα τα κάνεις και στα δύο άκρα, η μόνη διαφορά είναι ότι το ένα θα συνδέεται στην Port στην οποία ακούει το netcat του άλλου.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 89
  • Δημ.
  • Τελ. απάντηση

αχα...τα είχα ξεχάσει τα hints σου :)

..αρχίζω λοιπόν..

 

---------- Το μήνυμα προστέθηκε στις 14:45 ----------

 

η παράμετρος -c θα μπαίνει στον client ετσί?

με την μορφη?

netcat -vv xxx.xxx.xxx.xxx $port -c echo"test"?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ναι η -c μπαίνει στον client, γιατί αυτός θέλουμε να στέλνει το μήνυμα και να τερματίζει αυτόματα.

 

Τον server τον βάλαμε σε loop γιατί για κάποιο λόγο τερμάτιζε και αυτός, και δεν είδα να έχει αντίστροφο του -c option (δηλαδή "stay alive after the client closes the connection")

 

Τώρα για το πώς θα περάσεις το μήνυμα στον client, αυτό θα είναι αναγκαστικά από το stdin, μέσω pipe, αφού θέλουμε να είναι κρυπτογραφημένο (όπως το γράφει η openssl στο stdout).

 

Πρώτα το στέλνεις στην openssl λοιπόν για κρυπτογράφηση, κάνοντάς το pipe στο δικό της stdin, και μετά κάνεις pipe την έξοδο της openssl στη netcat του client.

 

Υπενθυμίζω ότι πλέον οι όροι "client" και "server" δεν αναφέρονται στα μηχανήματα, αλλά στον ρόλο που επιτελεί η netcat όπως εκτελείται σε κάθε περίπτωση.

 

Για να υπάρχει αμφίδρομη επικοινωνία, κάθε μηχάνημα θα είναι και client και server, δηλαδή θα τρέχει τη netcat και με τους δύο τρόπους.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αυτό που μένει να βρεις λοιπόν, είναι έναν τρόπο να διαβάζεις την είσοδο του χρήστη από το terminal, ώστε να την στέλνεις στην openssl.

http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_08_02.html

 

Και μετά να το βάλεις όλο σε loop.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Επίσης να βρεις τρόπο να καταπνίξεις τυχόν δευτερεύοντα μηνύματα που παράγει η netcat σε κάθε πέρασμα του βρόχου.

 

Επίσης έχε κατά νου ότι η ifconfig σε πολλά συστήματα θέλει αυξημένα προνόμια.

 

nske, στο bsd πρέπει να υπάρχει η παράμετρος -k για να περιμένει ο server.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Πράγματι, στο freebsd έχει 3 netcat: αυτή του συστήματος και τις net/netcat και net/gnetcat των ports.

 

Η netcat του συστήματος έχει και -k και μερικές ακόμη επιλογές που δεν έχουν οι άλλες.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αν σκοτώσεις το αρχικό process στο οποίο τρέχει η while (το οποίο στα processes θα φαίνεται ότι είναι ένα shell γιατί η while είναι builtin στο shell) θα σκοτωθούν τα πάντα.

 

Ένας άλλος τρόπος είναι να κάνεις "kill %1" (αν είναι το πρώτο background job).

 

Όχι ακριβώς σχετικό με το θέμα, αλλά εδώ εξηγεί πολύ ωραία μερικά ενδιαφέροντα specifics ο Κεραμίδας.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

1.10-38

 

-c shell commands as `-e'; use /bin/sh to exec [dangerous!!]

Αυτό λέει για την παράμετρο -c

 

---------- Το μήνυμα προστέθηκε στις 17:01 ----------

 

Πο παιδιά έχω πελαγώσει...

δεν μπορώ να καταλάβω πως θα τρέχω και server και client σε ένα μηχάνημα , αλλά θα καταλαβαίνει ποτε θα γράψω ή ποτε θα πάρω , για να μεταβαίνει στην αντίστοιχη κατάσταση :(

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Όπως είπα και πιο πάνω, έχω 3 netcat εγκατεστημένες στο σύστημα, αλλά καμία από αυτές δεν είναι αυτή που έχεις!

 

Στη δική σου netcat η παράμετρος -c κάνει κάτι εντελώς διαφορετικό από ότι στη gnu netcat. Τι λειτουργικό - διανομή χρησιμοποιείς και από πού την εγκατέστησες;

 

δεν μπορώ να καταλάβω πως θα τρέχω και server και client σε ένα μηχάνημα , αλλά θα καταλαβαίνει ποτε θα γράψω ή ποτε θα πάρω , για να μεταβαίνει στην αντίστοιχη κατάσταση :(

Σε κάθε μηχάνημα, το script θα τρέχει μία loop για τη netcat - server στο background job και μία loop για τη netcat - client στο Foreground.

 

Το background job γράφει κανονικά στο terminal, αλλά δεν δεσμεύει την είσοδο, αυτό το κάνει το foreground process.

 

Δεν υπάρχει τίποτα πολύπλοκο, καμία μετάβαση, και τα δύο τρέχουν παράλληλα και κάνει καθένα τη δουλειά του.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ναι αλλά όταν το κάνω αυτό , έχω και στα δύο μηχανήματα το client στο foreground ,οποτε ότι πληκτρολογώ πάει στο client και όχι στο server για να σταλεί έπειτα..

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ο server είναι μόνο για να παραλαμβάνει ό,τι του στέλνει ο client του άλλου άκρου και να το τυπώνει. Δε χρειάζεται να λαμβάνει οτιδήποτε από το πληκτρλόγιο, αυτό το κάνει ο client.

 

Γι αυτό μπορεί να είναι πάντα στο background, και ο client να είναι πάντα στο foreground.

 

Θυμίζω ότι "Client" και "Server" δεν είναι ρόλοι των μηχανημάτων, κάθε μηχάνημα είναι και Server και Client! Δηλαδή κάθε μηχάνημα θα τρέχει διαρκώς στο background ένα netcat που κάνει listen και στο foreground ένα άλλο που θα κάνει connect στο απέναντι.

 

Εκτός και αν πρόκειται τελικά να κάνεις μονόδρομη την επικοινωνία.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

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


  • Δημιουργία νέου...