Serial Number

Serial Numbers. Οπως λέμε serial killers. Οσο δύσκολο είναι να βρεθούν οι δε, άλλο τόσο δύσκολο είναι να βρεθούν και οι μεν.

Υπάρχει η ανάγκη να γίνει μια καταγραφή όλων των υπολογιστών (και των περιφερειακών συσκευών φυσικά) ώστε να γνωρίζουμε ανά πάσα στιγμή (μέσα σε κάποια πλαίσια – ανοιχτά για παζάρεμα) τι εξοπλισμό έχουμε, τι δουλεύει και τι όχι, τι έχουμε δώσει και σε ποιόν.

Αν και αυτή η δουλειά μέχρι πριν λίγο καιρό γινόταν μερικώς και με τον παραδοσιακό χειρονακτικό τρόπο: επίσκεψη, αυτοκόλλητο, καταγραφή στο πατσαβούρι χαρτί και τέλος πληκτρολόγηση, είπαμε να αυτοματοποιήσουμε λίγο τη διαδικασία.

Η προτεινόμενη διαδικασία ήταν να ακολουθήσουμε την εύκολη οδό και να βρούμε όλες αυτές τις πληροφορίες για τις μνήμες, επεξεργαστές, μητρικές, δίσκους και λοιπά, με τα serial numbers τους από το Windows Management Instrumentation. Επεσε το σχετικό ψάξιμο στα άδυτα του msdn και του google, όπου χαθήκαμε λιγάκι με το πλήθος των πληροφοριών που μπορούμε  να συλλέξουμε.

Για να μπορέσουμε να βγάλουμε σχετικά εύκολα άκρη αφού υπάρχουν πολλές WMI classes που θα μπορούσαμε να ξεψαχνίσουμε, καταλήξαμε στον ακόλουθο κώδικα που μας δίνει όλες τις πληροφορίες για μια WMI class.

private void _ShowDebugInfo(ManagementScope ms, string className)
{
#if DEBUG
    System.Diagnostics.Debug.WriteLine("-------" + className + "-------");
    oq = new ObjectQuery("SELECT * FROM " + className);
    query = new ManagementObjectSearcher(ms, oq);
    queryCollection = query.Get();
    foreach (ManagementObject mo in queryCollection)
    {
        foreach (PropertyData pd in mo.Properties)
        {
            System.Diagnostics.Debug.WriteLine
                   (string.Format("{0}, {1}", pd.Name, pd.Value));
        }
    }
#endif
}
    ...
    _ShowDebugInfo(ms, "Win32_MotherboardDevice");
    _ShowDebugInfo(ms, "Win32_BaseBoard");
    _ShowDebugInfo(ms, "Win32_Processor");
    _ShowDebugInfo(ms, "Win32_SystemEnclosure");
    _ShowDebugInfo(ms, "Win32_SystemMemoryResource");
    ...

Νομίζαμε ότι αν κάναμε κάτι σαν το παραπάνω θα βγάζαμε άκρη. Κάναμε μια πρόχειρη δοκιμή στον κώδικα σε ένα μηχάνημα και αφού έδειξε ότι βγάζει μπόλικο πράμα, μαζέψαμε μερικά βασικά properties ώστε να κάνουμε μια αρχή. Είπαμε λοιπόν, να πιάσουμε το serial number και τον κατασκευαστή του υπολογιστή, το λειτουργικό σύστημα, το μέγεθος της μνήμης και το username.

Το λειτουργικό σύστημα, το μέγεθος της μνήμης και το username, δεν ξέρεις από που να το πρωτοπάρεις. Είναι χίλες δυο classes που το δίνουν. Διαλέξεις μια στην τύχη και τη χρησιμοποιείς. Το serial number του υπολογιστή (του κουτιού βασικά) και τον κατασκευαστή είναι πιο συγκεκριμένες οι επιλογές. Παίρνεις τα properties Manufacturer, SerialNumber της Win32_SystemEnclosure.

