Hacking a Server Print για την υποβολή του Ethernet Home Automation

από τον Dan McGrath. Τι είναι όλα αυτά; Λοιπόν, έχω πολλά αυτοματισμό στο σπίτι, και μου αρέσει! Ωστόσο, κάθε φορά που το δείχνω σε φίλους και οικογένεια, τείνω να πάρω μία από τις δύο απαντήσεις. Το πρώτο είναι ότι είναι απλώς ένα τέχνασμα και δεν θα ήθελαν ποτέ κάτι τέτοιο. Το δεύτερο είναι ότι είναι υπέροχο, αλλά πολύ περίπλοκο για αυτούς να δημιουργήσουν κάτι παρόμοιο.

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

Σχεδιασμός – Δεξιά, οπότε χρειάζομαι κάτι που είναι φτηνό, αξιόπιστο, εύκολο να το πάρει. Επίσης κάτι που μπορεί να ενεργοποιηθεί από έναν εύκολο διακόπτη, και αυτός ο διακόπτης θα μπορούσε να είναι οποιοδήποτε από τα παρακάτω:

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

Συνδέστε σε έναν ηλιακό πίνακα ή LDR για να παρακολουθείτε τα επίπεδα φωτός.

Συνδέστε ένα ζευγάρι ανιχνευτών και ανιχνεύστε νερό (φυτά, βροχή, διαρροές κλπ …)

Συνδεθείτε σε διακόπτη PIR ή Reed για ασφάλεια,

Συνδεθείτε σε συναγερμό καπνού για πυροπροστασία,

Συνδεθείτε σε ένα χαλάκι πίεσης κλπ ….

Οι περισσότεροι άνθρωποι δεν θέλουν έναν υπολογιστή ή διακομιστή να τρέχουν όλη την ημέρα, λόγω του θορύβου, της θερμότητας και της κατανάλωσης ενέργειας. Εύκολοι μικροί υπολογιστές ενός σκάφους μπορούν τώρα να αγοραστούν από $ 50 το καθένα (Xport, Arduino, Picotux, κλπ.), Αλλά ακόμη και αυτό φαίνεται υπερβολικό για αυτό που θέλω …

Ένας διαχειριζόμενος διακόπτης, δρομολογητής, τείχος προστασίας, οτιδήποτε με ένα λιμάνι Ethernet και κάποιο είδος διεπαφής ιστού ήταν αυτό που ήμουν μετά, αλλά έπρεπε να είναι φθηνό … και μικρό …. Στη συνέχεια, ήρθα με την ιδέα ενός διακομιστή εκτύπωσης … Οι διακομιστές εκτύπωσης είναι ιδανικοί, χρησιμοποιούν πολύ λίγη ηλεκτρική ενέργεια, αναπτύσσονται για να ενεργοποιηθούν συνεχώς, μπορούν να ανταποκριθούν σε ένα ping και καλύτερα να έχουν ακόμα ενσωματωμένο webserver. Έκανα λίγο googling γύρω και τα είδα για μόλις ένα tenner στο eBay. Ω και είναι επίσης μικροσκοπικά! Είχα τρεις ιδέες για αυτό το έργο:

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

Νομίζω ότι θα λειτουργούσε, αλλά φαινόταν λίγο βάρβαρο και είμαι βέβαιος ότι θα μπορούσα να κάνω καλύτερα.

Το δεύτερο ήταν μόνο για να σπάσει τη δύναμη στη συσκευή

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

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

Η τρίτη ιδέα ήταν να εξαπατηθεί ο διακομιστής εκτύπωσης ότι ένας εκτυπωτής ήταν πραγματικά συνδεδεμένος με αυτό,

Και έπειτα να το έχετε έτσι ώστε να φαινόταν ότι ο εκτυπωτής ήταν ενεργοποιημένος ή εκτός γραμμής.

Έκανα ένα κομμάτι της αναχώρησης και φαίνεται ότι ο ακροδέκτης 13 του συνδέσμου χρησιμοποιείται για το σκοπό αυτό. Πάρτε το PIN High (δηλ. Εφαρμόστε 5VOLTS σε αυτό) και ο διακομιστής πιστεύει ότι ο εκτυπωτής είναι on_line, πάρτε το pin χαμηλό (δηλ. Αφαίρεση της τάσης) και ο διακομιστής πιστεύει ότι ο εκτυπωτής είναι off_line.

