sarakinos Δημοσ. 26 Νοεμβρίου 2009 Share Δημοσ. 26 Νοεμβρίου 2009 Καλησπέρα φίλοι και φίλες insomniacs... Έχω ένα project στην σχολή που χρησιμοποιώ την netcat για να δημιουργήσω μέσω ενώς script ένα προγραμματάκι με την netcat. Είναι ένα μικρό chataki και έχει και την δυνατότητα αποστόλής αρχείων από server - > client. Τέλος πάντων να μην τα πολυλογώ.Στην εκφώνηση λέει ότι πρέπει να γίνεται κρυπτογράφηση του μηνύματος κατα την αποστολή και αποκρυπτογράφηση κατά την λήψη με βάση 2 αντιστοίχων κλειδιών που θα έχω καθορίσει...Βρήκα ότι κρυπτογράφηση γίνεται με την cryptcat αλλά θέλω να ρωτήσω μήπως μπορεί να γίνει κάτι αντίστοιχο με την netcat... Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
nske Δημοσ. 27 Νοεμβρίου 2009 Share Δημοσ. 27 Νοεμβρίου 2009 Καλησπέρα, Μπορείς να χρησιμοποιήσεις την openssl(1) ή την gpg2(1). Αν δεν πρόκειται για Shell script αλλά για πρόγραμμα σε κάποια scripting γλώσσα όπως η python, η perl ή η ruby, μπορείς εναλλακτικά να χρησιμοποιήσεις κάποια σχετική βιβλιοθήκη τους. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
sarakinos Δημοσ. 29 Νοεμβρίου 2009 Μέλος Share Δημοσ. 29 Νοεμβρίου 2009 Η διαδικασία crypt/decrypt δεν μπορεί δηλαδή να γίνει με την netcat?πρεπει να χρησιμοποιήσω extra εφαρμογή?το project ειναι ένα shell script. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
geopoul Δημοσ. 29 Νοεμβρίου 2009 Share Δημοσ. 29 Νοεμβρίου 2009 Η διαδικασία crypt/decrypt δεν μπορεί δηλαδή να γίνει με την netcat?πρεπει να χρησιμοποιήσω extra εφαρμογή?το project ειναι ένα shell script. Όχι, το netcat δεν μπορεί να κάνει κρυπρογράφηση. Όπως όμως υπαινήσεται και ο nske παραπάνω, μπορείς εύκολα να φτιάξεις ένα pipeline που θα συνδιάζει το netcat με το openssh. Για παράδειγμα: http://bsdsupport.org/2007/03/q-how-do-i-encrypt-file-transfers-with-dd-and-netcat/ Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
sarakinos Δημοσ. 5 Δεκεμβρίου 2009 Μέλος Share Δημοσ. 5 Δεκεμβρίου 2009 Έχω κάνει το script να δουλέυει με netcat γιατ chat και filetransfer με ολους τους ελέγχους αλλά κόλησα στην κρυπτογράφηση.. Μπορείτε να μου δώσετε την εντολή του server για να κάνει listen (με κάποιον προκαθορησμένο κωδικό) και την εντολή του client για σύνδεση στον server (με τον παραπάνω κωδικό). Επίσης στο project λέει να κάνουμε crypt του μηνύματος κατα την αποστολή και decrypt κατα την λήψη...βαδίζω στα σωστά χνάρια? να η εκφώνηση : Το Project αυτό συνίσταται στην κατασκευή ενός προγράμματος σεναρίου κελύφους, που θα επιτρέπει την κωδικοποιημένη επικοινωνία ανάμεσα σε δύο υπολογιστές χρησιμοποιώντας τη εντολή netcat. Οι δύο υπολογιστές θα έχουν ήδη φορτωμένα κάποια κλειδιά. Η έναρξη της επικοινωνίας θα γίνεται με το κλειδί 1 και στη συνέχεια θα μεταβαίνουν στο κλειδί που έχει επιλεγεί. Τα παραπάνω στοιχεία (διεύθυνση, τελικό κλειδί) θα δίνονται με την υποστήριξη menu. H εφαρμογή θα πρέπει να κάνει κωδικοποίηση των εξερχόμενων μηνυμάτων και αποκωδικοποίηση των εισερχόμενων. Να και το script που έκανα μέχρι στιγμής: > #Project 20 Using Netcat to connect two PCs via key encryption $choice=0 while [ $choice!=[1-2] ] ; do clear echo "Welcome to NetCat Connector" echo "**Menu**" echo "1)Establish 2 virtual adresses" echo "2)Connection between real adresses" echo "2)Exit" echo "Choice:" read choice clear case $choice in 1) ifconfig lo:1 10.0.0.1 ifconfig lo:2 10.0.0.2 break ;; 2)echo "1)Set up server" echo "2)Set up client" echo "Choice:" read choiceN if [ $choiceN -eq 1 ]; then count=0 while [ "$count" -eq 0 ] do echo "Enter a port to open:" read port if [ "$port" -ge 1 ] && [ "$port" -le 65535 ] then var=`netstat -an | grep $port` if [ "$var" ] then clear echo "Port is used.Try another one." count=0 else clear echo "Port is not used.Setting up server..." echo "Server 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 "Port:$port" echo " " echo "--Text typed--" echo " " count=1 nc -vv -l -p $port fi else echo "Not valid Port number.'1-65535'." fi done fi if [ $choiceN -eq 2 ]; then echo "Enter servers ip:" read sip prec=`ping -c4 $sip | grep 'received' | awk -F',' '{ print $2}' | awk '{ print $1}'` ptrans=`ping -c4 $sip | grep 'transmitted' | awk -F',' '{ print $0}' | awk '{ print $1}'` if [ "$prec" -eq "$ptrans" ] then echo "Server found!" else echo "Server not responded.Terminating..." exit fi echo "Enter servers port to hear:" read port1 check=0 while [ $check -eq 0 ] do if [ "$port1" -ge 1 ] && [ "$port1" -le 65535 ] then check=1 nc -vv $sip $port1 else echo "Not valid Port number.'1-65535'." echo "Enter servers port to hear:" read port1 fi done fi break ;; 3) exit ;; esac done Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
sarakinos Δημοσ. 9 Δεκεμβρίου 2009 Μέλος Share Δημοσ. 9 Δεκεμβρίου 2009 Αδέρφια μου? Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
nske Δημοσ. 10 Δεκεμβρίου 2009 Share Δημοσ. 10 Δεκεμβρίου 2009 Μπορείτε να μου δώσετε την εντολή του server για να κάνει listen (με κάποιον προκαθορησμένο κωδικό) και την εντολή του client για σύνδεση στον server (με τον παραπάνω κωδικό). Δεν κάνει listen με κάποιο κωδικό, οι διαδικασίες μεταφοράς δεδομένων και κρυπτογράφησης δεδομένων πραγματοποιούνται με εντελώς ανεξάρτητο τρόπο, από ανεξάρτητες εφαρμογές. Δηλαδή γίνεται το εξής: Στον μεν server ορίζεις τα δεδομένα που θα παραλαμβάνονται από τη netcat (τα οποία υποθέτεις ότι θα είναι κρυπτογραφημένα) να στέλνονται στη συνέχεια στην openssl (ή σε κάποιο άλλο τέτοιο πρόγραμμα) για αποκρυπτογράφηση. Αυτό γίνεται με pipe, όπως αναφέρει και στο link που έδωσε ο geopoul, π.χ.: >nc -vv -l -p $port | openssl aes-256-cbc -salt -d Στον δε client, ορίζεις τα δεδομένα που εισάγονται να στέλνονται πρώτα στην openssl, ώστε να κρυπτογραφούνται, και μετά να γίνονται pipe στην netcat για αποστολή. Π.χ.: >openssl aes-256-cbc -salt | nc -vv $sip $port1 Από κει και πέρα είναι μερικά επιπλέον προβληματάκια που χρειάζονται λύση, όπως ότι: Η κρυπτογράφηση να γίνεται για κάθε μήνυμα αυτόματα (γιατί έτσι όπως είναι θα χρειάζεται να τερματίζει και να ξανατρέχει ο client σε κάθε μήνυμα). Αυτό είναι κάτι που θα πρέπει να το διαχειριστείς με το shell, μεσολαβώντας κάποια loop που θα εκτελεί την εντολή για κάθε μήνυμα που εισάγει ο χρήστης. Αν ο κωδικός δεν είναι επιθημητό να εισάγεται κατά την εκτέλεση από τον χρήστη, να του τον προκαθορίσεις με κάποιον από τους τρόπους που αναφέρει η man page της openssl ("PASS PHRASE ARGUMENTS"). Φυσικά αντί για κωδικό (symmetric cryptography scheme)μπορείς να χρησιμοποιήσεις και κάποιο ζεύγος κλειδιών που θα βρίσκονται σε κάποια αρχεία (asymmetric ή public key scheme) -αυτό νομίζω ότι θέλει η άσκηση. Για το concept αυτού του μοντέλου κρυπτογράφησης δες εδώ και για το πώς μπορείς με την openssl να παράξεις και να χρησιμοποιήσεις κλειδιά υπάρχουν πολλά εισαγωγικά και παραδείγματα (ψάξε π.χ. για openssl+examples ή +tutorial/howto). Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
sarakinos Δημοσ. 10 Δεκεμβρίου 2009 Μέλος Share Δημοσ. 10 Δεκεμβρίου 2009 love you nske! Thanks!!! Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
gtroza Δημοσ. 10 Δεκεμβρίου 2009 Share Δημοσ. 10 Δεκεμβρίου 2009 love you nske!Thanks!!! πείτε να τον φέρουν στη σχολή καθηγητή ! . Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
sarakinos Δημοσ. 13 Δεκεμβρίου 2009 Μέλος Share Δημοσ. 13 Δεκεμβρίου 2009 Καλησπέρα... Τελικά το θέμα μου φαίνεται κάπως δισνόητο ακόμα .Το θέμα μου ποιο είναι λοιπόν..αυτό το loop που είπες να κάνω,πώς θα γίνει , αφού από το ξεκίνημα της nc και μετά τα δεν μπορώ να παρέμβω στην ροή,απλά ο χρήστης γράφει στον client και τα μηνύματα εμφανίνζονται στον server και αντίστοιχα...θα πρέπει με loop να κλείνω και να ανοιγω την σύνδεση απο την αρχή?ακόμα,τα κλειδιά που θα έχω φορτωμένα σε αρχεία ?τι αρχεία θα είναι αυτα?τι κλειδιά θα έχουν ?και πως θα γίνεται η μετάβαση από το 1ο κατα την κρυπτογράφηση στο 2ο κατά την αποκρυπτογράφηση? I'm confuzed! PS . Ο server δεν μπορεί να στέλνει στον client?Ώστε να γίνεται chat? Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
nske Δημοσ. 13 Δεκεμβρίου 2009 Share Δημοσ. 13 Δεκεμβρίου 2009 Το θέμα μου ποιο είναι λοιπόν..αυτό το loop που είπες να κάνω,πώς θα γίνει , αφού από το ξεκίνημα της nc και μετά τα δεν μπορώ να παρέμβω στην ροή,απλά ο χρήστης γράφει στον client και τα μηνύματα εμφανίνζονται στον server και αντίστοιχα...θα πρέπει με loop να κλείνω και να ανοιγω την σύνδεση απο την αρχή? Δε ξέρω αν πρέπει απαραίτητα, καθώς υπάρχουν πολλοί τρόποι για να κάνεις το κάθε τι (πάνω από μία υλοποιήσεις του netcat, πάνω από ένα πρόγραμμα που μπορεί να κάνει κρυπτογράφηση/αποκρυπτογράφηση, πάνω από ένα shell, κλπ). Γενικά, χάρη στη φιλοσοφία του unix, σπάνια θα βρεθείς στη θέση να πρέπει να ακολουθήσεις έναν μοναδικό τρόπο για να πετύχεις κάτι. Πάντως σίγουρα γίνεται και έτσι, και είναι απλό. Hints: 1) echo 2) while true 3) nc -c τι αρχεία θα είναι αυτα?τι κλειδιά θα έχουν Για το concept αυτού του μοντέλου κρυπτογράφησης δες εδώ[/url'] και για το πώς μπορείς με την openssl να παράξεις και να χρησιμοποιήσεις κλειδιά υπάρχουν πολλά εισαγωγικά και παραδείγματα (ψάξε π.χ. για openssl+examples ή +tutorial/howto). Καταρχήν διάβασε για τη διαφορά Symmetic και Asymmetric / Public-Key cryptography, για να αποφασίσεις τι θέλεις να χρησιμοποιήσεις. Για symmetric μπορείς να χρησιμοποιήσεις οποιοδήποτε σύνολο δεδομένων ως key, ας πούμε ένα text string ή ένα αρχείο με μια φωτογραφία, οτιδήποτε. Για asymmetric θα πρέπει να φτιάξεις ένα ζεύγος κλειδιών, π.χ. δίνοντας κάτι σαν: >$ openssl genrsa -out private.key 2048 $ openssl rsa -pubout -in private.key -out public.key Από κει και πέρα μπορείς π.χ. να κρυπτογραφείς δεδομένα με το public key και να τα αποκρυπτογραφείς με το private, ένα απλό demonstration: >echo 124 | openssl rsautl -pubin -inkey public.key -encrypt | openssl rsautl -inkey private.key -decrypt Στην εργασία σου, αφού όπως κατάλαβα μιλάμε για μονόδρομη επικοινωνία (δηλαδή ο client απλά στέλνει και ο server απλά λαμβάνει), ο client θα κάνει αποκλειστικά encryption και ο server θα κάνει αποκλειστικά decryption. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
sarakinos Δημοσ. 14 Δεκεμβρίου 2009 Μέλος Share Δημοσ. 14 Δεκεμβρίου 2009 Ευχαριστώ φίλε μου για την βοήθειά σου...Αύριο θα διαβάσω πάλι και θα επιστρέψω με απορίες πάλι αν μηλουσαμε για αμφήδρομη επικοινωνία πως θα γινόταν?αυτο έχω στο μυαλό μου εγώ... Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
nske Δημοσ. 14 Δεκεμβρίου 2009 Share Δημοσ. 14 Δεκεμβρίου 2009 Κάθε άκρο θα έτρεχε έναν netcat listener (server) σε διαφορετική port και έναν netcat connector (client) που θα συνδέεται στην port του άλλου. Το μόνο ζήτημα είναι να βρεις έναν τρόπο το terminal κάθε άκρου να τυπώνει το output του listener αλλά ταυτόχρονα να δέχεται και να στέλνει το input με τον connector. Ο πιο προφανής τρόπος θα ήταν να στείλεις τους listeners ως background jobs από το shell (google: shell+job+control+background). Έτσι το μεν foreground θα είναι ελεύθερο για να διαβάσει το input που θα εισάγει ο χρήστης στο terminal, αλλά ταυτόχρονα το stdout του background process θα μπορεί να τυπώνεται στο ίδιο terminal. Κάτι άλλο: είναι δύσχρηστο να πρέπει να ορίζει ο χρήστης ports στον server και τον client κάθε φορά που τρέχει το script, πιθανότατα δεν τον ενδιαφέρει αυτός ο έλεγχος. Αν δε το απαιτεί η άσκηση πιο λογικό φαίνεται να ορίσεις hard-coded τις ports στο script. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
sarakinos Δημοσ. 14 Δεκεμβρίου 2009 Μέλος Share Δημοσ. 14 Δεκεμβρίου 2009 Προυπόθεση καλής βαθμολόγησης είναι ο έλεγχος για κάθε περίπτωση ωστε να μην υπάρχει πρόβλημα...γιαυτό και το κάνω...δεν με νοιάζει τόσο πολύ η χρηστικότητα σε αυτήν την περίπτωση.. ---------- Το μήνυμα προστέθηκε στις 12:22 ---------- Φίλε μου δεν καταφέρνω να κάνω αυτήν την δουλεια στέλνοντας τις διεργασίες στο background. Κάνω κάτι τέτοιο..(περίπου) > Server: nc -vv -l -p $port | openssl aes-256-cbc -salt -d ctrl+z bg 1 openssl aes-256-cbc -salt | nc -vv $sip $port1 Client: openssl aes-256-cbc -salt | nc -vv $sip $port1 ctrl+z bg 1 nc -vv -l -p $port | openssl aes-256-cbc -salt -d Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
NullScan Δημοσ. 14 Δεκεμβρίου 2009 Share Δημοσ. 14 Δεκεμβρίου 2009 Με ctrl+z η διεργασία παγώνει. Ή θα τρέξεις την εντολή με & στο τέλος για να την στείλει το shell στο background ή θα την εκτελέσεις μέσω της nohup. Ρίξε μιά ματιά στο man nohup για λεπτομέρειες. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.