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

Μέγεθος: 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~

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

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

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

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

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης Σελίδα 1από ΤΕΙ ΚΑΒΑΛΑΣ Πτυχιακή εργασία Δικτυακή Εφαρμογή διαχείρισης ηλεκτρονικών εγγράφων υπηρεσίας. ΕΙΣΑΓΩΓΗ Μιλτιάδης Κακλαμάνης Σελίδα 2από Κατάλογος περιεχομένων ΕΙΣΑΓΩΓΗ...1 Σχετιζόμενα πρόσωπα...3

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

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

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

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

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

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

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

Οδηγός Εγκατάστασης και Χρήσης του 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 - Εισαγωγή Καλωσορίσατε

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

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

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

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

Σενάριο 14: Προγραμματίζοντας ένα Ρομπότ ανιχνευτή

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

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

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

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

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

6 Εισαγωγή στο Wordpress 3.x

6 Εισαγωγή στο Wordpress 3.x Περιεχόμενα 1 Εγκατάσταση του WordPress... 11 Ελάχιστες απαιτήσεις... 11 Easy PHP... 12 Εγκατάσταση Easy PHP... 12 Βήματα εγκατάστασης EasyPHP με εικόνες... 13 Το EasyPHP στα Ελληνικά... 17 Κατέβασμα και

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

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

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

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

XAMPP Apache MySQL PHP javascript xampp

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

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

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ Ι ΡΥΜΑ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΟΜΕΑΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ, ΠΛΗΡΟΦΟΡΙΚΗΣ & ΙΚΤΥΩΝ Εργ. Τεχνολογίας Λογισμικού & Υπηρεσιών S 2 E Lab Π Τ Υ Χ Ι

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

Εγκατάσταση 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 σε περιβάλλον

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

«Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - 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 Πολλοί άνθρωποι

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

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

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

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

Οδηγίες Χρήσης της MySQL

Οδηγίες Χρήσης της MySQL ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΣΗΜΕΙΩΣΕΙΣ ΣΕ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Οδηγίες Χρήσης της MySQL Διδάσκων: Γιάννης Θεοδωρίδης Συντάκτης Κειμένου: Βαγγέλης Κατσικάρος Νοέμβριος 2007 1 Περιεχόμενα Εισαγωγή...2

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

1 ο ΓΥΜΝΑΣΙΟ ΘΕΡΜΗΣ. Πληροφορική Α' Γυμν. Το Λειτουργικό Σύστημα του Υπολογιστή

