Ανάπτυξη διαδραστικού διαδικτυακού υλικού για τα εργαστήρια του μαθήματος Ασφάλεια & Διαχείριση Δικτύων

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Ανάπτυξη διαδραστικού διαδικτυακού υλικού για τα εργαστήρια του μαθήματος Ασφάλεια & Διαχείριση Δικτύων"

Transcript

1 ΑΤΕΙ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανάπτυξη διαδραστικού διαδικτυακού υλικού για τα εργαστήρια του μαθήματος Ασφάλεια & Διαχείριση Δικτύων ΠΤΥ Χ Ι Α Κ Η ΕΡΓΑΣ Ι Α Μπλάνας Βασίλειος (ΑΜ: Τ01736) Επιβλέπων: Δρ. Βλάχος Βασίλειος ΛΑΡΙΣΑ 2014

2

3 «Εγώ ο Μπλάνας Βασίλειος δηλώνω υπεύθυνα ότι η παρούσα Πτυχιακή Εργασία με τίτλο Ανάπτυξη διαδραστικού διαδικτυακού υλικού για τα εργαστήρια του μαθήματος Ασφάλεια & Διαχείριση Δικτύων είναι δική μου και βεβαιώνω ότι: Σε όσες περιπτώσεις έχω συμβουλευτεί δημοσιευμένη εργασία τρίτων, αυτό επισημαίνεται με σχετική αναφορά στα επίμαχα σημεία. Σε όσες περιπτώσεις μεταφέρω λόγια τρίτων, αυτό επισημαίνεται με σχετική αναφορά στα επίμαχα σημεία. Με εξαίρεση τέτοιες περιπτώσεις, το υπόλοιπο κείμενο της πτυχιακής αποτελεί δική μου δουλειά. Αναφέρω ρητά όλες τις πηγές βοήθειας που χρησιμοποίησα. Σε περιπτώσεις που τμήματα της παρούσας πτυχιακής έγιναν από κοινού με τρίτους, α- ναφέρω ρητά ποια είναι η δική μου συνεισφορά και ποια των τρίτων. Γνωρίζω πως η λογοκλοπή αποτελεί σοβαρότατο παράπτωμα και είμαι ενήμερος για την επέλευση των νομίμων συνεπειών» Μπλάνας Βασίλειος

4 Εγκρίθηκε από την τριμελή εξεταστική επιτροπή Τόπος: Ημερομηνία: ΕΠΙΤΡΟΠΗ ΑΞΙΟΛΟΓΗΣΗΣ

5 Περίληψη Security: precautions taken to guard against crime, attack, sabotage, espionage, etc. Ο άνθρωπος, από τις απαρχές του πολιτισμού, έψαχνε για ασφάλεια και έχτιζε πάνω σε αυτή. Κάποτε, στην λίθινη εποχή, έψαχνε το πιο ασφαλές μέρος για να κατοικήσει. Σήμερα, στην εποχή της πληροφορίας, ψάχνει τρόπους για να κρατήσει ασφαλή τα δεδομένα του. Η παρούσα εργασία, στα πλαίσια της ανάπτυξης διαδραστικού υλικού για τα εργαστήρια του μαθήματος «Ασφάλεια & Διαχείριση Δικτύων», αποπειράθηκε να ερευνήσει το υπάρχον υλικό που απαντάται σήμερα στον παγκόσμιο ιστό και να δημιουργήσει μια διαδραστική δοκιμασία με σκοπό την καλύτερη κατανόηση κάποιων εννοιών και από την πλευρά της ασφάλειας όταν αναφερόμαστε στην προστασία, αλλά και στην αντίπερα όχθη, από την πλευρά της ασφάλειας όταν αναφερόμαστε στην διείσδυση. Στο πρώτο κεφάλαιο της εργασίας αυτής, γίνεται μια μικρή ιστορική αναδρομή στην ασφάλεια της πληροφορίας, η οποία ήταν πάντοτε ένα φλέγον θέμα για τον άνθρωπο. Ξεκινώντας πριν το Caesar s Cipher μέχρι το Enigma Machine κι έπειτα στους πολύπλοκους αλγόριθμους κρυπτογράφησης που χρησιμοποιούνται σήμερα, παρατηρείται η ανάγκη του ανθρώπου για διασφάλιση των πληροφοριών του. Στο δεύτερο κεφάλαιο, γίνεται μια ανάλυση ορισμένων συστημάτων που έχουν α- ναπτυχθεί με σκοπό να διδάξουν τρόπους και θέματα τα οποία έχουν εφαρμογές στην εποχή της πληροφορίας. Όλα τα συστήματα που βρέθηκαν, προσπαθούν να διδάξουν με τον ίδιο ακριβώς τρόπο, δηλαδή με προτροπή του χρήστη να κάμψει τις ασφάλειες ενός συστήματος με απώτερο σκοπό την κατανόηση εννοιών και ίσως και την προσωπική ψυχαγωγία μιας και στις περισσότερες δοκιμασίες μπαίνει και ο παράγοντας «παιχνίδι» στην εξίσωση. Στο τρίτο κεφάλαιο, γίνεται μια εκτενής αναφορά στην πλατφόρμα Hackademic, μια πλατφόρμα ανοιχτού κώδικα, την οποία χρησιμοποιήθηκε για να «στηθεί» εκεί το δικό μας παιχνίδι. Η μελέτη γίνεται, αφ ενός, πάνω στο λειτουργικό κομμάτι του Hackademic κι αφ ετέρου, πάνω στον κώδικα που χρησιμοποιεί. -i-

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

7 Ευχαριστίες Θα ήθελα να ευχαριστήσω τον καθηγητή μου, Δρ Βλάχο Βασίλειο, για την εμπιστοσύνη που μου έδειξε αναθέτοντας μου τη συγκεκριμένη εργασία και για την καθοδήγηση του καθ όλη την διάρκεια της εκπόνησης της. Επίσης θα ήθελα να ευχαριστήσω τον φίλο μου Τριαντάφυλλο Αλέξανδρο 'Icydemon' Κουτρούλη για την πολύτιμη βοήθεια του καθώς και τους Σπύρο Γαστεράτο και Φώτη Λιάτση της ομάδας του hackademic για την τεχνική υποστήριξη και πληροφορίες που μου προσέφεραν. Ιδιαίτερες ευχαριστίες στην κοπέλα μου Τσαμαδού Ευηλιάνα για την βοήθεια και στήριξη καθ όλη τη διάρκεια των σπουδών μου. Μπλάνας Βασίλειος 20 /3/ iii-

8

9 Περιεχόμενα ΠΕΡΙΛΗΨΗ... I ΕΥΧΑΡΙΣΤΙΕΣ... III ΠΕΡΙΕΧΟΜΕΝΑ... V 1 ΕΙΣΑΓΩΓΗ ΓΙΑ ΤΗΝ ΙΣΤΟΡΙΑ ΣΗΜΕΡΑ ΑΝΤΙΚΕΙΜΕΝΟ ΕΝΑΣΧΟΛΗΣΗΣ ΠΑΡΟΜΟΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕ ΤΟ HACKADEMIC ΟΙ ΔΟΚΙΜΑΣΙΕΣ ΤΟΥ CYBERARMY MOD-X CHALLENGE HACKTHISSITE OVERTHEWIRE ΓΕΝΙΚΕΣ ΠΑΡΑΤΗΡΗΣΕΙΣ ΠΕΡΙΓΡΑΦΗ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ HACKADEMIC Η ΠΛΑΤΦΟΡΜΑ HACKADEMIC ΑΠΟ ΤΗΝ ΣΚΟΠΙΑ ΤΟΥ ΧΡΗΣΤΗ Χρήση του Hackademic ως απλός χρήστης (Student) Χρήση του Hackademic ως διαχειριστής Ο ΚΩΔΙΚΑΣ ΠΙΣΩ ΑΠΟ ΤΟ HACKADEMIC Η κλάση User ως δείγμα κώδικα Αλληλεπίδραση με την βάση δεδομένων Τρόπος εμφάνισης των διάφορων σελίδων ΑΝΑΠΤΥΞΗ ΔΟΚΙΜΑΣΙΩΝ ΓΙΑ ΤΗΝ ΠΛΑΤΦΟΡΜΑ HACKADEMIC PROJECT IZON ΣΧΕΔΙΑΣΜΟΣ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ ΠΟΥ ΑΝΑΠΤΥΧΘΗΚΕ Σχεδιασμός και ανάπτυξη του γραφικού περιβάλλοντος Μεμονωμένες Δοκιμασίες vs War Game v-

10 4.1.3 Επιλογή των δοκιμασιών προς ανάπτυξη ΑΝΑΛΥΣΗ ΤΩΝ ΕΠΙΜΕΡΟΥΣ ΔΟΚΙΜΑΣΙΩΝ Παραποίηση της κεφαλίδας του πρωτοκόλλου HTTP (HTTP Header Forgery) Ανάπτυξη της δοκιμασίας Σύνδεση στον ιστότοπο ως administrator με χρήση SQL Injection - Εισαγωγή Ανάλυση της δοκιμασίας Σχεδιασμός, λογική και υλοποίηση Συσκότιση Κώδικα (Code Obfuscation) Γενικές αρχές Υλοποίηση της δοκιμασίας «συσκότισης κώδικα» στην παρούσα εργασία One Time Passwords Υλοποίηση των OTP στην παρούσα εργασία ΥΛΟΠΟΙΗΣΗ ΤΩΝ ΥΠΟΛΟΙΠΩΝ ΣΤΟΙΧΕΙΩΝ ΤΟΥ WAR GAME Το Σενάριο Οι πληροφορίες προς τον παίκτη Ο κώδικας πίσω από το παιχνίδι Easter eggs ΕΓΚΑΤΑΣΤΑΣΗ ΚΑΙ ΠΑΡΑΜΕΤΡΟΠΟΙΗΣΗ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ HACKADEMIC ΚΑΙ ΤΩΝ ΠΑΡΕΜΦΕΡΩΝ ΣΤΟΙΧΕΙΩΝ ΠΟΥ ΑΠΑΙΤΟΥΝΤΑΙ ΓΙΑ ΤΗΝ ΕΚΤΕΛΕΣΗ ΤΟΥ Εισαγωγή Εγκατάσταση του XAMPP σε περιβάλλον Windows Εγκατάσταση του Hackademic CMS ΑΝΑΠΤΥΞΗ ΤΟΥ ΓΡΑΦΙΚΟΥ ΠΕΡΙΒΑΛΛΟΝΤΟΣ Σχεδιασμός της σελίδας Εγκατάσταση και χρήση του Bootstrap Ανάλυση των επιμέρους στοιχείων του Bootstrap που χρησιμοποιήθηκαν ΣΥΜΠΕΡΑΣΜΑΤΑ ΕΠΙΛΟΓΟΣ ΈΝΑΣ ΜΙΚΡΟΣ ΑΠΟΛΟΓΙΣΜΟΣ ΠΡΟΤΑΣΕΙΣ ΓΙΑ ΠΕΡΑΙΤΕΡΩ ΒΕΛΤΙΩΣΗ ΤΗΣ ΔΟΚΙΜΑΣΙΑΣ IZON ΒΙΒΛΙΟΓΡΑΦΙΑ vi-

11 ΠΑΡΑΡΤΗΜΑ Α...65 Α.1 ΤΟ ΣΕΝΑΡΙΟ...65 Α.2 Ο ΚΩΔΙΚΑΣ vii-

12

13 1 Εισαγωγή 1.1 Για την ιστορία Αν γυρίσει κανείς και κοιτάξει πίσω στην ιστορία του ανθρώπου, θα δει πως από τις απαρχές του πολιτισμού, το είδος μας προσπάθησε να διαφυλάξει κάποιες πληροφορίες που θεωρούσε ευαίσθητες. Γνωστό παράδειγμα είναι το τετράγωνο του Πολύβιου[1]. Σε κάθε εποχή και σε κάθε πολιτισμό θα βρει τέτοια παραδείγματα. Πάντοτε κάποιος προσπαθεί να διαφυλάξει τις πληροφορίες του και κάποιος άλλος να τις αποκτήσει. Ένας από τους παλαιότερους τρόπους κρυπτογράφησης είναι η σκυτάλη των Σπαρτιατών, ένας κύλινδρος όπου το μήνυμα τυλιγόταν γύρω του για να γραφτεί και να διαβαστεί. Ίσως ένας από τους πρώτους τρόπους για την διαφύλαξη των πληροφοριών κατά την μεταφορά τους και την προστασία από της υποκλοπές. Μερικούς αιώνες αργότερα εμφανίζεται το Caesar s Cipher, ο τρόπος που χρησιμοποίησε ο Ιούλιος Καίσαρας για να στέλνει τα μηνύματα[2] του και να μπορούν να διαβαστούν από εξουσιοδοτημένα άτομα. Μέσα από μια μεγάλη διαδρομή φτάνουμε στην συσκευή Enigma[3] των δυνάμεων του Άξονα και τους κρυπταναλυτές των Συμμαχικών Δυνάμεων. Από κει περνάμε στον ψυχρό πόλεμο, σε άλλες μεθόδους ανταλλαγής μηνυμάτων και στο ARPAnet, την πρώτη υπόσταση του σημερινού Internet. 1.2 Σήμερα Πρέπει να αναφερθεί πως το ασφαλέστερο υπολογιστικό σύστημα είναι εκείνο το οποίο δεν είναι συνδεδεμένο στο ρεύμα και βρίσκεται σ ένα σφραγισμένο δωμάτιο που κανείς δεν έχει πρόσβαση σ αυτό. Το ασφαλέστερο και σαφώς το πιο άχρηστο. Με την ανάπτυξη της πληροφορικής και των δικτύων, εμφανίστηκαν νέες δυνατότητες στην καθημερινότητά μας. Πλέον υπάρχει η δυνατότητα για οποιονδήποτε να κάνει αγορές μέσω ενός κινητού τηλεφώνου, να κατεβάσει και να παίξει τα παιχνίδια που θέλει από το σπίτι, χωρίς να χρειαστεί να κουνηθεί από την αναπαυτική του πολυθρόνα. -1-

14 Μπορεί να επικοινωνήσει με την άλλη πλευρά του πλανήτη με εικόνα και ήχο. Να α- νταλλάξει αρχεία και να δει πράγματα την στιγμή που γίνονται. Πριν είκοσι περίπου χρόνια, το Internet άρχισε να μπαίνει στην καθημερινότητά μας, το μεγαλύτερο σύνολο δικτύων που έχει καλύψει κάθε γωνιά του κόσμου. Οι εκτιμήσεις για το μέγεθός του είναι εξωπραγματικές και το Internet μεγαλώνει μέρα με την μέρα. Μαζί με το δίκτυο, τον όγκο των ανταλλασσόμενων πληροφοριών και των αποθηκευμένων δεδομένων, μεγαλώνουν και οι κίνδυνοι. Φαινόμενα ιστοτόπων που έχουν υποστεί deface 1 από κάποια ομάδα hacker και κάποιον πανικόβλητο διαχειριστή που προσπαθεί να επαναφέρει τον ιστότοπό του, διαρροές πληροφοριών, εισβολές σε κρατικά συστήματα και πλέον υπάρχει ακόμη και εμπόριο των πληροφοριών που θεωρούνται «ευαίσθητες» (λ.χ. αριθμοί πιστωτικών καρτών μαζί με τα συναφή στοιχεία), σε σκοτεινές γωνιές του διαδικτύου (όπως στο επονομαζόμενο Deep Web ). Οι διαχειριστές συστημάτων και δικτύων, οι προγραμματιστές, οι αναλυτές και γενικότερα, όσοι ασχολούνται με την επιστήμη της πληροφορικής, καθημερινά αντιμετωπίζουν τις προκλήσεις εκείνων που «λεηλατούν» δίκτυα και συστήματα και είναι οι πρώτοι που πρέπει να ξέρουν τους ενδεχόμενους κινδύνους για να τους αντιμετωπίζουν. Αν, λόγου χάρη, κάποιος δεν ξέρει τι είναι τα SQL Injections, δεν θα μπορέσει ποτέ να γράψει επαρκή κώδικα για να τα αντιμετωπίσει. Κοιτάζοντας το μοντέλο του OSI είναι εμφανές πως σε κάθε επίπεδο υπάρχουν πιθανοί κίνδυνοι. Για κάθε κίνδυνο, σχεδόν πάντοτε υπάρχει μια λύση που πρέπει να βρεθεί από τον εκάστοτε εργαζόμενο στον συγκεκριμένο τομέα. Και για κάθε λύση πρέπει να υπάρχει και η κατάλληλη εκπαίδευση. 1.3 Αντικείμενο ενασχόλησης Στόχος αυτής της εργασίας είναι να δημιουργηθεί ένας διαδραστικός ιστότοπος πάνω στην πλατφόρμα hackademic με απώτερο σκοπό να εμπλουτιστεί το υλικό για το εργαστηριακό μέρος του μαθήματος «Ασφάλεια & Διαχείριση Δικτύων». 1 Deface: Η αλλαγή της πρώτης σελίδας σε έναν ιστότοπο από μη εξουσιοδοτημένους χρήστες (hackers) -2-

15 Η εργασία αυτή θα προσεγγίσει θεωρητικά την πλατφόρμα hackademic και παρεμφερείς πλατφόρμες και συστήματα που χρησιμοποιούνται για την εκμάθηση της ασφάλειας σε συστήματα και δίκτυα καθώς και για την ψυχαγωγία (υπό μορφή παιχνιδιού). Στο πρακτικό μέρος της εργασίας γίνεται η ανάπτυξη ενός ιστότοπου που έχει την μορφή ενός challenge war game του hackademic, στον οποίο υπάρχουν αρκετές προκλήσεις για τον σπουδαστή χρήστη που θα ασχοληθεί. Τα αντικείμενα που μελετά αυτή η εργασία είναι τα εξής HTML Header Forgery Αλλαγή στοιχείων στην κεφαλίδα HTML, ό- πως για παράδειγμα το πεδίο referrer που λέει στον διακομιστή από ποια σελίδα προέρχεται ο χρήστης ή το user-agent που αναφέρει τον browser που χρησιμοποιεί Βασικές SQL Injections Παράδειγμα μη ασφαλούς κώδικα που είναι επιτρέπει στον χρήση να αλλάξει ένα ερώτημα SQL κατά το δοκούν με αποτέλεσμα να ταυτοποιηθεί ως άλλος χρήστης ή να επιστρέψει τα αποτελέσματα που θέλει εκείνος. Code Obfuscation Κώδικας Javascript ο οποίος έχει τροποποιηθεί και κωδικοποιηθεί για να μην είναι εύκολα κατανοήσημος, μια τεχνική που συναντάται πολύ συχνά, ειδικά σε εφαρμογές Web. Reverse Engineering & One Time Passwords Για περαιτέρω ασφάλεια ο ιστότοπος θα απαιτεί την χρήση ενός OTP και ο χρήστης θα πρέπει να καταλάβει ένα σχετικά απλό αλγόριθμο τον οποίο θα αξιοποιήσει για να διεισδύσει στο σύστημα. -3-

16

17 2 Παρόμοια συστήματα με το hackademic Οι hackers, η κουλτούρα τους, τα στοιχεία που τους απάρτιζαν και η «σκηνή» 2, εμφανίστηκαν πριν ακόμη εμφανιστεί το Internet. Αν κάνει κανείς μια ιστορική αναδρομή, θα δει πως οι hackers 3 ακολούθησαν την εξέλιξη της πληροφορικής από τις απαρχές της. Όταν, λοιπόν, ακόμη δέσποζαν τα BBS 4, οι hackers μαζεύονταν εκεί για να ανταλλάξουν γνώμες και πληροφορίες. Με αρκετό ψάξιμο, μπορεί ο ενδιαφερόμενος ακόμη και σήμερα, να βρει έγγραφα τα οποία υπάρχουν στον κυβερνοχώρο από τις δεκαετίες του 80 και του 90. Με την έλευση του Internet, τα πράγματα έγιναν πιο απλά και ταυτόχρονα πιο περίπλοκα. Οι hackers δεν είχαν πλέον να καλέσουν έναν αριθμό για να αποκτήσουν πρόσβαση σε ένα υπολογιστικό σύστημα, ή ένα δίκτυο, καθώς μπορούσαν να το κάνουν χρησιμοποιώντας την διεύθυνση IP ενός υπολογιστή που τον καθιστούσε μοναδικό στο Internet. Οι επίδοξοι hackers την δεκαετία του 90 δεν είχαν την πρόσβαση στα στοιχεία που είχαν όσοι ασχολήθηκαν νωρίτερα με αυτή την τέχνη την τέχνη της διείσδυσης σε υ- πολογιστικά συστήματα. Οι μηχανές αναζήτησης του «ορατού» web ήταν τότε στα σπάργανα, και οι περισσότερες πληροφορίες μπορούσαν να βρεθούν σε άλλες υπηρεσίες, όπως το ftp, ή το irc. 2 Με τον όρο «σκηνή», εννοούμε την κουλτούρα που είχαν και έχουν διάφορες ομάδες ατόμων που α- σχολούνται είτε με την πειρατεία λογισμικού (warez scene), είτε με τον προγραμματισμό (demo scene) είτε γενικότερα με δραστηριότητες σχετικές με την ασφάλεια συστημάτων (cracking scene, hacking scene, phreaking scene κλπ). 3 Ο hacker είναι το άτομο που ασχολείται με την ασφάλεια συστημάτων και δικτύων. Είθισται να ξεχωρίζονται σε black hats, δηλαδή εκείνους που διεισδύουν σε συστήματα για ιδίο όφελος και σε white hats, δηλαδή άτομα που ασχολούνται με την προστασία συστημάτων. 4 BBS (Bulletin Board System): Συστήματα που επιτρέπουν σε χρήστες να συνδέονται απομακρυσμένα μέσω τερματικού και να ανταλλάσσουν πληροφορίες, αρχεία, να συνομιλούν με άλλους χρήστες κ.ο.κ. -5-

18 Προς τα τέλη της δεκαετίας του 90, αφού το internet είχε αρχίσει να μπαίνει για τα καλά στην καθημερινότητα του μέσου ανθρώπου, αναπτύχθηκαν τα πρώτα site που παρείχαν διαδραστικές δοκιμασίες hacking. Ανάλογα με το τι ήθελε να επιτύχει κάθε κοινότητα αν λόγου χάρη ήθελε να διδάξει τους χρήστες της βασικά πράγματα πάνω στην ασφάλεια υπολογιστών ή μέσω των δοκιμασιών να έχουν κάποιο βαθμό στην κοινότητα το μοτίβο, η δυσκολία και το μέγεθος των δοκιμασιών άλλαζε. Σε αυτό το κεφάλαιο θα αναλυθούν κατά παράδειγμα, οι δοκιμασίες από διαφορετικές κοινότητες που ξεκίνησαν να προσφέρουν τις υπηρεσίες τους σε επίδοξους hacker. 2.1 Οι δοκιμασίες του CyberArmy Η κοινότητα CyberArmy ξεκίνησε το 1998, σαν μία απλή σελίδα με εργαλεία και έγγραφα πάνω στο hacking και σιγά σιγά μάζεψε black hats. Μέσα από μια σειρά γεγονότων, κατέληξε το 1999 να έχει ένα forum στο οποίο οι hackers αντάλλασσαν μηνύματα και την δημοφιλή «Zebulun Challenge».[4] Από εκείνο το σημείο, η κοινότητα πήρε ένα «στρατιωτικό» χαρακτήρα κάθε χρήστης ο οποίος τελείωνε με ένα κομμάτι της δοκιμασίας, έπαιρνε ένα «βαθμό» και κάποια προνόμια στην κοινότητα. Κάποιος ξεκινούσε σαν στρατιώτης (trooper) και όταν περνούσε το πρώτο κομμάτι της δοκιμασίας (Zebulun 1), έπαιρνε «προαγωγή» στον επόμενο βαθμό. Συνολικά υπήρχαν εννιά δοκιμασίες πάνω σε μια ευρεία γκάμα θεμάτων. Από απλή αποκρυπτογράφηση ενός μηνύματος, ομιλία με την ELIZA ένα πρόγραμμα το οποίο «καταλάβαινε» αγγλικά και έπρεπε με κατάλληλο τρόπο να παρακαμφθεί για να προχωρήσει ο χρήστης στην επόμενη δοκιμασία, perl hacking και πολλά άλλα. Με τα χρόνια η κοινότητα των hackers άλλαξε σε κοινότητα ακτιβιστών, θεωρήθηκε ότι τα «Zebulun Challenges» ήταν ξεπερασμένα κι έτσι ξεκίνησε η υλοποίηση νέων δοκιμασιών με το όνομα Sered. Οι πέντε νέες δοκιμασίες που ήρθαν περί το 2005, ήταν περίπου στο ίδιο μοτίβο, χρησιμοποιήθηκαν παλιά στοιχεία τα οποία ήταν ανανεωμένα και νέα στοιχεία[5]. Λόγω του ότι το CyberArmy έχει σταματήσει να λειτουργεί για λόγους που είναι πέραν του σκοπού αυτής της εργασίας, είναι πάρα πολύ δύσκολο να βρεθούν πληροφορίες στο Internet. -6-

