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

Netcat


sarakinos

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

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

chatm.th.png

 

Ότι γράφει ο 4 εμφανίζετε στον 2. Ότι γράφει ο 3 εμφανίζετε στον 1. O 1 και ο 3 είναι σε έναν υπολογιστή και o 2 με τον 4 σε άλλον.

 

Edώ δεν στέλνω τίποτε στο background.

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

>
while true; do nc -vv -l -p 789 | openssl rsautl -inkey private.key -decrypt; done &
read flag
while [ $flag != "break" ];do
echo $flag | openssl rsautl -pubin -inkey public.key -encrypt | nc  192.168.2.5 456;done

Σκεφτομαι κάτι τέτοιο σε κάθε μηχάνημα..με διαφορετικές τιμές φυσικά..έτσι όταν γράφω κάτι και μετά πατάω ctrl+c το μήνυμα εμφανίζεται στο άλλο.Επίσης από το 2ο γίνεται το ίδιο..Όταν πάω να ξαναγράψω όμως παίρνει το μήνυμα σαν κανονική command και με πετάει..θέλει κάτι ακόμα στο loop έτσι?μπορείτε να βοηθήσετε?Και ακόμη πως μπορώ να βάλω το ctrl+c στο script?Δεν θέλω να το κάνω με kill γιατί δεν ξέρω το pid κάθε φορά...

 

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

 

chatm.th.png

 

Ότι γράφει ο 4 εμφανίζετε στον 2. Ότι γράφει ο 3 εμφανίζετε στον 1. O 1 και ο 3 είναι σε έναν υπολογιστή και o 2 με τον 4 σε άλλον.

 

Edώ δεν στέλνω τίποτε στο background.

 

Ναι αλλά εδώ δεν έχουμε και την openssl σωστά?

Υποθέτοντας ότι τρέχεις το δικό μου script παντα.. :)

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

Για τον client κάνω το παρακάτω:

 

>
while [ true ]; do
      read message2send
      echo $message2send | openssl rsautl -pubin -inkey public.key -encrypt | nc -c -vv localhost $port1 [color=red][b][size=+1]2>[/size][/b] /dev/null[/color]
done

 

Για τον server:

 

>
while [ true ]; do 
      message=`nc -vv -l -p $port [color=red][b][size=+1]2>[/size][/b] /dev/null[/color] | openssl rsautl -inkey private.key -decrypt`
      echo $message
done

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

Και ακόμη πως μπορώ να βάλω το ctrl+c στο script?Δεν θέλω να το κάνω με kill γιατί δεν ξέρω το pid κάθε φορά...

Το πιο απλό είναι να εγκαταστήσεις τη gnu netcat και να χρησιμοποιήσεις το -c argument της.

 

>  -c, --close                close connection on EOF from stdin

 

Ή την bsd netcat και να χρησιμοποιήσεις το -o

> -o              Terminate on EOF on input

 

Εκτός και αν το υποστηρίζει και η netcat που χρησιμοποιείς με κάποιο argument.

 

Αν θέλεις να το κάνεις με kill, υπάρχει και η killall και η pidof.

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

Το υποστηρίζει με το -q απ'ότι είδα..

Δοκιμάζω αυτά που μου έδωσες...

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

 

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

 

Και να μου εξηγήσετε λίγο το "2> /dev/null" δάσκαλοι...

:)

 

Άκυρο είδα τι είναι...το 2> δεν καταλαβα...

http://en.wikipedia.org/wiki//dev/null

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

Έχεις δώσει στην netcat την παράμετρο -vv που την κάνει να δίνει πολλές χρήσιμες πληροφορίες που είναι όμως άχρηστο να εμφανίζονται στο παράθυρο του chat. Με τον τρόπο αυτό του λέω να στέλνει όλο το stderr στο /dev/null. εναλλακτικά θα μπορούσα να το στέλνω σε ένα αρχείο π.χ. chat.log για να μπορώ να βλέπω τι γίνεται.

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

Κατσε...δηλαδή στο /dev/null πάει το outpud του -vv ,τo stderr δηλαδη..

