Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια

Delicate Sound of Development

Journal για creative & non-creative δραστηριότητες. Development and more...:)

Παρουσίαση με Ετικέτες

Όλες οι Ετικέτε... » C#   (RSS)
CloseTabBehavior για TabItems σε Silverlight TabControl
Χρησιμοποιώντας το tabcontrol του Silverlight, είδα ότι δεν έχει close button σε κάθε tab. Μερικές λύσεις που είδα από το net, έκαναν extend ένα tabItem, ή έβαζαν handler κάπου για να το υλοποιήσουν. Έτσι έφτιαξα ένα behavior το οποίο γίνεται attach, λίγο πιο κομψά. Στο OnClick, υλοποίησα ένα μικρό chunk λογικής για να διατηρείται το state. To itemtemplate <TabControl.ItemTemplate> <DataTemplate> <DockPanel Width="120"> <Button Content="X" Cursor="Hand" DockPanel.Dock="Right" Focusable="False" FontFamily="Courier" FontSize="9" FontWeight="Bold" Margin="0,1,0,0" Padding="0" VerticalContentAlignment="Bottom" Width="16" Height="16" > <interactivity:Interaction.Behaviors> <behavior:CloseTabBehavior/> </interactivity:Interaction.Behaviors> </Button> <ContentPresenter Content="{Binding ApplicationName}" VerticalAlignment="Center"

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

Posted: Δευτέρα, 29 Νοεμβρίου 2010 2:39 μμ από Aggelos Biboudis | 1 σχόλια
Δημοσίευση στην κατηγορία: ,
Silverlight Αttached Βehavior: Φτιάχνοντας ένα Marquee TextBox Control
Έχω ένα Grid στο Silverlight Application και θέλω να κάνω ένα marquee textbox (autoscroll) από δεξιά προς τα αριστερά, μέσα στο κελί του Grid. Τι χρειάζεται να κάνω για να προσθέσω σε ένα control αυτή τη λειτουργία ; Για αρχή έχουμε ένα textbox και στα γρήγορα κάνουμε ένα Translate RenderTransform αλλάζοντας την τιμή, στον άξονα των x από θετικές σε αρνητικές τιμές. <TextBlock Grid.Row="0" Grid.Column="0" Foreground="#FF2755AF"           

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

Posted: Τετάρτη, 20 Οκτωβρίου 2010 4:23 πμ από Aggelos Biboudis | 0 σχόλια
Δημοσίευση στην κατηγορία: , , ,
A note to self: Silverlight DataBinding awesomeness μέσα από Expression Blend, XAML και κώδικα
Το πιο δυνατό στοιχείο του Silverlight είναι η εκφραστικότητα των data binding μηχανισμών του με όλες τις μορφές που μας το παρέχει. Separation of concerns, animations, visual states, MVVM, αλληλένδετα controls και πολλά ακόμα “βαριά” ή ελαφρά features οφείλουν την ύπαρξή τους στο Data Binding. Τι είναι Data Binding; Data Binding είναι η σύνδεση μεταξύ μίας πηγής δεδομένων και ενός προορισμού. Στο silverlight η πηγή είναι ένα CLR αντικείμενο που διατηρεί, ανανεώνει, κτλ πληροφορία (ένα object συγκεκριμένου τύπου)

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