19 Υπάρχει, για ιστορικούς λόγους βέβαια, ένα αντίγραφο του Zebulun Challenge [6], ενώ οι υπόλοιπες πληροφορίες αντλήθηκαν από ιστολόγια χρηστών και την μηχανή αναζήτησης archive.org για να σχηματιστεί μια γνώμη για την κοινότητα. 2.2 Mod-X Challenge Το mod-x, ιστορικά, ξεκίνησε λίγο μετά το CyberArmy. Ο σκοπός του, όπως ενημερώνει η ιστοσελίδα, είναι να παρέχει ένα εικονικό περιβάλλον, όπου ο κάθε χρήστης αναλαμβάνει το ρόλο ενός πράκτορα (agent) για να «διεισδύσει» σε διάφορα συστήματα[7]. Το mod-x έχει την δομή ενός war game 5 στο οποίο ο χρήστης ξεκινάει να «παίζει» το παιχνίδι πριν καλά καλά εγγραφεί. Το φάσμα των δοκιμασιών ξεκινάει από βασικές γνώσεις javascript και html και φτάνει πολύ βαθύτερα (για παράδειγμα reverse engineering 6 σε java applets και εφαρμογές windows). Με τα χρόνια, η κοινότητα μεγάλωσε, προστέθηκαν περισσότερες δοκιμασίες και επεκτάθηκε η γκάμα των γνωστικών πεδίων που έχει να αντιμετωπίσει ο χρήστης. Πέραν των κλασσικών δοκιμασιών (javascript, reverse engineering, κρυπτογράφηση και αποκρυπτογράφηση, προγραμματισμό κλπ), παρατηρείται πως οι σχεδιαστές έχουν φτιάξει δοκιμασίες οι οποίες προσομοιώνουν την εγκληματολογική έρευνα (forensic investigation) που γίνεται από τις αρμόδιες αρχές όταν διαπράττεται ένα ηλεκτρονικό έγκλημα. 2.3 HackThisSite Το HackThisSite είναι ένας ιστότοπος που, σύμφωνα με την ιστοσελίδα του, παρέχει στους χρήστες ένα ανοιχτό περιβάλλον όπου ο κάθε ένας μπορεί να δοκιμάσει της δεξιότητές του στο hacking και να τις διευρύνει[8]. 5 Ένα war game, απαρτίζεται από πολλές επιμέρους δοκιμασίες (challenges) τις οποίες πρέπει να φέρει εις πέρας ο παίκτης χωρίς να έχει κάποια βοήθεια από το ίδιο το παιχνίδι. 6 Με τον όρο reverse engineering εννοούμε την διαδικασία κατά την οποία μια συσκευή, ένα πρόγραμμα, ένα σύστημα κλπ το οποίο αναλύεται με σκοπό να κατανοηθεί πως δουλεύει.αυτή η διαδικασία περιλα μ- βάνει την αποσυναρμολόγηση και την ανάλυση, ξεχωριστά του κάθε μέρους του προγράμματος, συστήματος κλπ είτε για συντήρηση, είτε για να αντιγραφεί, είτε για κατασκευαστεί κάτι βασισμένο σε αυτό. -7-

20 Στο HackThisSite θα βρει κανείς μεμονωμένες δοκιμασίες και μικρά war games τα οποία ξεκινάνε από ένα πολύ βασικό επίπεδο λόγου χάρη javascript για αρχάριους, α- πλές εντολές unix κ.ο.κ και καταλήγουν σε επίπεδα που μπορούν να περάσουν μόνο λίγοι. Οι δοκιμασίες είναι χωρισμένες σε διάφορες κατηγορίες, όπως οι απλές αποστολές που παρέχουν στον χρήστη κάποια βοήθεια για να τις φέρει εις πέρας, οι ρεαλιστικές αποστολές που έχουν την μορφή ενός ιστότοπου στον οποίο ο χρήστης παίχτης πρέπει να ολοκληρώσει κάποιο στόχο (όπως το να αλλάξει την αρχική σελίδα, ή να αποκτήσει πρόσβαση σε πληροφορίες), αποστολές που έχουν σχέση με τον προγραμματισμό και την επίλυση προβλημάτων, λογικές αποστολές με σκοπό να διδάξουν τον παίχτη ένα τελείως διαφορετικό τρόπο σκέψης, αποστολές που ως βάση τους έχουν την στεγανογραφία 7 κ.ά. Το HackThisSite έχει μια ενεργή κοινότητα που ασχολείται με το hacking, με σκοπό να προσφέρει στο κοινό την δυνατότητα να ασχοληθούν με την ασφάλεια των υπολογιστικών συστημάτων σε ένα νόμιμο και ρεαλιστικό περιβάλλον. Εξ άλλου, μία από τις δοκιμασίες που προσφέρει, ζητάει να διεισδύσουν στο ίδιο το site και να ενημερώσουν τους ιδιοκτήτες πως απέκτησαν πρόσβαση, κάτι που για τους χρήστες που το πέτυχαν σημαίνει περισσότερο κύρος στην κοινότητα 2.4 OverTheWire Το OverTheWire είναι μια συλλογή από πολλά war games, που το κάθε ένα έχει διαφορετικό σκοπό και μια πληθώρα γνωστικών πεδίων που παρέχονται στον χρήστη παίχτη για να ανακαλύψει. Ένας χρήστης μπορεί να ξεκινήσει από τα απλά war games που προσφέρονται από το OverTheWire, τα οποία αρχίζουν διδάσκοντας στον παίχτη τα βασικά των λειτουρ- 7 Η στεγανογραφία, είναι η επιστήμη της κρυπτογράφησης μηνυμάτων με τέτοιο τρόπο ώστε μόνο ο α- ποστολέας και ο παραλήπτης να γνωρίζουν για την ύπαρξη του μηνύματος. Στην πληροφορική, μέσω ειδικών προγραμμάτων είναι δυνατό να ενσωματωθούν μηνύματα μέσα σε αρχεία ήχου, εικόνας, βίντεο κλπ, έτσι ώστε τα αρχεία να μπορούν να προβληθούν κανονικά και ταυτόχρονα να περιλαμβάνουν τις μυστικές πληροφορίες σε μια μορφή που να μην είναι ορατή στους χρήστες. Σύνηθες παράδειγμα είναι η ενσωμάτωση κρυπτογραφημένων πληροφοριών σε εικόνες jpeg, οι οποίες αλλοιώνονται με τέτοιο τρόπο που το μάτι δεν μπορεί να ξεχωρίσει αν υπάρχει ή όχι κάποια κρυμμένη πληροφορία. -8-

21 γικών συστημάτων που είναι βασισμένα στο Unix, όπως το να αναζητήσει αρχεία, να μάθει να χειρίζεται τις βασικές εντολές του συστήματος και να πάρει το βάπτισμα πυρός στην χρήση των συγκεκριμένων λειτουργικών συστημάτων. Το κάθε war game που προσφέρεται, έχει ένα συγκεκριμένο βαθμό δυσκολίας και απευθύνεται σε συγκεκριμένο κοινό. Έτσι υπάρχουν war games που απευθύνονται σε αρχάριους, οι οποίοι πρέπει να βρούνε έναν κωδικό μέσα σε κάποιο αρχείο για να προχωρήσουν στο επόμενο επίπεδο, war games τα οποία απαιτούν γνώσεις προγραμματισμού και εκμετάλλευση κάποιων συνήθων λαθών που κάνουν οι προγραμματιστές (stack buffer overflows 8, race conditions 9, κλπ), war games που ασχολούνται με την ασφάλεια web server και των προγραμμάτων που μπορεί να εκτελούνται εκεί (serverside security) κ.ά. Κάποια από τα war games του OverTheWire παρέχουν πληροφορίες στους παίχτες για να βοηθήσουν στην επίτευξη του στόχου τους, για παράδειγμα στις δοκιμασίες που απαιτείται ο παίχτης να κάνει μια επίθεση stack smashing υπάρχουν σύνδεσμοι σε άρθρα που βοηθάνε τον χρήστη να κατανοήσει αυτή την έννοια και να την υλοποιήσει για να μπορέσει να συνεχίσει το παιχνίδι. Όπως και στα περισσότερα war games, έτσι και σε αυτό δεν λείπουν οι έννοιες του reverse engineering, της κρυπτογράφησης και αποκρυπτογράφησης, της εκμετάλλευσης 8 Stack buffer overflow ή Stack smashing: Μια από τις πιο κοινές επιθέσεις τύπου buffer overflow, κατά την οποία, το πρόγραμμα γράφει σε μια περιοχή μνήμης που δεν του ανήκει με αποτέλεσμα να αλλοιώνει τα δεδομένα που βρίσκονται σ εκείνο το σημείο και είναι πρόβλημα ασφαλείας όταν σε ένα πρόγραμμα με αυξημένα δικαιώματα (λ.χ. ένα στοιχείο του λειτουργικού συστήματος), θα μπορούσε να εισαχθεί ένα κομμάτι εκτελέσιμου κώδικα από τον επίδοξο hacker με αποτέλεσμα να πάρει πρόσβαση στην διεργασία που εκτελείται και στην συνέχεια να έχει πρόσβαση στο σύστημα. Είναι μια από τις παλαιότερες και α- ποτελεσματικότερες μεθόδους για να αποκτηθεί πρόσβαση από έναν μη εξουσιοδοτημένο χρήστη σε ένα σύστημα (έτσι αποκτήθηκε πρόσβαση στο PlayStation 3 της Sony και στο Wii της Nintendo, με αποτέλεσμα οι hackers να πάρουν πρόσβαση στο υλικό και να καταφέρουν να τρέξουν τον δικό τους κώδικα). 9 Ο ορισμός του race condition, είναι η κατάσταση κατά την οποία, δύο διαφορετικά σήματα προσπαθούν ταυτόχρονα να αλλάξουν ένα αποτέλεσμα. Επειδή είναι δύσκολο να εξηγηθεί και είναι πέραν του σκοπού αυτής της εργασίας, μπορεί να δοθεί το εξής απλό παράδειγμα: Δύο διαφορετικά άτομα, με δύο διαφορετικές κάρτες συνδεδεμένες στον ίδιο λογαριασμό, πηγαίνουν ταυτόχρονα να κάνουν ανάληψη από διαφορετικά ATM τραπέζης. Αν το υπολογιστικό σύστημα δεν είναι προστατευμένο από τα race conditions, τότε, αφού όλες οι πράξεις γίνονται ταυτόχρονα, θα καταγραφεί μόνο η δεύτερη συναλλαγή καθώς το υπόλοιπο του λογαριασμού θα διαβαστεί ταυτόχρονα, η αφαίρεση από το αρχικό ποσό θα γίνει ταυτόχρονα και τέλος η ενημέρωση του υπολοίπου θα γίνει ταυτόχρονα με αποτέλεσμα ο λογαριασμός να έχει το υπόλοιπο της πράξης που θα εκτελεστεί τελευταία. -9-

22 των διαφόρων κενών ασφαλείας που μπορεί να έχει ένα υπολογιστικό σύστημα και της παραποίησης ταυτότητας του χρήστη. 2.5 Γενικές παρατηρήσεις Ψάχνοντας στο διαδίκτυο, εύκολα διαπιστώνει κανείς πως υπάρχουν πάρα πολλά συστήματα που είναι παρόμοια με το hackademic. Έτσι, έπρεπε να επιλεχθούν δειγματοληπτικά για περιγραφή κάποια από αυτά. Το CyberArmy, λόγου χάρη, ήταν μία από της πρώτες προσπάθειες να δημιουργηθεί ένα σύστημα όπου οι χρήστες θα μπορούσαν να μάθουν κάποια πράγματα για την ασφάλεια των δικτύων και των συστημάτων. Ο σκοπός των συστημάτων αυτών, είναι να παρέχουν στους χρήστες τους ένα περιβάλλον όπου ο κάθε ένας, μπορεί να χρησιμοποιήσει τις γνώσεις του για να διεισδύσει βαθύτερα στο σύστημα, έχοντας όμως ασφάλεια, καθώς δεν προβαίνει σε κάποια παράνομη πράξη. Ταυτόχρονα, η ύπαρξη μιας κοινότητας και η ανταλλαγή απόψεων, ιδεών και γνώσεων, βοηθάει τα άτομα που ασχολούνται με τον συγκεκριμένο κλάδο της πληροφορικής καθώς τους κρατά ενήμερους με τις εξελίξεις στην ασφάλεια των συστημάτων. Φερειπείν, αν κάποιο μέλος μιας κοινότητας ανακαλύψει ένα νέο κενό ασφαλείας σε ένα λειτουργικό σύστημα, θα μπορούσε είτε να το εκμεταλλευτεί για ιδίο όφελος, είτε να βοηθήσει στην ανάπτυξη κατάλληλου κώδικα ώστε να καλυφθεί το εν λόγω κενό ασφαλείας. Ταυτόχρονα, ενημερώνοντας την κοινότητα, τα υπόλοιπα μέλη που α- σχολούνται με το συγκεκριμένο σύστημα θα μάθουν, ότι υπάρχει κάποιο κενό ασφαλείας και έτσι προάγεται και η αλληλεγγύη μεταξύ των μελών αλλά ταυτόχρονα και η γρήγορη ενημέρωση για την αποφυγή δυσμενών καταστάσεων. Η έρευνα που έγινε σε αυτά τα συστήματα, δεν ήταν δυνατό να είναι ενδελεχής, καθώς, αφ ενός τα περισσότερα δεν είναι λογισμικά ανοιχτού κώδικα κι έτσι δεν θα ήταν δυνατό να κατανοηθεί πως ακριβώς δουλεύουν κι αφ ετέρου το εύρος των γνωστικών πεδίων που θα έπρεπε να μελετηθεί για να λυθεί κάθε πρόκληση είναι τεράστιο. Είθισται οι δοκιμασίες να ξεκινούν από ένα πολύ βασικό επίπεδο, όπως η κατανόηση κώδικα σε κάποια γλώσσα scripting (λ.χ. javascript). Σε αυτές τις δοκιμασίες, ο χρήστης θα πρέπει να κατανοήσει τον κώδικα που συνήθως περιλαμβάνει «έξυπνα κόλπα» για να τον αποπροσανατολίσουν από τον πραγματικό σκοπό του αλγορίθμου που προσπαθεί να καταλάβει. -10-

23 Αυτά τα «έξυπνα κόλπα» υπάρχουν σε κάθε είδος δοκιμασίας, είτε πρόκειται για κατανόηση ενός μικρού script, είτε πρόκειται για την εκμετάλλευση ενός race condition. Ο σχεδιασμός των δοκιμασιών είναι τέτοιος ώστε να αφήνει τον χρήστη να «εκμεταλλευτεί» το κενό ή τα κενά ασφαλείας που του ζητούνται, αλλά ταυτόχρονα δεν του επιτρέπεται να πάρει αυξημένη πρόσβαση στο συγκεκριμένο σύστημα προς αποφυγή κατάχρησης ή κακής χρήσης του ίδιου του συστήματος. Έτσι, παρατηρείται πως ένα λάθος επιφέρει σωρεία λαθών, καθώς στα περισσότερα war games η πρόοδος του παίχτη στηρίζεται στην πρόοδο που έχει κάνει μέχρι εκείνη την στιγμή και στην κατανόηση των εννοιών και στρατηγικών που πρέπει να χρησιμοποιήσει. Στα περισσότερα war games, φάνηκε πως η πλειοψηφία των δοκιμασιών στηρίζεται στις προηγούμενές τους κι έτσι ο παίχτης αναγκάζεται να δουλέψει μεθοδικά για να πετύχει τον εκάστοτε στόχο. Η λογική είναι η ίδια που θα ακολουθούνταν και στην περίπτωση που κάποιος θα ήθελε να καταστρατηγήσει την ασφάλεια οποιουδήποτε συστήματος, η οποία είναι η εκμετάλλευση των κενών ασφαλείας για την απόκτηση πρόσβασης εν λόγω σύστημα. Ένα μεγάλο μέρος της κάθε δοκιμασίας είναι το να υπάρχουν πολλοί τρόποι για να λυθεί. Φερειπείν, αν κάποιος έπρεπε να βρει έναν κωδικό για να συνεχίσει, θα μπορούσε είτε να χρησιμοποιήσει τεχνικές brute force 10, είτε να χρησιμοποιήσει social engineering 11, είτε να βρει τον αλγόριθμο που χρησιμοποιείται για να παραχθεί ο κωδικός, να τον κατανοήσει και να γράψει κατάλληλο πρόγραμμα, έτσι ώστε να τον παράγει μόνος του (αυτό συνήθως γίνεται με την χρήση reverse engineering). Κατά την έρευνα που έγινε, διαπιστώθηκε πως τα περισσότερα συστήματα είναι βασισμένα σε κάποιο content management system (cms), που πέρα από τις διάφορες δοκιμασίες, ενσωματώνει διάφορες λειτουργίες, όπως σελίδες συζητήσεων, άρθρα σχετικά με την ασφάλεια συστημάτων κλπ. 10 Στην κρυπτανάλυση, ονομάζεται επίθεση brute force, η στρατηγική κατά την οποία κάποιος προσπαθεί να βρει έναν κωδικό, χρησιμοποιώντας όλους τους δυνατούς συνδυασμούς χαρακτήρων που μπορεί να περιέχει. 11 Ο όρος social engineering, αναφέρεται στην ψυχολογική μεταχείριση ενός ατόμου με απώτερο σκοπό το θύμα να προβεί σε πράξεις που ευνοούν τον θύτη ενώ πιστεύει πως δρα κατά την δική του βούληση. Στο ευρύτερο πλαίσιο της ασφάλειας, αναφέρεται στην απόκτηση πληροφοριών, βάσει των προαναφερθέντων. -11-

24 Σε κάθε σύστημα, υπάρχει ένας ξεχωριστός τρόπος για να γίνονται προσβάσιμες οι δοκιμασίες. Σε μερικά ο χρήστης μπορεί να παίξει τις δοκιμασίες εξ ολοκλήρου στον φυλλομετρητή του, σε κάποια άλλα απαιτείται η χρήση περισσοτέρων προγραμμάτων, όπως για παράδειγμα disassemblers ή decompilers, και τέλος σε κάποια, η πρόσβαση γίνεται μέσω ενός unix shell, όπου ο κάθε χρήστης δουλεύει απομακρυσμένα σε ένα μηχάνημα το οποίο είναι κατάλληλα στημένο και ρυθμισμένο γι αυτή την δουλειά. Αναφορικά, αντιμετωπίσθηκαν δοκιμασίες οι οποίες είχαν σχέση με: Κώδικα σε γλώσσες scripting, όπου έπρεπε να κατανοηθεί ένα κομμάτι κώδικα και να βρεθεί ένας κωδικός ή ένας τρόπος για να συνεχίσει ο χρήστης στο επόμενο κομμάτι της δοκιμασίας. Βασικές εντολές unix, όπου έπρεπε να αξιοποιηθούν κατάλληλα κάποιες εντολές ή λειτουργίες του unix shell για να βρεθεί ένα αρχείο που περιείχε την λύση της δοκιμασίας Αποκρυπτογράφηση δεδομένων που βασίζονταν σε απλούς αλγόριθμους (λ.χ. ROT-13) ή σε περισσότερο περίπλοκους (κρυπτογράφηση one way όπου χρησιμοποιείται η τεχνική Message Digest-5) Reverse Engineering σε Java Applets και εκτελέσιμες εφαρμογές Windows ή Linux, όπου έπρεπε να καταλάβει ο χρήστης τον κώδικα και να παρακάμψει τις ασφάλειες του εκάστοτε εκτελέσιμου για να επιτύχει τον στόχο. SQL Injections, όπου έπρεπε ο χρήστης να πάρει στοιχεία από έναν ι- στότοπο χρησιμοποιώντας κατάλληλα διαμορφωμένα ερωτήματα SQL. Εξομοίωση social engineering κατά την οποία έπρεπε ο χρήστης να «μιλήσει» με κάποιο πρόγραμμα και με κατάλληλο τρόπο να αποσπάσει πληροφορίες. Δημιουργία κώδικα όπου: o Διαπραγματευόταν την γρήγορη και σωστή λύση ενός αλγόριθμου για την απόκτηση της λύσης o Έπρεπε να αξιοποιηθεί κατάλληλα μία τρύπα ασφαλείας (λ.χ. να εκτελεστεί μια επίθεση stack buffer overflow) για να αποκτηθεί πρόσβαση στο σύστημα. -12-

25 o Ζητούνταν να αλλαχτεί η ταυτότητά του χρήστη (στέλνοντας κατάλληλα διαμορφωμένα πακέτα IP, με αλλαγμένες κεφαλίδες για να μπερδευτεί ο στόχος ) Ανάλυση εικόνων που περιείχαν κρυπτογραφημένα μηνύματα και απόκτησή τους με την χρήση διάφορων προγραμμάτων (steganography). Τελειώνοντας την έρευνα κατέστη σαφές, πως κάθε τομέας της επιστήμης της πληροφορίας είναι τρωτός και πως οι διάφορες κοινότητες που ασχολούνται με την ασφάλεια των υπολογιστών, δικτύων και πληροφοριών, χρησιμοποιούν κάθε δυνατό τρόπο ώστε να βοηθήσουν εκείνους που θέλουν να ασχοληθούν με τον κλάδο της ασφάλειας. Αν και τα περισσότερα συστήματα εστιάζουν σε απλά πράγματα, υπάρχουν και κάποια τα οποία εμβαθύνουν πολύ και δίνουν στον χρήστη την δυνατότητα να καταλάβει μόνος του πως γίνονται οι επιθέσεις που συνήθως μοιάζουν σαν να είναι βγαλμένες από ταινίες επιστημονικής φαντασίας. -13-

26

27 3 Περιγραφή του συστήματος Hackademic Σε αυτό το κεφάλαιο γίνεται μια αναφορά στην πλατφόρμα Hackademic, η οποία χρησιμοποιήθηκε ως βάση για την υλοποίηση αυτής της εργασίας. 3.1 Η πλατφόρμα Hackademic από την σκοπιά του χρήστη Εικόνα 1: Η αρχική σελίδα του Hackademic όταν ο χρήστης είναι συνδεδεμένος Η πλατφόρμα Hackademic είναι ένα ολοκληρωμένο CMS (Content Management System) το οποίο μπορεί να φιλοξενήσει άρθρα και δοκιμασίες που αφορούν, κυρίως, την ασφάλεια σε εφαρμογές ιστού. Σε αυτό το κεφάλαιο θα αναλυθεί δομή του όλου συστήματος από την πλευρά ενός χρήστη ως σπουδαστή και από την πλευρά ενός χρήστη ως διαχειριστή Χρήση του Hackademic ως απλός χρήστης (Student) Όπως φαίνεται και στην παρακάτω εικόνα, όταν ένας απλός χρήστης (σπουδαστής student) συνδεθεί στο Hackademic, μπορεί στην δεξιά πλευρά της σελίδας να βρει τις -15-

28 δοκιμασίες που έχουν εγκατασταθεί. Κάνοντας κλικ πάνω σε κάποια από αυτές, το Hackademic στέλνει τον χρήστη σε κάποια άλλη σελίδα που εμφανίζει το σενάριο της δοκιμασίας, και ένα κουμπί που όταν πατηθεί, ξεκινάει η συγκεκριμένη δοκιμασία. Στο πάνω μέρος της οθόνης, διακρίνεται μια μπάρα με επιλογές ή οποία είναι η ε- ξής: Εικόνα 2: Η γραμμή πλοήγησης του Hackademic Η επιλογή Home μεταφέρει τον χρήστη στην αρχική σελίδα, η επιλογή Progress Report εμφανίζει την σελίδα προόδου του χρήστη με αναλυτικές πληροφορίες για την κάθε δοκιμασία, η επιλογή Ranking εμφανίζει την θέση κατάταξης του χρήστη ανάμεσα στους υπόλοιπους χρήστες. Η επιλογή Challenges εμφανίζει μια λίστα με τις δοκιμασίες και τέλος, η επιλογή Logout αποσυνδέει τον χρήστη από το Hackademic Εικόνα 3: Η σελίδα προόδου του χρήστη με πληροφορίες για τις δοκιμασίες. -16-

29 Εικόνα 4: Η εμφάνιση κατάταξης του χρήστη Χρήση του Hackademic ως διαχειριστής Εικόνα 5: Η κύρια οθόνη διαχείρισης του Hackademic Το περιβάλλον διαχείρισης του Hackademic προσφέρει πολλές δυνατότητες στον εκάστοτε διαχειριστή και κατ επέκταση και στους χρήστες του. Σε αυτή την ενότητα θα γίνει μια ανασκόπηση των δυνατοτήτων του. Άρθρα Πέρα από την φιλοξενία των δοκιμασιών, το Hackademic μπορεί να φιλοξενήσει και άρθρα όπως ένα οποιοδήποτε άλλο CMS. Περιλαμβάνει ένα πολύ εύκολο στην χρήση editor για άρθρα και ένα εύκολο περιβάλλον για την διαχείρισή τους -17-

30 Εικόνα 6: Το περιβάλλον προσθήκης ενός άρθρου. Εικόνα 7: Το περιβάλλον διαχείρισης των άρθρων. Χρήστες και τάξεις Το Hackademic υλοποιεί ένα σύστημα κατηγοριοποίησης των χρηστών κατά «τάξεις» (classes). Έτσι διαφορετικοί χρήστες μπορούν να υπάρχουν σε διαφορετικές τάξεις με τελείως διαφορετικές δοκιμασίες, ανάλογα με το τι θέλει ο διαχειριστής να προσφέρει στον τελικό χρήστη. Εικόνα 8: Το περιβάλλον διαχείρισης χρηστών. -18-

31 Εικόνα 9: Το περιβάλλον διαχείρισης των τάξεων. Δοκιμασίες Ο διαχειριστής, μπορεί εύκολα να προσθέσει, να επεξεργαστεί και να διαγράψει δοκιμασίες από την εγκατάσταση του Hackademic μέσα από ένα πολύ απλό περιβάλλον, τον Challenge Manager. Εικόνα 10: Ο διαχειριστής δοκιμασιών (Challenge Manager) Όπως φαίνεται στις εικόνες, όλες οι ενέργειες που μπορεί να εκτελέσει κάποιος χρήστης είναι απλές και εύκολες και δεν απαιτούνται ιδιαίτερες οδηγίες χρήσης, μιας και οι σελίδες είναι απλοϊκές. 3.2 Ο κώδικας πίσω από το Hackademic Το back-end του hackademic είναι εξίσου καθαρό και δυνατό όπως και το front-end του. Ερευνώντας το cms κατά την διάρκεια της ανάπτυξης της εργασίας, διαπιστώθηκε πως όλα τα στοιχεία του είναι δημιουργημένα για να δουλεύουν αρμονικά και καθαρά, χωρίς να δημιουργούν απορίες στον προγραμματιστή που θέλει να το επεκτείνει ως σύστημα ή να δημιουργήσει την δική του δοκιμασία και να κάνει αναφορές στο API του hackademic. -19-