Εγώ νόμιζα αποθηκέυεται το μήνυμα και μετά το παίρνει ο client να το κανει echo..

 

 

2ον

Σε ποιο σημείο του script που έδωσε ο nske , για τον server , διαβαζεται το μηνυμα και στέλνεται στον client?

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

Κάθε process στο Unix έχει 3 Input/Output streams ανοιχτά, στα 2 στέλνει το οποιοδήποτε output παράξει, είτε αυτό είναι μηνύματα στην οθόνη, είτε κάποιο crash, και το 3ο είναι το stream από το οποίο δέχεται input, όπως π.χ. κάποιες επιλογές του χρήστη σαν το μήνυμα που στέλνεις από τον client στον server στην περίπτωσή σου. Τα streams αυτά ονομάζονται STDIN (STanDard INput), STDOUT (STanDard OUTput) και STDERR (STanDard ERRor). Για να μπορεί να έχει επικοινωνία οποιοδήποτε πρόγραμμα με αυτά, τα ανοίγει σαν κανονικά αρχεία και όταν ανοίγουν αυτά τα "αρχεία" για να μπορέσει ένα πρόγραμμα (όπως το netcat) να τα χειριστεί, αυτά παίρνουν έναν αριθμό που λέγεται file descriptor. Όλες λοιπόν οι εφαρμογές που εκτελούνται σε ένα Unix σύστημα έχουν τουλάχιστον αυτά τα 3 "αρχεία" ανοιχτά και από default παίρνουν τα file descriptors 0 (stdin), 1 (stdout) και 2 (stderr).

Από την άλλη, ο operator > στο bash (το shell που χρησιμοποιείς) στέλνει όποιο μήνυμα παράγεται από την εντολή αριστερά του operator στο αρχείο που ορίζεται στα δεξιά αυτού. Άν τώρα ο operator έχει και έναν αριθμό αμέσως πριν, στέλνει όλα τα μηνύματα που θα στέλνονταν στον file descriptor που δείχνει το νούμερο αυτό στο αρχείο δεξιά του >.

Το /dev/null είναι ένα ειδικό αρχείο το οποίο ουσιαστικά εξαφανίζει οποιοδήποτε μήνυμα στέλνεται σε αυτό, στην πράξη ότι θα φαινότανε στον file descriptor 2 της εφαρμογής (stderr δηλαδή) εξαφανίζεται.

Δέν νομίζω οτι μπορώ να στο εξηγήσω καλύτερα :P (τουλάχιστον οχι χωρίς να μπλέξουμε με κώδικα C)

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

Και κάτι άλλο. Όταν χρησιμοποιείς την exit να την χρησιμοποιείς με παράμετρο. Π.χ. exit 0 όταν το πρόγραμμα τερματίζει φυσιολογικά ή exit 1 όταν τερματίζει λόγο κάποιου error.

 

Exit and Exit Status:

http://tldp.org/LDP/abs/html/exit-status.html

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

μάλιστα...κατάλαβα...τελικά αυτό το project με έχει βοηθήσει πολύ :) ...

η απορεία του προηγούμενου ποστ παραμένει όμως...εκτός και αν το εξήγησες κάπου έμμεσα και δεν το επιασα...συγχωράτε με,απο εχθές δεν σταματησα να διαβαζω στο google και εδω...σάλταρα! :)

 

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

 

Και κάτι άλλο. Όταν χρησιμοποιείς την exit να την χρησιμοποιείς με παράμετρο. Π.χ. exit 0 όταν το πρόγραμμα τερματίζει φυσιολογικά ή exit 1 όταν τερματίζει λόγο κάποιου error.

 

Το γνωρίζω αυτό φίλε μου,thanks anyway..

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

Στο εξήγησα, ξαναδιάβασε λίγο το post μου.

Στο /dev/null πάει οποιοδήποτε μήνυμα του netcat προοριζόταν από τον developer να είναι error ή warning, οχι αυτό το μήνυμα που δέχτηκε από το socket που άνοιξε για να ακούει.

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

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

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


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