Hacking un server de imprimare pentru Ethernet Home Automation
Hacking un server de imprimare pentru Ethernet Home Automation

Hacking un server de imprimare pentru Ethernet Home Automation

Trimitere de Dan McGrath. Despre ce este vorba atunci? Ei bine, am o mulțime de automatizări la domiciliu și îmi place! Cu toate acestea, de fiecare dată când le arăt prietenilor și familiei, tind să obțin unul dintre cele două răspunsuri. Primul este că este doar un gimmick și nu și -ar dori niciodată așa ceva. Al doilea este că este grozav, dar prea complicat pentru ei să înființeze ceva similar.

Așadar, aceasta este încercarea mea de a face un dispozitiv simplu, de fapt, foarte ușor de automatizare a locuinței pe care oricine îl poate folosi și, practic, oricine poate face. De fapt, mă gândesc serios la fabricarea acestora în vrac (bine ceva similar) și vând întregul lot ca un serviciu gestionat pentru aproximativ un tenner pe an. (Vă rog să -mi spuneți dacă acest lucru ar putea interesa oricui). Oricum, deci aceasta este încercarea mea de automatizare a casei ieftine pentru mase, sper să vă placă …

Design – corect, așa că am nevoie de ceva care să fie ieftin, fiabil, ușor de pus în aplicare. De asemenea, ceva care poate fi declanșat de un comutator ușor, iar acest comutator ar putea fi oricare dintre următoarele:

Conectați -l la o priză, o lumină sau orice alt aparat și folosiți -l pentru a -l montor.

Atașați -vă la un panou solar sau LDR pentru a monitoriza nivelurile de lumină.

Conectați o pereche de sonde și detectați apa (plante, ploaie, scurgeri etc …)

Conectați -vă la un comutator PIR sau Reed pentru securitate,

Conectați -vă la o alarmă de fum pentru protecția împotriva incendiilor,

Conectați -vă la o rogojină de presiune etc …

Majoritatea oamenilor nu doresc ca un computer sau un server să funcționeze toată ziua, din cauza consumului de zgomot, căldură și energie. Calculatoarele de bord ușoare mici pot fi acum achiziționate de la 50 USD fiecare (Xport, Arduino, Picotux, etc.), dar chiar și acest lucru pare excesiv pentru ceea ce vreau …

Un comutator gestionat, router, firewall, orice cu un port Ethernet și un fel de interfață web a fost ceea ce am fost după ce am fost, dar trebuia să fie ieftin … și mic … Apoi am venit cu ideea unui server de imprimare … serverele de imprimare sunt ideale, folosesc foarte puțină energie electrică, sunt dezvoltate pentru a fi pornite tot timpul, pot răspunde la un ping și mai bine mai am încă un servitor web încorporat. Am făcut un pic de googling în jur și i -am văzut cât mai puțin de tenner pe eBay. Oh și sunt și ei minusculi! Am avut trei idei pentru acest proiect:

Primul a fost că aș putea rupe sau scurta perechea de transmisie pe televiziunea prin cablu Ethernet care intră pe serverul de imprimare. Cu siguranță, cu aceste scurte sau rupte dispozitivul nu ar putea răspunde nici la un ping sau la o solicitare HTTP.

Cred că ar funcționa, dar mi s -a părut un pic barbar și sunt sigur că aș putea face mai bine.

Al doilea a fost doar să rupă puterea către dispozitiv

Acest lucru a avut potențial dintr -un punct de vedere de economisire a energiei, întrucât nu veți mai apărea decât dispozitivul, desigur, atunci când a fost alimentat, nu veți vedea nici site -ul web, nici un răspuns la o cerere de ping. Mi -a plăcut destul de mult această idee, singurul lucru care m -a oprit a fost că, atunci când a fost oprit, ar fi imposibil de spus dacă dispozitivul ar fi oprit sau deconectat din rețea din alt motiv – poate un eșec în altă parte. De asemenea, nu am fost sigur cât timp dispozitivul va păstra setările (rețea etc.) în timp ce acesta era oprit.

Ceea ce îmi doream cu adevărat a fost un mod de a obține o reacție din partea unității pentru a confirma că a fost fie într -o stare, fie într -un fel, în acest fel, puteți fi sigur de ceea ce se întâmpla cu adevărat. Acolo vine a treia mea idee.

A treia idee a fost să păcălească serverul de imprimare că o imprimantă a fost cu adevărat atașată de acesta,

Și apoi aveți astfel încât să pară că imprimanta era pe linie sau în afara liniei.

Am făcut un pic de cercetare și se pare că pinul 13 al conectorului este utilizat în acest scop. Luați pinul înalt (adică aplicați 5 volți pe el) și serverul consideră că imprimanta este on_line, luați pinul scăzut (adică eliminați tensiunea) și serverul consideră că imprimanta este off_line.

