Menu Close

Hackeando um servidor de impressão para automação residencial Ethernet

envio por Dan McGrath. O que é tudo isso então? Bem, eu tenho muitos montes de automação doméstica e adoro! No entanto, sempre que o mostro a amigos e familiares, costumo obter uma das duas respostas. A primeira é que é apenas um truque e eles nunca querem nada assim. O segundo é que é ótimo, mas complicado demais para eles estabelecer algo semelhante.

Portanto, esta é a minha tentativa de um dispositivo simples, de fato, muito fácil de automação residencial que qualquer um pode usar e praticamente qualquer um pode fazer. Na verdade, estou considerando seriamente fabricá -las a granel (bem algo semelhante) e vender todo o lote como um serviço gerenciado por cerca de dezners por ano. (Por favor, deixe -me saber se isso poderia ser do seu interesse). Enfim, então esta é minha tentativa de automação doméstica barata para as massas, espero que gostem …

Design – Certo, então eu preciso de algo barato, confiável, fácil de se apossar. Também algo que pode ser acionado por um interruptor fácil, e esse switch pode ser qualquer um dos seguintes:

Conecte -o a um soquete, luz ou qualquer outro aparelho e use -o para montar.

Anexe a um painel solar ou LDR para monitorar os níveis de luz.

Conecte um par de sondas e detecte água (plantas, chuva, vazamentos etc …)

Conecte -se a um Switch PIR ou Reed para segurança,

Conecte -se a um alarme de fumaça para proteção contra incêndio,

Conecte -se a um tapete de pressão etc.

A maioria das pessoas não quer um PC ou servidor em execução o dia todo, devido ao consumo de ruído, calor e energia. Os computadores fáceis do Tiny One Board agora podem ser adquiridos de US $ 50 cada (xport, arduino, picotux, etc.), mas mesmo isso parece exagerado pelo que eu quero …

Um interruptor gerenciado, roteador, firewall, qualquer coisa com uma porta Ethernet e algum tipo de interface da web era o que eu procurava, mas tinha que ser barato … e pequeno…. Então tive a idéia de um servidor de impressão … os servidores de impressão são ideais, eles usam muito pouca eletricidade, são desenvolvidos para serem ligados o tempo todo, podem responder a um ping e melhor ainda ter um servidor da web embutido também. Fiz um pouco de pesquisando no Google e os vi por um pouco de dez no eBay. Ah, e eles são pequenos também! Eu tinha três idéias para este projeto:

A primeira foi que eu poderia quebrar ou diminuir o par de transmissão na televisão a cabo Ethernet de entrada no servidor de impressão. Certamente, com esses curtos ou quebrados, o dispositivo não poderá responder a uma solicitação de ping ou http.

Eu acho que funcionaria, mas parecia um pouco bárbaro, e tenho certeza de que poderia fazer melhor.

O segundo foi apenas para quebrar o poder do dispositivo

Isso tinha potencial do ponto de vista da economia de energia, pois você estaria ligando apenas para o dispositivo, é claro que, quando foi desligado, você não veria o site ou uma resposta a uma solicitação de ping. Gostei bastante dessa ideia, a única coisa que me afastou foi que, quando foi desligada, seria impossível dizer se o dispositivo estava desligado ou desconectado da rede por outro motivo – talvez um fracasso em outro lugar. Além disso, eu não tinha certeza de quanto tempo o dispositivo manteria as configurações (rede etc.) enquanto estava desligado.

O que eu realmente queria era uma maneira de obter uma reação da unidade para confirmar que ela estava em um estado ou de outra, assim você poderia ter certeza do que realmente estava acontecendo. É aí que entra minha terceira ideia.

A terceira idéia era enganar o servidor de impressão que uma impressora estava realmente anexada a ele,

E então, tenha para que parecia que a impressora estivesse dentro ou fora da linha.

Eu fiz um pouco de pesquisa e parece que o pino 13 do conector é usado para esse fim. Pegue o pino alto (ou seja, aplique 5volts a ele) e o servidor pensa que a impressora está ON_LINE, pegue o pino baixo (ou seja, remova a tensão) e o servidor pensa que a impressora está off_line.