32 Ξεκινώντας, πρέπει να τονιστεί πως η πλατφόρμα hackademic, είναι γραμμένη σε αντικειμενοστραφή μορφή. Η κάθε δοκιμασία, ο κάθε χρήστης και γενικότερα κάθε στοιχείο που μπορεί να χρησιμοποιηθεί, μπορεί να γίνει ένα αντικείμενο και να διαχειριστεί κατάλληλα και εύκολα και από το front-end αλλά και από κάποιον προγραμματιστή Η κλάση User ως δείγμα κώδικα Για να γίνει κατανοητός ο τρόπος που είναι γραμμένος ο κώδικας του Hackademic, παρατίθεται ένα παράδειγμα για μια κλάση η οποία μπορεί να είναι πολύ χρήσιμη για ό- ποιον σχεδιάζει να υλοποιήσει μια νέα δοκιμασία. Αυτή είναι η κλάση User. Η κλάση User χρησιμοποιείται για να αναφερθεί σε οποιονδήποτε χρήστη υπάρχει στην βάση δεδομένων του Hackademic. Είναι δομημένη με τέτοιο τρόπο ώστε να εκτελεί όλες τις λειτουργίες που θα χρειαζόταν ένας χρήστης και ταυτόχρονα απλή και καθαρή, ώστε να μην μπερδεύει τον προγραμματιστή. Στον ορισμό της, μπορεί κανείς να δει, πως τα ονόματα των δημόσιων μεταβλητών της είναι τα ονόματα των πεδίων του πίνακα User στην βάση δεδομένων. Ταυτόχρονα παρατηρείται πως ορίζονται αρκετά functions τα οποία έχουν ξεχωριστές λειτουργίες, όπως για παράδειγμα ή findbyusername ή οποία επιστρέφει με μορφή αντικειμένου, όλα τα στοιχεία ενός χρήστη από την βάση δεδομένων, όταν περαστεί ως όρισμά της το αντίστοιχο όνομα χρήστη (username). Για να γίνει κατανοητός ο τρόπος που δουλεύει ο περισσότερος από τον κώδικα του hackademic δίνεται το εξής παράδειγμα. Έστω ότι ζητείται να βρεθεί ο χρήστης hackademic στην βάση δεδομένων. Ο πιο απλός τρόπος είναι να γίνει η εξής κλήση: $user = User::findByUserName( hackademic ); Καλώντας την συνάρτηση findbyusername με όρισμα το όνομα του χρήστη που ζητείται, εκείνη θα φτιάξει ένα ερώτημα SQL, θα περάσει ως παράμετρο το όνομα χρήστη κι έπειτα θα καλέσει μια άλλη συνάρτηση που ορίζεται από την κλάση, την findbysql. Αυτή η συνάρτηση θα εκτελέσει το ερώτημα και θα γεμίσει ένα πίνακα με την γραμμή που επιστράφηκε από την βάση δεδομένων (αν υπήρξε αποτέλεσμα). Έπειτα, η findbysql θα καλέσει την συνάρτηση instantiate της κλάσης. Η τελευταία θα φτιάξει ένα αντικείμενο τύπου User, θα δώσει τιμές στις μεταβλητές του, τις τιμές που έχουν ληφθεί από την βάση δεδομένων όταν εκτελέστηκε το ερώτημα κι έπειτα θα επιστρέψει το αντικείμενο στην findbysql που την κάλεσε. Η findbysql με την σειρά της -20-

33 θα επιστρέψει το αντικείμενο στην findbyusername κι εκείνη θα ελέγξει αν το αντικείμενο δεν είναι άδειο (δηλαδή αν υπήρξε κάποιο αποτέλεσμα από το ερώτημα SQL). Αν είναι άδειο, τότε θα επιστρέψει false, αλλιώς επιστρέφεται το αντικείμενο. Στην περίπτωση που δεν υπάρχει ένα, αλλά περισσότερα αντικείμενα, δημιουργείται ένας πίνακας που καταχωρεί αυτά τα αντικείμενα καθώς λαμβάνονται τα αποτελέσματα από την Βάση Δεδομένων και αυτός επιστρέφεται στον καλούντα. Παρατηρείται πως με τον ίδιο τρόπο δουλεύει και η κλάση Challenge, η οποία είναι υπεύθυνη για την διαχείριση των δοκιμασιών. Ένα απλό παράδειγμα είναι η συνάρτηση doeschallengeexist η οποία επιστρέφει true εάν η δοκιμασία που αναζητείται υπάρχει στην βάση δεδομένων Επειδή οι κλάσεις στηρίζονται πάνω στην βάση δεδομένων του hackademic, κάνουν κλήσεις στο αντικείμενο $db (αν ψάξει κανείς τον κώδικα των συναρτήσεων θα βρει την γραμμή global $db;) Αλληλεπίδραση με την βάση δεδομένων Η μεταβλητή $db ορίζεται στην αρχή της εκτέλεσης κάθε σελίδας, καθώς κάθε σελίδα απαιτεί το αρχείο init.php που βρίσκεται στον γονικό κατάλογο του hackademic για να εκτελεστεί. Εκεί παρατηρείται ότι δημιουργείται ένα αντικείμενο τύπου HackademicDB και επιστρέφεται στην μεταβλητή $db. Από εκεί και πέρα, κάθε κλάση, κάθε συνάρτηση, κάθε στοιχείο, μπορεί να χρησιμοποιήσει αυτή την μεταβλητή με την δεσμευμένη λέξη global της PHP. Ενώ η κλάση (και κατ επέκταση και το αντικείμενο που παράγεται από αυτή) HackademicDB είναι απλή και έχει ελάχιστες συναρτήσεις, όπως το να κάνει ένα ερώτημα, να φέρει το αποτέλεσμα ενός ερωτήματος, να ανοίξει και να κλείσει την σύνδεση κλπ, το Hackademic προσφέρει πολύ δυνατή και συγκροτημένη αλληλεπίδραση με τη βάση δεδομένων και αυτό γίνεται επειδή η κάθε συνάρτηση που έχει έναν ορισμένο σκοπό, φτιάχνει μόνη της το ερώτημα που θέλει να εκτελεστεί στην βάση δεδομένων και δεν στηρίζεται σε κάποιο γενικό ερώτημα επιλογής ή εισαγωγής. Κοιτάζοντας το παράδειγμα της προηγούμενης ενότητας, γίνεται αντιληπτό πως η ίδια η συνάρτηση findbyusername δημιουργεί το ερώτημα που πρέπει να εκτελεστεί στην βάση δεδομένων κι έπειτα το περνάει στην findbysql, η οποία, με την σειρά της, χρησιμοποιεί το αντικείμενο $db, για να κάνει το ερώτημα στην βάση δεδομένων και να επιστρέψει τα αποτελέσματα που ζητούνται. -21-

34 3.2.3 Τρόπος εμφάνισης των διάφορων σελίδων Ακόμη κι ο τρόπος που χρησιμοποιεί το Hackademic για να δημιουργήσει και παρουσιάσει τις διάφορες σελίδες που εμφανίζονται στον browser του χρήστη, χρησιμοποιεί αντικειμενοστρέφεια. Για την ακρίβεια, κάθε σελίδα που πρέπει να παρουσιαστεί στον χρήστη, έχει έναν Controller, μια κλάση που με την σειρά της επεκτείνει την κλάση HackademicController, που είναι υπεύθυνη για την δημιουργία και απεικόνιση των σελίδων. Αυτό επιτυγχάνεται με την χρήση του Smarty, μιας μηχανής παραγωγής προτύπων (template engine). Για καλύτερη σαφήνεια, το Smarty, από μόνο του είναι ανεξάρτητος κώδικας PHP, ο οποίος χρησιμοποιείται γι αυτήν ακριβώς την δουλειά, δηλαδή για να δημιουργεί τις σελίδες που πρέπει να δει ο τελικός χρήστης. Χρησιμοποιεί κάποια πρότυπα, και μπαίνει στο τέλος της διαδικασίας της εμφάνισης. Σχηματικά θα μπορούσε να αναπαρασταθεί η διαδικασία ως εξής. 1. Ο χρήστης ζητάει μια σελίδα 2. Το hackademic κάνει τις απαραίτητες ενέργειες και μεταφέρει πληροφορίες στο Smarty 3. Το Smarty, παίρνει τις πληροφορίες, διαβάσει το πρότυπο και τις εισάγει μεσα 4. Η σελίδα εμφανίζεται στον χρήστη Σχήμα 1: Σχηματική αναπαράσταση της διεργασίας που εκτελείται για την δημιουργία και α- πεικόνιση των σελίδων Στο πρώτο βήμα, ο χρήστης ζητάει μια σελίδα. Μπορεί να είναι οποιαδήποτε σελίδα, όπως, λόγου χάρη η αρχική. Στο δεύτερο βήμα, έρχεται ο κώδικας του Hackademic που πρέπει να εκτελέσει αυτή την αίτηση, κι έτσι, ανάλογα με την σελίδα που πρέπει να εμφανίσει, μαζεύει τις απαραίτητες πληροφορίες για να τις διαβιβάσει στο Smarty.

35 Στο τρίτο βήμα, το Smarty, αναλαμβάνει να ανοίξει το αρχείο όπου είναι αποθηκευμένο το πρότυπο και να εισάγει τις πληροφορίες που ζητούνται. Έπειτα η σελίδα παραδίδεται ολοκληρωμένη στον τελικό χρήστη. Υπάρχουν πολλοί λόγοι για την χρήση προτύπων, μερικοί από αυτούς είναι η καθαρότητα στον κώδικα (μιας και δεν χρειάζεται να προστεθεί κώδικας HTML,CSS, ή Javascript, μέσα στα αρχεία που κρατάνε και τον κώδικα της PHP), η ταχύτητα και ευκολία που προσφέρεται σε τυχόν αλλαγές στην εμφάνιση των σελίδων και η δυνατότητα να εμφανίζονται διαφορετικά πρότυπα, δηλαδή τον ίδιο ιστότοπο με μία τελείως διαφορετική μορφή στον τελικό χρήστη, χωρίς να χρειαστεί να πειραχθεί το back-end της ε- φαρμογής. -23-

36

37 4 Ανάπτυξη δοκιμασιών για την πλατφόρμα Hackademic Project Izon Επειδή η παρούσα εργασία δεν ήταν δυνατό να προσεγγίσει το μεγαλύτερο μέρος των γνωστικών πεδίων που σχετίζονται με την ασφάλεια υπολογιστών και δικτύων, αποφασίσθηκε να επικεντρωθεί στην ανάπτυξη ορισμένων δοκιμασιών υπό την μορφή war game (δηλαδή μιας μεγαλύτερης δοκιμασίας με κομμάτια που βασίζονται σε διαφορετικά αντικείμενα). Η επιλογή των δοκιμασιών που απαρτίζουν την εργασία αυτή, έγινε πρωτίστως βάσει της χρησιμότητας που έχει κάθε επιμέρους κομμάτι στην εκμάθηση και κατανόηση των εννοιών από έναν σπουδαστή και δευτερευόντως στην δυσκολία που υπήρχε στην ανάπτυξη τους (από πλευράς έρευνας, ασφάλειας του συστήματος που θα φιλοξενήσει τις δοκιμασίες, επίπεδο δυσκολίας για τον προγραμματιστή, κλπ). 4.1 Σχεδιασμός του συστήματος που αναπτύχθηκε Αφού τελείωσε η έρευνα του δευτέρου κεφαλαίου και φάνηκε το εύρος των δοκιμασιών που φιλοξενούνται σε συστήματα που είναι παρόμοια με το hackademic, ξεκίνησε να γίνεται ο σχεδιασμός του συστήματος που έπρεπε να αναπτυχθεί για τους σκοπούς αυτής της εργασίας. Σε πρώτη φάση, έγινε έρευνα για να βρεθούν τα εργαλεία που θα χρησιμοποιηθούν για να φιλοξενηθεί το σύστημα σε έναν υπολογιστή και να γίνει η ανάπτυξή του. Μιας και που το hackademic δεν χρειάζεται κάποιο συγκεκριμένο λειτουργικό σύστημα για να τρέξει (OS independent), επιλέχθηκε ως εξυπηρετητής ιστοσελίδων ο Apache Web Server ο οποίος μπορεί να συνεργαστεί με την PHP (στην οποία είναι γραμμένο το hackademic και οι δοκιμασίες που αναπτύχθηκαν) και ο MySQL Database Server ως εξυπηρετητής βάσεων δεδομένων. -25-

38 Αφού εγκαταστάθηκαν οι εξυπηρετητές, εγκατασταθηκε το Hackademic CMS το οποίο (την στιγμή που γράφτηκε αυτή η εργασία) βρίσκεται στο github, στο branch master του repository του hackademic. Η εγκατάσταση των εξυπηρετητών (Apache/MySQL) και του Hackademic, περιγράφονται αναλυτικά στην ενότητα Σχεδιασμός και ανάπτυξη του γραφικού περιβάλλοντος Για τον σχεδιασμό και την ανάπτυξη του γραφικού περιβάλλοντος που χρησιμοποιούν οι δοκιμασίες, χρησιμοποιήθηκε η βιβλιοθήκη ανοιχτού κώδικα Bootstrap[9] ή οποία είναι η ίδια που χρησιμοποιεί το κοινωνικό δίκτυο twitter και πληθώρα άλλων ιστοτόπων. Η επιλογή αυτή έγινε για πολλούς λόγους. Κατ αρχάς, ένα ωραίο περιβάλλον όπως αυτό του bootstrap, είναι σημάδι επαγγελματικής δουλειάς, είναι πολύ πιο όμορφο στα μάτια ενός χρήστη και σίγουρα θα του τραβήξει περισσότερο το ενδιαφέρον συγκριτικά με ένα απλό ιστότοπο που είναι πρόχειρα γραμμένος σε HTML με μικρά κομμάτια CSS και Javascript Κατά δεύτερον, η χρήση αυτής της βιβλιοθήκης βοήθησε πολύ στην ανάπτυξη συγκεκριμένων κομματιών του ιστότοπου, όπως λ.χ. η εμφάνιση των σφαλμάτων που εμφανίζονται στο μέσο της οθόνης σαν ένα αναδυόμενο παράθυρο. Ο χρήστης βλέπει α- πευθείας το μήνυμα σφάλματος και δεν είναι δυνατό να το παραβλέψει εύκολα. Κατά τρίτον, έγινε εξοικονόμηση χρόνου και πόρων με την χρήση του Bootstrap και κατά την διάρκεια της ανάπτυξης αλλά και κατά το στάδιο της εκσφαλμάτωσης, μιας και έπρεπε να ασχοληθούμε αποκλειστικά με τον τρόπο που θα «δέσουμε» τις δοκιμασίες με τα γραφικά στοιχεία του bootstrap. Τέλος, η χρήση του Bootstrap επέτρεψε την ύπαρξη διαφόρων λειτουργιών οι ο- ποίες χρησιμοποιήθηκαν κατάλληλα ώστε βοηθηθεί ο χρήστης να προχωρήσει στις δοκιμασίες (όπως με τα μηνύματα σφαλμάτων που προαναφέρθηκαν) ενώ ταυτόχρονα προωθείται η χρήση του ανοιχτού κώδικα από την συγκεκριμένη εφαρμογή. Η ανάπτυξη του γραφικού περιβάλλοντος περιγράφεται αναλυτικά στην ενότητα

39 4.1.2 Μεμονωμένες Δοκιμασίες vs War Game Αν και η πρώτη σκέψη κατά την διαδικασία του σχεδιασμού του συστήματος ήταν να υπάρχουν κάποιες μεμονωμένες και πεπερασμένες δοκιμασίες οι οποίες θα ήταν προσβάσιμες στον χρήστη με οποιαδήποτε σειρά, αποφασίστηκε ότι θα ήταν καλύτερη η ιδέα της δημιουργίας ενός μικρού war game το οποίο θα προσέφερε τις δοκιμασίες του στο ίδιο περιβάλλον και ίσως και με ένα μικρό σενάριο. Η σκέψη αυτή έγινε γιατί ένα war game με ένα μικρό σενάριο είναι πολύ πιο ενδιαφέρον για κάποιο άτομο που μελετά την ασφάλεια. Ο χρήστης, πέραν του στόχου που έχει, δηλαδή την καταστρατήγηση των ασφαλειών του συστήματος, συνεχίζει να προσπαθεί να διεισδύσει σ αυτό γιατί το ενδιαφέρον αυξάνεται επειδή δεν το βλέπει καθαρά σαν μια εργασία αλλά υπάρχει και η έννοια του παιχνιδιού. Έτσι αποφασίστηκε να δημιουργηθεί ένα μικρό war game με ένα μικρό σενάριο που θα βοηθάει τον χρήστη να προχωρήσει βαθύτερα στις δοκιμασίες αλλά ταυτόχρονα να μην χάνει το ενδιαφέρον του όταν δεν καταφέρνει να φέρει εις πέρας κάποια πολύ γρήγορα μιας και το στοιχείο του «παιχνιδιού» θα τον παροτρύνει στο να κάνει έρευνα και να προσπαθήσει ξανά Επιλογή των δοκιμασιών προς ανάπτυξη Αφού τελείωσε η έρευνα των συστημάτων που είναι παρόμοια με το hackademic στο δεύτερο κεφάλαιο και ήρθε η στιγμή του σχεδιασμού του συστήματός, έπρεπε να επιλεχθούν οι τύποι των δοκιμασιών που θα αναπτυχθούν για αυτή την εργασία. Η επιλογή έγινε βάσει πολλών παραγόντων. Ο πρώτος και κυριότερος παράγοντας ήταν η χρησιμότητα των γνώσεων που θα έπρεπε να έχει ή να αποκτήσει ένας χρήστης για να φέρει εις πέρας κάποια δοκιμασία. Ο δεύτερος παράγοντας ήταν το κατά πόσο θα ήταν δυνατό να αναπτυχθεί μια δοκιμασία με τα εργαλεία που είναι διαθέσιμα και κατά πόσο θα ταίριαζε με το σύνολο των υπόλοιπων δοκιμασιών. Εκεί, αποφασίστηκε, να μην ληφθεί υπ' όψη η ανάπτυξη ορισμένων τύπων δοκιμασιών, όπως, για παράδειγμα, μια επίθεση stack buffer overflow. Αυτό συνέβη, γιατί αφ' ενός θα ήταν πολύ δύσκολο να αναπτυχθεί, μιας και δεν θα στόχευε μόνο την αναπτυχθείσα δοκιμασία, αλλά και τον εξυπηρετητή ιστοσελίδων ή την PHP και αφ' ετέρου, επειδή θα μπορούσε να αποβεί μοιραίο για την ασφάλεια του συστήματος που θα φιλοξενούσε το hackademic και το war game. -27-

40 Ο τρίτος παράγοντας ήταν η πολυπλοκότητα και η έρευνα που θα έπρεπε να γίνει αφ ενός από την πλευρά αυτής της εργασίας για να υλοποιηθεί κάποια δοκιμασία και αφ ετέρου από τον τελικό χρήστη που θα έπρεπε να την φέρει εις πέρας. Έτσι λοιπόν, αποφασίσθηκε πως θα έπρεπε να μείνει σε ένα μέτριο επίπεδο δυσκολίας, να υλοποιηθούν δοκιμασίες οι οποίες είναι χρήσιμες ως γνωστικά αντικείμενα σε κάθε άνθρωπο που ασχολείται με την ασφάλεια των υπολογιστών και ταυτόχρονα δεν θα ξεπεραστούν μέσα σε πολύ μικρό χρονικό διάστημα από την υλοποίηση της παρούσας εργασίας. Στην συνέχεια, γίνεται μια εκτενής αναφορά στις δοκιμασίες που αναπτύχθηκαν μαζί με τον τρόπο που χρησιμοποιήθηκε, παραδείγματα για την χρησιμότητα τον γνώσεων που αποκτήθηκαν και πως μπορούν να χρησιμοποιηθούν στην πραγματικότητα. 4.2 Ανάλυση των επιμέρους δοκιμασιών Η λογική πίσω από την παρούσα εργασία είναι να αναπτυχθεί ένας ιστότοπος με διάφορα κενά ασφαλείας, έτσι ώστε ο χρήστης παίχτης να μπορεί να χρησιμοποιήσει κάποιες τεχνικές για να παρακάμψει αυτά τα συστήματα και ταυτόχρονα να βρει τα λάθη στον κώδικα και να καταλάβει που ακριβώς υπάρχει το πρόβλημα κενό ασφαλείας που του επιτρέπει να κάνει κάποιες ενέργειες που κανονικά δεν θα μπορούσαν να γίνουν Παραποίηση της κεφαλίδας του πρωτοκόλλου HTTP (HTTP Header Forgery) Forgery: the action of forging a copy or imitation of a document, signature, banknote, or work of art. Ένας τρόπος για την διαφύλαξη των πληροφοριών, ή για να προσφερθεί συγκεκριμένο υλικό στους χρήστες μέσω του πρωτοκόλλου HTTP (λ.χ. διαφορετικές σελίδες ανάλογα με το αν ένας χρήστης προβάλλει μια ιστοσελίδα μέσω υπολογιστή ή smart phone), είναι ο έλεγχος τιμών των πεδίων της κεφαλίδας HTTP. -28-

41 Συγκεκριμένα, ορισμένοι ιστότοποι αποφεύγουν το hotlinking 12 των αρχείων τους, ελέγχοντας το πεδίο referrer της κεφαλίδας HTTP. Αν, για παράδειγμα, κάποιος προσπαθήσει να κατεβάσει ένα αρχείο από έναν ιστότοπο που ελέγχει το πεδίο referrer και ο ιστότοπος δει πως δεν προέρχεται από κάποια σελίδα του (ή κάποια που να επιτρέπει την πρόσβασή στο αρχείο), τότε ο διακομιστής δεν θα επιτρέψει το κατέβασμα του αρχείου Το πρώτο μέρος της δοκιμασίας αφορά αυτό ακριβώς το κομμάτι, δηλαδή πως κάποιος μπορεί να «πλαστογραφήσει» την κεφαλίδα του πρωτοκόλλου HTTP, ούτως ώστε να «ξεγελάσει» τον ιστότοπο και να αποκτήσει πρόσβαση στις υπόλοιπες δοκιμασίες. Μιας και το όνομα χρήστη και το συνθηματικό παρέχονται από την ίδια την δοκιμασία, ο χρήστης πρέπει να αλλάξει τα πεδία referrer και user agent της κεφαλίδας για να του επιτραπεί η πρόσβαση. Στον χρήστη δίνονται στοιχεία την ώρα που προσπαθεί να συνδεθεί στον ιστότοπο με μηνύματα σφαλμάτων όπως ότι o περιηγητής σας δεν είναι συμβατός με αυτό τον ι- στότοπο, χρησιμοποιήστε τον περιηγητή Izon και δεν επισκέπτεστε τον ιστότοπο από μία αποδεκτή τοποθεσία, επισκεφθείτε ξανά από το Οι τιμές που πρέπει να χρησιμοποιηθούν από τον χρήστη βρίσκονται στα μηνύματα λάθους και είναι γραμμένες με πλάγια γραμματοσειρά. Ο χρήστης θα πρέπει να χρησιμοποιήσει κάποια επέκταση του περιηγητή που χρησιμοποιεί, η οποία θα του επιτρέψει να αλλάξει τις τιμές user agent και referrer της κεφαλίδας HTTP πριν αυτή αποσταλεί στον διακομιστή που φιλοξενεί τις δοκιμασίες. Με αυτόν τον τρόπο θα «ξεγελάσει» την δοκιμασία η οποία θα του επιτρέψει να «συνδεθεί» στο σύστημα και να προχωρήσει στην επόμενη. 12 Hotlinking ή inline linking είναι η χρήση ενός αντικειμένου (π.χ. μιας εικόνας) από έναν ιστότοπο, ενώ το αντικείμενο φιλοξενείται σε κάποιον άλλο ιστότοπο. -29-