Καθώς το μόνο που έχω να κάνω είναι να εφαρμόσω και να αφαιρέσω 5volts, μπορώ απλώς να βρω 5volts κάπου και να το δρομολογήσω μέσω ενός διακόπτη. Κλείστε το διακόπτη και φαίνεται ότι ο εκτυπωτής είναι on_line, ανοίξτε το διακόπτη και ο εκτυπωτής εμφανίζεται εκτός σύνδεσης. Όπως λέω, αυτή η κατάσταση αντικατοπτρίζεται στη διεπαφή ιστού, οπότε ένα εύκολο σενάριο πρέπει να είναι σε θέση να δημοσκοπήσει αυτή τη σελίδα και να αναλύσει την κατάσταση του εκτυπωτή και στη συνέχεια να χρησιμοποιήσει αυτές τις πληροφορίες για κάτι χρήσιμο.

Κατασκευή-Όπως αναφέρθηκε παραπάνω, χρησιμοποίησα έναν παράλληλο διακομιστή εκτύπωσης EDIMAX PS-1206P, τον οποίο αγόρασα για περίπου 25 κιλά σε απευθείας σύνδεση. Ήταν στην πραγματικότητα πολύ περισσότερο σαν 22 quid, αλλά τα ταχυδρομικά τέλη και η συσκευασία χτυπούν αυτό λίγο. Καταλήξαμε να αγοράζω μια χούφτα από αυτά, όπως ήταν τόσο φθηνά. Ποτέ δεν έχω ακούσει για το Edimax πριν, οπότε το προϊόν θα μπορούσε να είναι καλό ή κακό, αλλά δεν με νοιάζει, εφ ‘όσον θα ανταποκριθεί σε ένα αίτημα HTTP τότε θα είμαι ευτυχισμένος! Ήμουν ευχάριστα έκπληκτος όταν εμφανίστηκαν, ήταν όμορφα κιβώτια, και το περιεχόμενο φαινόταν εντάξει επίσης:

Ένα πράγμα είναι σίγουρο, όμως, αυτή η συσκευή δεν θα συνδεθεί ποτέ στο πίσω μέρος ενός εκτυπωτή. Σύντομα θα το κόψω σε κάτι πολύ πιο ενδιαφέρον. Λεπτομέρειες εδώ: Edimax PS-1206P

Εντάξει, λοιπόν, ας πάρουμε το καπάκι από ένα από αυτά…. Απλά αγαπώ να ξεχωρίζω, αλλά να παίρνω ολοκαίνουργια πράγματαΗ εκτός έδρας είναι ιδιαίτερα διασκεδαστική για μένα, φαίνεται απλά τόσο λάθος !! Υπάρχουν μερικές βίδες της κεφαλής Phillips στο κάτω μέρος και μόλις αφαιρεθούν αυτά, η θήκη απλά απομακρύνεται, αν και πρέπει να πιέσετε τις πλευρές λίγο καθώς τα δύο μισά κλιπ ο ένας στον άλλο.

Ήμουν ευχάριστα έκπληκτος με το εσωτερικό αυτής της μονάδας, ήταν πολύ καλά μαζί. Ο Κύριος γνωρίζει μόνο τι είναι όλα τα κομμάτια για, υποθέτω ότι υπάρχει ένας επεξεργαστής εκεί, κάποια μνήμη, λίγο I/O και άλλα πράγματα που δεν καταλαβαίνω.

Τώρα, θα μπορούσατε να κρατήσετε τη μεγάλη υποδοχή Centronics 36Pin στο διακομιστή εκτύπωσης και απλά να κρατήσετε το αντίστοιχο βύσμα για να συνδεθείτε με αυτό, αλλά αυτά είναι αρκετά ογκώδη και φαίνεται λίγο πάνω από την κορυφή, ειδικά λαμβάνοντας υπόψη ότι πρέπει να συνδεθούμε μόνο με 2 Αυτές οι 36 καρφίτσες. Επέλεξα να κόψω την πρίζα … όχι, δεν το έκανα με ένα τσεκούρι, φαίνεται λίγο τραχύ αυτή τη στιγμή:

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

Αρκετά τακτοποιημένο ε;! Έτσι, αυτό είναι το πρωτότυπο εργασίας, με λίγη τύχη, η γεφύρωση αυτών των δύο βιδωτών ακροδεκτών θα επιστρέψει μια κατάσταση on_line, και αφήνοντας τους ανοιχτά θα δώσει ένα off_line. Έτσι ήρθε η ώρα να δοκιμάσετε. Σημείωση: Οι παραπάνω εικόνες δείχνουν τις συνδέσεις με τις ακίδες 35 και 36, αυτό είναι λανθασμένο, οι επακόλουθες δοκιμές έδειξαν ότι χρειάζομαι πραγματικά καρφίτσες 13 και 19.