Como tudo o que preciso fazer é aplicar e remover 5volts, posso encontrar 5volts em algum lugar e encaminhá -lo através de um interruptor. Feche o comutador e parece que a impressora está ON_LINE, abra o comutador e a impressora aparece off_line. Como eu disse, esse status é refletido na interface da Web; portanto, um script fácil deve poder pesquisar esta página e analisar o status da impressora e, em seguida, usar essas informações para algo útil.

Construção-Conforme discutido acima, usei um servidor de impressão paralelo Edimax PS-1206P, que comprei por cerca de 25 libras online. Na verdade, era muito mais como 22 libras, mas a postagem e a embalagem aumentam um pouco. Acabei comprando um punhado deles, pois eram tão baratos. Eu nunca ouvi falar de Edimax antes, para que o produto possa ser bom ou ruim, mas não me importo, desde que responda a uma solicitação HTTP, ficarei feliz! Fiquei agradavelmente surpreso quando eles apareceram, foram bem encaixotados e o conteúdo também parecia bem:

Uma coisa é certa, porém, este dispositivo nunca será conectado à parte traseira de uma impressora. Em breve, terei picado em algo muito mais interessante. Detalhes aqui: Edimax PS-1206p

Ok, então vamos tirar a tampa de uma delas … eu adoro desmontar as coisas, mas levar coisas novasPartido é especialmente divertido para mim, parece tão errado !! Existem alguns parafusos da cabeça de Phillips na parte inferior e, uma vez removidos, o estojo apenas se separa, embora você precise apertar um pouco as laterais enquanto as duas metades se prendem.

Fiquei agradavelmente impressionado com o interior desta unidade, ela foi muito bem montada. O Senhor sabe apenas para que serve todos os bits, acho que há um processador lá, alguma memória, um pouco de E/S e outras coisas que eu não entendo.

Agora, você pode manter o grande soquete de Centronics de 36 pinos no servidor de impressão e apenas se apossar do plugue de correspondência para conectar -se a ele, mas estes são bastante volumosos e parece um pouco exagerado, especialmente considerando que precisamos apenas nos conectar a 2 de 2 de Estes 36 pinos. Eu escolhi cortar o soquete … Não, eu não fiz isso com um machado, ele parece um pouco difícil no momento:

Em seguida, dessolava os pinos individuais da placa e fiz uma pequena placa de metal para bloquear o orifício deixado do soquete que faltava. Eu perfurei alguns orifícios e conectei um par de terminais de parafuso. Um pouco de epóxi de 2 partes e um pouco de time e você tem isso …

Muito legal eh?! Portanto, esse é o protótipo de funcionamento, com um pouco de sorte, a ponte desses dois terminais de parafuso retornará um status On_Line e deixá -los aberto fornecerá um off_line. Então é hora de testar. Nota: As imagens acima mostram as conexões aos pinos 35 e 36, isso está incorreto, testes subsequentes mostraram que eu realmente precisava de pinos 13 e 19.

Eu escolhi medir o consumo de energia e fiquei agradavelmente impressionado com o que encontrei, ele usa apenas 6watts, o que não é muito para que seja? (A 10p por kWh, custará cerca de 5 libras por ano para ser executado)

Como eu disse acima, vou pesquisar meu servidor com uma solicitação HTTP e coletar o status da impressora, mas se você quiser ver se está lá, pingando -o, poderá usar o ping para montá -lo, usando algo como:

encontro
n = 1

enquanto [$ n -LT 1000]
Faz
ping -n 1 server_ip
eco $ n
Seja n = n+1
feito
encontro

Mostra que este dispositivo pode enviar facilmente (e receber) 1000 pings em 52 segundos, o que é 20 pings por segundo. Portanto, ping é uma opção viável e deve fornecer uma resposta bastante rápida. Obviamente, se você deseja usar o ping, precisará desencadear a unidade quebrando a conexão de energia ou rede (ela não será afetada pelo status da impressora). Os pings realmente não funcionam bem na Internet, muitas pessoas e roteadores desativam as solicitações do ICMP em seus limites, no entanto, o benefício deste dispositivo é que ele também possui uma interface da Web que pode ser pesquisada para verificar sua disponibilidade. Isso pode ser feito pela Internet facilmente e, novamente, um pequeno script mostra que você pode fazer cerca de 1 solicitação por segundo usando…