Întrucât tot ce trebuie să fac este să aplic și să elimin 5 volți, pot găsi doar 5 volți undeva și să -l direcționez printr -un comutator. Închideți comutatorul și se pare că imprimanta este on_line, deschideți comutatorul și imprimanta apare OFF_LINE. După cum spun, acest statut se reflectă în interfața web, astfel încât un script ușor ar trebui să poată vota această pagină și să analizeze starea imprimantei și apoi să folosească aceste informații pentru ceva util.

Construcție-După cum am discutat mai sus, am folosit un server de imprimare paralel EDIMAX PS-1206P, pe care l-am achiziționat pentru aproximativ 25 de kilograme online. De fapt, a fost mult mai mult ca 22 de quid, dar poștale și ambalarea a fost un pic. Am sfârșit achiziționând o mână de acestea, deoarece erau atât de ieftine. Nu am mai auzit niciodată de EDIMAX, astfel încât produsul ar putea fi bun sau rău, dar nu -mi pasă, atât timp cât va răspunde la o solicitare HTTP, atunci voi fi fericit! Am fost plăcut uimit când s -au prezentat, au fost frumos în cutie, iar conținutul arăta și el ok:

Cu toate acestea, un lucru este sigur, acest dispozitiv nu va fi niciodată conectat în spatele unei imprimante. În curând o voi fi tăiat în ceva mult mai interesant. Detalii aici: EDIMAX PS-1206P

OK, deci să scoatem capacul unul dintre acestea … Îmi place doar să mă despart de lucruri, dar să iau lucruri noiÎn afară de a fi deosebit de distractiv pentru mine, pare atât de greșit !! Există câteva șuruburi de cap Phillips pe partea de jos și, odată ce acestea sunt îndepărtate, carcasa se desparte, deși trebuie să strecurați părțile un pic, în timp ce cele două jumătăți se fixează unul în celălalt.

Am fost plăcut uimit de interiorul acestei unități, a fost foarte bine pus la punct. Domnul știe doar pentru ce sunt toate bițiile, cred că există un procesor acolo, o anumită amintire, un pic de I/O și alte lucruri pe care nu le înțeleg.

Acum, puteți păstra priza mare de 36pin centronică pe serverul de imprimare și puteți pune mâna pe mufa potrivită pentru a vă conecta la acesta, dar acestea sunt destul de voluminoase și pare un pic peste partea de sus, mai ales, având în vedere că trebuie să ne conectăm doar la 2 din acești 36 de pini. Am ales să tai priza … Nu, nu am făcut -o cu un topor, însă pare un pic dur în acest moment:

Am desolidat apoi pinii individuali de pe bord și am alcătuit o mică placă metalică pentru a bloca gaura rămasă de la priza lipsă. Am forat câteva găuri în el și am conectat o pereche de borne cu șuruburi. Un pic de 2 părți epoxidice și ceva căldură și aveți asta …

Destul de îngrijit nu?! Așadar, acesta este prototipul de lucru, cu un pic de noroc, împingerea acelor două terminale cu șuruburi va returna un statut On_line, iar lăsarea lor deschisă va oferi o linie off_line. Deci este timpul să testați. Notă: Imaginile de mai sus arată conexiunile la pinii 35 și 36, aceasta este testarea incorectă, ulterioară, a arătat că am avut nevoie de pinii 13 și 19.

Am ales să măsoare consumul de energie și am fost plăcut uimit de ceea ce am găsit, folosește doar 6watt -uri, ceea ce nu este foarte mult? (La 10p pe kWh, va costa aproximativ 5 quid pe an pentru a rula)

Așa cum am spus mai sus, voi sonda serverul meu cu o solicitare HTTP și să colectez starea imprimantei, dar dacă doriți să vedeți doar dacă există acolo făcând ping -ul, atunci puteți utiliza ping pentru a -l montior, folosind ceva de genul:

Data
n = 1

în timp ce [$ n -lt 1000]
do
ping -n 1 server_ip
ecou $ n
Fie n = n+1
Terminat
Data

Arată că acest dispozitiv poate trimite (și primi) cu ușurință 1000 de pinguri în 52 de secunde, care este de 20 de pinguri pe secundă. Așadar, pinging -ul este o opțiune viabilă și ar trebui să vă ofere un răspuns destul de prompt. Desigur, dacă doriți să utilizați doar Ping, atunci va trebui să porniți unitatea prin ruperea conexiunii de putere sau de rețea (nu va fi afectată de starea imprimantei). Pingurile nu funcționează cu adevărat bine pe internet, mulți oameni și routere dezactivează solicitările ICMP la limitele lor, însă beneficiul cu acest dispozitiv este că are și o interfață web care poate fi chestionată pentru a verifica disponibilitatea acestuia. Acest lucru se poate face cu ușurință pe internet, și din nou un scurt script arată că puteți face aproximativ 1 cerere pe secundă folosind …