Tρέχουμε τον κώδικα σε ένα μηχάνημα, και… όλα τέλεια!!! Μια από τις σπάνιες φορές που φαίνεται να δουλεύουν όλα με την πρώτη!!! Επειδή όμως ο διάολος έχει πολλά ποδάρια, είπαμε να τον τρέξουμε και σε ένα δεύτερο μηχάνημα. Το αποτέλεσμα… πάλι όλα τέλεια!!!

Θαύμα, θαύμα, έγινε ανάσταση, 2 στα 2!!!

Ε, λοιπόν, το σκορ έμεινε εκεί. 2 στα Ν, με το Ν να έχει την τάση να φτάσει το άπειρο. Ολα τα άλλα μηχανήματα που δοκίμασα τζίφος, αποτυχία, τίποτα. Null. Zero.

Είναι να μην βαράς το κεφάλι σου στον τοίχο. Μα καλά, μόνο δύο επώνυμα  μηχανήματα είχαμε που δοκιμάσαμε; Τα δύο πρώτα; Ισα να μας απογειώσουν για να μας ρίξουν μετά στα τάρταρα από μεγαλύτερο ύψος; Ολα τα υπόλοιπα, αγορασμένα κάποια από τοπικά κομπιουτεράδικα και άλλα από μεγάλα (επώνυμα;) καταστήματα (της Αθήνας για όποιον ενδιαφέρεται) που νομίζαμε ότι ήταν επώνυμα, τελικά κατέληξαν ανώνυμα; Αγνώστου πατρός και λοιπών στοιχείων (κατασκευαστή και σειριακού αριθμού);

Μην παρανοήσετε, όλοι οι υπολογιστές το αυτοκολλητάκι με τον σειριακό τον έχουν, το σηματάκι με το λογότυπο του κατασκευαστή είναι στο κουτί, αλλά ως εκεί. Σε αυτοκολλητάκι και στο κουτί. Η Hewlett-Packard αυτά τα στοιχεία τα βάζει και σε κάποια eprom, φαντάζομαι, και μπορούν να τα διαβάσουν τα προγράμματα και το λειτουργικό (δοκίμασα μόνο σε Windows). Ισως να το κάνουν και άλλες επώνυμες εταιρίες, όπως η Dell, ή IBM, αλλά δεν έχω για να το δοκιμάσω, αλλά γιατί δεν το κάνουν όλες; Είναι τόσο δύσκολο ή απλώς είναι λεπτομέρειες και ποιός κάθεται να ασχοληθεί.

Ξέρει κανείς που ακριβώς αποθηκεύονται αυτά τα στοιχεία; Μπορώ με κάποιο τρόπο, έστω και χειροκίνητα μια φορά να τα περάσω εγώ, αλλά μετά να τα έχω όπως τα έχω στα HP μηχανήματα που δοκίμασα;

Μέχρι να βγάλω άκρη εκεί είπα να πιάσω τους σκληρούς δίσκους. Εκεί κι αν γίνεται κόλαση. Η τεχνολογία (ή ο ωχαδερφισμός) στην περίπτωση μου ίσως και να μην έχει να μου προσφέρει τίποτα περισσότερο από το χαρτί και το μολύβι.

Οσοι γνώστες προσέλθετε. Ρίχτε ιδέες, προτάσεις, links και κώδικα μπας και βγεί άκρη.

2 Comments

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

    Γνωρίζεις πόσο πουλήθηκε;

    • Ναι, δεν βρήκες τον σύνδεσμο γιατί το πρώτο κειμενάκι με το γκριζοκίτρινο φόντο είναι απλώς μια ανακοίνωση. Το post είναι λίγο πιο κάτω στο /blog/2009/06/30/the-pirate-bay/

      Στο σχόλιο (#7. cerialph – 06-30 10:50) στην http://thepiratebay.org/blog/164 αναφέρει ένα ποσό 30 million SEK. Πόσο ακριβώς είναι αυτό δεν ξέρω αλλά σε άλλες σελίδες ψάχνοντας στο google πήρε το μάτι μου ότι πρέπει να πουλήθηκε γύρω στα 7 εκ. € (σε μετρητά) και άλλα τόσα σε μετοχές(?). Σε USD ήταν οι τιμές οπότε τα νούμερα πρέπει να ήταν λίγο μεγαλύτερα.