gtroza Δημοσ. 14 Δεκεμβρίου 2009 Share Δημοσ. 14 Δεκεμβρίου 2009 γειά σου NullScan firewalker nske τα είπες τέλεια ακόμα κι εγώ κατάλαβα ! προτείνω τη δημιουργία "σχολείου" στο insomnia . Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
sarakinos Δημοσ. 14 Δεκεμβρίου 2009 Μέλος Share Δημοσ. 14 Δεκεμβρίου 2009 Στο εξήγησα, ξαναδιάβασε λίγο το post μου.Στο /dev/null πάει οποιοδήποτε μήνυμα του netcat προοριζόταν από τον developer να είναι error ή warning, οχι αυτό το μήνυμα που δέχτηκε από το socket που άνοιξε για να ακούει. 2> /dev/null Αρα εδώ φίλε μου πανε τα errors ετσι? στο stdin παει το μήνυμα που έρχεται απο τον client και τυπώνεται μέσω του stdout...Καλά μέχρι εδώ? Το πρόβλημα που είπα παραπάνω όμως γιατί μου το κάνει...που τα μηνύματα του server στον client δεν εμφανίζονται απο μόνα του αλλα θέλει να γράψω ένα μήνυμα απο client-server ή να πατήσω ένα enter απλά στον client... Δηλαδή έχω το παρακάτω: > server: hi client: (τίποτα) ---------------------------------------- server: hi year client: year(γράφω αυτό) hi(εμφανίζεται το προηγούμενο μήνυμα 'hi') ---------- Το μήνυμα προστέθηκε στις 21:45 ---------- γειά σου NullScan firewalker nskeτα είπες τέλεια ακόμα κι εγώ κατάλαβα ! προτείνω τη δημιουργία "σχολείου" στο insomnia . Τώρα μαθαίνω Μην μ'αποπέρνετε ρεεεεε! Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
firewalker Δημοσ. 15 Δεκεμβρίου 2009 Share Δημοσ. 15 Δεκεμβρίου 2009 Ξέχνα το -vv. Αν δεν υπήρχε ο κώδικας θα ήταν ως εξής: Για τον client: > while [ true ]; do read message2send echo $message2send | openssl rsautl -pubin -inkey public.key -encrypt | nc -c localhost $port1 done Που κάνει το εξής: Συνεχώς μέσω της while θα διαβάζει μέσω της read ότι γράψει ο χρήστης και το αποθηκεύει στην μεταβλητή message2send. Η read θεωρεί σαν τέλος εισόδου από τον χρήστη το enter. Με το πάτημα του enter η μεταβλητή αυτή γίνεται echo περνά από κρυπτογράφηση και μεταδίδεται προς τον server από την netcat. Για τον server: > while [ true ]; do message=`nc -l -p $port | openssl rsautl -inkey private.key -decrypt` echo $message done Συνεχώς ο Server διαβάζει με την netcat αυτά που του στέλνουν και τα αποθηκεύει στην μεταβλητή message και στην συνέχεια με την echo τυπώνεται στην οθόνη. Δεν χρειάζεται να κάνουμε κάποια ανακατεύθυνση της stdout. Εξ ορισμού θα τυπωθεί ότι είναι από την stdout στην οθόνη. Εγώ με του που πατάω enter στον client το μήνυμα εμφανίζεται στον server. Από τον server στον client θα το κοιτάξω. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
sarakinos Δημοσ. 15 Δεκεμβρίου 2009 Μέλος Share Δημοσ. 15 Δεκεμβρίου 2009 Αυτά που γράφουμε από τον server ομώς?Πως διαβάζονται και εμφανίζονται απο τον client? Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
firewalker Δημοσ. 15 Δεκεμβρίου 2009 Share Δημοσ. 15 Δεκεμβρίου 2009 Από την στιγμή που θα γίνει η σύνδεση μέσω της netcat (χωρίς encryption κτλ) η επικοινωνία είναι αμφίδρομη. Τώρα τα πράγμα μπερδεύονται λίγο λόγο του encryption και του -c που κλείνει την σύνδεση στο τέλος κάθε μηνύματος. Μόλις όμως ξανα στείλεις κάτι, η σύνδεση ανοίγει και το μήνυμα του server φτάνει. Δεν μπορώ να σκεφτώ κάτι άλλο. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
sarakinos Δημοσ. 15 Δεκεμβρίου 2009 Μέλος Share Δημοσ. 15 Δεκεμβρίου 2009 Μήπως αν μπορούσαμε να κάνουμε κάπως τον client να στέλνει ένα "space" πχ κάθε δευτερόλεπτο,ή ένα εντερ... Να φαίνεται σαν να πατάω εγώ το έντερ δηλαδη απο τον client ώστε να ανοίγω πάλι την σύνδεση.. Ακυρο... ετσι δεν θα μπορούσαμε να πληκτολογήσουμε τπτ... PS... Κατι άλλο,τα μηνύματα από server σε client περνάνε απο openssl ? ή εμφανίζονται λόγο της απλής αμφίδρομης επικοινωνίας του netcat? Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
nske Δημοσ. 15 Δεκεμβρίου 2009 Share Δημοσ. 15 Δεκεμβρίου 2009 #1 Υπενθυμίζω ότι πλέον οι όροι "client" και "server" δεν αναφέρονται στα μηχανήματα' date=' αλλά στον ρόλο που επιτελεί η netcat όπως εκτελείται σε κάθε περίπτωση.Για να υπάρχει αμφίδρομη επικοινωνία, κάθε μηχάνημα θα είναι και client και server, δηλαδή θα τρέχει τη netcat και με τους δύο τρόπους.[/quote'] #2 Σε κάθε μηχάνημα' date=' το script θα τρέχει μία loop για τη netcat - server στο background job και μία loop για τη netcat - client στο Foreground.Το background job γράφει κανονικά στο terminal, αλλά δεν δεσμεύει την είσοδο, αυτό το κάνει το foreground process.[/quote'] #3 Θυμίζω ότι "Client" και "Server" δεν είναι ρόλοι των μηχανημάτων, κάθε μηχάνημα είναι και Server και Client! Δηλαδή κάθε μηχάνημα θα τρέχει διαρκώς στο background ένα netcat που κάνει listen και στο foreground ένα άλλο που θα κάνει connect στο απέναντι. απόπειρα #4: Δεν υπάρχει ένας server ένας client, αλλά δύο servers και δύο clients, από ένας σε κάθε άκρο. Ο server κάθε άκρου δεν κάνει κάτι με την είσοδο του χρήστη, απλά κάθεται σαν ένα background job και παραλαμβάνει ό,τι του στείλει ο απέναντι client. Άκρο 1: >[color="Red"](server)[/color] while true; nc -l -p 6666 2>/dev/null | openssl μπλαμπλα; done & [color="Red"](client)[/color] while true; read message; echo $message | openssl μπλαμπλα -encrypt | nc -c 2.2.2.2 6667; done Άκρο 2: >[color="Red"](server)[/color] while true; nc -l -p 6667 2>/dev/null | openssl μπλαμπλα; done & [color="Red"](client)[/color] while true; read message; echo $message | openssl μπλαμπλα -encrypt | nc -c 1.1.1.1 6666; done Φυσικά αυτός είναι απλά ένας πιθανός τρόπος, δεν είναι απαραίτητα ούτε ο μοναδικός ούτε ο καλύτερος ;-) Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
firewalker Δημοσ. 15 Δεκεμβρίου 2009 Share Δημοσ. 15 Δεκεμβρίου 2009 νομίζω ότι το παρακάτω είναι οκ. @nske: Μερικές φορές όταν κλείνω τα terminal η πόρτα μένει καταλυμένη. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
sarakinos Δημοσ. 15 Δεκεμβρίου 2009 Μέλος Share Δημοσ. 15 Δεκεμβρίου 2009 Firewalker τι έκανες τελικά με το πρόβλημα που είχαμε? nske κατάλαβα αυτό που είπες , ουκ ολίγες φορες .... Τους όρους server-client τους αναφέρω απο συνήθεια.. Απλώς ο τρόπος που πάω να το κάνω μου φαίνεται ποιο "βατός" για μένα προς το παρών....πολλά είπα όμως,lets start testing,αυριο έχω παράδοση... Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
firewalker Δημοσ. 15 Δεκεμβρίου 2009 Share Δημοσ. 15 Δεκεμβρίου 2009 Αυτό που είπε ο nske. Αν θελήσεις τον κώδικα πες μου. Αύριο που θα παραδώσεις τον ανεβάζουμε και public. :p:p Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
sarakinos Δημοσ. 15 Δεκεμβρίου 2009 Μέλος Share Δημοσ. 15 Δεκεμβρίου 2009 Θα το δώ μόνος μου φίλε μου..σας ευχαριστώ όλους και πάλι για την βοήθεια... (αφήνω ένα παραθυράκι για τον κώδικα όμως , αν.... ) Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
firewalker Δημοσ. 15 Δεκεμβρίου 2009 Share Δημοσ. 15 Δεκεμβρίου 2009 Ααα, και στις πόρτες βάλε μεγαλύτερο περιορισμό. Να μην είναι από 1. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
sarakinos Δημοσ. 15 Δεκεμβρίου 2009 Μέλος Share Δημοσ. 15 Δεκεμβρίου 2009 At last...δουλεύει οκ,έβαλα και τους ελέγχους που ήθελα και είμαι οκ...να σας πω τώρα,που θα κάνω echo το όνομα του αποστολέα και του παραλήπτη μέσα στο script για να μην γίνεται αυτός ο χαμός μηνυμάτων?Δοκίμασα μόνος μου αλλα έβγαζε όπου ν'ανε... To script > #Project 20 Using Netcat to connect two PCs via key encryption $choice=0 while [ $choice!=[1-2] ] ; #!arxiko loop do clear echo "Welcome to NetCat Connector" echo "**Menu**" echo "1)Connection between two PCs" echo "2)Exit" echo "Choice:" read choice clear case $choice in 1)echo "Set up PC for connection" count=0 while [ "$count" -eq 0 ] do echo "Enter servers port:" read portS echo "Enter clients port:" read portC echo "Enter clients ip:" read ipC prec=`ping -c4 $ipC | grep 'received' | awk -F',' '{ print $2}' | awk '{ print $1}'` ptrans=`ping -c4 $ipC | grep 'transmitted' | awk -F',' '{ print $0}' | awk '{ print $1}'` if [ "$prec" -eq "$ptrans" ] then echo "Client PC found!" else echo "Client PC not found,terminating..." exit 1 fi if [ "$portS" -ge 1 ] && [ "$portS" -le 65535 ] then var=`netstat -an | grep $portS` if [ "$var" ] then clear echo "Port is used.Try another one." count=0 else clear echo "Port is not used.Setting up PC..." echo "PC is up and running!" ip=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'` echo "Servers ip:$ip" echo "Clients ip:$ipC" echo "Servers port:$portS" echo "Clients port:$portC" echo " " echo "--Text typed--" echo " " count=1 fi else echo "Not valid Port number.'1-65535'." fi done while [ true ];do nc -l -p $portS 2> /dev/null | openssl rsautl -inkey private.key -decrypt; done & while [ true ];do read message; echo $message | openssl rsautl -pubin -inkey public.key -encrypt | nc -q 3 $ipC $portC 2> /dev/null ; done break ;; 2) exit ;; esac done Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
firewalker Δημοσ. 15 Δεκεμβρίου 2009 Share Δημοσ. 15 Δεκεμβρίου 2009 Εγώ κάνω το παρακάτω. > read nickname1 while [ true ]; do read message1; echo "[b]$nickname1 says:[/b] $message1" | openssl rsautl -pubin -inkey public.key -encrypt | nc -c -vv localhost $(($port+1)) 2> /dev/null; done Μετά περνάω και χρωματάκια. ---------- Το μήνυμα προστέθηκε στις 15:03 ---------- Δηλώνεις τα χρώματα στην αρχή http://tldp.org/LDP/abs/html/colorizing.html > Black='\e[0;30m' Blue='\e[0;34m' Green='\e[0;32m' Cyan='\e[0;36m' Red='\e[0;31m' Purple='\e[0;35m' Brown='\e[0;33m' Light_Gray='\e[0;37m' Dark_Gray='\e[1;30m' Light_Blue='\e[1;34m' Light_Green='\e[1;32m' Light_Cyan='\e[1;36m' Light_Red='\e[1;31m' Light_Purple='\e[1;35m' Yellow='\e[1;33m' White='\e[1;37m' No_Color='\033[0m' Το δικό μου τελικό αποτέλεσμα είναι: > echo "Select nickname:" read nickname1 echo "ok!" echo while [ true ]; do nc -vv -l -p $port 2> /dev/null | openssl rsautl -inkey private.key -decrypt; done & while [ true ]; do read message1; echo -e "${Light_Red}[$(date +%H:%M)] $nickname1 says:${No_Color} $message1" | openssl rsautl -pubin -inkey public.key -encrypt | nc -c -vv localhost $(($port+1)) 2> /dev/null; done > echo echo echo "Select nickname:" read nickname2 echo "ok!" echo while [ true ]; do nc -vv -l -p $(($port1+1)) 2> /dev/null | openssl rsautl -inkey private.key -decrypt; done & while [ true ]; do read message2; echo -e "${Yellow}[$(date +%H:%M)] $nickname2 says:${No_Color} $message2" | openssl rsautl -pubin -inkey public.key -encrypt | nc -c -vv localhost $port1 2> /dev/null; done Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
sarakinos Δημοσ. 15 Δεκεμβρίου 2009 Μέλος Share Δημοσ. 15 Δεκεμβρίου 2009 για τις ports δεν σε έπιασα.. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.