1 ο ΓΥΜΝΑΣΙΟ ΘΕΡΜΗΣ. Πληροφορική Α' Γυμν. Το Λειτουργικό Σύστημα του Υπολογιστή 1 ο ΓΥΜΝΑΣΙΟ ΘΕΡΜΗΣ Μάθημα: Ενότητα: Πληροφορική Α' Γυμν. Το του Υπολογιστή 1. Τι ονομάζεται Πρόγραμμα; Είναι οι οδηγίες που δίνονται στον υπολογιστή για να εξηγήσουμε πώς γίνεται μια εργασία (δηλαδή η

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

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ της Πλατφόρμας Τηλεκατάρτισης ΠΕΡΙΕΧΟΜΕΝΑ 1. Εισαγωγή...2 2. Αρχική σελίδα, Εισαγωγή & Περιβάλλον Συστήματος...3 2.1. Αρχική σελίδα εισαγωγής...3 2.2. Εισαγωγή στην Πλατφόρμα Τηλε-κατάρτισης...4

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

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

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

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

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

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

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

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

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

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

Ksyla.gr Σύντομη περιγραφή λειτουργίας

Ksyla.gr Σύντομη περιγραφή λειτουργίας Οδηγός Εφαρμογής Ksyla.gr Σύντομη περιγραφή λειτουργίας Το ksyla.gr είναι μια κοινότητα αγοραπωλησίας καύσιμου ξύλου σε οποιαδήποτε μορφή (καυσόξυλα, πέλλετ, μπρικέτες, κάρβουνα) καθώς επίσης και ειδών

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

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

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

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

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

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

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

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΉΜΙΟ ΚYΠΡΟΥ

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΉΜΙΟ ΚYΠΡΟΥ ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΉΜΙΟ ΚYΠΡΟΥ ΟΔΗΓΟΣ ΣΥΝΔΕΣΗΣ ΣΤO ΔΙΚΤΥΟ ΤΟΥ ΤΠΚ ΜΕΣΩ ΤΗΣ ΥΠΗΡΕΣΙΑΣ ΑΠΟΜΑΚΡΥΣΜΕΝΗΣ ΠΡΟΣΒΑΣΗΣ VPN ΥΣΠΤ Η υπηρεσία πρόσβασης στο δίκτυο δεδομένων του ΤΠΚ μέσω εικονικού ιδιωτικού δικτύου

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

Οδηγίες Χρήσης Πλατφόρμας Ασύγχρονης Τηλεκπαίδευσης (Moodle) του Τμήματος ΔΕΤ

Οδηγίες Χρήσης Πλατφόρμας Ασύγχρονης Τηλεκπαίδευσης (Moodle) του Τμήματος ΔΕΤ Οδηγίες Χρήσης Πλατφόρμας Ασύγχρονης Τηλεκπαίδευσης (Moodle) του Τμήματος ΔΕΤ -Για τους Φοιτητές- Έκδοση 1.2 Οκτώβριος 2015 Υπεύθυνος Σύνταξης: Χρήστος Λάζαρης (lazaris@aueb.gr) Πίνακας Περιεχομένων Εισαγωγή...

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

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

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

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

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

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

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

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

ΕΓΧΕΙΡΙΔΙΟ ΥΠΟΒΟΛΗΣ ΗΛΕΚΤΡΟΝΙΚΗΣ ΠΡΟΤΑΣΗΣ ΓΙΑ ΤΗ ΔΡΑΣΗ ΜΕΤΑΠΟΙΗΣΗ ΣΤΙΣ ΝΕΕΣ ΣΥΝΘΗΚΕΣ ΕΓΧΕΙΡΙΔΙΟ ΥΠΟΒΟΛΗΣ ΗΛΕΚΤΡΟΝΙΚΗΣ ΠΡΟΤΑΣΗΣ ΓΙΑ ΤΗ ΔΡΑΣΗ ΜΕΤΑΠΟΙΗΣΗ ΣΤΙΣ ΝΕΕΣ ΣΥΝΘΗΚΕΣ Μ.Ο.Δ..ΜΟΝΑΔΑ ΟΡΓΑΝΩΣΗΣ ΤΗΣ ΔΙΑΧΕΙΡΙΣΗΣ ΑΝΑΠΤΥΞΙΑΚΩΝ ΠΡΟΓΡΑΜΜΑΤΩΝ Α.Ε. 1 ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ 1. Εγγραφή στο σύστημα...3

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

ΠΕΡΙΕΧΟΜΕΝΑ. Πρόλογος... 13. Κεφάλαιο 1 ο Αρχές Διαχείρισης πληροφορίας στον Παγκόσμιο Ιστό... 15

ΠΕΡΙΕΧΟΜΕΝΑ. Πρόλογος... 13. Κεφάλαιο 1 ο Αρχές Διαχείρισης πληροφορίας στον Παγκόσμιο Ιστό... 15 ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος... 13 Κεφάλαιο 1 ο Αρχές Διαχείρισης πληροφορίας στον Παγκόσμιο Ιστό... 15 1.1 Εισαγωγή... 16 1.2 Διαδίκτυο και Παγκόσμιος Ιστός Ιστορική αναδρομή... 17 1.3 Αρχές πληροφοριακών συστημάτων

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

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

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

ΕΓΧΕΙΡΙΔΙΟ ΥΠΟΒΟΛΗΣ ΗΛΕΚΤΡΟΝΙΚΗΣ ΠΡΟΤΑΣΗΣ ΓΙΑ ΤΗ ΔΡΑΣΗ ΠΡΑΣΙΝΗ ΕΠΙΧΕΙΡΗΣΗ 2010 ΕΓΧΕΙΡΙΔΙΟ ΥΠΟΒΟΛΗΣ ΗΛΕΚΤΡΟΝΙΚΗΣ ΠΡΟΤΑΣΗΣ ΓΙΑ ΤΗ ΔΡΑΣΗ ΠΡΑΣΙΝΗ ΕΠΙΧΕΙΡΗΣΗ 2010 Μ.Ο.Δ..ΜΟΝΑΔΑ ΟΡΓΑΝΩΣΗΣ ΤΗΣ ΔΙΑΧΕΙΡΙΣΗΣ ΑΝΑΠΤΥΞΙΑΚΩΝ ΠΡΟΓΡΑΜΜΑΤΩΝ Α.Ε. 1 ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ 1. Εγγραφή στο σύστημα...3 2.

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

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

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

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

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

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

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

Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες

Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες Εισαγωγή-Σκοπός. Τρόποι δημιουργίας δυναμικών ιστοσελίδων. Dynamic Web Pages. Dynamic Web Page Development Using Dreamweaver. Τρόποι δημιουργίας δυναμικών

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

Εισαγωγή στην επανάληψη

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

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

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: (Μέρος Β ) Λειτουργικό Σύστημα Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

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

Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης eclass 1.7. Οδηγίες Αναβάθμισης (Upgrade) - 1 - Αθήνα, 16 Μαρτίου 2007. 1. Εισαγωγή

Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης eclass 1.7. Οδηγίες Αναβάθμισης (Upgrade) - 1 - Αθήνα, 16 Μαρτίου 2007. 1. Εισαγωγή Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης eclass 1.7 Οδηγίες Αναβάθμισης (Upgrade) Ομάδα Εργασίας: Τσιμπάνης Κωνσταντίνος, Εξηνταρίδης Γιάννης Αθήνα, 16 Μαρτίου 2007 1. Εισαγωγή Η πλατφόρμα eclass είναι ένα

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

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι Λειτουργικά Συστήματα 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. Τι είναι ο

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

ΕΙΣΑΓΩΓΗ ΣΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Ερωτήσεις επανάληψης

ΕΙΣΑΓΩΓΗ ΣΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Ερωτήσεις επανάληψης ΕΙΣΑΓΩΓΗ ΣΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ 1. Τι είναι το λειτουργικό σύστημα; Λειτουργικό Σύστημα είναι ένα σύνολο προγραμμάτων που ελέγχει τη λειτουργία του υπολογιστή και προσφέρει υπηρεσίες στους χρήστες.

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

Μπορείτε τα δείτε βιντεάκι με τη διαδικασία εδώ: 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. Αν δεν βλέπουμε

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

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

ΤΡΑΠΕΖΑ ΤΗΣ ΕΛΛΑΔΟΣ ΔΙΕΥΘΥΝΣΗ ΕΠΟΠΤΕΙΑΣ ΠΙΣΤΩΤΙΚΟΥ ΣΥΣΤΗΜΑΤΟΣ ΔΙΕΥΘΥΝΣΗ ΕΠΟΠΤΕΙΑΣ ΠΙΣΤΩΤΙΚΟΥ ΣΥΣΤΗΜΑΤΟΣ ΟΔΗΓΙΕΣ ΣΥΜΠΛΗΡΩΣΗΣ ΥΠΟΔΕΙΓΜΑΤΟΣ ΓΙΑ ΤΗΝ ΗΛΕΚΤΡΟΝΙΚΗ ΥΠΟΒΟΛΗ ΣΤΟΙΧΕΙΩΝ ΡΕΥΣΤΟΤΗΤΑΣ (BSD07) (ΠΔ.Τ.Ε. 2563/19.7.2005 Ε50) Ιανουάριος 2005 ΓΕΝΙΚΑ... 4 1. Προϋποθέσεις

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

ΟΔΗΓΟΣ ΧΡΗΣΗΣ WEBMAIL ΤΕΙ ΚΑΛΑΜΑΤΑΣ

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

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

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

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

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

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

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

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

Διδακτική της Πληροφορικής ΙΙ

Διδακτική της Πληροφορικής ΙΙ Διδακτική της Πληροφορικής ΙΙ Ομάδα Γ Βότσης Ευστάθιος Γιαζιτσής Παντελής Σπαής Αλέξανδρος Τάτσης Γεώργιος Προβλήματα που αντιμετωπίζουν οι αρχάριοι προγραμματιστές Εισαγωγή Προβλήματα Δυσκολίες Διδακτικό

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

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

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

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

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

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

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

Ανάπτυξη Υπηρεσίας Καταλόγου LDAP με τα στοιχεία του προσωπικού του TEI Πειραιά. Νίκος Πασσαράς. Εισηγητής: Πρεζεράκος Γεώργιος

Ανάπτυξη Υπηρεσίας Καταλόγου LDAP με τα στοιχεία του προσωπικού του TEI Πειραιά. Νίκος Πασσαράς. Εισηγητής: Πρεζεράκος Γεώργιος ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΙΔΡΥΜΑ ΠΕΙΡΑΙΑ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Ανάπτυξη Υπηρεσίας Καταλόγου LDAP με τα στοιχεία του προσωπικού του TEI Πειραιά Νίκος Πασσαράς

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ενημέρωση σε 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, για να σας προσφέρουν βελτιώσεις στην εξατομίκευση, την αναζήτηση, τις εφαρμογές,

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

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

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

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

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ LIVETRIP TRAVELLER

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ LIVETRIP TRAVELLER ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ LIVETRIP TRAVELLER Η εφαρμογή LiveTripTraveller διατίθεται για κινητά τηλέφωνα με λειτουργικό σύστημα Android. Στο υπο-ιστοσελίδα www.livetrips.com/sources μπορείτε να κατεβάσετε την εφαρμογή

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

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΑΝΕΠΙΣΤΗΜΙΟ

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΑΝΕΠΙΣΤΗΜΙΟ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΑΝΕΠΙΣΤΗΜΙΟ Επιχειρησιακό Πρόγραμμα: Εθνικό Στρατηγικό Πλαίσιο Αναφοράς (ΕΣΠΑ) 2007-2013 Έργο: Ελληνικό Ανοικτό Πανεπιστήμιο με κωδικό ΟΠΣ296121 Υπο-έργο 5: Εργαστήριο Εκπαιδευτικού Υλικού

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

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

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

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

Vodafone Business Connect

Vodafone Business Connect Vodafone Business Connect Vodafone Business WebHosting Αναλυτικός Οδηγός Χρήσης Advanced Template Manager Αναλυτικός οδηγός χρήσης: Advanced template Manager Vodafone Business Connect - Υπηρεσίες φιλοξενίας

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

Πλατφόρµα Ασύγχρονης Τηλεκπαίδευσης eclass 2.0. Οδηγίες Αναβάθµισης (Upgrade) - 1 - Αθήνα, 1 Ιουνίου 2007. 1. Εισαγωγή

Πλατφόρµα Ασύγχρονης Τηλεκπαίδευσης eclass 2.0. Οδηγίες Αναβάθµισης (Upgrade) - 1 - Αθήνα, 1 Ιουνίου 2007. 1. Εισαγωγή Πλατφόρµα Ασύγχρονης Τηλεκπαίδευσης eclass 2.0 Οδηγίες Αναβάθµισης (Upgrade) Οµάδα Εργασίας: Τσιµπάνης Κωνσταντίνος, Εξηνταρίδης Γιάννης Αθήνα, 1 Ιουνίου 2007 1. Εισαγωγή Η πλατφόρµα eclass είναι ένα ολοκληρωµένο

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

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

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

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

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

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

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

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

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

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

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

GUnet eclass 1.7 Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης GUnet eclass 1.7 Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης Εγχειρίδιο Χρήστη - Φοιτητή Η πλατφόρμα eclass είναι ένα ολοκληρωμένο Σύστημα Διαχείρισης Ηλεκτρονικών Μαθημάτων και αποτελεί την πρόταση του Ακαδημαϊκού

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 131: ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I ΕΡΓΑΣΙΑ 2

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 131: ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I ΕΡΓΑΣΙΑ 2 ΕΡΓΑΣΙΑ Διδάσκων: Γιώργος Χρυσάνθου Υπεύθυνος Άσκησης: Πύρρος Μπράτσκας Ημερομηνία Ανάθεσης: 3/10/015 Ημερομηνία Παράδοσης: 09/11/015 09:00 π.μ. I.Στόχος Στόχος αυτής της εργασίας είναι η χρησιμοποίηση

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

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

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

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

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

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

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

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

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

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

Gmail: Η προσέγγιση της Google στο ηλεκτρονικό ταχυδρομείο

Gmail: Η προσέγγιση της Google στο ηλεκτρονικό ταχυδρομείο Gmail: Η προσέγγιση της Google στο ηλεκτρονικό ταχυδρομείο (Από την ομάδα εργασίας του Gmail) Το Gmail κάνει το ηλεκτρονικό ταχυδρομείο εύκολο και αποτελεσματικό.. Οι 10 κυριότεροι λόγοι για να χρησιμοποιήσετε

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

Δομές Δεδομένων. Σημειώσεις από το εργαστήριο για τον χειρισμό του προγράμματος Eclipse. 5ο εξάμηνο. v1.0

Δομές Δεδομένων. Σημειώσεις από το εργαστήριο για τον χειρισμό του προγράμματος Eclipse. 5ο εξάμηνο. v1.0 Δομές Δεδομένων 5ο εξάμηνο Σημειώσεις από το εργαστήριο για τον χειρισμό του προγράμματος Eclipse v1.0 Τις σημειώσεις κράτησαν και διαμόρφωσαν σε word οι: Κονδύλη Γαλήνη, ΑΜ 5576 Μάλλιου Χριστίνα, ΑΜ 5413

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

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

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

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

Εγχειρίδιο Συντονιστή Τηλεδιασκέψεων Υπηρεσίας e:presence

Εγχειρίδιο Συντονιστή Τηλεδιασκέψεων Υπηρεσίας e:presence Εγχειρίδιο Συντονιστή Τηλεδιασκέψεων Υπηρεσίας e:presence Έκδοση 1.3 Ιούνιος 2014 Περιεχόμενα Εφαρμογή Διαχείρισης Τηλεδιασκέψεων... 2 Προβολή τηλεδιασκέψεων... 3 Προσθήκη τηλεδιάσκεψης... 4 Τροποποίηση

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΤΗΛΕΠΛΗΡΟΦΟΡΙΚΗ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΤΗΛΕΠΛΗΡΟΦΟΡΙΚΗ Υπουργείο Υγείας και Κοινωνικής Αλληλεγγύης Επιχειρησιακό Πρόγραμμα «Υγεία-Πρόνοια» Κ.Ε.Κ. Σωματείου «ΕΡΜΗΣ» Πρόγραμμα Κατάρτισης Εργαζόμενων σε Υπηρεσίες Κοινωνικής Φροντίδας στις Νέες Τεχνολογίες ΘΕΜΑΤΙΚΗ

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

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

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

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

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

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

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

Δημιουργία «Ηλεκτρονικής τάξης» στη πλατφόρμα e_class του Π.Σ.Δ. (Πανελλήνιο Σχολικό Δίκτυο)

Δημιουργία «Ηλεκτρονικής τάξης» στη πλατφόρμα e_class του Π.Σ.Δ. (Πανελλήνιο Σχολικό Δίκτυο) Δημιουργία «Ηλεκτρονικής τάξης» στη πλατφόρμα e_class του Π.Σ.Δ. (Πανελλήνιο Σχολικό Δίκτυο) BHMA (I) Πρέπει να είστε εγγεγραμμένοι στο sch.gr (Πανελλήνιο Σχολικό Δίκτυο). Αναφέρομαι σε σας και όχι στη

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

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 8 η. Βασίλης Στεφανής

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 8 η. Βασίλης Στεφανής Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ Διάλεξη 8 η Βασίλης Στεφανής Περιεχόμενα Τι είναι κρυπτογραφία Ιστορική αναδρομή Αλγόριθμοι: Καίσαρα Μονοαλφαβιτικοί Vigenere Vernam Κρυπτογραφία σήμερα Κρυπτογραφία Σκοπός Αποστολέας

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

Vodafone Business Connect

Vodafone Business Connect Vodafone Business Connect Vodafone Business WebHosting Αναλυτικός Οδηγός Χρήσης Photo Album Αναλυτικός οδηγός χρήσης: Photo Album Vodafone Business Connect - Υπηρεσίες φιλοξενίας εταιρικού e-mail & web

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

Interactive Power Point

Interactive Power Point Interactive Power Point Οι περισσότεροι χρήστες γνωρίζουν τη χρήση του Microsoft Power Point για τη δημιουργία παρουσιάσεων. Αυτό όμως που λίγοι γνωρίζουν, είναι ότι το πρόγραμμα αυτό, έχει δυνατότητες

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

Εγχειρίδιο εγκατάστασης και χρήσης περιοδικών etwinning

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

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

Lexicon Software Pachutzu

Lexicon Software Pachutzu Pachutzu Περιεχόμενα Ε Γ Κ Α Τ Α Σ Τ Α Σ Η... 2 Κύρια Οθόνη εφαρμογής... 3 Τρόπος Αποστολής... 7 Fax... 8 Δίνοντας την δυνατότητα διαγραφής από την λίστα... 9 Απορριφθέντα... 10 Ε Γ Κ Α Τ Α Σ Τ Α Σ Η Τοποθετήστε

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

ΕΛΑΧΙΣΤΕΣ ΑΠΑΙΤΗΣΕΙΣ ΕΞΟΠΛΙΣΜΟΥ... 22 ΕΠΙΚΟΙΝΩΝΙΑ... 23

ΕΛΑΧΙΣΤΕΣ ΑΠΑΙΤΗΣΕΙΣ ΕΞΟΠΛΙΣΜΟΥ... 22 ΕΠΙΚΟΙΝΩΝΙΑ... 23 Πλατφόρµα Ασύγχρονης Τηλεκπαίδευσης GUnet e-class Ακαδηµαϊκό ιαδίκτυο GUnet Οµάδα Ασύγχρονης Τηλεκπαίδευσης Τίτλος Πλατφόρµα Ασύγχρονης Τηλεκπαίδευσης Συντάκτης Ακαδηµαϊκό ιαδίκτυο GUnet Οµάδα Ασύγχρονης

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

ΗΜΕΡΟΛΟΓΙΟ 2014-2015 ΓΛΩΣΣΑΡΙ ΔΙΑΔΙΚΤΥΟΥ

ΗΜΕΡΟΛΟΓΙΟ 2014-2015 ΓΛΩΣΣΑΡΙ ΔΙΑΔΙΚΤΥΟΥ ΗΜΕΡΟΛΟΓΙΟ 2014-2015 ΓΛΩΣΣΑΡΙ ΔΙΑΔΙΚΤΥΟΥ Λαρισα Καμπέρη ΓΕΝΑΡΗΣ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Adware : Λογισμικό που εμφανίζει διαφημιστικό περιεχ

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

Πειραιάς S 2 Ε Lab Ιούνιος 2012. Εισηγητής: Δ. Ν. Καλλέργης, MSc. Εργ. Συνεργάτης

Πειραιάς S 2 Ε Lab Ιούνιος 2012. Εισηγητής: Δ. Ν. Καλλέργης, MSc. Εργ. Συνεργάτης Πειραιάς S 2 Ε Lab Ιούνιος 2012 Εισηγητής: Δ. Ν. Καλλέργης, MSc. Εργ. Συνεργάτης Πνευµατικά δικαιώµατα Τα πνευµατικά δικαιώµατα χρησιµοποίησης του µη πρωτότυπου υλικού της εργασίας ανήκουν στο/στη φοιτητή/-τρια

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

Πώς μπορούμε να δημιουργούμε γεωμετρικά σχέδια με τη Logo;

Πώς μπορούμε να δημιουργούμε γεωμετρικά σχέδια με τη Logo; Κεφάλαιο 2 Εισαγωγή Πώς μπορούμε να δημιουργούμε γεωμετρικά σχέδια με τη Logo; Η Logo είναι μία από τις πολλές γλώσσες προγραμματισμού. Κάθε γλώσσα προγραμματισμού έχει σκοπό τη δημιουργία προγραμμάτων

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

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

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

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

Η διάρκεια πραγματοποίησης της ανοιχτής εκπαιδευτικής πρακτικής ήταν 2 διδακτικές ώρες

Η διάρκεια πραγματοποίησης της ανοιχτής εκπαιδευτικής πρακτικής ήταν 2 διδακτικές ώρες ΣΧΟΛΕΙΟ Η εκπαιδευτική πρακτική αφορούσε τη διδασκαλία των μεταβλητών στον προγραμματισμό και εφαρμόστηκε σε μαθητές της τελευταίας τάξης ΕΠΑΛ του τομέα Πληροφορικής στα πλαίσια του μαθήματος του Δομημένου

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

Αναπαραγωγή και stop/pause έτοιμων ηχητικών clips

Αναπαραγωγή και stop/pause έτοιμων ηχητικών clips Αναπαραγωγή και stop/pause έτοιμων ηχητικών clips Το scratch διαθέτει αρκετά μεγάλη ποικιλία έτοιμων ενσωματωμένων ηχητικών clips τα οποία θα βρείτε πολύ ενδιαφέροντα και θα σας βάλουν σε πειρασμό να πειραματιστείτε

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

Εγχειρίδιο Λειτουργίας Τράπεζας Χρόνου

Εγχειρίδιο Λειτουργίας Τράπεζας Χρόνου Εγχειρίδιο Λειτουργίας Τράπεζας Χρόνου Bee Group Α.Ε. [Type the company name] [Pick the date] Εγχειρίδιο λειτουργίας Τράπεζας Χρόνου 2 ΠΕΡΙΕΧΟΜΕΝΑ 1. Αρχική Σελίδα... 3 2. Δημιουργία Λογαριασμού... 3 3.

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

Τσάπελη Φανή ΑΜ: 2004030113. Ενισχυτική Μάθηση για το παιχνίδι dots. Τελική Αναφορά

Τσάπελη Φανή ΑΜ: 2004030113. Ενισχυτική Μάθηση για το παιχνίδι dots. Τελική Αναφορά Τσάπελη Φανή ΑΜ: 243113 Ενισχυτική Μάθηση για το παιχνίδι dots Τελική Αναφορά Περιγραφή του παιχνιδιού Το παιχνίδι dots παίζεται με δύο παίχτες. Έχουμε έναν πίνακα 4x4 με τελείες, και σκοπός του κάθε παίχτη

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