42 Εικόνα 11: Μήνυμα σφάλματος που εμφανίζεται όταν ο χρήστης δεν έχει αλλάξει το πεδίο user agent της κεφαλίδας HTTP Ο ιστότοπος θεωρεί πως ο χρήστης πρέπει να «χρησιμοποιεί» τον συγκεκριμένο περιηγητή και να προέρχεται από την συγκεκριμένη σελίδα, αλλά για λόγους ευκολίας στην εκτέλεση της δοκιμασίας, ο έλεγχος γίνεται μόνο εάν ο παίχτης δεν έχει τελειώσει με αυτό το μέρος της δοκιμασίας (θα ήταν επώδυνο αν κάθε φορά έπρεπε ο παίχτης να αλλάξει τα δεδομένα της κεφαλίδας για να συνδεθεί και για να αποσυνδεθεί) Ανάπτυξη της δοκιμασίας Για την σύνδεση του χρήστη στο σύστημα καλείται το αρχείο login.php. Το σημαντικότερο κομμάτι κώδικα που αφορά την συγκεκριμένη δοκιμασία είναι το εξής: if ($_SERVER['HTTP_REFERER']!= "http://www.izon.com/") { $this->sendpostdata(3); if ($_SERVER['HTTP_USER_AGENT']!= "Izon Browser" ) { $this->sendpostdata(4); Ο πίνακας $_SERVER είναι μια super global μεταβλητή της PHP και εκτός των άλλων περιλαμβάνει και τα πεδία της κεφαλίδας HTTP τα οποία προέρχονται από το request που γίνεται από τον χρήστη. Εδώ γίνεται συγκεκριμένος έλεγχος στα πεδία HTTP_REFERER και HTTP_USER_AGENT τα οποία περιέχουν τον περιηγητή που χρησιμοποιείται (user agent) και την διεύθυνση από την οποία έρχεται ο χρήστης (referrer)[10]. Αν λοιπόν αυτά τα δύο πεδία δεν έχουν τις τιμές που έχουν τεθεί ( και Izon Browser για τα πεδία referrer και user agent αντίστοιχα), τότε, κατά περίπτωση καλείται η συνάρτηση sendpostdata με παράμετρο έναν -30-

43 ακέραιο, ο οποίος επιστρέφεται στην αρχική σελίδα (index.php) για να εμφανιστεί ένα μήνυμα σφάλματος private function sendpostdata($errornumber) { header("location: index.php?error=". $errornumber); exit(); Η συνάρτηση sendpostdata χρησιμοποιεί την συνάρτηση header της PHP για να ανακατευθύνει τον χρήστη στην τοποθεσία index.php στην οποία περνάει τον αριθμό σφάλματος μέσω μιας GET request. Όταν επιστρέψει στην αρχική σελίδα, θα εμφανιστεί ένα μήνυμα σφάλματος που θα του λέει πως είτε δεν χρησιμοποιεί τον σωστό περιηγητή (user agent) είτε πως προέρχεται από λάθος διεύθυνση (referrer). Ο τρόπος που γίνεται ο έλεγχος των διαπιστευτηρίων του χρήστη, αναλύεται στις επόμενες ενότητες μιας και γίνεται επεξήγηση ολόκληρου του συστήματος που χρησιμοποιείται για να συνδεθεί ο χρήστης στον ιστότοπο Σύνδεση στον ιστότοπο ως administrator με χρήση SQL Injection - Εισαγωγή Inject : To introduce (something) suddenly or violently. Ο όρος SQL Injection, χρησιμοποιείται για να δηλώσει κάθε προσπάθεια ενός ατόμου, το οποίο προσπαθεί να αλλοιώσει το ερώτημα SQL που γίνεται από μία εφαρμογή σε μία βάση δεδομένων, με απώτερο σκοπό την εκμαίευση αποτελεσμάτων διαφορετικών από εκείνων που προτίθεται να του δώσει η εφαρμογή[11]. Για να γίνει καλύτερα αντιληπτός αυτός ο όρος, παραθέτονται κάποιες γραμμές κώδικα από το αρχείο login.php το οποίο είναι γραμμένο κατά τέτοιο τρόπο ώστε να επιτρέπει στον χρήστη να κάνει επιθέσεις SQL Injection και να αλλάζει τα αποτελέσματα που επιστρέφει η βάση δεδομένων κατά το δοκούν. Έτσι, στις γραμμές του αρχείου login.php, συναντιέται ο παρακάτω κώδικας: $this->username = $_POST['username']; $this->password = $_POST['password']; /* Κάνουμε ένα query στην βάση δεδομένων για να δούμε άν όντως υπάρχει το συγκεκριμένο username/password στην βάση δεδομένων. Ακριβώς εδώ μπορεί να γίνει sql injection.*/ $our_query = "SELECT * FROM users WHERE username='". $this->username. "' AND password='". $this->password. "'"; $result = $db_link->query($our_query); -31-

44 Το ερώτημα (query) που γίνεται στην βάση δεδομένων έχει ως σκοπό να επιστρέψει όλα τα πεδία του πίνακα users, όπου το username και το password ταιριάζει με αυτά που έδωσε ο χρήστης. Αν το username και το password που εισήγαγε ο χρήστης στην φόρμα εισόδου, ταιριάζουν με το username και το password κάποιας εγγραφής στον συγκεκριμένο πίνακα, η MySQL θα επιστρέψει όλα τα πεδία της συγκεκριμένης εγγραφής στην μεταβλητή $result. Σε αντίθετη περίπτωση δεν θα επιστρέψει τίποτα. Πως όμως γίνεται το injection; Ο κώδικας είναι γραμμένος επιτηδευμένα και ενώ παρέχει ασφάλεια στο hackademic, την βάση δεδομένων του (και κατ επέκταση το μηχάνημα που τρέχει το hackademic), επιτρέπει τα injections λόγω του παρακάτω κομματιού κώδικα (login.php, γραμμή 131): if ($result->num_rows > 0) Εάν, λοιπόν, η MySQL επέστρεψε τουλάχιστον μία εγγραφή, τότε υπάρχει κάποιος χρήστης ο οποίος θέλει να συνδεθεί στον ιστότοπο με τα συνθηματικά του. Στην περίπτωση που όλα πάνε καλά, ο χρήστης θα έχει εισάγει το username και το password του, η PHP θα τα συμπληρώσει στο query, θα το στείλει στην MySQL και εκείνη θα κοιτάξει τις εγγραφές του πίνακα users και θα του επιστρέψει την εγγραφή που ταιριάζει με τα δεδομένα που έστειλε. Τι γίνεται όμως στην περίπτωση που ο χρήστης δοκιμάσει να κάνει ένα injection; Αν λόγου χάρη τα username και password είναι b16b00b5 και αντίστοιχα, τότε η PHP θα στείλει το εξής ερώτημα στην MySQL: SELECT * FROM users WHERE username= b16b00b5 AND password= H MySQL, όταν το λάβει, θα προσπαθήσει να βρει στις εγγραφές της, εκείνη ή ε- κείνες που έχουν ως username και password αυτά που δόθηκαν κι αν υπάρξει συσχέτιση θα τις επιστρέψει. Στην περίπτωση όμως που ο χρήστης εισάγει admin ;# ως username και ένα τυχαίο password (λ.χ. qwerty) παρατηρείται το εξής: SELECT * FROM users WHERE username= admin ;# AND password= qwerty Ότι υπάρχει μετά την δίεση (#), για την MySQL είναι σχόλιο. Ο χρήστης έτσι κατάφερε και τροποποίησε το ερώτημα που κάνει η εφαρμογή στην MySQL με αποτέλεσμα η αναζήτηση να γίνεται μόνο για τις εγγραφές που έχουν username admin και χωρίς να γίνεται έλεγχος του password. -32-

45 Από την πλευρά της εφαρμογής, ο έλεγχος των διαπιστευτηρίων είναι υπερβολικά απλός. Γίνεται έλεγχος αν η MySQL επέστρεψε εγγραφή ή εγγραφές και από εκεί και πέρα ο χρήστης συνδέεται κανονικά στον ιστότοπο Ανάλυση της δοκιμασίας Σχεδιασμός, λογική και υλοποίηση Κατά την διάρκεια της έρευνας, εντοπίστηκαν πολλές δοκιμασίες στις οποίες ο παίχτης έπρεπε να κάνει κάποιο injection και να αλλοιώσει τα αποτελέσματα που επιστρέφονταν από την βάση δεδομένων για να προχωρήσει, τα οποία ήταν σχετικά απλά. Στην φάση του σχεδιασμού, οι ιδέες για την υλοποίηση αυτής της επιμέρους δοκιμασίας ήταν τρείς: Να γίνεται έλεγχος στις τιμές των πεδίων username και password για μία συγκεκριμένη συμβολοσειρά που θα περιείχαν το injection Η χρησιμοποίηση regular expressions 13 για να διαπιστωθεί αν όντως ο χρήστης προσπάθησε να κάνει injection. Να γραφτεί κώδικας έτσι ώστε να προστατεύεται η βάση δεδομένων και κατ επέκταση το σύστημα ενώ ταυτόχρονα επιτρέπεται στον χρήστη να κάνει injections οποιουδήποτε τύπου. Τελικά υλοποιήθηκε η τρίτη επιλογή, μιας και ήταν εκείνη η οποία προσφέρει ρεαλισμό και δεν υπάρχει κάποιο συγκεκριμένο query που πρέπει να εισαχθεί. Ο χρήστης μπορεί να χρησιμοποιήσει οποιοδήποτε τρόπο θέλει για να πει στην MySQL να επιλέξει και να επιστρέψει την συγκεκριμένη εγγραφή η οποία αναφέρεται στον χρήστη admin. Μιας και ο κώδικας είναι αρκετά μεγάλος για να παρατεθεί αυτούσιος εδώ, θα γίνει μια ενδελεχής επεξήγηση πάνω σε μικρά κομμάτια του που χρήζουν προσοχής. Δημιουργήθηκε μια κλάση με το όνομα User στο αρχείο login.php, η οποία είναι υπεύθυνη για την σύνδεση ενός χρήστη στον ιστότοπο. Κάθε φορά που ένας χρήστης προσπαθεί να συνδεθεί στον ιστότοπο, γίνεται ένα POST request στο αρχείο login.php το οποίο αναλαμβάνει να ελέγξει αν ο χρήστης μπορεί να συνδεθεί ή όχι. 13 Στην πληροφορική, regular expression (regex) ονομάζεται μια συμβολοσειρά η οποία δημιουργεί ένα πρότυπο αναζήτησης κυρίως για χρήση αναζήτησης μέσα σε συμβολοσειρές[12]. -33-

46 Η εκτέλεση ξεκινά από την γραμμή 181, όπου δημιουργείται ένα νέο αντικείμενο User. Αυτόματα, η PHP καλεί τον constructor της κλάσης, ο οποίος κάνει την περισσότερη δουλειά στην βάση δεδομένων. Αναφορικά, ο constructor, δημιουργεί μια νέα σύνδεση με την βάση δεδομένων, με τα συνθηματικά που παίρνει από το config.inc.php του hackademic. Εν συνεχεία, υπολογίζει το crc32 τις τιμής του cookie του hackademic την οποία χρησιμοποιεί ως όνομα για την προσωρινή βάση και τον προσωρινό χρήστη που θα φτιάξει και την αποθηκεύει στην μεταβλητή $database_name της κλάσης. Έπειτα ξεκινάει μια διαδικασία η οποία είναι απαραίτητη για την ασφάλεια του συστήματος που τρέχει το hackademic ή οποία είναι η εξής: 1. Δημιουργείται μια νέα βάση δεδομένων στον εξυπηρετητή, με όνομα την τιμή της μεταβλητής $database_name. $db_link->query("create DATABASE hack_". $this->database_name); 2. Δημιουργείται ένας νέος χρήστης στον εξυπηρετητή ο οποίος θα χρησιμοποιηθεί για την σύνδεση και πρόσβαση στην βάση δεδομένων που μόλις δημιουργήθηκε. $db_link->query("create USER 'hack_". DB_HOST. "' IDENTIFIED BY 'hackademic_password'") 3. Γίνεται αφαίρεση όλων των δικαιωμάτων από τον νέο χρήστη και αφαίρεση του δικαιώματος να δίνει δικαιώματα σε άλλους χρήστες και τον εαυτό του (grant option). Έτσι, αποφεύγεται να γίνει κάποια επίθεση από έναν κακόβουλο χρήστη. $db_link->query("revoke ALL PRIVILEGES, GRANT OPTION FROM 'hack_". $this- DB_HOST. "'"); 4. Δίνονται δικαιώματα στον νέο χρήστη για να χρησιμοποιεί και να εκτελεί ερωτήματα στην νέα βάση δεδομένων που δημιουργήθηκε. $db_link->query("grant ALL ON hack_". $this->database_name.".* TO 'hack_". DB_HOST. "'"); $db_link->query("flush PRIVILEGES"); 5. Τέλος, επιλέγεται η νέα βάση δεδομένων και δημιουργείται η δομή του πίνακα users και εισάγονται δύο νέες εγγραφές. Μια εγγραφή (η πρώτη) για τον χρήστη admin και μια δεύτερη εγγραφή για έναν κανονικό χρήστη, του οποίου τα διαπιστευτήρια τα έχουν καθοριστεί από την πρώτη δοκιμασία. Έπειτα κλείνει η -34-

47 σύνδεση που έχει δημιουργήθει με την MySQL και ο κώδικας συνεχίζει εκτελώντας την συνάρτηση login. Η συνάρτηση login κάνει τους απαραίτητους ελέγχους (αν ο χρήστης έχει εισάγει username και password, αν τα πεδία της κεφαλίδας HTTP έχουν αλλαχτεί κλπ) κι έπειτα ανοίγει μια νέα σύνδεση στον εξυπηρετητή MySQL κάνοντας χρήση του νέου χρήστη που δημιουργήθηκε πιο πάνω. Έπειτα, παίρνει τις τιμές από το POST request και τις αποθηκεύει στις μεταβλητές username και password της κλάσης και στην συνέχεια δημιουργεί το ερώτημα στο ο- ποίο μπορεί να γίνει το injection και το στέλνει στον εξυπηρετητή περιμένοντας τα α- ποτελέσματα στην μεταβλητή $result. Αφού γίνει αυτή η διαδικασία, ελέγχεται ο αριθμός των εγγραφών της μεταβλητής $result και αν είναι θετικός (δηλαδή, αν έχει επιστραφεί τουλάχιστον μία εγγραφή) τότε διαδοχικά: 1. Δημιουργείται μια μεταβλητή με όνομα $row, και σ αυτή μπαίνει η πρώτη εγγραφή που υπάρχει μέσα στην $result. Έπειτα από την $row (που είναι array) εκχωρείται το δεύτερο στοιχείο που αντιστοιχεί στο username που επέστρεψε το ερώτημα στην βάση δεδομένων. if ($result->num_rows > 0) { $row = $result->fetch_row(); $this->username = $row[1]; 2. Εν συνεχεία, ελέγχεται το εν λόγω username. Αν είναι admin τότε ο χρήστης έκανε ένα πετυχημένο sql injection. Επειδή δεν είναι το ζητούμενο να αφήσει ο χρήστης την πρώτη δοκιμασία και να πάει κατευθείαν στην δεύτερη γίνεται ένας απλός έλεγχος στον πίνακα $_SESSION (το οποίο αναλύεται στην ενότητα 4.3.3) if ($this->username == 'admin') { if (!isset($_session['ch01'])) { $this->sendpostdata(7); else { $_SESSION['ch02']=1; if (!isset($_session['ch02_timer'])) { $_SESSION['ch02_timer']=time(); 3. Αν τώρα ο χρήστης προσπάθησε να συνδεθεί με τα διαπιστευτήρια που του δόθηκαν στο πρώτο κομμάτι της δοκιμασίας, τότε γίνεται ο παρακάτω έλεγχος για να φανεί αν συνδέθηκε κανονικά ή έκανε ένα sql injection else if ($this->username = hash('crc32', $_COOKIE['PHPSESSID'])) { $_SESSION['ch01'] = 1; -35-

48 if (!isset($_session['ch01_timer'])) { $_SESSION['ch01_timer']=time(); if ($this->password!= hexdec($this->username)) { $_SESSION['ch01_egg'] = 1; 4. Τέλος, δημιουργείται το cookie και ανακατευθύνεται ο χρήστης πίσω στην αρχική σελίδα. Υπάρχει μία πιθανότητα ο χρήστης να μην παρείχε σωστά διαπιστευτήρια ή η προσπάθεια να κάνει injection να μην ήταν επιτυχής. Σε αυτή την περίπτωση η μεταβλητή $result δεν θα έχει καμία εγγραφή, έτσι ανακατευθύνεται ο χρήστης πίσω στην αρχική σελίδα και εμφανίζεται ένα μήνυμα λάθους με το οποίο ενημερώνεται πως δεν ήταν δυνατό να συνδεθεί στον ιστότοπο. Τέλος, καλείται ο destructor της κλάσης στον οποίο έχει ανατεθεί η δημιουργία μιας σύνδεσης στον εξυπηρετητή, η διαγραφή πίνακα και βάσης δεδομένων και τέλος το κλείσιμο της προαναφερθείσας σύνδεσης Συσκότιση Κώδικα (Code Obfuscation) Γενικές αρχές Obfuscate: (computing) To alter code while preserving its behavior but conceal its structure and intent. Στην ελληνική γλώσσα ο όρος code obfuscation (ή απλούστερα obfuscation) δεν μπορεί να αποδοθεί παρά μόνο περιφραστικά. Έτσι, με αυτό τον όρο ονομάζονται οι εσκεμμένες τροποποιήσεις σε κάποιο κομμάτι κώδικα με απώτερο σκοπό την δημιουργία ασάφειας και την παραπλάνηση των ατόμων που προσπαθούν να διαβάσουν και να καταλάβουν το εν λόγω κομμάτι, χωρίς όμως να αλλάζει η αρχική του λειτουργία. Μιας και η λέξη «συσκότιση» αναφέρεται συνήθως στο σκοτείνιασμα ενός χώρου είναι προτιμότερο να αναφέρεται με τον αγγλικό όρο. Οι συνήθεις λόγοι που ένας προγραμματιστής κάνει χρήση διαφόρων τεχνικών obfuscation είναι οι εξής: 1. Για την προστασία του κώδικα από προσπάθειες reverse engineering. Ο κώδικας ενώ διατηρεί την αρχική του λειτουργία, είναι περισσότερο περίπλοκος και πολύ δυσκολότερος στο να διαβαστεί και να κατανοηθεί 2. Για την αποφυγή κλοπής κομματιών κώδικα (ιδιαίτερα σε εφαρμογές όπου δεν γίνεται μεταγλώττιση, λόγου χάρη κώδικας javascript, php κ.ά) 3. Για ψυχαγωγικούς σκοπούς. -36-

49 Κατά την διάρκεια την έρευνας ανακαλύφθηκαν αρκετές τεχνικές οι οποίες όταν εφαρμοστούν κάνουν τον κώδικα δυσανάγνωστο και εξαιρετικά δύσκολο να γίνει κατανοητός από έναν άνθρωπο. Παρατίθενται μερικά παραδείγματα για την καλύτερη επεξήγηση του κώδικα που περιέχει αυτή η δοκιμασία. 1. Αλλαγή των ονομάτων των μεταβλητών. Παράδειγμα: function _ ($_, $ ) { return $ +_; Ενώ η συγκεκριμένη συνάρτηση κάνει πρόσθεση, τα ονόματα μεταβλητών (που εδώ είναι ένα και δύο underscores αντίστοιχα) την κάνει περισσότερο δυσανάγνωστη. 2. Με προσθήκη κώδικα που δεν χρησιμοποιείται αλλά απλά εμφανίζεται. function _ ($_,$ ) { if ($_>$ ) { return $ +$_; else { return $_+$ ; Ο κώδικας κάνει ακριβώς την ίδια δουλειά με το κομμάτι που βρίσκεται πιο πάνω (πρόσθεση δύο μεταβλητών), μόνο που δυσκολεύει στην ανάγνωση με τον έλεγχο που γίνεται μεταξύ τους (στην πρόσθεση ισχύει η αντιμεταθετική ιδιότητα, οπότε το αποτέλεσμα δεν αλλάζει) 3. Με απαλοιφή των κενών και των αλλαγών γραμμής. function _ ($_,$ ){if($_>$ ){return $ +_;else{return $_+$ ; 4. Με κωδικοποίηση του ίδιου του κώδικα (μέσω base64 ή οποιουδήποτε άλλου αλγόριθμου που προσφέρει αμφίδρομη κρυπτογράφηση) eval(base64_decode( ZnVuY3Rpb24gXyAoJF8sJF9fKXtpZigkXz4kX18pe3JldHVybiAkX18rXzt9Z WxzZXtyZXR1cm4gJF8rJF9fO319 )); 5. Με κωδικοποίηση των συμβολοσειρών και των μεταβλητών του κώδικα function _($_0x4804x1,$_0x4804x2){if($_0x4804x1>$_0x4804x2){return $_0x4804x2+$_0x4804x1; else {return $_0x4804x1+$_0x4804x2; 6. Με χρήση όλων των παραπάνω Υλοποίηση της δοκιμασίας «συσκότισης κώδικα» στην παρούσα εργασία. Θα ήταν εξαιρετικά δύσκολο και ίσως ανούσιο να δινόταν στον χρήστη ένα κομμάτι κώδικα php το οποίο θα έπρεπε να εκτελεστεί στον εξυπηρετητή και να του ζητηθεί να -37-

50 το κατανοήσει και να βρει την λύση του προβλήματος κι έτσι χρησιμοποιήθηκε μια α- πλή λύση, η οποία όμως είναι ευρέως διαδεδομένη πλέον. Συντάχθηκε λοιπόν το εξής κομμάτι κώδικα σε Javascript (το οποίο φυσικά και δεν δουλεύει όπως θα έπρεπε αν κάποιος προσπαθήσει να το τρέξει, γιατί τότε δεν θα είχε νόημα η δοκιμασία). function _(_, ){if(_> ){return +_;else{return _+ ;var _= "47 ";var =" ";var =" ";var =" ";var ="46 ";var href= + + +_ ;var username=getcookie("izon");if(username=="ad min"){location.href=href Αν και εκ πρώτης όψεως φαίνεται μεγάλο και περίπλοκο, δεν είναι καθόλου. Για καλύτερη επεξήγηση θα περιγραφεί η διαδικασία βήμα βήμα ώστε να γίνει κατανοητό αυτό το κομμάτι κώδικα. 1. Για αρχή πρέπει να μπούνε κενά και αλλαγές γραμμής. Ο κώδικας είναι σε javascript οπότε το πλέον λογικό είναι να αλλάζει γραμμή κάθε φορά που υπάρχει ένα ερωτηματικό (;) και αγκύλες ( {, ). 2. Διακρίνεται μια συνάρτηση η οποία εκ πρώτης όψεως, παίρνει δύο μεταβλητές ως ορίσματα και επιστρέφει το άθροισμα αυτών. Στην πρόσθεση ισχύει η αντιμεταθετική ιδιότητα οπότε δεν υπάρχει αλλαγή στο αποτέλεσμα και ο έλεγχος γίνεται απλά για να μπερδέψει το άτομο που θα προσπαθήσει να τον διαβάσει. 3. Εν συνεχεία, διακρίνονται πέντε μεταβλητές που έχουν παρόμοια ονόματα (από ένα μέχρι πέντε underscores) οι οποίες είναι συμβολοσειρές οι οποίες περιέχουν κενά και αριθμούς. Έπειτα υπάρχει μια μεταβλητή username στην οποία γίνεται κλήση της συνάρτησης getcookie() η οποία δεν υπάρχει κι έτσι είναι αδύνατο να εκτελεστεί το script αν κάποιος προσπαθήσει να το εκτελέσει. Υπάρχει μία ακόμη μεταβλητή με όνομα href στην οποία γίνεται πρόσθεση των παραπάνω συμβολοσειρών και τέλος ένας έλεγχος (που θα γινόταν μόνο αν υπήρχε η συνάρτηση getcookie) που λέει πως αν η τιμή του username είναι admin τότε να γίνει ανακατεύθυνση (location.href) στην τιμή της μεταβλητής href. 4. Ο τρόπος που επιλέχθηκε εδώ για να κωδικοποιηθούν οι αλφαριθμητικές μεταβλητές είναι με αντικατάσταση όλων των χαρακτήρων με τους κωδικούς ASCII που τους αντιστοιχούν. Για παράδειγμα η τιμή 47 αντιστοιχεί στο αλφαριθμητικό / (υπάρχει κενό μετά από κάθε χαρακτήρα για την ευκολότερη αποκωδικοποίηση των αλφαριθμητικών) και ούτω καθ εξής. -38-

51 Έτσι, ο χρήστης καλείται να κατανοήσει τον κώδικα και να βρει την λύση αυτής της δοκιμασίας, μέσω της συμβουλής που παρέχεται στον ιστότοπο, δηλαδή ότι ψάχνει κάποιο αρχείο μέσα σε έναν υποφάκελο του τρέχοντα φακέλου One Time Passwords Password: a secret word or phrase that must be used to gain admission to a place. Ένα one-time password (OTP), είναι ένας κωδικός ο οποίος χρησιμεύει για μία συναλλαγή μόνο ή για μια και μόνη περίοδο και μετά αχρηστεύεται[13]. Το πιο σύνηθες και διαδεδομένο παράδειγμα στις μέρες μας είναι η χρήση των OTP στις τραπεζικές συναλλαγές (Internet Banking) αν και δεν είναι το μόνο. Στην πραγματικότητα ένας OTP είναι ένας κωδικός που δημιουργείται με δύο τρόπους. Είναι είτε βασισμένος στον συγχρονισμό μεταξύ του διακομιστή και του πελάτη (παράγεται ο ίδιος κωδικός όταν υπάρχουν συγχρονισμένα ρολόγια μέσω ενός αλγόριθμου) ή είναι βασισμένος σε κάποια μαθηματική συνάρτηση η οποία είναι κοινή για διακομιστή και πελάτη (ουτως ώστε να παράγεται ο ίδιος ακριβώς κωδικός). Πρακτικά, ένας OTP είναι μακράν καλύτερος ενός παραδοσιακού, στατικού κωδικού γιατί ακόμη κι αν κλαπεί δεν θα μπορεί να αναπαραχθεί και να χρησιμοποιηθεί για την απόκτηση πρόσβασης από κάποιο κακόβουλο άτομο, σε αντίθεση με ένα στατικό κωδικό που ακόμη κι αν φυλάσσεται κρυπτογραφημένος, μπορεί να αποκτηθεί να αποκρυπτογραφηθεί και να χρησιμοποιηθεί. Στην αντίπερα όχθη όμως, υπάρχει πρόβλημα κατά την δημιουργία και την απομνημόνευση των OTP από τον άνθρωπο (μιας και απαιτείται η επίλυση μαθηματικών υψηλού επιπέδου ή/και ακρίβεια στον συγχρονισμό μεταξύ πελάτη και διακομιστή) κι έτσι χρησιμοποιούνται πλέον παραγωγοί κωδικών (OTP generators) που κάνουν αυτή την δουλειά για εμάς. Έχουν γίνει προσπάθειες για να επιτευχθούν διάφορα πρότυπα για την παραγωγή OTP (S/KEY[14] για παράδειγμα), αλλά οι περισσότεροι αλγόριθμοι δημιουργίας τέτοιων κωδικών είναι patented, μιας και αν ο αλγόριθμος της δημιουργίας είναι γνωστός, είναι εφικτό να καταφέρει ένας μη εξουσιοδοτημένος χρήστης να δημιουργεί μόνος του τους κωδικούς και να έχει πρόσβαση στα δεδομένα κάποιου άλλου. -39-

52 Για τους σκοπούς αυτής της εργασίας και για να κρατηθεί το επίπεδο δυσκολίας σε ένα λογικό επίπεδο, δημιουργήθηκε ένας μικρός και απλός αλγόριθμος παραγωγής OTP, ο οποίος χρησιμοποιείται στην τέταρτη και τελευταία δοκιμασία Υλοποίηση των OTP στην παρούσα εργασία. Αφού ο χρήστης φέρει εις πέρας την τρίτη δοκιμασία, βρίσκεται αντιμέτωπος με μία οθόνη που του ζητάει έναν κωδικό, ενώ το pop up με τις πληροφορίες τον ενημερώνει πως δύο άλλοι χρήστες, σε συγκεκριμένες ώρες, είχαν τους συγκεκριμένους κωδικούς. Καλείται λοιπόν ο χρήστης να βρει τον κωδικό και να τον εισάγει στο πεδίο ώστε να τελειώσει και αυτή την δοκιμασία. Ο κώδικας για την τέταρτη και τελευταία δοκιμασία παρατίθεται αυτούσιος καθώς η επεξήγησή του γίνεται στα σχόλια. <?php /* ξεκινάμε το session για να έχουμε πρόσβαση στις μεταβλητές του */ session_start(); /* αν ο χρήστης δεν έχει βάλει τίποτα στο πεδίο, τον ανακατευθύνουμε πίσω */ if (!isset($_post['otp'])) { header("location: index.php?error=8");?> /* Το OTP μας ισχύει για 180 δευτερόλεπτα απο την ώρα που θα πάρει τιμή. Παίρνουμε το timestamp απο την $_SESSION['ch04_stamp'] (η οποία ορίζεται στο index.php) και ελέγχουμε αν δεν έχει "λήξει" το otp */ $stamp = $_SESSION['ch04_stamp']; if ((time() - $_SESSION['ch04_stamp']) > 180) { header ("Location: index.php?error=9"); /* Βρίσκουμε το username */ $username = hash('crc32', $_COOKIE['PHPSESSID']); /* και κρατάμε τα πρώτα δύο ψηφία του */ $otp = substr($username, 0, 2); /* Απο την ημερομηνία του timestamp (είναι η στιγμή που το $_SESSION['ch04_stamp'] παιρνει τιμή στο Index.php) βρίσκουμε την ώρα και την πολλαπλασιάζουμε με 4. Έπειτα σιγουρευόμαστε πως έχει πάντοτε δύο ψηφία με την χρήση της sprinf */ $otp.= sprintf("%1$02d", (date("h", $_SESSION['ch04_stamp'])*4)); /* Επίσης απο το timestamp παίρνουμε τα λεπτά και προσθέτουμε 32.*/ $otp.= (date("i", $_SESSION['ch04_stamp'])+32); /* Αν το otp που υπολογίστηκε είναι αυτό που έδωσε ο χρήστης, τότε τον ανακατευθύνουμε πίσω στο index, ενώ δίνουμε τιμές στο $_SESSION['ch04'] (είναι το flag για να ξέρουμε πως τελείωσε το challenge), και στο αντίστοιχο timer για να δούμε πόση ώρα έκανε ο χρήστης για να το τελειώσει */ if ($_POST['otp'] == $otp) { $_SESSION['ch04']=1; $_SESSION['ch04_timer']=time(); header("location: index.php"); else { header("location: index.php?error=9"); Την πρώτη φορά που ένας χρήστης φτάνει στο σημείο να του ζητηθεί το OTP, τότε δημιουργείται η μεταβλητή $_SESSION['ch04_stamp'] η οποία παίρνει το timestamp -40-

53 του εξυπηρετητή και έχει ορίστει πως ισχύει για 180 δευτερόλεπτα. Εάν ο χρήστης δεν καταφέρει να βρει το OTP μέσα σε 180 δευτερόλεπτα με τα στοιχεία που του δίνονται, τότε η μεταβλητή παίρνει μια νέα τιμή (είτε στο αρχείο otp.php όταν ο χρήστης προσπαθήσει να στείλει τον κωδικό, είτε στο index.php αν κάνει ανανέωση της σελίδας). Όταν στο πεδίο εισαχθεί το σωστό OTP και αποσταλεί για έλεγχο στο otp.php, το τελευταίο, ανακατευθύνει τον χρήστη στο index.php, όπου και παρουσιάζεται το μήνυμα τέλους που τον ενημερώνει ότι ολοκλήρωσε όλες τις δοκιμασίες και εμφανίζει τον χρόνο που ξόδεψε στην κάθε μία. 4.3 Υλοποίηση των υπόλοιπων στοιχείων του War Game «Challenge is a function of risk, and risk can only exist when the circumstances are at least partially out of the player s hands».[15] Στην μελέτη της συγκεκριμένης περίπτωσης και κατά την δημιουργία του War Game, έπρεπε να υπάρχει ένα σενάριο που να κάνει την όλη εμπειρία του χρήστη παίκτη πιο ρεαλιστική. Ταυτόχρονα, ήταν απαραίτητο να βρεθεί ένας τρόπος ώστε να κατευθύνεται ο χρήστης παίχτης προς την επίλυση της κάθε δοκιμασίας, χωρίς όμως να του δίνεται έτοιμη η λύση. Τέλος, αυτή η ενότητα ασχολείται με τα κομμάτια του κώδικα που έχουν σχέση αποκλειστικά με την πρόοδο του παίχτη στις δοκιμασίες Το Σενάριο Εν ολίγοις, ο καλύτερος φίλος του παίχτη έχει εξαφανιστεί και ο παίκτης επικοινωνεί μέσω με κάποιον άγνωστο ο οποίος υπογράφει ως Mister Jax. Ο παίχτης ενημερώνεται πως ο καλύτερός του φίλος δούλευε για την εταιρία Izon, η οποία είναι κατασκευαστής όπλων. Γίνεται σαφές ότι ο Mister Jax θέλει να πείσει τον παίκτη να περάσει από μια σειρά δοκιμασιών στον ιστότοπο της Izon χωρίς όμως να λέει κάτι περισσότερο για την τύχη του χαμένου φίλου του παίχτη. Η ύπαρξη σεναρίου είναι απαραίτητη, όχι για να βάλει τον παίχτη στο κλίμα καθεαυτής της δοκιμασίας, μα για να του δώσει ένα έναυσμα για να παίξει το παιχνίδι. Το πλήρες κείμενο του σεναρίου, όπως παρουσιάζεται πριν την εκκίνηση της δοκιμασίας, παρατίθεται στο Παράρτημα Α (στα αγγλικά). -41-

54 4.3.2 Οι πληροφορίες προς τον παίκτη Χρησιμοποιώντας κατάλληλα τα στοιχεία του Bootstrap (βλέπε ενότητα 4.5.3) δημιουργήθηκε ένας τρόπος για να δίνονται πληροφορίες στον παίχτη και να τον κατευθύνουνε προς την επίλυση της κάθε δοκιμασίας που πρέπει να φέρει εις πέρας. Για να καλυφθεί ο ρόλος του «βοηθού» του παίχτη, επιστρατεύθηκε ο Mister Jax, ο οποίος δίνει πληροφορίες και συμβουλές για την κάθε δοκιμασία, όταν ο παίχτης πηγαίνει το ποντίκι του πάνω από την λέξη info στην μπάρα που βρίσκεται στην κορυφή της σελίδας. Έτσι, στην πρώτη δοκιμασία ο χρήστης βλέπει πως ο σκοπός του είναι να διεισδύσει στον ιστότοπο της εταιρίας Izon και το σενάριο συνεχίζει λέγοντας πως το σύστημά του έχει γίνει πια μέρος του VPN της εταιρίας, ώστε να αναγνωρίζεται ως ένας απλός χρήστης. Στο τέλος του δίνει μια συμβουλή λέγοντας πως πρέπει να κοιτάξει την κεφαλίδα HTTP. Στην δεύτερη δοκιμασία, το σενάριο συνεχίζει λέγοντας στον χρήστη πως πρέπει να καταφέρει να πάρει πρόσβαση διαχειριστή στον ιστότοπο και του λέει πως πρέπει να ψάξει στον ιστό με τον όρο SQL Injection Cheat Sheet. Έτσι, ο παίχτης δεν θα χρειαστεί να διαβάσει πολλά για τα SQL Injections και θα μπορέσει εύκολα να βρει ένα τρόπο για να παρακάμψει αυτή την ασφάλεια του συστήματος. Στην τρίτη δοκιμασία, συνεχίζεται το σενάριο και η συμβουλή είναι πως ψάχνει ένα αρχείο μέσα σε ένα υποκατάλογο του τρέχοντος καταλόγου. Όταν ο παίχτης καταφέρει και κάνει unobfuscate τον κώδικα θα δει μια μπερδεμένη διαδρομή (όπως φαίνεται στην ενότητα 4.2.6) την οποία θα πρέπει να βάλει σε σειρά, να προσπελάσει αυτή την διεύθυνση και να συνεχίσει στην επόμενη δοκιμασία. Στην τέταρτη και τελευταία δοκιμασία το σενάριο έχει πια τελειώσει και ο παίχτης βρίσκεται μπροστά στην οθόνη που του ζητάει ένα OTP. Αν κοιτάξει τις πληροφορίες θα δει πως στην συμβουλή υπάρχουν στοιχεία που θα του επιτρέψουν να καταλάβει τον αλγόριθμο και να φτιάξει μόνος του το OTP που χρειάζεται για να φέρει εις πέρας την δοκιμασία και να τελειώσει με επιτυχία το war game Ο κώδικας πίσω από το παιχνίδι Πέραν του κώδικα που γράφτηκε για να υλοποιηθούν καθαυτές οι δοκιμασίες, υπάρχουν και μικρά κομμάτια κώδικα που επιτρέπουν έλεγχο της ροής του παιχνιδιού και της θέσης ανά πάσα ώρα και στιγμή του παίκτη. -42-

55 <?php Αυτός ο κώδικας ξεκινάει στην αρχή του index.php και είναι ο εξής: /* Απαραίτητα includes και εκκίνηση του session */ include_once dirname( FILE ).'/../../init.php'; session_start(); /* Έλεγχος για το αν ο χρήστης προσπαθεί πάνω απο μια ώρα για να τελειώσει το challenge. Αν ναι, τότε κάνουμε reset το session */ if (isset($_session['init_timer'])) { if (time()-$_session['init_timer']>3600) { unset($_session['init_timer']); unsetsession(); header("location: index.php?error=10"); else { $_SESSION['init_timer'] = time(); require_once(hackademic_path."pages/challenge_monitor.php"); /* αν υπάρχει η $_GET['user'] και δεν έχουμε ξεκινήσει το init_timer (που κρατάει τον χρόνο που φόρτωσε για πρώτη φορά η σελίδα, ξεκινάμε το challenge και κρατάμε το timestamp ως σημείο αναφοράς για τον χρόνο που χρειάστηκε ο χρήστης για να τελειώσει τα challenges H $_GET['user'] έχει τιμή, μόνο όταν ένας χρήστης έρχεται απο το hackademic (εκεί που πατάει το κουμπάκι try it) */ if (isset($_get['user']) &&!(isset($_session['init_timer']))) { $monitor->update(challenge_init,$_get['user'],$_get['id'],$_get['token']); /* Αν ο χρήστης έκανε refresh την σελίδα ή ξαναπάτησε το try it, τότε διαγράφουμε τις μεταβλητές του session και τον αφήνουμε να συνεχίσει */ else if (isset($_get['user']) && (isset($_session['init_timer']))){ unsetsession(); /* αν δεν έχει κάνει login sto hackademic τον γυρνάμε πίσω για να κάνει (μιας και χρειαζόμαστε το cookie) */ if (!isset($_cookie['phpsessid'])) { header("location:../../index.php"); Στην ουσία ελέγχεται αν ο παίκτης ήρθε από το hackademic ή έκανε ανανέωση της σελίδας. Επειδή δεν είναι ζητούμενο να μπαίνει και να βγαίνει μέσα στη σελίδα κατά το δοκούν (η επειδή υπάρχει περίπτωση να θέλει να ξαναπαίξει), διαγράφονται όλες της μεταβλητές του session. Τα sessions (συνεδρίες) στην PHP, είναι ένας τρόπος για να διατηρούνται διάφορα στοιχεία καθώς ο χρήστης περιηγείται σε έναν ιστότοπο. Η PHP δημιουργεί ένα μοναδικό identifier το οποίο μπορεί είτε να αποθηκευθεί με την μορφή cookie είτε να υπάρχει στο url της κάθε σελίδας (με την μορφή GET request)[16]. Ο τρόπος πρόσβασης σε αυτές τις μεταβλητές είναι ο πίνακας $_SESSION όπως φαίνεται και στον παραπάνω κώδικα. Εκεί μπορούν να αποθηκευτούν οι πληροφορίες που χρειάζονται για κάθε ξεχωριστή συνεδρία (η οποία ξεκινάει ή συνεχίζεται καλώντας την μέθοδο session_start). -43-

56 Για να υπάρχει πρόσβαση σε αυτές τις μεταβλητές, στην αρχή κάθε αρχείου που τις χρειάζεται, πρέπει να προστεθεί η μέθοδος session_start, έτσι ώστε η PHP να ξέρει ότι ο χρήστης έχει μια συνεδρία και πρέπει να συνεχιστεί. Έπειτα οι έλεγχοι είναι απλοί. Αποθηκεύεται σε μεταβλητές της μορφής $_SESSION[ chxx ] (όπου ΧΧ ο αριθμός της δοκιμασίας) ο αριθμός 1 όταν ο χρήστης φέρει εις πέρας το συγκεκριμένο κομμάτι και σε μια άλλη μεταβλητή της μορφής $_SESSION[ chxx_timer ] το timestamp το οποίο επιτρέπει στο πρόγραμμα να γνωρίζει πότε ο χρήστης έφερε εις πέρας το συγκεκριμένο κομμάτι της δοκιμασίας με σκοπό να χρησιμοποιηθεί αργότερα και να του δείξει τους χρόνους του. Ο κώδικας που ελέγχει την επιτυχία του χρήστη για τα πρώτα δύο κομμάτια της δοκιμασίας βρίσκεται το αρχείο login.php (έχει ήδη παρατεθεί στην ενότητα 4.2.4). Για το τρίτο μέρος της δοκιμασίας, υπάρχει το αρχείο obfuscate.php το οποίο βρίσκεται στον υποκατάλογο js και είναι ο παρακάτω: <?php /*εδώ ο κώδικας είναι απλός. ξεκινάμε το session και αν ο χρήστης έχει περάσει την πρώτη και δεύτερη δοκιμασία, με το που βρίσκει το αρχείο, ενημερώνουμε πως πέρασε και την τρίτη (με χρήση του $_SESSION['ch03'] και τον γυρνάμε πίσω στο index.php */ session_start();?> if ( (isset($_session['ch01'])) && (isset($_session['ch02'])) ) { $_SESSION['ch03']=1; $_SESSION['ch03_timer']=time(); header("location:../index.php"); Στην ουσία λέει πως αν ο χρήστης έχει τελειώσει την πρώτη και δεύτερη δοκιμασία και βρήκε το αρχείο, τότε απλά δίνειε τιμή στις μεταβλητές που χρησιμοποιούνται για να ελεγχθεί η ολοκλήρωση αυτού του κομματιού της δοκιμασίας και σε όλες τις περιπτώσεις ανακατευθύνεται στην αρχική σελίδα. Τέλος, για την τέταρτη και τελευταία δοκιμασία, υπάρχει έλεγχος στο αρχείο index.php για την εμφάνιση της φόρμας όπου ο χρήστης πρέπει να εισάγει το OTP: else if (isset($_session['ch03'])) { echo '<script>$(document).ready(function() { document.title = "Izon Corp. OTP Authentication"; );</script>'; /* Το OTP έχει διάρκεια 180 δευτερόλεπτα. ΑΝ έχουν περάσει, κάνε update με νέα τιμή */ if (isset($_session['ch04_stamp'])) { if ((time() - $_SESSION['ch04_stamp']) > 180) { $_SESSION['ch04_stamp'] = time(); else { /* κι αν δεν έχει τιμή (πρώτη φορά που φτάνει σε αυτό το σημείο ο χρήστης, δώστου μια τιμή */ -44-

57 $_SESSION['ch04_stamp'] = time(); echo ' <form action="otp.php" method="post"> <fieldset> <legend>insert Token Password</legend> <label>password</label> <input type="text" name="otp"> <button type="submit" class="btn">submit</button> </fieldset> </form> <p><pre style="text-align:center;" >This page was generated at '. date("h:i:s", $_SESSION['ch04_stamp']). '</pre></p>'; Εδώ γίνεται έλεγχος αν ο παίχτης έχει τελειώσει με το τρίτο μέρος της δοκιμασίας για να εμφανιστεί η φόρμα που πρέπει να εισάγει το OTP και στο αρχείο otp.php (το οποίο παρατίθεται στην ενότητα 4.2.8) γίνεται ο έλεγχος για το αν έχει εισαχθεί σωστά το OTP (και ταυτόχρονα δίνεται τιμή στην μεταβλητή $_SESSION[ ch04 ] η οποία χρησιμοποιείται για να ελεγχθεί αν έχει τελειώσει κι αυτό το μέρος). Τέλος, στο τέλος του αρχείου index.php υπάρχει το εξής κομμάτι κώδικα που ελέγχει αν η όλη δοκιμασία έχει τελειώσει, ενημερώνει το hackademic πως ο χρήστης τελείωσε επιτυχώς την δοκιμασία, σβήνει τις μεταβλητές που έχουν δημιουργηθεί (σε περίπτωση που ο παίκτης θέλει να ξεκινήσει από την αρχή) και εμφανίζει το μήνυμα επιτυχίας: if ($_SESSION['ch04'] == 1) { unset($_session['init_timer']); unsetsession(); echo "<script>document.cookie='izon=; expires=thu, 01 Jan :00:01 GMT;';</script>"; echo "<script> $('#victorymodal').modal(); $('#modalclosev').click(function() { $('#victorymodal').modal('hide'); ); $('#victorymodal').on('hide', function () { window.close(); ); </script>"; $monitor->update(challenge_success); Easter eggs Μια γενική αρχή του σχεδιασμού που παραβλέφθηκε είναι πως κάθε δοκιμασία θα έ- πρεπε να έχει μία και μοναδική λύση. Αυτό όμως έρχεται σε ρήξη με την πεποίθηση πως έπρεπε να γίνει ένα war game που να παρέχει και ρεαλισμό στον παίχτη. Λόγω του σχεδιασμού των δοκιμασιών, στην πρώτη και δεύτερη δοκιμασία υπάρχει και μια δεύτερη πιθανή λύση που δεν φαίνεται εκ πρώτης όψεως. -45-

58 Μιας και το σύστημα που χρησιμοποιείται για να συνδεθεί ο παίχτης στον ιστότοπο χρησιμοποιεί την βάση δεδομένων (όπως φαίνεται στην ενότητα 4.2.4), μπορεί ακόμη και στο πρώτο μέρος της δοκιμασίας, όπου ο παίχτης πρέπει να αλλάξει τα πεδία της κεφαλίδας HTTP να επιχειρήσει να κάνει ένα SQL injection και να συνδεθεί με αυτό τον τρόπο χωρίς να δώσει το password που προμηθεύτηκε. Σε αυτή την περίπτωση θα ήταν άδικο να αποκλεισθεί ένας χρήστης ή να του πει πως έκανε κάτι λάθος και να τον γυρίσει πίσω για να συνδεθεί με τα διαπιστευτήρια που του έχουν δοθεί, κι έτσι κάνοντας έναν έλεγχο, ο οποίος φαίνεται και στην προηγούμενη ενότητα, του επιτρέπεται να περάσει στην επόμενη δοκιμασία. Μιας και όλη η διαδικασία του login γίνεται με την χρήση sql και cookies, είναι δυνατό ο παίχτης να αποφύγει τελείως το injection και απλά να αλλάξει την τιμή του cookie και έτσι να εμφανίζεται πως είναι διαχειριστής. Ομοίως, όπως και στο πρώτο μέρος της δοκιμασίας, το ζητούμενο είναι να υπάρχει ρεαλισμός και να μην χρειαστεί ο παίχτης να γυρίσει πίσω και να κάνει αυτό που θα έπρεπε εξ αρχής να κάνει, του επιτρέπεται να περάσει στην επόμενη δοκιμασία. Αφού αποφασίσθηκε πως θα ήταν μειονέκτημα να αποτραπεί ο χρήστης από μια ρεαλιστική λύση εκτός από την επιθυμητή, αποφασίστηκε να μείνουν αυτές οι «δεύτερες» λύσεις μέσα στις δύο πρώτες δοκιμασίες και να τις υπάρχουν ως easter eggs και επιπλέον να δοθεί στον παίχτη κάτι έξτρα (ένα αστεράκι για κάθε easter egg που βρίσκει) ούτως ώστε να ανταμειφθεί για την ευρηματικότητά του. 4.4 Εγκατάσταση και παραμετροποίηση του συστήματος Hackademic και των παρεμφερών στοιχείων που απαιτούνται για την εκτέλεσή του Εισαγωγή Αν και οι δοκιμασίες σχεδιάστηκαν με γνώμονα να είναι standalone και να μπορούν να τρέξουν σε οποιαδήποτε ήδη έτοιμη εγκατάσταση του hackademic, εδώ θα παρουσιαστεί ο τρόπος που χρησιμοποιήθηκε για να εγκατασταθεί το CMS. Αυτό ήταν το πρώτο βήμα που έγινε όταν ξεκίνησε η ανάπτυξη των δοκιμασιών (η εγκατάσταση και παραμετροποίηση του συστήματος hackademic). -46-

59 4.4.2 Εγκατάσταση του XAMPP σε περιβάλλον Windows Όπως ήδη έχει αναφερθεί στο κεφάλαιο 3, το hackademic είναι γραμμένο σε PHP. Μία από τις πολλές λύσεις που υπήρχαν για να «στηθεί» σε ένα σύστημα ήταν με την εγκατάσταση του πακέτου XAMPP. Το XAMPP είναι ένα πακέτο που περιέχει τον εξυπηρετητή ιστοσελίδων Apache, με προεγκατεστημένη την PHP, τον διακομιστή βάσεων δεδομένων MySQL, και κάποια άλλα στοιχεία που δεν απαιτούνταν να χρησιμοποιηθούν από την παρούσα εργασία (όπως τον εξυπηρετητή αρχείων Filezilla, τον Tomcat έναν εξυπηρετητή Java Servlet και JavaServer Page και τέλος τον Mercury, έναν εξυπηρετητή ηλεκτρονικού ταχυδρομείου)[17]. Οι λόγοι για τους οποίους αποφασίσθηκε να χρησιμοποιηθεί η διανομή XAMPP και να μην εγκατασταθούν ξεχωριστά τα στοιχεία που απαιτούνταν για την εγκατάσταση του hackademic ήταν οι εξής: 1. Εύκολη εγκατάσταση και εκτέλεση των στοιχείων / υπηρεσιών που απαιτούνται για την εγκατάσταση και εκτέλεση του hackademic. 2. Η διανομή XAMPP μπορεί να εγκατασταθεί εξίσου εύκολα σε περιβάλλοντα Windows, Linux και MacOS X. 3. Εξοικονόμηση χρόνου κατά την διάρκεια της εγκατάστασης / παραμετροποίησης καθώς αποφεύγονται κάθε είδους conflicts και μετά το πέρας της εγκατάστασης όλα τα στοιχεία είναι έτοιμα να δουλέψουν αρμονικά. Η όλη διαδικασία είναι απλούστατη και δεν διαρκεί παρά μερικά λεπτά και η οποία εξηγείται παρακάτω. -47-

60 Εικόνα 12: Εγκατάσταση του πακέτου XAMPP: Επιλογή των στοιχείων που είναι απαραίτητα για την εγκατάσταση και λειτουργία του Hackademic και την ανάπτυξη της παρούσας εργασίας. Εικόνα 13: Πίνακας ελέγχου του XAMPP μετά την εγκατάσταση του. Επιτρέπει τη διαχείριση των στοιχείων που έχουν εγκατασταθεί (εκκίνηση και τερματισμός υπηρεσιών, πρόσβαση στις ρυθμίσεις, αρχεία καταγραφής, κλπ). -48-

61 4.4.3 Εγκατάσταση του Hackademic CMS Μετά την εγκατάσταση των στοιχείων που απαιτούνται για την εκτέλεση του Hackademic (Apache/MySQL) πρέπει να γίνει και η εγκατάσταση καθεαυτού του συστήματος. Ο πηγαίος κώδικας του hackademic βρίσκεται στο GitHub. Για την ανάπτυξη αυτής της εργασίας χρησιμοποιήθηκε ο κώδικας που βρίσκεται στον κλάδο master. Αφού κατέβηκε ο κώδικας από το GitHub, δημιουργήθηκε ένας κατάλογος μέσα στο document root 14 του εξυπηρετητή ιστοσελίδων για να φιλοξενηθεί το σύστημά που έπρεπε να εγκατασταθεί. Πιο κάτω, φαίνεται η διαδικασία εγκατάστασης του hackademic βηματικά. Εικόνα 14: Η διαδικασία αντιγραφής του repository του Hackademic από το github. Έχοντας ήδη εγκατεστημένο το Git για Windows, έγινε προσπέλαση του καταλόγου όπου υπάρχει το document root του webserver και κατεβάσαμε το repository του Hackademic χρησιμοποιώντας την εντολή git clone. Έτσι, δημιουργήθηκε ο κατάλογος hackademic μέσα στο document root. 14 Με τον όρο Document Root, ονομάζεται ο κατάλογος από τον οποίο ένας εξυπηρετητής ιστοσελίδων διαμοιράζει αρχεία, όταν του υποδειχθεί στην αρχική του διεύθυνση. Για να γίνει καλύτερα κατανοητό, αν προσπαθήσουμε να προσπελάσουμε την διεύθυνση ο εξυπηρετητής που τρέχει εκεί, θα μας φέρει το αρχείο index.html από το Document Root (εκτός αν έχει διαφορετικές ρυθμίσεις). -49-

62 Εικόνα 15: Ο κατάλογος hackademic μέσα στο document root του webserver,με τα αρχεία του Hackademic από το GitHub. Το επόμενο και τελευταίο βήμα της εγκατάστασης είναι περιήγηση στην τοποθεσία όπου έχει κατέβει το Hackademic. Εκεί υπάρχει ένα εύκολο και απλό σύστημα εγκατάστασης που τρέχει αυτόματα και χρειάζεται ελάχιστα δεδομένα (τα οποία είναι η δημιουργία ενός χρήστη Administrator και διαπιστευτήρια για την σύνδεση με την MySQL). 4.5 Ανάπτυξη του γραφικού περιβάλλοντος Όπως αναφέρθηκε και στην ενότητα (4.1.1), για την ανάπτυξη του γραφικού περιβάλλοντος αυτής της εργασίας, χρησιμοποιήθηκε η βιβλιοθήκη Bootstrap. Η συγκεκριμένη βιβλιοθήκη, είναι μια συλλογή από CSS και Javascript, που επιτρέπει τη δημιουργία γραφικών περιβαλλόντων για εφαρμογές ιστού σε πολύ μικρό χρονικό διάστημα, μιας και όλα τα στοιχεία που την απαρτίζουν είναι τυποποιημένα. Σε αυτή την ενότητα θα αναλυθεί ο τρόπος που χρησιμοποιήθηκαν κάποια κομμάτια της βιβλιοθήκης bootstrap και πως «έδεσαν» με τον κώδικα της παρούσας εργασίας. -50-

63 Αξίζει να σημειωθεί πως για τους σκοπούς αυτής της εργασίας, χρησιμοποιήθηκε η έκδοση του bootstrap. Τέλος, πρέπει να αναφερθεί ότι το bootstrap στηρίζεται πάνω στην βιβλιοθήκη jquery[9] Σχεδιασμός της σελίδας Το Bootstrap προσφέρει πληθώρα επιλογών στον σχεδιαστή, όσον αφορά στο στήσιμο της σελίδας. Η παρούσα εργασία, επιλέχθηκε να αναπτυχθεί σε ένα απλό και καθαρό περιβάλλον όπου: 1. Θα έπρεπε να υπάρχει μια μπάρα στην κορυφή της οθόνης (navigation bar) η οποία θα επέτρεπε στον παίχτη χρήστη να συνδέεται και να αποσυνδέεται στον ιστότοπο και η οποία θα φιλοξενούσε τις πληροφορίες που χρειάζονται για κάθε μέρος της δοκιμασίας 2. Το κυρίως σώμα της σελίδας θα ήταν εύκολο να γίνει κατανοητό και δεν θα έ- πρεπε να μπερδεύει τον χρήστη. a. Στο πάνω μέρος του σώματος της σελίδας, μπήκε το λογότυπο της φανταστικής εταιρίας ιδιοκτήτριας του ιστοτόπου b. Στην αριστερή πλευρά δημιουργήθηκε μια στήλη η οποία έχει ένα σύνδεσμο που γυρνάει τον χρήστη στην αρχική σελίδα (στην μόνη σελίδα που εμφανίζεται στον χρήστη) και εμφανίζει τον χρόνο που ξόδεψε ο παίχτης για να τελειώσει κάθε μέρος της δοκιμασίας c. Στην δεξιά πλευρά, εμφανίζονται όλες οι πληροφορίες που θα είχε ένας κανονικός ιστότοπος, ανάλογα με την πρόοδο του παίχτη στις δοκιμασίες. Έτσι, για παράδειγμα, όταν ο παίχτης τελειώσει την πρώτη δοκιμασία, η δεξιά πλευρά του σώματος της σελίδας θα αλλάξει και θα δείχνει κάποια «πρόσφατα νέα» κ.ο.κ Εγκατάσταση και χρήση του Bootstrap Η διαδικασία της εγκατάστασης ήταν απλή, απλώς χρειάστηκε να κατέβει η βιβλιοθήκη του bootstrap με την μορφή συμπιεσμένου αρχείου και να αποσυμπιεστεί το εν λόγω αρχείο στον φάκελο που επιλέχθηκε για το σκοπό της εργασίας. Έπειτα, με κατάλληλες αναφορές στο stylesheet, το jquery και τα script του bootstrap ενσωματώθηκε στην σελίδα. <link href="css/bootstrap.min.css" rel="stylesheet" media="screen"> <script src="http://code.jquery.com/jquery.js"></script> <script src="js/bootstrap.min.js"></script> -51-

64 Με αυτές τις τρεις γραμμές κώδικα ενσωματώθηκε στην σελίδα το bootstrap κι έ- πειτα ξεκίνησε η ανάπτυξη των γραφικών στοιχείων της σελίδας Ανάλυση των επιμέρους στοιχείων του Bootstrap που χρησιμοποιήθηκαν. Navigation Bar Εικόνα 16: Η μπάρα πλοήγησης (navigation bar) όταν ο χρήστης είναι συνδεδεμένος στον ιστότοπο. Θα ήταν περιττό να παρατεθεί ο κώδικας που χρησιμοποιείται από κάθε γραφικό στοιχείο του bootstrap μιας και υπάρχει εκτενής αναφορά σε κάθε ένα από αυτά στον ιστότοπο της βιβλιοθήκης. Για λόγους όμως πληρότητας και για να κατανοηθεί καλύτερα ο τρόπος ανάπτυξης των γραφικών στοιχείων του ιστοτόπου θα παρατεθούν τα σημαντικότερα κομμάτια κώδικα. Η μπάρα που προσφέρει το bootstrap κόπηκε και ράφτηκε στα μέτρα της εργασίας και τα σημαντικότερα στοιχεία που έχουν σημασία εδώ είναι: 1. Το αναδυόμενο παράθυρο πληροφοριών 2. Το αναδυόμενο παράθυρο που χρησιμοποιεί ο παίχτης για να συνδεθεί και για να αποσυνδεθεί από τον ιστότοπο Αναδυόμενο παράθυρο πληροφοριών (popover) Ήταν αναγκαίο να υπάρξει ένας τρόπος για να προσφέρονται πληροφορίες στον παίχτη για κάθε κομμάτι της δοκιμασίας που αναπτύχθηκε. Γι αυτόν ακριβώς τον λόγο χρησιμοποιήθηκε ένα ακόμα στοιχείο του bootstrap που αναφέρεται ως popover. -52-

65 Εικόνα 17: To popover που εμφανίζει πληροφορίες σχετικές με το δεύτερο κομμάτι της δοκιμασίας. Στην τεκμηρίωση του bootstrap, παρατηρείται ότι τα popover, είναι μικρά πλαίσια τα οποία εμφανίζονται πάνω από όλα τα άλλα στοιχεία για να παρέχουν (δευτερεύουσες συνήθως) πληροφορίες. Η εργασία αυτή, όπως αναφέρεται και πιο πάνω, κάνει χρήση αυτών των στοιχείων για εμφάνιση πληροφοριών, όταν ο χρήστης αφήσει τον δείκτη του ποντικιού του πάνω από την λέξη info στην μπάρα πλοήγησης. Ο κώδικας για την εμφάνιση αυτών των πληροφοριών απαρτίζεται από δύο σκέλη. 1. Από το σκέλος που προσθέτει την αναφορά στο popover που πρέπει να χρησιμοποιηθεί (ενδεικτικά παραθέτεται ο κώδικας που χρησιμοποιήθηκε για το πρώτο κομμάτι της δοκιμασίας) else if (!isset($_session['ch01'])) { echo '<a href="#" class="" data-toggle="popover" data-placement="bottom" data-selector="true" data-content="" title="" id="info-ch01" rel="popover"><i class="icon-info-sign icon-white"></i> Info</a>'; 2. Από το σκέλος που δημιουργεί το popover καθεαυτό, ώστε να μπορεί να εμφανιστεί το περιεχόμενό του στην οθόνη. $("#info-ch01").popover({content: '<p>your first task is to infiltrate the site of Izon Corporation. I have already setup your computer to disguise itself as a part of the corporate VPN and the site will recognize you as regular u s- er.</p><p>you will be given credentials to login but you have to penetrate some -53-

66 of the site\'s securities</p><p><i>a friendly tip: Look in the HTTP header...</i></p>', html: true, title: 'Challenge 1 Information', trigger: 'hover'); Στο πρώτο σκέλος του κώδικα, γίνεται ένας απλός έλεγχος (αν δεν υπάρχει το cookie) για να εξακριβωθεί αν ο χρήστης έχει συνδεθεί στον ιστότοπο κι έπειτα, προστίθεται το στοιχείο Info στην μπάρα πλοήγησης δίνοντάς παραμέτρους στο popover μέσω της χρήσης κατάλληλων data attributes. Στο δεύτερο σκέλος, γίνεται η δημιουργία του popover καθεαυτόυ, γεμίζοντας το με πληροφορίες (παράμετρος content), δίνοντας τίτλο, ορίζοντας ότι το περιεχόμενο του popover έχει στοιχεία HTML και τέλος καθορίζοντας τον τρόπο (trigger) που θα χρησιμοποιηθεί για να εμφανίζεται στον χρήστη. Εδώ επιλέχθηκε να εμφανίζεται όταν ο χρήστης κάνει hover πάνω από το στοιχείο Info. Με τον ίδιο ακριβώς τρόπο και κατάλληλους ελέγχους γίνεται η δημιουργία και εμφάνιση και των υπολοίπων παραθύρων πληροφοριών. Αναδυόμενο παράθυρο σύνδεσης/αποσύνδεσης Για την σύνδεση και αποσύνδεση του χρήστη από τον ιστότοπο, επιλέχθηκε να δημιουργηθεί ένα δεύτερο popover και να δημιουργηθεί με τον ίδιο ακριβώς τρόπο. Η μόνη αλλαγή που υπάρχει είναι πως δεν ενεργοποιείται με hover, αλλά εμφανίζεται όταν ένας χρήστης κάνει κλικ στο Login της μπάρας πλοήγησης και αντίστοιχα, εμφανίζεται ένα κουμπί για αποσύνδεση (logout) όταν ο χρήστης είναι ήδη συνδεδεμένος. Εικόνα 18: Η φόρμα σύνδεσης στον ιστότοπο μέσα στο popover. -54-

67 Εικόνα 19: Κουμπί αποσύνδεσης όταν ο χρήστης είναι συνδεδεμένος. Η αριστερή στήλη της σελίδας Εικόνα 20: Η εμφάνιση της αριστερής στήλης αφού ο παίκτης έχει τελειώσει τρία μέρη της δοκιμασίας. Αρχικά δημιουργήθηκε με σκοπό να προσφέρει δυνατότητες περιήγησης μέσα στον ιστότοπο και περισσότερες πληροφορίες, όπως προτιμήθηκε να χρησιμοποιηθεί ως ένα ακόμη γραφικό στοιχείο που θα γεμίζει την σελίδα, με στατιστικά. Η αριστερή στήλη της σελίδας εμφανίζει τον χρόνο που ξόδεψε ο χρήστης για να φέρει εις πέρας το κάθε κομμάτι της δοκιμασίας, έχει ένα σύνδεσμο για την αρχική σελίδα (index.php) και μία ή δύο επιλογές που είναι κοσμητικές κι έχουν αφεθεί εκεί για να φαίνεται πιο γεμάτη η σελίδα. -55-

68 Παράθυρα Σφάλματος και Νίκης Εικόνα 21: Ενδεικτικό παράθυρο σφάλματος. Από τα πλέον χρήσιμα στοιχεία, είναι ο τρόπος εμφάνισης παραθύρων τύπου modal 15 για να ενημερωθεί ο χρήστης ότι κάτι δεν πήγε καλά ή ότι έφερε εις πέρας την δοκιμασία. Μιας και τα μηνύματα σφάλματος συχνά παραβλέπονται από τους χρήστες σε μια ιστοσελίδα, επιστρατεύτηκε η χρήση αυτού του στοιχείου του bootstrap, για να ενημερώνεται ο χρήστης για κάτι που πρέπει να ξέρει και να δώσει προσοχή. Για το παράθυρο σφάλματος γίνεται έλεγχος στην μεταβλητή $_GET[ error ] και αν υπάρχει αυτή η μεταβλητή, τότε γράφεται το κατάλληλο μήνυμα λάθους και εμφανίζεται το παράθυρο με τον εξής τρόπο: Εάν η $_GET[ error ] έχει τιμή τότε γράφτηκε μέσω της PHP ο κατάλληλος κώδικας Javascript στην σελίδα έτσι ώστε να δημιουργηθεί το παράθυρο κι έπειτα, ανάλογα με τον αριθμό κωδικό λάθους που έχει η μεταβλητή, προσθέτεται και το κατάλληλο μήνυμα για να ενημερωθεί ο χρήστης τι πήγε στραβά. if (isset($_get['error'])) { echo "<script> $('#errormodal').modal(); $('#modalclose').click(function() { $('#errormodal').modal('hide'); ); </script>"; 15 Ένα παράθυρο τύπου modal είναι εκείνο το οποίο ο χρήστης πρέπει να αλληλεπιδράσει μαζί του πριν επιστρέψει στην εφαρμογή που το εμφάνισε. -56-

69 Καλώντας την συνάρτηση modal(); του στοιχείου $('#errormodal') εμφανίζεται το παράθυρο σφάλματος κι έπειτα προστέθηκε μια συνάρτηση στο κουμπί Close (το οποίο αναφέρεται από το id του ως $('#modalclose')) για να κρυφτεί το παράθυρο. Εικόνα 22: Το παράθυρο νίκης που εμφανίζεται όταν ο χρήστης τελειώσει με την δοκιμασία. Με την ίδια ακριβώς λογική δημιουργείται και εμφανίζεται το παράθυρο επιτυχίας, όταν ο παίχτης ολοκληρώσει όλα τα μέρη της δοκιμασίας. Ο κώδικας για το συγκεκριμένο παράθυρο έχει ήδη παρατεθεί στην ενότητα όπου αναφέρθηκε πως ακριβώς λειτουργεί αυτή η εργασία από την πλευρά του παιχνιδιού. Το περιεχόμενό του, δημιουργείται επίσης δυναμικά για να εμφανίσει του χρόνους του χρήστη κατά την επίλυση των δοκιμασιών κι ένα αστεράκι αν ο χρήστης επέλεξε να χρησιμοποιήσει ένα διαφορετικό τρόπο από αυτό που προτείνεται / πρέπει να χρησιμοποιήσει (βλέπε και ενότητα 4.3.4) -57-

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ «ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΔΙΑΔΡΑΣΤΙΚΗΣ ΔΙΑΔΙΚΤΥΑΚΗΣ ΕΦΑΡΜΟΓΗΣ ΓΙΑ ΤΗΝ ΕΞΥΠΗΡΕΤΗΣΗ ΑΣΘΕΝΩΝ ΣΥΜΒΕΒΛΗΜΕΝΟΥΣ ΜΕ ΤΟΝ Ε.Ο.Π.Υ.

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ «ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΔΙΑΔΡΑΣΤΙΚΗΣ ΔΙΑΔΙΚΤΥΑΚΗΣ ΕΦΑΡΜΟΓΗΣ ΓΙΑ ΤΗΝ ΕΞΥΠΗΡΕΤΗΣΗ ΑΣΘΕΝΩΝ ΣΥΜΒΕΒΛΗΜΕΝΟΥΣ ΜΕ ΤΟΝ Ε.Ο.Π.Υ. Τ.Ε.Ι ΚΑΒΑΛΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ «ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΔΙΑΔΡΑΣΤΙΚΗΣ ΔΙΑΔΙΚΤΥΑΚΗΣ ΕΦΑΡΜΟΓΗΣ ΓΙΑ ΤΗΝ ΕΞΥΠΗΡΕΤΗΣΗ ΑΣΘΕΝΩΝ» ΟΝΟΜΑΤΕΠΩΝΥΜΑ ΣΠΟΥΔΑΣΤΩΝ : ~ΔΕΛΗΓΙΑΝΝΗ ΚΥΡΙΑΚΗ, 1925~

Διαβάστε περισσότερα

Σεμινάριο joomla! 3. Διοργάνωση: Άλφα Εκπαιδευτική Εισηγητής: Μοτσενίγος Ιωάννης Ηλεκτρονικός Μηχανικός-Σύμβουλος Internet Marketing- Web Designer

Σεμινάριο joomla! 3. Διοργάνωση: Άλφα Εκπαιδευτική Εισηγητής: Μοτσενίγος Ιωάννης Ηλεκτρονικός Μηχανικός-Σύμβουλος Internet Marketing- Web Designer Σεμινάριο joomla! 3 Διοργάνωση: Άλφα Εκπαιδευτική Εισηγητής: Μοτσενίγος Ιωάννης Ηλεκτρονικός Μηχανικός-Σύμβουλος Internet Marketing- Web Designer Ξεκινώντας:Τι είναι τα CMS Η Joomla είναι λογισμικό κατασκευής

Διαβάστε περισσότερα

hel-col@otenet.gr Κωνσταντίνος Παρασκευόπουλος Καθηγητής Πληροφορικής (ΠΕ19 MSc) Ελληνικό Κολλέγιο Θεσσαλονίκης kparask@hellenic-college.

hel-col@otenet.gr Κωνσταντίνος Παρασκευόπουλος Καθηγητής Πληροφορικής (ΠΕ19 MSc) Ελληνικό Κολλέγιο Θεσσαλονίκης kparask@hellenic-college. Χρήση της Διεπαφής Προγραμματισμού Εφαρμογής Google Maps για τη δημιουργία διαδραστικού χάρτη με τα Μνημεία Παγκόσμιας Πολιτιστικής Κληρονομιάς της ΟΥΝΕΣΚΟ στη Θεσσαλονίκη Εμμανουήλ Τσάμης 1, Κωνσταντίνος

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 1: 1 Εισαγωγή, Χρήσιμες Εφαρμογές

ΕΡΓΑΣΤΗΡΙΟ 1: 1 Εισαγωγή, Χρήσιμες Εφαρμογές ΕΡΓΑΣΤΗΡΙΟ 1: 1 Εισαγωγή, Χρήσιμες Εφαρμογές Σκοπός του εργαστηρίου αυτού είναι η εξοικείωση με κάποιες εφαρμογές που θα μας φανούν πολύ χρήσιμες κατά τη διάρκεια του μαθήματος της Εισαγωγής στον Προγραμματισμό.

Διαβάστε περισσότερα

Μια καλή επιλογή θα ήταν www.epipla-onomasas.gr (χωρίζοντας τις λέξεις με παύλα -) ή

Μια καλή επιλογή θα ήταν www.epipla-onomasas.gr (χωρίζοντας τις λέξεις με παύλα -) ή Τι είναι ένα CMS CMS ή Σύστημα Διαχείρισης Περιεχομένου (Content Management System) ονομάζουμε ένα λογισμικό που μας βοηθά να ελέγχουμε και να διαχειριζόμαστε έναν ιστότοπο δημόσιας ή περιορισμένης πρόσβασης.

Διαβάστε περισσότερα

Εργαλεία ανάπτυξης εφαρμογών internet Ι

Εργαλεία ανάπτυξης εφαρμογών internet Ι IEK ΟΑΕΔ ΚΑΛΑΜΑΤΑΣ ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΟΦΟΡΙΚΗΣ Εργαλεία ανάπτυξης εφαρμογών internet Ι Διδάσκουσα: Κανελλοπούλου Χριστίνα ΠΕ19 Πληροφορικής Εργαλεία και τεχνικές από την πλευρά του πελάτη Java Applet

Διαβάστε περισσότερα

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy Σ ε λ ί δ α 1 Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy Περιεχόμενα 1. Download Arebas Easy... 2 2. Εγκατάσταση Arebas Easy... 3 3. Εγγραφή στον Arebas Server... 7 4. Παραμετροποίηση Arebas Easy...

Διαβάστε περισσότερα

ΟΔΗΓΟΣ ΑΡΧΑΡΙΩΝ. Περιεχόμενα

ΟΔΗΓΟΣ ΑΡΧΑΡΙΩΝ. Περιεχόμενα ΟΔΗΓΟΣ ΑΡΧΑΡΙΩΝ Περιεχόμενα 1) Εισαγωγή 2) Οδηγός εγγραφής στο site της PCnews 3) Βρείτε τα καλύτερα του site Γίνετε φίλοι μας στο Facebook 4) Σχετικά με τον τύπο αρχείου PDF - 1 - Εισαγωγή Καλωσορίσατε

Διαβάστε περισσότερα

5 ο ΚΕΦΑΛΑΙΟ: ΠΡΑΚΤΙΚΟ ΚΟΜΜΑΤΙ

5 ο ΚΕΦΑΛΑΙΟ: ΠΡΑΚΤΙΚΟ ΚΟΜΜΑΤΙ 5 ο ΚΕΦΑΛΑΙΟ: ΠΡΑΚΤΙΚΟ ΚΟΜΜΑΤΙ 5.1 Εισαγωγή Το πρακτικό κομμάτι της πτυχιακής μας εργασίας αφορά την δημιουργία μιας λειτουργικής ιστοσελίδας με την χρήση της πλατφόρμας του Weebly, που αποτελεί μια σύγχρονη

Διαβάστε περισσότερα

«Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr»

«Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr» Επεξήγηση web site με λογικό διάγραμμα «Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr» Web : www.e-base.gr E-mail : support@e-base.gr Facebook : Like Twitter : @ebasegr Πολλοί άνθρωποι

Διαβάστε περισσότερα

Εγκατάσταση Joomla 1. Στο Π.Σ.Δ. (www.sch.gr) 2. Τοπικά 3. Σε δωρεάν Server

Εγκατάσταση Joomla 1. Στο Π.Σ.Δ. (www.sch.gr) 2. Τοπικά 3. Σε δωρεάν Server Γεώργιος Χρ. Μακρής Εγκατάσταση Joomla 1. Στο Π.Σ.Δ. (www.sch.gr) 2. Τοπικά 3. Σε δωρεάν Server 2012 Γ ε ώ ρ γ ι ο ς Χ ρ. Μ α κ ρ ή ς ( h t t p : / / u s e r s. s c h. g r / g m a k r i s ) Περιεχόμενα

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα για τη γλώσσα C: τον gcc μεταγλωττιστή της C σε περιβάλλον

Διαβάστε περισσότερα

Πρωτόκολλα Επικοινωνίας και Τείχος Προστασίας

Πρωτόκολλα Επικοινωνίας και Τείχος Προστασίας Β5.1.2 Πρωτόκολλα Επικοινωνίας και Τείχος Προστασίας Τι θα μάθουμε σήμερα: Να ορίζουμε τι είναι πρωτόκολλο επικοινωνίας Να εξηγούμε τη χρησιμότητα των πρωτοκόλλων επικοινωνίας Να ονομάζουμε τα σημαντικότερα

Διαβάστε περισσότερα

XAMPP Apache MySQL PHP javascript xampp

XAMPP Apache MySQL PHP javascript xampp XAMPP Το xampp είναι ένα δωρεάν πρόγραμμα με το οποίο μπορούμε να κάνουμε εγκατάσταση τον Apache, τη MySQL και την PHP. Apache. Ο Apache είναι ένας Web Server. Είναι δηλαδή πρόγραμμα το οποίο τρέχει μόνιμα

Διαβάστε περισσότερα

1 ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΑΣ ΓΕΩΠΟΝΙΑΣ - ΤΜΗΜΑ ΦΥΤΙΚΗΣ ΠΑΡΑΓΩΓΗΣ

1 ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΑΣ ΓΕΩΠΟΝΙΑΣ - ΤΜΗΜΑ ΦΥΤΙΚΗΣ ΠΑΡΑΓΩΓΗΣ 1 2 Περιεχόμενα 1. Εισαγωγή... 5 2. Επεξήγηση των εργαλείων που χρησιμοποιήθηκαν για την δημιουργία της ιστοσελίδας... 6 2.1 Γλώσσα προγραμματισμού ΗΤML για την δημιουργία της Ιστοσελίδας... 6 2.2 Γλώσσα

Διαβάστε περισσότερα

ΤΟ ΙΝΤΕΡΝΕΤ ΚΩΣΤΗΣ ΚΙΤΣΟΠΟΥΛΟΣ Α 2

ΤΟ ΙΝΤΕΡΝΕΤ ΚΩΣΤΗΣ ΚΙΤΣΟΠΟΥΛΟΣ Α 2 ΤΟ ΙΝΤΕΡΝΕΤ ΚΩΣΤΗΣ ΚΙΤΣΟΠΟΥΛΟΣ Α 2 ΤΙ ΕΙΝΑΙ ΤΟ INTERNET Το Internet είναι ένα πλέγμα από εκατομμύρια διασυνδεδεμένους υπολογιστές που εκτείνεται σχεδόν σε κάθε γωνιά του πλανήτη και παρέχει τις υπηρεσίες

Διαβάστε περισσότερα

Παρουσίαση υπηρεσιών Τηλεδιάσκεψης και Aσύγχρονης εξ αποστάσεως εκπαίδευσης στο Πανελλήνιο Σχολικό Δίκτυο

Παρουσίαση υπηρεσιών Τηλεδιάσκεψης και Aσύγχρονης εξ αποστάσεως εκπαίδευσης στο Πανελλήνιο Σχολικό Δίκτυο Παρουσίαση υπηρεσιών Τηλεδιάσκεψης και Aσύγχρονης εξ αποστάσεως εκπαίδευσης στο Πανελλήνιο Σχολικό Δίκτυο Δρ. Αύγουστος Τσινάκος ΠΛΗΝΕΤ Δυτικής Θεσ/νίκης tsinakos@uom.gr Παν. Μακεδονίας Ομάδα Εργασίας

Διαβάστε περισσότερα

ΟΔΗΓΟΣ ΧΡΗΣΗΣ(ΜΑΝUΑL) ΔΙΑΧΕΙΡΙΣΤΗ-ΧΡΗΣΤΗ.

ΟΔΗΓΟΣ ΧΡΗΣΗΣ(ΜΑΝUΑL) ΔΙΑΧΕΙΡΙΣΤΗ-ΧΡΗΣΤΗ. ΟΔΗΓΟΣ ΧΡΗΣΗΣ(ΜΑΝUΑL) ΔΙΑΧΕΙΡΙΣΤΗ-ΧΡΗΣΤΗ. Οδηγός Διαχειριστή Το m-learning Toolkit είναι μια ολοκληρωμένη πλατφόρμα εξ αποστάσεως εκπαίδευσης που έχει σχεδιαστεί για να υπάρχει η δυνατότητα της πρόσβασης

Διαβάστε περισσότερα

Προγραμματισμός διαδικτυακών εφαρμογών με PHP

Προγραμματισμός διαδικτυακών εφαρμογών με PHP ΕΣΔ516: Τεχνολογίες Διαδικτύου Προγραμματισμός διαδικτυακών εφαρμογών με PHP Ερωτήματα μέσω Περιεχόμενα Περιεχόμενα Λογισμικό για εφαρμογές Web Η τριεπίπεδη αρχιτεκτονική (3-tier architecture) Εισαγωγή

Διαβάστε περισσότερα

Πλοήγηση www / Με τον Internet Explorer

Πλοήγηση www / Με τον Internet Explorer Πλοήγηση www / Με τον Internet Explorer Περιεχόμενα 1.Eισαγωγή 2.Το περιβάλλον του Internet Explorer 3.Οδηγίες πλοήγησης 4.Αποθήκευση αρχείων 5.Αγαπημένα 6.Ασφαλής σύνδεση 7.Διακομιστής μεσολάβησης 1.Εισαγωγή

Διαβάστε περισσότερα

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή 1 Πίνακας Περιεχομένων 1. Εισαγωγή... 4 1.1 Περιβάλλον Moodle...4 1.2 Χρήση ονόματος χρήστη και κωδικού...4 1.3 Δημιουργία νέου μαθήματος...4 1.3.1

Διαβάστε περισσότερα

Φύλλα εργασίας. MicroWorlds Pro. Πολυμεσικές Εφαρμογές με την χρήση της γλώσσας LOGO Στο Γυμνάσιο. Β. Χ. Χρυσοχοΐδης

Φύλλα εργασίας. MicroWorlds Pro. Πολυμεσικές Εφαρμογές με την χρήση της γλώσσας LOGO Στο Γυμνάσιο. Β. Χ. Χρυσοχοΐδης Φύλλα εργασίας MicroWorlds Pro Πολυμεσικές Εφαρμογές με την χρήση της γλώσσας LOGO Στο Γυμνάσιο Β. Χ. Χρυσοχοΐδης Πρόεδρος Συλλόγου Εκπαιδευτικών Πληροφορικής Φλώρινας 2 «Σχεδίαση και ανάπτυξη δραστηριοτήτων

Διαβάστε περισσότερα

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ... 2 ΠΡΟΛΟΓΟΣ... 3 ΕΙΣΑΓΩΓΗ... 4 ΤΑ ΚΟΥΜΠΙΑ ΚΑΙ ΤΑ ΜΠΛΟΚ... 6 ΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ ΤΟΥΣ ΚΙΝΗΤΗΡΕΣ... 9 ΚΙΝΗΣΕΙΣ ΚΙΝΗΤΗΡΑ...

ΠΕΡΙΕΧΟΜΕΝΑ... 2 ΠΡΟΛΟΓΟΣ... 3 ΕΙΣΑΓΩΓΗ... 4 ΤΑ ΚΟΥΜΠΙΑ ΚΑΙ ΤΑ ΜΠΛΟΚ... 6 ΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ ΤΟΥΣ ΚΙΝΗΤΗΡΕΣ... 9 ΚΙΝΗΣΕΙΣ ΚΙΝΗΤΗΡΑ... ΒΑΣΙΚΑ ΜΑΘΗΜΑΤΑ ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ... 2 ΠΡΟΛΟΓΟΣ... 3 ΕΙΣΑΓΩΓΗ... 4 Η ΑΝΑΠΤΥΞΗ ΤΗΣ ΟΘΟΝΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ... 4 Ο ΕΚΠΑΙΔΕΥΤΗΣ ΡΟΜΠΟΤ... 5 ΤΟ ΠΑΡΑΘΥΡΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ... 5 ΤΑ ΚΟΥΜΠΙΑ ΚΑΙ ΤΑ ΜΠΛΟΚ...

Διαβάστε περισσότερα

Περιεχόμενα. Δημιουργία σύνδεσης... 27 5. ΤΙ ΕΙΝΑΙ ΙΣΤΟΣΕΛΙΔΕΣ ΚΑΙ ΤΙ ΤΟΠΟΘΕΣΙΕΣ ΙΣΤΟΥ... 37. Γνωριμία με μια ιστοσελίδα:... 38

Περιεχόμενα. Δημιουργία σύνδεσης... 27 5. ΤΙ ΕΙΝΑΙ ΙΣΤΟΣΕΛΙΔΕΣ ΚΑΙ ΤΙ ΤΟΠΟΘΕΣΙΕΣ ΙΣΤΟΥ... 37. Γνωριμία με μια ιστοσελίδα:... 38 Περιεχόμενα ΠΡΟΛΟΓΟΣ... 11 ΔΙΑΔΙΚΤΥΟ... 13 1. ΙΣΤΟΡΙΑ ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ... 15 2. ΤΙ ΕΙΝΑΙ ΤΟ ΔΙΑΔΙΚΤΥΟ INTERNET;... 16 3. ΤΙ ΠΡΟΣΦΕΡΕΙ ΤΟ ΔΙΑΔΙΚΤΥΟ, ΤΙ ΜΠΟΡΕΙ ΝΑ ΒΡΕΙ ΚΑΝΕΙΣ... 19 4. ΤΙ ΑΠΑΙΤΕΙΤΑΙ ΓΙΑ ΝΑ

Διαβάστε περισσότερα

Εγχειρίδιο Χρήσης-Οδηγός Εκπαίδευσης Χρηστών. - Δήμος Δέλτα - Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης

Εγχειρίδιο Χρήσης-Οδηγός Εκπαίδευσης Χρηστών. - Δήμος Δέλτα - Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ανάπτυξη διαδικτυακής εφαρμογής υποστήριξης των δράσεων περιβαλλοντικής διαχείρισης της παράκτιας ζώνης του Θερμαϊκού Κόλπου και διαδραστικής εφαρμογής αναφοράς περιβαλλοντικών προβλημάτων Εγχειρίδιο Χρήσης-Οδηγός

Διαβάστε περισσότερα

Μανώλης Κιαγιάς, MSc. Aiolos Project. Αρχικές Ρυθμίσεις SSH και εγκατάσταση OpenMPI

Μανώλης Κιαγιάς, MSc. Aiolos Project. Αρχικές Ρυθμίσεις SSH και εγκατάσταση OpenMPI Μανώλης Κιαγιάς, MSc Aiolos Project Αρχικές Ρυθμίσεις SSH και εγκατάσταση OpenMPI Χανιά, 2015 2 (C) 2014 Μανώλης Κιαγιάς, manolis@freebsd.org Το παρόν έργο διατίθεται υπό τους όρους της Άδειας: Αναφορά

Διαβάστε περισσότερα

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ Σε δίκτυο υπολογιστών εμπιστευτική πληροφορία μπορεί να υπάρχει αποθηκευμένη σε μέσα αποθήκευσης (σκληροί δίσκοι, μνήμες κ.λ.π.), ή να κυκλοφορεί μέσου του δικτύου με τη μορφή πακέτων. Η ύπαρξη πληροφοριών

Διαβάστε περισσότερα

ΜΑΘΗΜΑ: Εργαλεία Ανάπτυξης εφαρμογών internet.

ΜΑΘΗΜΑ: Εργαλεία Ανάπτυξης εφαρμογών internet. ΜΑΘΗΜΑ: Εργαλεία Ανάπτυξης εφαρμογών internet. ΩΡΕΣ ΔΙΔΑΣΚΑΛΙΑΣ: ΕΙΔΟΣ ΜΑΘΗΜΑΤΟΣ: Μικτό Γενικός σκοπός είναι να αποκτήσει ο καταρτιζόμενος τις αναγκαίες γνώσεις σχετικά με εργαλεία και τις τεχνικές για

Διαβάστε περισσότερα

Μπορείτε τα δείτε βιντεάκι με τη διαδικασία εδώ: http://www.greektuts.net/greek-in-joomla/

Μπορείτε τα δείτε βιντεάκι με τη διαδικασία εδώ: http://www.greektuts.net/greek-in-joomla/ 1) Εμφάνιση ιστοσελίδας Ανοίγουμε το πρόγραμμα πλοήγησης (Firefox, Chrome, Internet Explorer κτλ) και στη γραμμή διευθύνσεων πληκτρολογούμε τη διεύθυνση http://localhost ή http://127.0.0.1. Αν δεν βλέπουμε

Διαβάστε περισσότερα

Εισαγωγή 6. Δημιουργία λογαριασμού 13. Εγκατάσταση και λειτουργία του Skype 28. Βασικές λειτουργίες 32. Επιλογές συνομιλίας 48

Εισαγωγή 6. Δημιουργία λογαριασμού 13. Εγκατάσταση και λειτουργία του Skype 28. Βασικές λειτουργίες 32. Επιλογές συνομιλίας 48 ΠΕΡΙΕΧΟΜΕΝΑ Εισαγωγή 6 Δημιουργία λογαριασμού 13 Εγκατάσταση και λειτουργία του Skype 28 Βασικές λειτουργίες 32 Επιλογές συνομιλίας 48 Γενικές ρυθμίσεις Skype 64 Το Skype σε φορητές συσκευές 78 Εγγραφή

Διαβάστε περισσότερα

Αν Ναι, δείτε πως με το λογισμικό axes μπορείτε!

Αν Ναι, δείτε πως με το λογισμικό axes μπορείτε! Θέλετε να μάθετε πως μπορείτε να έχετε πρόσβαση στις 5250 οθόνες μέσω browser, χωρίς αλλαγή στις υπάρχουσες εφαρμογές και χωρίς εγκατάσταση στον client? Αν Ναι, δείτε πως με το λογισμικό axes μπορείτε!

Διαβάστε περισσότερα

Θέμα: «Διαδικτιακές Εφαρμογές Μελέτης Ευχρηστίας»

Θέμα: «Διαδικτιακές Εφαρμογές Μελέτης Ευχρηστίας» Θέμα: «Διαδικτιακές Εφαρμογές Μελέτης Ευχρηστίας» Επιβλέπων: Συρμακέσης Σπύρος e-mail: syrma@teimes.gr τηλ: 26310-XXXXX Στόχος είναι η εκμάθηση εργαλείων ελέγχου ευχρηστίας στο διαδίκτυο. Βιβλιογραφική

Διαβάστε περισσότερα

7.11 Πρωτόκολλα Εφαρµογής. 7.11.2 Βασικές και Προηγµένες Υπηρεσίες ιαδικτύου. Ηλεκτρονικό Ταχυδροµείο. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

7.11 Πρωτόκολλα Εφαρµογής. 7.11.2 Βασικές και Προηγµένες Υπηρεσίες ιαδικτύου. Ηλεκτρονικό Ταχυδροµείο. Τεχνολογία ικτύων Επικοινωνιών ΙΙ Τεχνολογία ικτύων Επικοινωνιών ΙΙ 7.11 Πρωτόκολλα Εφαρµογής 104. Αναφέρετε ονοµαστικά τις πιο χαρακτηριστικές εφαρµογές που υποστηρίζει η τεχνολογία TCP/IP οι οποίες είναι διαθέσιµες στο ιαδίκτυο 1. Ηλεκτρονικό

Διαβάστε περισσότερα

ΔΡΑΣΤΗΡΙΟΤΗΤΕΣ. Κωδικός Τίτλος Επίπεδο

ΔΡΑΣΤΗΡΙΟΤΗΤΕΣ. Κωδικός Τίτλος Επίπεδο ΔΡΑΣΤΗΡΙΟΤΗΤΕΣ Ενότητα: Υποενότητα: Διαδικτυακές Υπηρεσίες κι Εφαρμογές Υ8 - Δημοτικοί Ιστότοποι / Google Sites Λίστα Δραστηριοτήτων Κωδικός Τίτλος Επίπεδο Υ8.Δ1 Αναζήτηση δημοτικών ιστοτόπων και αξιολόγηση

Διαβάστε περισσότερα

Εργασία για το Facility Game Μάθημα: Δομές Δεδομένων 2013-2014. Σωτήρης Γυφτόπουλος

Εργασία για το Facility Game Μάθημα: Δομές Δεδομένων 2013-2014. Σωτήρης Γυφτόπουλος Εργασία για το Facility Game Μάθημα: Δομές Δεδομένων 2013-2014 Σωτήρης Γυφτόπουλος Κανόνες του Facility Game (1/4) Στο Facility Game υπάρχει ένα σύνολο κόμβων που συνδέονται «σειριακά» και κάθε κόμβος

Διαβάστε περισσότερα

Οδηγός Χρήσης της Υπηρεσίας Τηλεομοιότυπου (RightFax Fax Service) Web Utility. (διαδικτυακή εφαρμογή)

Οδηγός Χρήσης της Υπηρεσίας Τηλεομοιότυπου (RightFax Fax Service) Web Utility. (διαδικτυακή εφαρμογή) ΥΠΗΡΕΣΙΑ ΠΛΗΡΟΦΟΡΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΟΜΕΑΣ ΔΙΚΤΥΩΝ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ Οδηγός Χρήσης της Υπηρεσίας Τηλεομοιότυπου (RightFax Fax Service) Web Utility (διαδικτυακή εφαρμογή) Αύγουστος 2011 ΠΕΡΙΕΧΟΜΕΝΑ 1. Πρόσβαση

Διαβάστε περισσότερα

Το νέο Twinspace. Ελληνική Υπηρεσία Υποστήριξης της δράσης etwinning. Ιστότοπος: http://etwinning.sch.gr email: etwinning@sch.gr

Το νέο Twinspace. Ελληνική Υπηρεσία Υποστήριξης της δράσης etwinning. Ιστότοπος: http://etwinning.sch.gr email: etwinning@sch.gr Το νέο Twinspace Η συνεργατική πλατφόρμα του etwinning, εργαλείο για την κοινωνική δικτύωση, την επικοινωνία των εκπαιδευτικών και τη διαχείριση ενός έργου etwinning Ελληνική Υπηρεσία Υποστήριξης της δράσης

Διαβάστε περισσότερα

Πώς γίνεται το debug? Το debug γίνεται με δύο τρόπους, ως επί το πλείστον. Τουλάχιστον, εγώ δύο έμαθα, και αυτούς αναφέρω.

Πώς γίνεται το debug? Το debug γίνεται με δύο τρόπους, ως επί το πλείστον. Τουλάχιστον, εγώ δύο έμαθα, και αυτούς αναφέρω. Τι είναι το debug μαμα? Με απλά λόγια, debug (αποσφαλμάτωση αλλά που να κάθεσαι να το πεις), είναι η διαδικασία εντοπισμού και διόρθωσης σφαλμάτων που υπάρχουν σε κώδικα (ασχέτως γλώσσας προγραμματισμού).

Διαβάστε περισσότερα

8.3.4 Τεχνικές Ασφάλειας Συμμετρική Κρυπτογράφηση Ασυμμετρική Κρυπτογράφηση Ψηφιακές Υπογραφές

8.3.4 Τεχνικές Ασφάλειας Συμμετρική Κρυπτογράφηση Ασυμμετρική Κρυπτογράφηση Ψηφιακές Υπογραφές Κεφάλαιο 8 8.3.4 Τεχνικές Ασφάλειας Συμμετρική Κρυπτογράφηση Ασυμμετρική Κρυπτογράφηση Ψηφιακές Υπογραφές Σελ. 320-325 Γεώργιος Γιαννόπουλος ΠΕ19, ggiannop (at) sch.gr http://diktya-epal-g.ggia.info/ Creative

Διαβάστε περισσότερα

e-κπαίδευση Πλατφόρµα Ασύγχρονης Τηλε-κπαίδευσης Οδηγίες χρήσης για τους σπουδαστές του ΤΕΙ Αθήνας και τους επισκέπτες της δικτυακής πύλης e-κπαίδευση

e-κπαίδευση Πλατφόρµα Ασύγχρονης Τηλε-κπαίδευσης Οδηγίες χρήσης για τους σπουδαστές του ΤΕΙ Αθήνας και τους επισκέπτες της δικτυακής πύλης e-κπαίδευση e-κπαίδευση Πλατφόρµα Ασύγχρονης Τηλε-κπαίδευσης Οδηγίες χρήσης για τους σπουδαστές του ΤΕΙ Αθήνας και τους επισκέπτες της δικτυακής πύλης e-κπαίδευση - 0 - Πίνακας Περιεχοµένων 1 Εισαγωγή.. 2 1.1 Σχολές/Τµήµατα

Διαβάστε περισσότερα

Σενάριο 15: Ενεργός Μετεωρολογικός Χάρτης

Σενάριο 15: Ενεργός Μετεωρολογικός Χάρτης Σενάριο 15: Ενεργός Μετεωρολογικός Χάρτης Ταυτότητα Σεναρίου Τίτλος : Ενεργός Μετεωρολογικός Χάρτης Γνωστικό Αντικείμενο: Εφαρμογές Πληροφορικής-Υπολογιστών Διδακτική Ενότητα: Διερευνώ - Δημιουργώ Ανακαλύπτω,

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6.1 Τι ονοµάζουµε πρόγραµµα υπολογιστή; Ένα πρόγραµµα

Διαβάστε περισσότερα

Cubitech Hellas Ακροπόλεως 24, Καλλιθέα, Αθήνα Τ.Κ. 176 75, Ελλάδα, Τηλ. 210 9580887-8 Φαξ.2109580885

Cubitech Hellas Ακροπόλεως 24, Καλλιθέα, Αθήνα Τ.Κ. 176 75, Ελλάδα, Τηλ. 210 9580887-8 Φαξ.2109580885 CubisLITE Client Οδηγίες Χρήσεως Cubitech Hellas Ακροπόλεως 24, Καλλιθέα, Αθήνα Τ.Κ. 176 75, Ελλάδα, Τηλ. 210 9580887-8 Φαξ.2109580885 1 ΠΕΡΙΕΧΟΜΕΝΑ Γενικά 1. Τι είναι ο CubisLITE Server 2. Τι είναι ο

Διαβάστε περισσότερα

Παράρτημα A: PHP, HTML φόρμες και το πρωτόκολλο HTTP.

Παράρτημα A: PHP, HTML φόρμες και το πρωτόκολλο HTTP. Εργαστήριο #5 Τι πρέπει να έχετε ολοκληρώσει από το προηγούμενο εργαστήριο. Θα πρέπει να ξέρετε να εισάγετε ένα βασικό πρόγραμμα PHP μέσα σε μια ιστοσελίδα, τη χρήση της echo και τον χειρισμό απλών μεταβλητών

Διαβάστε περισσότερα

Λογισμικό διδασκαλίας των μαθηματικών της Γ Τάξης Γυμνασίου

Λογισμικό διδασκαλίας των μαθηματικών της Γ Τάξης Γυμνασίου Λογισμικό διδασκαλίας των μαθηματικών της Γ Τάξης Γυμνασίου Δρ. Βασίλειος Σάλτας 1, Αλέξης Ηλιάδης 2, Ιωάννης Μουστακέας 3 1 Διδάκτωρ Διδακτικής Μαθηματικών, Επιστημονικός Συνεργάτης ΑΣΠΑΙΤΕ Σαπών coin_kav@otenet.gr

Διαβάστε περισσότερα

Open eclass 2.2 - Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης

Open eclass 2.2 - Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης Open eclass 2.2 - Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης Οδηγίες Αναβάθμισης (Upgrade) Ομάδα Εργασίας: Τσιμπάνης Κωνσταντίνος, Εξηνταρίδης Γιάννης Αθήνα, 30 Σεπτεμβρίου 2009 Εισαγωγή Η πλατφόρμα Open eclass

Διαβάστε περισσότερα

Αντί προλόγου. 1. Τι είναι το Twitter;

Αντί προλόγου. 1. Τι είναι το Twitter; Περιεχόµενα Αντί προλόγου...7 Πώς να χρησιµοποιήσετε το βιβλίο...13 Κεφάλαιο 1: Πώς δηµιουργώ τον λογαριασµό µου στο Twitter;...15 Κεφάλαιο 2: Πώς µπορώ να συνδεθώ και να αποσυνδεθώ από το Twitter;...37

Διαβάστε περισσότερα

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει;

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει; ΜΑΘΗΜΑ 7 Κλήση αλγορίθμου από αλγόριθμο Αναδρομή Σ χ ο λ ι κ ο Β ι β λ ι ο ΥΠΟΚΕΦΑΛΑΙΟ 2.2.7: ΕΝΤΟΛΕΣ ΚΑΙ ΔΟΜΕΣ ΑΛΓΟΡΙΘΜΟΥ ΠΑΡΑΓΡΑΦΟI 2.2.7.5: Κλήση αλγορίθμου από αλγόριθμο 2.2.7.6: Αναδρομή εισαγωγη

Διαβάστε περισσότερα

Διαδικτυακή Πύλη (web portal) ΟΔΗΓΟΣ ΧΡΗΣΗΣ System Συμβουλευτική Α.Ε

Διαδικτυακή Πύλη (web portal) ΟΔΗΓΟΣ ΧΡΗΣΗΣ System Συμβουλευτική Α.Ε σχετικά με τον έλεγχο της καπνιστικής συνήθειας 1 21 Λογισμικές εφαρμογές καταγραφής και αξιοποίησης πληροφοριών σχετικά με τον έλεγχο της καπνιστικής συνήθειας Διαδικτυακή Πύλη (web portal) ΟΔΗΓΟΣ ΧΡΗΣΗΣ

Διαβάστε περισσότερα

Εφαρµογή: Σύστηµα ιαχείρισης ιαδικτυακού Περίπτερου / Ιστοσελίδας στον διαδικτυακό τόπο kalliergea.gr

Εφαρµογή: Σύστηµα ιαχείρισης ιαδικτυακού Περίπτερου / Ιστοσελίδας στον διαδικτυακό τόπο kalliergea.gr ..χτίζουµε την ιστοσελίδα σας στο Internet www.kalliergea.gr Λάουρα Π. Καζακράντε «Καλλιεργαία» Πληροφορική - Internet - ιαφήµιση - Μεταφράσεις Τηλ.: 211 0104925, 695 6118589 Email: info@kalliergea.gr

Διαβάστε περισσότερα

Ημερομηνία Παράδοσης: 4/4/2013

Ημερομηνία Παράδοσης: 4/4/2013 Δράση 9.14 / Υπηρεσία εντοπισμού λογοκλοπής Κυρίως Παραδοτέο / Σχεδιασμός και ανάπτυξη λογισμικού (λογοκλοπής) και βάσης δεδομένων (αποθετηρίου) Επιμέρους Παραδοτέο 9.14.1.4 / Πληροφοριακό σύστημα υπηρεσίας

Διαβάστε περισσότερα

Εγκατάσταση Λογαριασμού Αλληλογραφίας στο ελληνικό Outlook Express Περιεχόμενα

Εγκατάσταση Λογαριασμού Αλληλογραφίας στο ελληνικό Outlook Express Περιεχόμενα Εγκατάσταση Λογαριασμού Αλληλογραφίας στο ελληνικό Outlook Express Περιεχόμενα 1. Εισαγωγή 2. Εγκατάσταση λογαριασμού 3. Οδηγίες χρήσης 4. Ανάγνωση ελληνικών 1. Εισαγωγή Σ αυτό το εγχειρίδιο αναγράφονται

Διαβάστε περισσότερα

Εισαγωγή στην επιστήμη των υπολογιστών. Υλικό Υπολογιστών Κεφάλαιο 6ο ίκτυα υπολογιστών

Εισαγωγή στην επιστήμη των υπολογιστών. Υλικό Υπολογιστών Κεφάλαιο 6ο ίκτυα υπολογιστών Εισαγωγή στην επιστήμη των υπολογιστών Υλικό Υπολογιστών Κεφάλαιο 6ο ίκτυα υπολογιστών 1 ίκτυα μικρά και μεγάλα Ένα δίκτυο υπολογιστών (computer network) είναι ένας συνδυασμός συστημάτων (δηλαδή, υπολογιστών),

Διαβάστε περισσότερα

Εγκατάσταση της έκδοσης 5.30

Εγκατάσταση της έκδοσης 5.30 Μελίσσια, 23 Φεβρουαρίου 2010 Εγκατάσταση της έκδοσης 5.30 Περιεχόμενα Φακέλου Ο φάκελος που παραλάβατε περιέχει 1 CD και τις οδηγίες που διαβάζετε. Αντίγραφα Ασφαλείας Λόγω των μετασχηματισμών που θα

Διαβάστε περισσότερα

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ Π.Σ. ΦΟΙΤΗΤΟΛΟΓΙΟΥ- ΓΙΑ ΤΟ ΔΙΔΑΣΚΟΝΤΑ (ClassWeb)

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ Π.Σ. ΦΟΙΤΗΤΟΛΟΓΙΟΥ- ΓΙΑ ΤΟ ΔΙΔΑΣΚΟΝΤΑ (ClassWeb) ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ Π.Σ. ΦΟΙΤΗΤΟΛΟΓΙΟΥ- ΓΙΑ ΤΟ ΔΙΔΑΣΚΟΝΤΑ (ClassWeb) 1. Είσοδος στην υπηρεσία ClassWeb Στη κεντρική σελίδα της υπηρεσίας στα πεδία Όνομα Χρήστη και Κωδικός πρόσβασης πληκτρολογούμε τα στοιχεία

Διαβάστε περισσότερα

Πλατφόρμα ηλεκτρονικής παρακολούθησης μαθημάτων εξ αποστάσεως Οδηγός Χρήστη www.schoolessons.gr

Πλατφόρμα ηλεκτρονικής παρακολούθησης μαθημάτων εξ αποστάσεως Οδηγός Χρήστη www.schoolessons.gr Πλατφόρμα ηλεκτρονικής παρακολούθησης μαθημάτων εξ αποστάσεως Οδηγός Χρήστη www.schoolessons.gr Σύντομη Περιγραφή Η πλατφόρμα ηλεκτρονικής παρακολούθησης μαθημάτων εξ αποστάσεως της δίνει τη δυνατότητα

Διαβάστε περισσότερα

IR-100 Προγραμματιζόμενο Τηλεχειριστήριο Οδηγίες Χρήσης

IR-100 Προγραμματιζόμενο Τηλεχειριστήριο Οδηγίες Χρήσης IR-100 Προγραμματιζόμενο Τηλεχειριστήριο Οδηγίες Χρήσης 1. Περιεχόμενα 1.Περιεχόμενα 2.Δομή των οδηγιών χρήσης 3.Αρχική εγκατάσταση του προϊόντος 3.1.Περιγραφή του συστήματος 3.2.Εγκατάσταση της συσκευής

Διαβάστε περισσότερα

ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΧΡΗΣΤΗ. Ηλεκτρονική Υποβολή Α.Π.Δ.

ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΧΡΗΣΤΗ. Ηλεκτρονική Υποβολή Α.Π.Δ. ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΧΡΗΣΤΗ Ηλεκτρονική Υποβολή Α.Π.Δ. ΠΕΡΙΕΧΟΜΕΝΑ 1) Είσοδος στην εφαρμογή 2) Δημιουργία Περιόδου Υποβολής 2.α) Ακύρωση Περιόδου Υποβολής 3) Μέθοδος Υποβολής: Συμπλήρωση Φόρμας 3.α) Συμπλήρωση

Διαβάστε περισσότερα

Σενάριο 13. Προγραμματίζοντας ένα Ρομπότ

Σενάριο 13. Προγραμματίζοντας ένα Ρομπότ Σενάριο 13. Προγραμματίζοντας ένα Ρομπότ Ταυτότητα Σεναρίου Τίτλος: Προγραμματίζοντας ένα Ρομπότ Γνωστικό Αντικείμενο: Πληροφορική Διδακτική Ενότητα: Ελέγχω-Προγραμματίζω τον Υπολογιστή Τάξη: Γ Γυμνασίου

Διαβάστε περισσότερα

Δραστηριότητα : Προστασία προσωπικών δεδομένων στο ΛΣ Windows 8

Δραστηριότητα : Προστασία προσωπικών δεδομένων στο ΛΣ Windows 8 Δραστηριότητα : Προστασία προσωπικών δεδομένων στο ΛΣ Windows 8 Επίπεδο: L1- Εύκολη Διάρκεια: 5 λεπτά Σύντομη Περιγραφή Όταν πλοηγούμαστε στον Ιστό, ο φυλλομετρητής (Browser) αποθηκεύει πληροφορίες για

Διαβάστε περισσότερα

ΟΔΗΓΟΣ ΕΓΚΑΤΑΣΤΑΣΗΣ ΠΙΣΤΟΠΟΙΗΤΙΚΟΥ ΑΣΦΑΛΕΙΑΣ WEBMAIL ΤΕΙ ΚΑΛΑΜΑΤΑΣ

ΟΔΗΓΟΣ ΕΓΚΑΤΑΣΤΑΣΗΣ ΠΙΣΤΟΠΟΙΗΤΙΚΟΥ ΑΣΦΑΛΕΙΑΣ WEBMAIL ΤΕΙ ΚΑΛΑΜΑΤΑΣ ΟΔΗΓΟΣ ΕΓΚΑΤΑΣΤΑΣΗΣ ΠΙΣΤΟΠΟΙΗΤΙΚΟΥ ΑΣΦΑΛΕΙΑΣ WEBMAIL ΠΕΡΙΕΧΟΜΕΝΑ 1. URL Διεύθυνση WebMail... 3 2. Εγκατάσταση Πιστοποιητικού Ασφάλειας... 3 2.1 Εγκατάσταση Πιστοποιητικού στον Internet Explorer... 3 2.2

Διαβάστε περισσότερα

Ως Διαδίκτυο (Internet) ορίζεται το παγκόσμιο (διεθνές) δίκτυο ηλεκτρονικών υπολογιστών (international network).

Ως Διαδίκτυο (Internet) ορίζεται το παγκόσμιο (διεθνές) δίκτυο ηλεκτρονικών υπολογιστών (international network). ΙΔΡΥΜΑ ΝΕΟΛΑΙΑΣ ΚΑΙ ΔΙΑ ΒΙΟΥ ΜΑΘΗΣΗΣ ΥΠΗΡΕΣΙΕΣ ΔΙΑΔΙΚΤΥΟΥ Καλαμάτα, 2015 Το Διαδίκτυο Ως Διαδίκτυο (Internet) ορίζεται το παγκόσμιο (διεθνές) δίκτυο ηλεκτρονικών υπολογιστών (international network). Πρόκειται

Διαβάστε περισσότερα

Ενημέρωση σε Windows 8.1 από τα Windows 8

Ενημέρωση σε Windows 8.1 από τα Windows 8 Ενημέρωση σε Windows 8.1 από τα Windows 8 Τα Windows 8.1 και τα Windows RT 8.1 είναι βασισμένα στα Windows 8 και στα Windows RT, για να σας προσφέρουν βελτιώσεις στην εξατομίκευση, την αναζήτηση, τις εφαρμογές,

Διαβάστε περισσότερα

723 Τεχνολογίας Πληροφορικής και Τηλεπικοινωνιών ΤΕΙ Λάρισας

723 Τεχνολογίας Πληροφορικής και Τηλεπικοινωνιών ΤΕΙ Λάρισας 723 Τεχνολογίας Πληροφορικής και Τηλεπικοινωνιών ΤΕΙ Λάρισας Το Τμήμα Τεχνολογίας Πληροφορικής και Τηλεπικοινωνιών του ΤΕΙ Λάρισας ιδρύθηκε με το Προεδρικό Διάταγμα 200/1999 (ΦΕΚ 179 06/09/99), με πρώτο

Διαβάστε περισσότερα

Bread Online. Παναγιώτης Ιωαννίδης Επιβλέπων καθηγητής: Μηνάς Δασυγένης

Bread Online. Παναγιώτης Ιωαννίδης Επιβλέπων καθηγητής: Μηνάς Δασυγένης Bread Online Σχεδιασμός και μετατροπή μιας απλής οικιακής συσκευής σε επαναπρογραμματιζόμενη συσκευή IP Παναγιώτης Ιωαννίδης Επιβλέπων καθηγητής: Μηνάς Δασυγένης Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών

Διαβάστε περισσότερα

ΗΛΕΚΤΡΟΝΙΚΟ ΣΥΣΤΗΜΑ ΥΠΟΒΟΛΗΣ ΜΗΧΑΝΟΓΡΑΦΙΚΟΥ ΔΕΛΤΙΟΥ

ΗΛΕΚΤΡΟΝΙΚΟ ΣΥΣΤΗΜΑ ΥΠΟΒΟΛΗΣ ΜΗΧΑΝΟΓΡΑΦΙΚΟΥ ΔΕΛΤΙΟΥ ΗΛΕΚΤΡΟΝΙΚΟ ΣΥΣΤΗΜΑ ΥΠΟΒΟΛΗΣ ΜΗΧΑΝΟΓΡΑΦΙΚΟΥ ΔΕΛΤΙΟΥ ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΥΠΟΨΗΦΙΟΥ ΓΕΛ & ΕΠΑΛ Β Έκδοση 1.0, Ιούνιος 2015 ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΥΠΟΥΡΓΕΙΟ ΠΟΛΙΤΙΣΜΟΥ, ΠΑΙΔΕΙΑΣ ΚΑΙ ΘΡΗΣΚΕΥΜΑΤΩΝ ΛΙΣΤΑ ΣΧΗΜΑΤΩΝ

Διαβάστε περισσότερα

Εγχειρίδιο εγκατάστασης και βασικής παραμετροποίησης σεναρίου εστίασης

Εγχειρίδιο εγκατάστασης και βασικής παραμετροποίησης σεναρίου εστίασης Εγχειρίδιο εγκατάστασης και βασικής παραμετροποίησης σεναρίου εστίασης Σε αυτό το εγχειρίδιο θα καλύψουμε τη μεθοδολογία εγκατάστασης ενός σεναρίου εστίασης από την αρχή έως το σημείο των βασικών ρυθμίσεων

Διαβάστε περισσότερα

ΔΙΔΑΣΚΑΛΙΑ ΤΗΣ ΕΝΝΟΙΑΣ ΤΟΥ ΟΡΙΟΥ ΣΥΝΑΡΤΗΣΗΣ

ΔΙΔΑΣΚΑΛΙΑ ΤΗΣ ΕΝΝΟΙΑΣ ΤΟΥ ΟΡΙΟΥ ΣΥΝΑΡΤΗΣΗΣ ΕΠΙΜΟΡΦΩΣΗ ΤΩΝ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΓΙΑ ΤΗΝ ΑΞΙΟΠΟΙΗΣΗ ΚΑΙ ΕΦΑΡΜΟΓΗ ΤΩΝ ΤΠΕ ΣΤΗ ΔΙΔΑΚΤΙΚΗ ΠΡΑΞΗ ΔΙΔΑΣΚΑΛΙΑ ΤΗΣ ΕΝΝΟΙΑΣ ΤΟΥ ΟΡΙΟΥ ΣΥΝΑΡΤΗΣΗΣ ΟΡΙΟ ΣΥΝΑΡΤΗΣΗΣ ΕΞ ΑΡΙΣΤΕΡΩΝ ΚΑΙ ΕΚ ΔΕΞΙΩΝ ΣΥΓΓΡΑΦΕΑΣ: ΚΟΥΤΙΔΗΣ ΙΩΑΝΝΗΣ

Διαβάστε περισσότερα

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12 Αρχιτεκτονικές κατανεμημένων συστημάτων Στόχοι Εξήγηση των πλεονεκτημάτων και των μειονεκτημάτων των αρχιτεκτονικών κατανεμημένων συστημάτων Εξέταση των αρχιτεκτονικών συστημάτων πελάτηδιακομιστή και των

Διαβάστε περισσότερα

ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ

ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ Μ. Γρηγοριάδου Ρ. Γόγουλου Ενότητα: Η Διδασκαλία του Προγραμματισμού Περιεχόμενα Παρουσίασης

Διαβάστε περισσότερα

Οδηγίες για κατέβασμα αρχείων - πινάκων συγκεκριμένης ιστοσελίδας Υπουργείου Εσωτερικών από Δήμους, Περιφέρειες και νομικά πρόσωπα αυτών:

Οδηγίες για κατέβασμα αρχείων - πινάκων συγκεκριμένης ιστοσελίδας Υπουργείου Εσωτερικών από Δήμους, Περιφέρειες και νομικά πρόσωπα αυτών: Οδηγίες για κατέβασμα αρχείων πινάκων συγκεκριμένης ιστοσελίδας Υπουργείου Εσωτερικών από Δήμους, Περιφέρειες και νομικά πρόσωπα αυτών: Για πρόσβαση στον ιστότοπο του Υπουργείου Εσωτερικών, θα χρειαστεί

Διαβάστε περισσότερα

Οδηγός ανάγνωσης αποστολής e-mail

Οδηγός ανάγνωσης αποστολής e-mail Οδηγός ανάγνωσης αποστολής e-mail «Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr» Web : www.e-base.gr E-mail : support@e-base.gr Facebook : Like Παρακάτω μπορείτε να μελετήσετε τον

Διαβάστε περισσότερα

ΣΥΝ ΕΣΗ Η/Υ ΣΤΟ LAN TOY ΙΟΝΙΟΥ ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ WINXP(ΕΛΛΗΝΙΚΑ)

ΣΥΝ ΕΣΗ Η/Υ ΣΤΟ LAN TOY ΙΟΝΙΟΥ ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ WINXP(ΕΛΛΗΝΙΚΑ) ΣΥΝ ΕΣΗ Η/Υ ΣΤΟ LAN TOY ΙΟΝΙΟΥ ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ WINXP(ΕΛΛΗΝΙΚΑ) 1.Εισαγωγή Για να µπορέσει ένας υπολογιστής να συνδεθεί στο τοπικό δίκτυο του Ιονίου θα πρέπει κατ' αρχήν να βρίσκεται σε

Διαβάστε περισσότερα

To λεξικό του Internet

To λεξικό του Internet To λεξικό του Internet A Address: Ο τόπος που βρίσκεται μια πηγή του Internet. Μια e-mail address μπορεί να έχει την εξής μορφή : georgepapado@hotmail.com. Μια web address είναι κάπως έτσι: http://www.in.gr.

Διαβάστε περισσότερα

Movie Maker (Δημιουργία βίντεο)

Movie Maker (Δημιουργία βίντεο) Movie Maker (Δημιουργία βίντεο) - Με πόσους τρόπους μπορούμε να διηγηθούμε μια ιστορία; - Μπορούμε να την πούμε ο ένας στον άλλο. - Μπορούμε να την γράψουμε. - Μπορούμε να τη ζωγραφίσουμε κομμάτι-κομμάτι.

Διαβάστε περισσότερα

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία Λειτουργικά Συστήματα Ι Καθηγήτρια Παπαδάκη Αναστασία 2013 1 Ηλεκτρονικός Υπολογιστής αποτελείται: 1. Από Υλικό Hardware (CPUs, RAM, Δίσκοι), & 2. Λογισμικό - Software Και μπορεί να εκτελέσει διάφορες

Διαβάστε περισσότερα

Internet Τοπικό δίκτυο LAN Δίκτυο Ευρείας Περιοχής WAN Διαδίκτυο Πρόγραμμα Πλοήγησης φυλλομετρητής Πάροχοι Υπηρεσιών Internet URL HTML links

Internet Τοπικό δίκτυο LAN Δίκτυο Ευρείας Περιοχής WAN Διαδίκτυο Πρόγραμμα Πλοήγησης φυλλομετρητής Πάροχοι Υπηρεσιών Internet URL HTML links Internet Τοπικό δίκτυο (LAN Local Area Network): Δίκτυο όπου οι υπολογιστές βρίσκονται κοντά μεταξύ τους (μία εταιρία ή στην ίδια αίθουσα). Δίκτυο Ευρείας Περιοχής (WAN Wide Area Network) Δίκτυο όπου οι

Διαβάστε περισσότερα

Αρχίζοντας. Το Joomla τρέχει: Στο Joomla μπορούμε να προσθέσουμε επιπλέον λειτουργικότητα, να την επεκτείνουμε δηλαδή (extensions) PHP MySql

Αρχίζοντας. Το Joomla τρέχει: Στο Joomla μπορούμε να προσθέσουμε επιπλέον λειτουργικότητα, να την επεκτείνουμε δηλαδή (extensions) PHP MySql Php και Joomla Ψηφιακό Περιεχόμενο & Επικοινωνίες Αρχίζοντας Το Joomla τρέχει: PHP MySql Στο Joomla μπορούμε να προσθέσουμε επιπλέον λειτουργικότητα, να την επεκτείνουμε δηλαδή (extensions) με την χρήση

Διαβάστε περισσότερα

K9 Γονικός έλεγχος. Εισαγωγή

K9 Γονικός έλεγχος. Εισαγωγή Εισαγωγή Το Κ9 αποτελεί ένα εύχρηστο πρόγραμμα γονικού ελέγχου με το οποίο μπορούμε να φιλτράρουμε τις δραστηριότητες του παιδιού μας στο Διαδίκτυο. Το παρόν αποτελεί ένα συνοπτικό οδηγό για την εγκατάσταση

Διαβάστε περισσότερα

ΑΡΧΕς ΛΕΙΤΟΥΡΓΙΑς CMS (Content Management System) ΚΑΙ ΕΦΑΡΜΟΓΗ ΤΟΥς ςε ΜΙΚΡΟΜΕςΑΙΕς ΕΠΙΧΕΙΡΗςΕΙς

ΑΡΧΕς ΛΕΙΤΟΥΡΓΙΑς CMS (Content Management System) ΚΑΙ ΕΦΑΡΜΟΓΗ ΤΟΥς ςε ΜΙΚΡΟΜΕςΑΙΕς ΕΠΙΧΕΙΡΗςΕΙς ΑΡΧΕς ΛΕΙΤΟΥΡΓΙΑς CMS (Content Management System) ΚΑΙ ΕΦΑΡΜΟΓΗ ΤΟΥς ςε ΜΙΚΡΟΜΕςΑΙΕς ΕΠΙΧΕΙΡΗςΕΙς Χρήστος Γεωργιάδης Τμήμα Εφαρμοσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Περιεχόμενα 1. Η εικόνα του διαδικτύου

Διαβάστε περισσότερα

Ασφάλεια Υπολογιστικών Συστηµάτων

Ασφάλεια Υπολογιστικών Συστηµάτων Βασικοί τύποι επιθέσεων στο Internet Βασισµένες σε κωδικό πρόσβασης (password-based attacks): προσπάθεια παραβίασης του κωδικού πρόσβασης Υποκλοπή πακέτων µετάδοσης (packet sniffing attacks): παρακολούθηση

Διαβάστε περισσότερα

Special edition of the Technical Chamber of Greece on Video Conference Services on the Internet, 2000 INTERNET PHONE

Special edition of the Technical Chamber of Greece on Video Conference Services on the Internet, 2000 INTERNET PHONE INTERNET PHONE A.S. DRIGAS Applied Technologies Department NCSR DEMOKRITOS Ag. Paraskevi GREECE dr@imm.demokritos.gr http://imm.demokritos.gr Το Internet Phone θέτει καινούργια δεδοµένα για την επικοινωνία

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Διδάσκουσα Δρ Β Καβακλή Χειμερινό Εξάμηνο 2001 Στόχοι του Μαθήματος! Ανάπτυξη αναλυτικής

Διαβάστε περισσότερα

Αποτελεί την πρόταση του GUnet. ασύγχρονης τηλεκπαίδευσης. Είναι ένα ανοικτό αρθρωτό σύστημα διαχείρισης ηλεκτρονικών μαθημάτων

Αποτελεί την πρόταση του GUnet. ασύγχρονης τηλεκπαίδευσης. Είναι ένα ανοικτό αρθρωτό σύστημα διαχείρισης ηλεκτρονικών μαθημάτων Open eclass -GUnet Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης ης ΣΥΝΕ ΡΙΟ ΗΜΙΟΥΡΓΩΝ ΕΛΛΑΚ 19-20 Ιουνίου 2009 ΤΣΙΜΠΑΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ Υπεύθυνος Ομάδας Ασύγχρονης Τηλεκπαίδευσης GUnet η πλατφόρμα με δυο λόγια Αποτελεί

Διαβάστε περισσότερα

Μεταβλητές. Για περισσότερες λεπτομέρειες πάνω στις μεταβλητές θα ήταν χρήσιμο να διαβάσεις το

Μεταβλητές. Για περισσότερες λεπτομέρειες πάνω στις μεταβλητές θα ήταν χρήσιμο να διαβάσεις το Τάξη : Α Λυκείου Λογισμικό : Scratch Ενδεικτική Διάρκεια : 45 λεπτά Μεταβλητές Όλα όσα έμαθες στα προηγούμενα φυλλάδια είναι απαραίτητα για να υλοποιήσεις απλές εφαρμογές. Ωστόσο αν θέλεις να δημιουργήσεις

Διαβάστε περισσότερα

Πλατφόρμα e-μάθησης βασισμένη στο efront

Πλατφόρμα e-μάθησης βασισμένη στο efront ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΦΥΣΙΚΗΣ ΑΓΩΓΗΣ & ΑΘΛΗΤΙΣΜΟΥ Πλατφόρμα e-μάθησης βασισμένη στο efront Συντάκτης: Βασίλης Μπούγλας Επιμέλεια: Μαρίνα Παπαστεργίου efront Ερευνητικό Έργο: Δημιουργία

Διαβάστε περισσότερα

Η νέα Πύλη etwinning. Εργαλεία για την κοινωνική δικτύωση και την επικοινωνία των εκπαιδευτικών. Εργαλεία διαχείρισης ενός έργου etwinning

Η νέα Πύλη etwinning. Εργαλεία για την κοινωνική δικτύωση και την επικοινωνία των εκπαιδευτικών. Εργαλεία διαχείρισης ενός έργου etwinning Η νέα Πύλη etwinning Εργαλεία για την κοινωνική δικτύωση και την επικοινωνία των εκπαιδευτικών Εργαλεία διαχείρισης ενός έργου etwinning ΝΕΑ ΠΥΛΗ ETWINNING...3 ΒΗΜΑΤΑ ΓΙΑ ΤΗ ΣΥΜΜΕΤΟΧΗ ΣΤΗ ΔΡΑΣΗ...4 ΕΓΓΡΑΦΗ

Διαβάστε περισσότερα

Hellas Alive Μάθε να το χρησιµοποιείς

Hellas Alive Μάθε να το χρησιµοποιείς Hellas Alive Μάθε να το χρησιµοποιείς Λίγα Λόγια Το Hellas Alive καλύπτει πέντε επίπεδα γλωσσοµάθειας της Ελληνικής.Το κάθε επίπεδο χωρίζεται σε 15 ενότητες µε κάθε ενότητα να αναπτύσσεται σε 4 µαθήµατα.

Διαβάστε περισσότερα

JOOMLA! Οπτικός Οδηγός τoυ Ελληνικού. Εκδόσεις: Μ. Γκιούρδας MARNI DERR TANYA SYMES. εύτερη έκδοση. Απόδοση: Αγαμέμνων Μήλιος Μηχανικός Λογισμικού

JOOMLA! Οπτικός Οδηγός τoυ Ελληνικού. Εκδόσεις: Μ. Γκιούρδας MARNI DERR TANYA SYMES. εύτερη έκδοση. Απόδοση: Αγαμέμνων Μήλιος Μηχανικός Λογισμικού Οπτικός Οδηγός τoυ Ελληνικού JOOMLA! εύτερη έκδοση MARNI DERR TANYA SYMES Απόδοση: Αγαμέμνων Μήλιος Μηχανικός Λογισμικού Εκδόσεις: Μ. Γκιούρδας Ζωοδόχου Πηγής 70-74 - Τηλ.: 210 3630219 106 81 Αθήνα, 2012

Διαβάστε περισσότερα

Οι φορητοί υπολογιστές στην εκπαίδευση: Μελέτη περίπτωσης ως προς τις συνέπειες στη διδασκαλία και το μιντιακό γραμματισμό

Οι φορητοί υπολογιστές στην εκπαίδευση: Μελέτη περίπτωσης ως προς τις συνέπειες στη διδασκαλία και το μιντιακό γραμματισμό Παιδαγωγικά ρεύματα στο Αιγαίο Προσκήνιο 1 Οι φορητοί υπολογιστές στην εκπαίδευση: Μελέτη περίπτωσης ως προς τις συνέπειες στη διδασκαλία και το μιντιακό γραμματισμό Δημήτρης Σπανός 1 dimitris.spanos@gmail.com

Διαβάστε περισσότερα

Εργαλεία ανάπτυξης εφαρμογών internet Ι

Εργαλεία ανάπτυξης εφαρμογών internet Ι IEK ΟΑΕΔ ΚΑΛΑΜΑΤΑΣ ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΟΦΟΡΙΚΗΣ Εργαλεία ανάπτυξης εφαρμογών internet Ι Διδάσκουσα: Κανελλοπούλου Χριστίνα ΠΕ19 Πληροφορικής 4 φάσεις διαδικτυακών εφαρμογών 1.Εφαρμογές στατικής πληροφόρησης

Διαβάστε περισσότερα

Μέρος Ι: Εγκατάσταση και ιαμόρφωση των MySQL, Apache και PHP

Μέρος Ι: Εγκατάσταση και ιαμόρφωση των MySQL, Apache και PHP Εισαγωγή... 1 Σε Ποιους Απευθύνεται το Βιβλίο... 1 Η Οργάνωση του Βιβλίου... 2 Ο Πηγαίος Κώδικας του Βιβλίου... 3 Συμβάσεις που Χρησιμοποιούνται σε Αυτό το Βιβλίο... 3 Μέρος Ι: Εγκατάσταση και ιαμόρφωση

Διαβάστε περισσότερα

Το πρόγραμμα Skype (έκδοση 4.0.0.226)

Το πρόγραμμα Skype (έκδοση 4.0.0.226) Το πρόγραμμα Skype (έκδοση 4.0.0.226) Το Skype είναι ένα πρόγραμμα με το οποίο μπορούμε να μετατρέψουμε τον υπολογιστή μας σε βιντεοτηλέφωνο! Για να είναι ικανοποιητική η ποιότητα του ήχου και πολύ περισσότερο

Διαβάστε περισσότερα

Εφαρμογές Πληροφορικής

Εφαρμογές Πληροφορικής Εφαρμογές Πληροφορικής Εγκατάσταση λογισμικού (προγραμμάτων) Ορισμοί Ο ηλεκτρονικός υπολογιστής χωρίζεται σε δύο μέρη, το υλικό και το λογισμικό. Το υλικό αποτελείται από όλα τα εξαρτήματα τα οποία έχουν

Διαβάστε περισσότερα

ΔΟΣΟΛΟΓΙΑ ΦΑΡΜΑΚΩΝ ΓΙΑ ΠΑΙΔΙΑ ΕΩΣ 12 ΕΤΩΝ ΟΜΑΔΑ ΑΝΑΠΤΥΞΗΣ

ΔΟΣΟΛΟΓΙΑ ΦΑΡΜΑΚΩΝ ΓΙΑ ΠΑΙΔΙΑ ΕΩΣ 12 ΕΤΩΝ ΟΜΑΔΑ ΑΝΑΠΤΥΞΗΣ ΔΟΣΟΛΟΓΙΑ ΦΑΡΜΑΚΩΝ ΓΙΑ ΠΑΙΔΙΑ ΕΩΣ 12 ΕΤΩΝ ΟΜΑΔΑ ΑΝΑΠΤΥΞΗΣ Αγγελική Γριβοπούλου, ΤΕ01.13-ΠΕ20 ΣΧΟΛΕΙΟ 1 ο Ε.Κ. Μεσολογγίου Μεσολόγγι, 14/07/2015 1. Συνοπτική περιγραφή της ανοιχτής εκπαιδευτικής πρακτικής

Διαβάστε περισσότερα

Αξιολόγηση της επίσημης Moodle Mobile εφαρμογής

Αξιολόγηση της επίσημης Moodle Mobile εφαρμογής Αξιολόγηση της επίσημης Moodle Mobile εφαρμογής ΣΕΜΙΝΑΡΙΟ ΕΚΠΑΙΔΕΥΤΙΚΟΥ ΛΟΓΙΣΜΙΚΟΥ ΑΛΕΞΑΝΔΡΟΣ ΚΑΝΤΑΣ ΠΡΩΤΟ ΣΕΜΙΝΑΡΙΟ ΔΕΥΤΕΡΟΥ ΚΥΚΛΟΥ ΕΚΠΑΙΔΕΥΣΗΣΗΣ ΜΟΝΑΔΕΣ ΑΡΙΣΤΕΙΑΣ ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΚΡΗΤΗΣ Αυτή η εργασία

Διαβάστε περισσότερα