#!/usr/bin/bash

usuário = nome de usuário
senha = senha
url = server_url

wget –quiet –http-user = $ user –http-assassword = $ senha \
–Proxy = $ proxy $ url

grep off_line impressora.htm> /dev /null

Se [“$?” == “0”]
Então ecoar
else ecoar “online”
fi

RM Printer.htm

Retorna um valor com base no status da impressora. Observe que o servidor da web a bordo é bem lento, como o esperado, mas você recebe uma reação em menos de um segundo, então acho que será viável fazer uma pesquisa a cada 5-10 segundos. Substituir os comandos Echo por e -mail ou comandos WGET adicionais pode enviar um e -mail para você ou obter um URL (talvez use o Twitter para sms você etc.)

OK, um exemplo de como atualizar o status do seu Twitter é fornecido abaixo:

WGET-Keep-session-cookies –HTTP-user = Nome de usuário \
–HTTP-Password = senha –Post-Data = Mensagem \

(Substitua o nome de usuário, a senha e a mensagem com, bem, você sabe ..)

Ou melhor ainda, veja como enviar um tweet quando algo acontece:

WGET-Keep-session-cookies –HTTP-user = Usuário \
–HTTP-Password = senha –Post-Data = Mensagem \

Observe que você precisa codificar a mensagem que é bem legal, não é? Veja muito mais sobre a API do Twitter aqui. – API do Twitter

Para ver isso na rede, você precisará Nat para o seu servidor de impressão, estou executando um roteador da Cisco para que o seguinte tenha funcionado para mim:

ip nat interno fonte estática tcp extensível

(Mantenha o número da porta nos 50.000 altos e você terá menos pessoas digitalizando e investigando). Se você tem um roteador Linksys, a diretriz será diferente, mas algo assim deve fazê -lo:

Se você não tem nenhum dos itens acima, então você está por conta própria … Boa sorte!

Software – OK, eu dei alguns exemplos acima, abaixo está um script de shell do Bash que monitora um deles para você e o Twitter SMS quando o estado mudar. É um exemplo muito fácil, mas deve começar.

#!/bin/bash

## Web Get Parâmetros
usuário = “admin”
senha = ”1234 ″
url = “http: //ip_address/printer.htm”

## Parâmetros do Twitter
t_user = usuário
t_passwd = senha

## Outros parâmetros
status = “fechado”

enquanto é verdade
Faz
Old_status = $ status
wget –quiet –http-user = $ user –http-assasswd = $ senha $ url

grep off_line impressora.htm> /dev /null

Se [“$?” == “0”]
então status = “aberto”
else status = “fechado”
fi

RM Printer.htm

Se [$ status! = $ Old_status]
Então wget –quiet –http-user = $ t_user \
–HTTP-PASSWD = $ T_PASPWD-Keep-Session-Cookies \
–Post-Data = ”User = twitter_username & text = message” \

fi
sono 1
feito

Como alternativa, você pode usar alguns softwares de monitoramento, como o excelente freeenats para alertá -lo quando algo acontecer.

Conclusão – bem, espero que você tenha se encantado com o que eu fiz, você tem que admitir que é automação doméstica
Sobre o barato e muito fácil de fazer. Saúde – Dan

Links Úteis

CPAN – todas as coisas perl
Perl – muito mais coisas perl
WTE – Aplicativo WGE
Edimax – provedores do servidor de impressão outros / misc
Twitter – site de redes sociais com SMS

Este pequeno artigo reproduzido do original por meio de consentimento de Dan McGrath de Yourmissus.com

Quer mais? – Siga -nos no Twitter, como nós no Facebook ou assine nosso feed RSS. Você pode até receber essas notícias entregues por e -mail, diretamente para sua caixa de entrada todos os dias

Compartilhar isso:
Facebook
Twitter
Reddit
LinkedIn
Pinterest
E-mail
Mais

Whatsapp
Imprimir

Skype
Tumblr

Telegrama
Bolso

Leave a Reply

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