Posted: Δευτέρα, 18 Οκτωβρίου 2010 11:05 πμ από Aggelos Biboudis | 0 σχόλια
Δημοσίευση στην κατηγορία: , ,
A note to self: DataBinding awesomeness μέσα από Expression Blend, XAML και κώδικα
    Το πιο δυνατό στοιχείο του Silverlight είναι η εκφραστικότητα των data binding μηχανισμών του με όλες τις μορφές που μας το παρέχει. Separation of concerns, animations, visual states, MVVM, αλληλένδετα controls και πολλά ακόμα “βαριά” ή ελαφρά features οφείλουν την ύπαρξή τους στο Data Binding. Τι είναι Data Binding; Data Binding είναι η σύνδεση μεταξύ μίας πηγής δεδομένων και ενός προορισμού. Στο silverlight η πηγή είναι ένα CLR αντικείμενο που διατηρεί, ανανεώνει, κτλ πληροφορία (ένα object συγκεκριμένου

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

Posted: Σάββατο, 9 Οκτωβρίου 2010 4:02 πμ από Aggelos Biboudis | 0 σχόλια
Δημοσίευση στην κατηγορία: , ,
Silverlight animatable custom controls: quick ‘n’ dirty!
Παρακάτω θα φτιάξουμε βήμα-βήμα ένα Notification box για το silverlight, χρησιμοποιώντας μία ελαφρώς παραλλαγμένη έκδοση του style που βρίσκεται ήδη στη νέα έκδοση Silverlight 4, που εισήγαγε το συγκεκριμένο control. Η λειτουργικότητα θα είναι επίσης ελαφρώς διαφορετική, αφήνοντας στην ευθύνη του silverlight control την λειτουργία του αυτόματου ελέγχου, για το αν υπάρχουν ή όχι notifications για τον χρήστη. Σκοπός είναι, καθώς θα καταγράφουμε βήμα βήμα την πορεία κατασκευής του control, θα καταλαβαίνουμε παράλληλα

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

Posted: Παρασκευή, 17 Σεπτεμβρίου 2010 11:00 μμ από Aggelos Biboudis | 0 σχόλια
Δημοσίευση στην κατηγορία: ,
My live Q&A with Eric Lippert, Luke Hoban and Mads Torgersen at Tech·Ed 2010, North America
Yesterday I watched the live 3:30 PM: Languages Panel session, with Eric Lippert , Luke Hoban and Mads Torgersen and the niner Charles Torre , through ( http://www.msteched.com/ ), provided by Channel9 live ( http://channel9.msdn.com/ ). This wasn’t just a live panel, but an interactive QnA too, so as me and a friend / colleague of mine ( Nikos ), watched it, we asked a question through twitter of Channel9 ( http://twitter.com/ch9live ). The question (both actually) have been presented through the monitor, to

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

Posted: Πέμπτη, 10 Ιουνίου 2010 2:33 πμ από Aggelos Biboudis | 0 σχόλια
Δημοσίευση στην κατηγορία: , , , , , , ,
Closures στη C#
Τελικά τα closures είναι ένα απλό concept, που όταν το κατανοήσει κάποιος, το βλέπει τετριμμένο μετά. Αν μπορούσα να δανειστώ από κάπου, δυό λόγια για ορισμό, νομίζω η wikipedia το περιγράφει αρκετά καλά. Τα closures είναι μία ιδέα των γλωσσών προγραμματισμού, που επιτρέπει, σε συναρτήσεις που αντιμετωπίζονται ως first-class objects, τον συσχετισμό ελεύθερων μεταβλητών τους, με τον λεκτικό περιβάλλοντα χώρο της συνάρτησης. Στη συνέχεια θα ήθελα να διατυπώσω το εν λόγω concept όσο πιο σύντομα γίνεται, δανειζόμενος

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

Posted: Τρίτη, 9 Μαρτίου 2010 12:13 πμ από Aggelos Biboudis | 0 σχόλια
Δημοσίευση στην κατηγορία: , , , ,
Αντιγραφή αρχείου σε UNC Path προγραμματιστικά (ASP.NET or just code)
Η αντιγραφή αρχείου σε NAS, προγραμματιστικά (ή εν γένει σε κάποιο UNC location εκτός τοπικού μηχανήματος) είναι μία ανάλογη διαδικασία, όπως αν το κάνουμε μέσω του UI. Θα ανοίγαμε το Run, στην συνέχεια πληκτρολογούμε το unc path. Αν σε εκείνη την τοποθεσία έχουν τεθεί permissions για όλους, τότε το παράθυρο ανοίγει κατευθείαν. Σε αντίθετη περίπτωση θα πρέπει να εισαχθούν τα στοιχεία για να γίνει login ο χρήστης, είτε τοπικός, είτε domain (σε αυτήν την περίπτωση θα πρέπει να εισαχθεί και το domain με τον γνωστό

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

Posted: Πέμπτη, 14 Ιανουαρίου 2010 11:02 μμ από Aggelos Biboudis | 0 σχόλια
Δημοσίευση στην κατηγορία: , ,
Παρουσίαση .NET και C# στο ΠΜΣ Πληροφοριακά Συστήματα ΟΠΑ – Τεχνολογία Λογισμικού
Παραθέτω το υλικό της σημερινής παρουσίασης για .NET, C# που είδαμε στο μάθημα Τεχνολογίας Λογισμικού (ευχαριστούμε τον καθηγητή Εμ. Γιακουμάκη που την πραγματοποιήσαμε επιτυχώς). Η παρουσίαση που διαδέχτηκε τη δική μου, από τον Μιχάλη Ζερβό, βρίσκεται εδώ . Και οι δύο, βρίσκονται στο e-class του μαθήματος. Στην παρουσίασή μου, προσπάθησα να δώσω όσες περισσότερες ιδέες μπορούσα (στο σύντομο χρονικό διάστημα της μίας ώρας) αναδεικνύοντας την εκφραστικότητά της και τις δυνατότητες που έχει. Καλύφθηκαν αρκετά

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

Posted: Τρίτη, 12 Ιανουαρίου 2010 4:43 μμ από Aggelos Biboudis | 0 σχόλια
Δημοσίευση στην κατηγορία: , , ,
Εισαγωγή στα Expression Trees και στις δυναμικές μεθόδους (Visual Studio 2010)
Στο απόλυτο βιβλίο για compilers (καθιερωμένο ως Dragon Book εξαιτίας του concept art εξωφύλλου του στην πρώτη έκδοση) ως abtract syntax trees ή απλά syntax trees, ορίζονται οι ιεραρχικές συντακτικές δομές του πηγαίου κώδικα ενός προγράμματος. Όταν γράφουμε κώδικα, υπάρχει μία πάρα πολύ συγκεκριμένη διαδικασία η οποία μετατρέπει τις λέξεις και τα σύμβολα που γράφουμε, σε δομές που έχουν συγκεκριμένη σημασιολογία. Το πρώτο κομμάτι ενός μεταγλωττιστή ασχολείται με το “διάβασμα” του κώδικα που γράφουμε. Αυτή η

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

Posted: Σάββατο, 28 Νοεμβρίου 2009 4:29 πμ από Aggelos Biboudis | 0 σχόλια
Δημοσίευση στην κατηγορία: ,
Ασφαλής χρήση FileSystemWatcher
Υπάρχουν σενάρια που χρειάζεται να ξέρετε πότε ένα καινούριο αρχείο δημιουργείται σε έναν κατάλογο, ή πότε γίνεται rename, ή πότε αλλάζει το Last Changed timestamp για να κάνετε διάφορες εργασίες. Έστω το σενάριο, ότι έχετε ένα εξωτερικό εργαλείο που κάνει κάποια λειτουργία μετατροπής αρχείων. Για να μπορείτε να αντιληφθείτε πότε το αρχείο γράφτηκε στο folder που παρατηρείτε και να αντιγράψετε το αρχείο αυτό κάπου αλλού, ή να το επεξεργαστείτε, μπορείτε να χρησιμοποιήσετε το FileSystemWatcher του .NET. Παρόλα

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

Posted: Δευτέρα, 12 Οκτωβρίου 2009 1:24 πμ από Aggelos Biboudis | 0 σχόλια
Δημοσίευση στην κατηγορία: , ,
Windows Sensor and Location platform
Τα Windows 7 περιέχουν ενσωματωμένη (native) υποστήριξη για διαχείριση αισθητήρων μαζί με μία προγραμματιστική πλατφόρμα που την συνοδεύει. Αφορά location sensors, temperature, accelerometer, ambient light, moisture, camera, RFID και πολλούς ακόμα τύπους αισθητήρων, που κοινώς φέρνουν τον enterprise developer πιο κοντά στις εφαρμογές διάχυτου υπολογισμού, από το να κάνουν μία απλή εφαρμογή mashup που θα χρησιμοποιεί δεδομένα από gps μέχρι μία sophisticated πλατφόρμα data fusion . H πλατφόρμα ονομάζεται Sensor

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

Posted: Τρίτη, 25 Αυγούστου 2009 12:58 πμ από Aggelos Biboudis | 0 σχόλια
Δημοσίευση στην κατηγορία: , ,
NScanner: Port Scanner / Port Sweeper
Πρόσφατα ολοκληρώσαμε έναν ανιχνευτή κατάστασης θυρών, ο οποίος να παρουσιάζει διπλή λειτουργικότητα, να είναι και Port scanner αλλά και Port sweeper. Ο Port Scanner θα δέχεται ως είσοδο μια δ/νση ΙΡ (ή hostname) και range από πόρτες (TCP/UDP) που θα θέλαμε να ανιχνεύσουμε. Ο Port Sweeper θα δέχεται ως είσοδο μια πόρτα (TCP/UDP) που θα θέλαμε να ανιχνεύσουμε και λίστα από δ/νσεις ΙΡ (ή DNS name). Η εφαρμογή υλοποιεί TCP, UDP και SYN scan με επιλογές που να τα παραμετροποιούν. Η εφαρμογή αποτελείται από το βασικό

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

Posted: Τρίτη, 2 Ιουνίου 2009 9:23 μμ από Aggelos Biboudis | 0 σχόλια
Δημοσίευση στην κατηγορία: , , ,
NScanner: Port Scanner / Port Sweeper

 

Πρόσφατα ολοκληρώσαμε έναν ανιχνευτή κατάστασης θυρών, ο οποίος να παρουσιάζει διπλή λειτουργικότητα, να είναι και Port scanner αλλά και Port sweeper. Ο Port Scanner θα δέχεται ως είσοδο μια δ/νση ΙΡ (ή hostname) και range από πόρτες (TCP/UDP) που θα θέλαμε να ανιχνεύσουμε. Ο Port Sweeper θα δέχεται ως είσοδο μια πόρτα (TCP/UDP) που θα θέλαμε να ανιχνεύσουμε και λίστα από δ/νσεις ΙΡ (ή DNS name). Η εφαρμογή υλοποιεί TCP, UDP και SYN scan με επιλογές που να τα παραμετροποιούν.

Η εφαρμογή αποτελείται από το βασικό παράθυρο στο οποίο μπορεί ο χρήστης να κάνει τις κατάλληλες παραμετροποιήσεις και να εισάγει τα στοιχεία που αυτός θέλει. Τα αποτελέσματα εκτυπώνονται στα δεξιά του παραθύρου ενώ στο κάτω μέρος υπάρχει και ένα progress bar το οποίο ενημερώνει τον χρήστη για το ποσοστό του ελέγχου που έχει απομείνει. Λοιπές λειτουργίες όπως logging, εκτύπωση ονομάτων θυρών που αναφέρονται κτλ, περιγράφονται παρακάτω.

TCP Scan

Στο TCP Scan αξιοποιείται η αναλυτική διαδικασία σύνδεσης με Berkeley sockets σε .NET (Socket Class (System.Net.Sockets)). O σκοπός που γίνεται αυτό είναι γιατί έτσι μπορούμε να έχουμε πλήρη έλεγχο κατά την δημιουργία των sockets. H γενική ιδέα είναι ότι, πραγματοποιείται ολόκληρη η διαδικασία του 3-way handshake, κατά την εγκαθίδρυση της σύνδεσης, το οποίο αποτυγχάνει κάτω από συγκεκριμένες συνθήκες, που αποκαλύπτουν την κατάσταση της θύρας. Στον παρόν port scanner που περιγράφεται, ανιχνεύονται θύρες σε τρεις διακριτές καταστάσεις σύμφωνα με την απόκριση τους: ανοικτές, κλειστές φιλτραρισμένες. Οι ανοικτές θύρες (πραγματοποιούν σύνδεση) αποκαλύπτουν ότι η port δεν υπόκειται σε έλεγχο firewall σχετικά με την κατάστασή της και επιτρέπει τις συνδέσεις (ανοικτή και ταυτόχρονα κάποια υπηρεσία την χρησιμοποιεί για να εξυπηρετεί προγράμματα «πελάτες»). Η δεύτερη κατηγορία (κλειστές) αναφέρεται στην κατάσταση όπου μία θύρα αποκρίνεται ότι δεν δέχεται συνδέσεις. Τέλος η κατηγορία στην οποία υπόκεινται οι φιλτραρισμένες θύρες, είναι όταν δεν δεχόμαστε απόκριση στην αποστολή αίτησης προς εκείνες.

UDP Scan

Στο UDP Scan χρησιμοποιείται μία παρόμοια μέθοδος (προγραμματιστικά), ορίζοντας μία περίοδο timeout που επηρεάζει το αποτέλεσμα. Το πρωτόκολλο UDP δεν έχει ανάγκη για SYN, FIN ή κάποια άλλη διαδικασία εγκαθίδρυσης σύνδεσης. Με το πρωτόκολλο UDP τα πακέτα αποστέλλονται και λαμβάνονται χωρίς κάποια προειδοποίηση, πράγμα που απλοποιεί την διαδικασία του port scanning (με περισσότερο αβέβαια αποτελέσματα βέβαια). Οι καταστάσεις που εντοπίζουμε είναι τρεις: Closed, Open/Filtered, Open.

SYN Scan

Στην μέθοδο SYN Scan συλλέγεται πληροφορία για την εμπλεκόμενη θύρα πριν ολοκληρωθεί η διαδικασία της εγκαθίδρυσης σύνδεσης. Όταν μία θύρα αναγνωρίζεται ως ανοικτή το TCP Handshake τερματίζεται με σήμα RST, πριν ακόμα ολοκληρωθεί η διαδικασία. Αυτή η τεχνική συνήθως αναφέρεται και ως half open scan. Σε περίπτωση που η εφαρμογή λάβει σήμα RST μετά από σήμα SYN, σημαίνει ότι η θύρα είναι κλειστή.

Για την παρούσα μέθοδο χρειάστηκε η κατασκευή των πακέτων με αναλυτικό τρόπο όπως επίσης και οι αποκρίσεις με σήματα RST σε περίπτωση που το άλλο άκρο αποκριθεί θετικά (SYN & ACK). Η αναγνώριση των στόχων, των gateway και πολλών στοιχείων που χρειάζονται για την κατασκευή των πακέτων, έχουν γίνει προγραμματιστικά στην συνάρτηση Connect που υπάρχει στην κλάση SynConnectCall.

Τα πλεονεκτήματα της συγκεκριμένης μεθόδου είναι ότι το γεγονός ποτέ δεν καταγράφεται από την εφαρμογή του στόχου, γιατί απλά δεν πραγματοποιείται σύνδεση TCP. Αυτό είναι ένα κατά πολύ πιο «αθόρυβο» scan από άλλα, τα οποία παρουσιάζουν μικρότερη ορατότητα από πλευράς του στόχου. Παρέχει πληροφορίες όπως open, closed και filtered θύρες.

Ανάπτυξη σε C#

Η εφαρμογή μας υλοποιήθηκε σε περιβάλλον .NET 3.5 και σε γλώσσα προγραμματισμού C Sharp (C#), ενώ για το γραφικό περιβάλλον της εφαρμογής χρησιμοποιήσαμε Winforms. Για την υλοποίηση της λειτουργικότητας SYN Scan χρησιμοποιήθηκε η βιβλιοθήκη libpcap[1]. Επίσης για της ανάγκες υλοποίησης σε C# χρησιμοποιήθηκε η υπό ανάπτυξη βιβλιοθήκη που ενθυλακώνει τις native κλήσης συστήματος της βιβλιοθήκης της libpcap ώστε να είναι δυνατή η χρησιμοποίησή της μέσα από περιβάλλον .NET. H εν λόγω βιβλιοθήκη ονομάζεται SharpPcap και διανείμετε δωρεάν, μέσα από το SourceForge.ΝΕΤ[2]. Αξίζει να σημειωθεί ότι έγιναν αλλαγές στον κώδικα του wrapper, όπως και διορθώθηκαν λάθη τα οποία αναφέρθηκαν στην ομάδα ανάπτυξης του, για να ληφθούν υπόψη στη περαιτέρω διαδικασία ανάπτυξής του [3] [4].

Οι μέθοδοι που υλοποιούνται ενθυλακώνονται στις αντίστοιχες κλάσεις <Protocol>ConnectCall (π.χ., το tcp scan υλοποιείται στην TcpConnectCall).

Screenshots

Port Sweeping
image

UDP Port Scanning
image

 

H εφαρμογή αναπτύχθηκε στα πλαίσια εργασίας για το μάθημα “Ασφάλεια υπολογιστών και Δικτύων”, Οικονομικό Πανεπιστήμιο Αθηνών, ΠΜΣ Πληροφοριακά Συστήματα 2008-2009, από τους Άγγελος Μπιμπούδη (εμένα) και Αναστάσιο Νεραντζίνη και καταχωρήθηκε στο codeplex από όπου θα εξελιχθεί/βελτιωθεί. Η άδεια χρήσης είναι GNU Library General Public License (LGPL).

http://nscanner.codeplex.com/

Posted: Τρίτη, 2 Ιουνίου 2009 9:23 μμ από Aggelos Biboudis | 0 σχόλια
Δημοσίευση στην κατηγορία: , , ,
Δωρεάν βιβλίο για C#
O Rob Miles , καθηγητής στο πανεπιστήμιο του Hull και εθισμένος στο .NET Compact Framework, έδωσε στο κοινό ένα από τα βιβλία του (σημειώσεις για την σχολή) σε C# δωρεάν. Το κάλεσε «κίτρινο βιβλίο», δεδομένου ότι είναι δομημένο όπως ένα κανονικό βιβλίο με κίτρινο εξώφυλλο, και το κατέστησε διαθέσιμο από το www.csharpcourse.com . Το βιβλίο περιέχει 185 σελίδες και καλύπτει τα πάντα, από το πώς κάποιος να αρχίσει με C# έως πώς να δημιουργήσει user interfaces. Μπορείτε να το κατεβάσετε από το site του εδώ: Rob

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

Posted: Κυριακή, 16 Νοεμβρίου 2008 11:42 μμ από Aggelos Biboudis | 0 σχόλια
Δημοσίευση στην κατηγορία:
Microsoft Source Analysis για C#
Ένα νέο προϊόν στην οικογένεια εργαλείων της ms (όχι τόσο καινούριο ως ιδέα δλδ (βλ. Microsoft Code Analysis) , απλά αναφέρεται σε διαφορετική φάση του προγραμματισμού). To source analysis εξετάζει τον πηγαίο κώδικα και κοιτάζει να βρεί λάθη στο σχεδιασμό της εφαρμογής από πλευράς layout, name convention και πολλά άλλα. Όπως ξέρουμε σε συνεργατικό προγραμματισμό, τέτοια θέματα κρύβουν άπειρα εν δυνάμει προγραμματιστικά λάθη και αυτά ακριβώς προσπαθεί να αποτρέψει αυτό το εργαλείο. Layout of elements, statements,

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

Posted: Παρασκευή, 23 Μαΐου 2008 11:52 μμ από Aggelos Biboudis | 0 σχόλια
Δημοσίευση στην κατηγορία: , ,