#!/usr/bin/bash

utilizator = nume de utilizator
parolă = parolă
url = server_url

wget –quiet –http-user = $ utilizator –http-password = $ parolă \
–Proxy = $ proxy $ url

grep off_line imprimantă.htm> /dev /null

Dacă [„$?” == „0”]
apoi ecou „offline”
else ecou „online”
fi

imprimantă RM.htm

Returnează o valoare bazată pe starea imprimantei. Rețineți că serverul web de la bord este destul de lent, așa cum era de așteptat cu adevărat, dar veți obține o reacție în mai puțin de o secundă, așa că cred că va fi posibil să se sondați la fiecare 5-10 sec. Înlocuirea comenzilor Echo cu poștă sau comenzi suplimentare WGET ar putea să vă trimită un e -mail sau să primiți o adresă URL (poate folosiți Twitter pentru a vă face SMS etc.)

OK, un exemplu despre cum să vă actualizați starea Twitter este prezentat mai jos:

wget –keep-sesssion-cookies –http-user = nume de utilizator \
–Http-password = parola –post-data = mesaj \

(Înlocuiți numele de utilizator, parola și mesajul cu, bine știți ..)

Sau mai bine, iată cum să vă trimiteți un tweet când se întâmplă ceva:

wget –keep-sesssion-cookies –http-user = user \
–Http-password = parola –post-data = mesaj \

Rețineți, trebuie să codificați mesajul care este destul de fain, nu -i așa? Vedeți mult mai multe despre API -ul Twitter aici. – API Twitter

Pentru a vedea acest lucru de pe net, va trebui să vă prezentați pe serverul dvs. de imprimare, rulez un router Cisco, astfel încât următoarele au funcționat pentru mine:

IP nat în interiorul sursei statice TCP extensibil

(Mențineți numărul portului în 50.000 de ani și veți obține mai puțini oameni care vă scanează și vă probează). Dacă aveți un router Linksys, atunci ghidul va fi diferit, dar ceva de genul acesta ar trebui să o facă:

Dacă nu aveți niciunul dintre cele de mai sus, atunci sunteți pe cont propriu … Noroc!

Software – OK, am dat câteva exemple de mai sus, mai jos este un script Bash Shell care funcționează care va monitoriza unul dintre acestea pentru dvs., iar Twitter vă face față atunci când starea se va schimba. Este un exemplu foarte ușor, dar ar trebui să te înceapă.

#!/bin/bash

## Web Get Parametri
user = “admin”
Parolă = ”1234 ″
url = “http: //ip_address/printer.htm”

## Parametri Twitter
t_user = utilizator
t_passwd = parolă

## Alți parametri
Status = “închis”

în timp ce este adevărat
do
Old_Status = $ Status
wget –quiet –http-user = $ utilizator –http-passwd = $ parolă $ url

grep off_line imprimantă.htm> /dev /null

Dacă [„$?” == „0”]
Atunci status = “deschis”
else status = “închis”
fi

imprimantă RM.htm

Dacă [$ Status! = $ old_status]
apoi wget –quiet –http-user = $ t_user \
–HttP-PASSWD = $ T_PASSWD –Keep-Session-Cookies \
–Post-data = “user = twitter_username & text = mesaj” \

fi
Dormi 1
Terminat

În mod alternativ, puteți utiliza unele software de monitorizare, cum ar fi Freenats -ul excepțional pentru a vă avertiza când se întâmplă ceva.

Concluzie – Ei bine, sper că te -ai încântat de ceea ce am făcut, trebuie să recunoști că este automatizarea la domiciliu
pe ieftin și foarte ușor de făcut. Noroc – Dan

Link-uri utile

CPAN – toate lucrurile perl
Perl – mult mai multe lucruri perl
Wget – aplicație wget
EDIMAX – Furnizorii serverului de imprimare Altele / Diverse
Twitter – Site de rețea socială cu SMS

Acest scurt articol reprodus din original după acordul lui Dan McGrath din YourMissus.com

Vreau mai mult? – Urmați -ne pe Twitter, ca noi pe Facebook sau abonați -vă la fluxul nostru RSS. Puteți primi chiar și aceste știri livrate prin e -mail, direct în căsuța de e -mail în fiecare zi

Imparte asta:
Facebook
Stare de nervozitate
Reddit
LinkedIn
Pinterest
E-mail
Mai mult

WhatsApp
Imprimare

Skype
Tumblr

Telegramă
Buzunar

Leave a Reply

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