Επέλεξα να μετρήσω την κατανάλωση ενέργειας και ήμουν ευχάριστα έκπληκτος σε αυτό που βρήκα, χρησιμοποιεί μόνο 6watts, κάτι που δεν είναι πολύ αυτό; (Σε 10p ανά kWh, θα κοστίσει περίπου 5 quid ανά έτος για να τρέξει)

Όπως είπα παραπάνω, πρόκειται να ψηλάω τον διακομιστή μου με ένα αίτημα HTTP και να συλλέξω την κατάσταση του εκτυπωτή, αλλά αν θέλετε να δείτε αν είναι εκεί με το pinging, τότε μπορείτε να χρησιμοποιήσετε το ping για να το montior, χρησιμοποιώντας κάτι σαν:

ημερομηνία
n = 1

ενώ [$ n -lt 1000]
κάνω
ping -n 1 server_ip
echo $ n
ας n = n+1
Ολοκληρώθηκε
ημερομηνία

Δείχνει ότι αυτή η συσκευή μπορεί εύκολα να στείλει (και να λάβει) 1000 pings σε 52 δευτερόλεπτα που είναι 20 pings ένα δευτερόλεπτο. Έτσι, το pinging είναι μια βιώσιμη επιλογή και πρέπει να σας δώσει μια αρκετά άμεση απάντηση. Φυσικά, αν θέλετε να χρησιμοποιήσετε μόνο το ping τότε θα πρέπει είτε να ξεκινήσετε τη μονάδα, σπάζοντας τη σύνδεση ισχύος ή δικτύου (δεν θα επηρεαστεί από την κατάσταση του εκτυπωτή). Τα Pings δεν λειτουργούν πραγματικά καλά στο διαδίκτυο, πολλοί άνθρωποι και δρομολογητές απενεργοποιούν τα αιτήματα ICMP στα όριά τους, ωστόσο το όφελος με αυτή τη συσκευή είναι ότι διαθέτει επίσης ένα περιβάλλον ιστού που μπορεί να ερωτηθεί για να ελέγξει τη διαθεσιμότητά του. Αυτό μπορεί να γίνει μέσω του Διαδικτύου εύκολα, και πάλι ένα σύντομο σενάριο δείχνει ότι μπορείτε να κάνετε περίπου 1 αίτημα ανά δευτερόλεπτο χρησιμοποιώντας …

#!/usr/bin/bash

χρήστης = όνομα χρήστη
Κωδικός πρόσβασης = κωδικός πρόσβασης
url = server_url

wget -quiet -http-user = $ user -http-password = $ password \
-Proxy = $ proxy $ url

grep off_line printer.htm> /dev /null

Εάν [“$;” == “0”]
Στη συνέχεια, η Echo “offline”
αλλιώς η Echo “online”
fi

rm printer.htm

Επιστρέφει μια τιμή που βασίζεται στην κατάσταση του εκτυπωτή. Σημειώστε ότι ο webserver επί του σκάφους είναι αρκετά αργή, όπως αναμενόταν πραγματικά, αλλά έχετε μια αντίδραση σε λιγότερο από ένα δευτερόλεπτο, οπότε νομίζω ότι θα είναι εφικτό για δημοσκόπηση κάθε 5-10secs. Η αντικατάσταση των εντολών Echo με αλληλογραφία ή πρόσθετες εντολές WGET θα μπορούσε να σας στείλει μήνυμα ηλεκτρονικού ταχυδρομείου ή να λάβει μια διεύθυνση URL (ίσως χρησιμοποιήστε το Twitter σε SMS σας κλπ.)

Εντάξει, ένα παράδειγμα για το πώς μπορείτε να ενημερώσετε την κατάσταση Twitter σας δίνεται παρακάτω:

wget -keep-session-cookies -http-user = Όνομα χρήστη \
-Http-password = κωδικός πρόσβασης -post-data = μήνυμα \

(Αντικαταστήστε το όνομα χρήστη, τον κωδικό πρόσβασης και το μήνυμα με, καλά ξέρετε ..)

Ή καλύτερα ακόμα, εδώ είναι πώς να στείλετε τον εαυτό σας ένα tweet όταν συμβεί κάτι:

wget -keep-session-cookies -http-user = χρήστης \
-Http-password = κωδικός πρόσβασης -post-data = μήνυμα \

Σημείωση, πρέπει να κωδικοποιήσετε το μήνυμα που είναι πολύ δροσερό, έτσι δεν είναι; Δείτε πολλά περισσότερα για το API Twitter εδώ. – Twitter API

Για να το δείτε από το δίχτυ, θα χρειαστεί να NAT στον διακομιστή εκτύπωσης σας, τρέχω ένα δρομολογητή Cisco έτσι ώστε τα ακόλουθα να λειτουργούν για μένα:

IP NAT Inside Source STATIC TCP ΕΠΙΣΤΡΟΦΗ

(Κρατήστε τον αριθμό θύρας στα υψηλά 50.000 και θα πάρετε λιγότερους ανθρώπους να σαρώνουν και να σας εξετάσουν). Εάν έχετε έναν δρομολογητή Linksys τότε η κατευθυντήρια γραμμή θα είναι διαφορετική, αλλά κάτι τέτοιο θα έπρεπε να το κάνει:

Εάν δεν έχετε κανένα από τα παραπάνω, τότε είστε μόνοι σας … καλή τύχη!

Λογισμικό – Εντάξει, έδωσα μερικά παραδείγματα παραπάνω, παρακάτω είναι ένα σενάριο κελύφους εργασίας που θα παρακολουθεί ένα από αυτά για εσάς και το Twitter SMS σας όταν αλλάξει η κατάσταση. Είναι ένα πολύ εύκολο παράδειγμα, αλλά θα έπρεπε να σας ξεκινήσει.

#!/bin/bash

## Web Λήψη παραμέτρους
χρήστης = “admin”
Κωδικός πρόσβασης = “1234”
url = “http: //ip_address/printer.htm”

## παραμέτρους Twitter
t_user = χρήστης
t_passwd = κωδικός πρόσβασης

## άλλες παραμέτρους
Κατάσταση = “κλειστό”

Ενώ είναι αλήθεια
κάνω
old_status = $ κατάσταση
wget -quiet -http-user = $ user -http-passwd = $ password $ url

grep off_line printer.htm> /dev /null

Εάν [“$;” == “0”]
τότε κατάσταση = “Άνοιγμα”
else status = “κλειστό”
fi

rm printer.htm

Εάν [$ status! = $ old_status]
τότε wget -quiet -http-user = $ t_user \
-Http-passwd = $ t_passwd -keep-session-cookies \
-Post-data = “user = twitter_username & text = μήνυμα” \

fi
ύπνος 1
Ολοκληρώθηκε

Εναλλακτικά, θα μπορούσατε να χρησιμοποιήσετε κάποιο λογισμικό παρακολούθησης, όπως οι εξαιρετικοί freenats για να σας ειδοποιήσετε όταν συμβεί κάτι.

Συμπέρασμα – Λοιπόν, ελπίζω να έχετε ευχαριστήσει αυτό που έχω κάνει, πρέπει να παραδεχτείτε ότι είναι αυτοματοποίηση στο σπίτι
στο φτηνό και πολύ εύκολο να γίνει. Cheers – Dan

Χρήσιμοι σύνδεσμοι

Cpan – όλα τα πράγματα perl
Perl – πολύ περισσότερα πράγματα Perl
Εφαρμογή WGET – WGET
Edimax – Παροχές του διακομιστή εκτύπωσης Άλλοι / Διάφορα
Twitter – ιστότοπος κοινωνικής δικτύωσης με SMS

Αυτό το σύντομο άρθρο αναπαράγεται από το πρωτότυπο με την ευγενική συγκατάθεση του Dan McGrath του Yourmissus.com

Θέλουν περισσότερα? – Ακολουθήστε μας στο Twitter, όπως και εμείς στο Facebook ή εγγραφείτε στη ροή RSS. Μπορείτε ακόμη να λάβετε αυτές τις ειδήσεις που παρέχονται μέσω ηλεκτρονικού ταχυδρομείου, κατευθείαν στα εισερχόμενά σας κάθε μέρα

Μοιραστείτε αυτό:
Facebook
Κελάδημα
Ερυθρός
LinkedIn
Pinterest
ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ
Περισσότερο

Whatsapp
Τυπώνω

Σκυϊδάκι
Ουρανός

Τηλεγράφημα
Τσέπη

Leave a Reply

Your email address will not be published. Required fields are marked *