Como fazer uma rede WiFi que só transmite imagens de gato com um pi de framboesa

Veja como os usuários confusos são intensamente frustrados, mas estranhamente acalmados.

Veja como os usuários confusos são intensamente frustrados, mas estranhamente acalmados.
Propaganda

É um cenário de uso comum: você deseja transmitir uma rede Wi-Fi pública para qualquer um usar, mas você tem requisitos rígidos que apenas imagens de gatos são permitidas. Ótima notícia: o seu Raspberry Pi é uma máquina de transmogificação perfeita. Intrigado? Leia.

O que você precisará

  • Raspberry Pi modelo B (Novo para Raspberry Pi? Aqui está tudo que um iniciante precisaria saber Apenas comprei um Raspberry Pi? 11 Coisas que você precisa saber Apenas comprei um Raspberry Pi? 11 Coisas que você precisa saber Neste vídeo, nós explicamos tudo o que você pode ser necessário saber se você acabou de comprar um Raspberry Pi ou está pensando em comprar um. Leia Mais, em formato de vídeo)
  • Cartão SD de 4 GB ou maior
  • Cabo Ethernet
  • Adaptador WiFi Compatível
  • Cabo de alimentação e adaptador MicroUSB

A teoria

Este projeto começa idêntico ao Onion Router Construa seu próprio: Safeplug (Tor Proxy Box) Crie seu próprio: Safeplug (Tor Proxy Box) Por que pagar US $ 50 por uma caixa de proxy Tor quando você pode fazer o seu próprio com um Raspberry Pi e USB WiFi dongle? Leia mais nós construímos algumas semanas atrás. Vamos fazer o Raspberry Pi em uma rede WiFi padrão primeiro, depois colocar um proxy no meio. O proxy estará filtrando postagens através de um script Perl, que substituirá as imagens em cada solicitação HTTP com cat GIFs de TheCatAPI.com. Veja como os usuários confusos são intensamente frustrados, mas estranhamente acalmados. Aqui está a BBC, modificações pós-gato.

pós-gato-bbc

Fazendo uma rede WiFi

Uma vez que esta parte do tutorial é exatamente igual ao DIY Onion Router: Construa o seu próprio: Safeplug (Tor Proxy Box) Por que pagar US $ 50 por uma caixa proxy Tor quando você pode fazer o seu próprio com um dongle Raspberry Pi e USB WiFi? Leia mais, siga as instruções até o ponto de instalação do Tor .

A única pequena mudança que precisamos fazer é transmitir uma rede WiFi aberta em vez de uma com WPA. Depois de seguir a configuração, altere /etc/hostapd/hostapd.conf, colando as seguintes configurações. Reinicie para aplicar as alterações.

interface=wlan0 driver=nl80211 ssid=Kittens hw_mode=g channel=6 auth_algs=1 wmm_enabled=0 

Agora você deve ter uma rede sem fio sendo transmitida em seu Raspberry Pi que seja publicamente acessível. O restante deste guia se concentrará em fazer as coisas interessantes acontecerem.

Se as coisas não estiverem funcionando, digite:

 ifconfig -a 

e procure por um endereço IP em wlan0. Se um não estiver sendo atribuído na reinicialização, tente o seguinte:

 sudo nano /etc/default/ifplugd 

Altere as seguintes linhas de:

 INTERFACES="auto" HOTPLUG_INTERFACES="all" 

para:

 INTERFACES="eth0" HOTPLUG_INTERFACES="eth0" 

Reinicialize e verifique se você consegue se conectar à rede Wi-Fi e acessar a Internet.

Proxy de Squid e IPTables

Comece instalando os pré-requisitos e crie uma nova tabela de roteamento. Estaremos veiculando imagens do Raspberry Pi mais tarde, então também precisaremos do servidor web Apache.

 sudo apt-get install squid3 bridge-utils apache perl nano iptables.sh 

Cole a seguinte:

 iptables -t nat -A POSTROUTING -j MASQUERADE iptables -t nat -A PREROUTING -i wlan0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.42.1:3128 iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128 

Salve e saia.

 chmod +x iptables.sh sudo cp iptables.sh /etc/init.d/ sudo update-rc.d iptables.sh start 99 

iptable-sh-error

Ignore os avisos, isso significa que não cumprimos algumas regras do Debian (mas não quebra nada). Por fim, ainda temos as regras antigas do iptables na inicialização, portanto, remova a seguinte linha de / etc / network / interfaces

 up iptables-restore< /etc/iptables.ipv4.nat 

(Apagar ou comentar)

Então reinicie. Em seguida, excluiremos a configuração padrão do proxy do Squid e faremos uma nova.

 sudo rm /etc/squid3/squid.conf sudo nano /etc/squid3/squid.conf 

Cole o seguinte no arquivo em branco:

 cache_mgr pi cachemgr_passwd pi all redirect_program /home/pi/cats.pl acl manager proto cache_object acl localhost src 127.0.0.1/32 ::1 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1 acl localnet src 192.168.42.0/24 # RFC1918 possible internal network acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localnet http_access allow localhost http_access deny all http_port 3128 transparent umask 022 cache_mem 128 MB cache_dir ufs /var/spool/squid3 1500 16 256 coredump_dir /var/spool/squid3 refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320 

Salvar e sair. Inicialize os diretórios de cache com o seguinte comando e edite o script que usaremos para catalizar todas as imagens:

 sudo squid3 -z nano /home/pi/cats.pl 

Colar em:

 #!/usr/bin/perl $|=1; $count = 0; $pid = $$; open (DEBUG, '>>/tmp/cats.log'); autoflush DEBUG 1; print DEBUG "########################################################################\n"; while () { chomp $_; if (m/nosquid/) { print DEBUG "Input NOSQUID: $url\n"; print "$_\n"; print DEBUG "Output NOSQUID: $_\n"; } elsif ($_ =~ /(.*\.jpg")/i) { $url = $1; print DEBUG "Input: $url\n"; system("/usr/bin/wget", "-q", "-O", "/var/www/images/$pid-$count.gif", "http://thecatapi.com/api/images/get?format=src&type=gif&nosquid"); chmod 0777, "/var/www/images/$pid-$count.gif"; print "http://127.0.0.1/images/$pid-$count.gif\n"; } elsif ($_ =~ /(.*\.gif)/i) { $url = $1; print DEBUG "Input: $url\n"; system("/usr/bin/wget", "-q", "-O", "/var/www/images/$pid-$count.gif", "http://thecatapi.com/api/images/get?format=src&type=gif&nosquid"); chmod 0777, "/var/www/images/$pid-$count.gif"; print "http://127.0.0.1/images/$pid-$count.gif\n"; } elsif ($_ =~ /(.*\.png")/i) { $url = $1; print DEBUG "Input: $url\n"; system("/usr/bin/wget", "-q", "-O", "/var/www/images/$pid-$count.gif", "http://thecatapi.com/api/images/get?format=src&type=gif&nosquid"); chmod 0777, "/var/www/images/$pid-$count.gif"; print "http://127.0.0.1/images/$pid-$count.gif\n"; } elsif ($_ =~ /(.*\.jpeg)/i) { $url = $1; print DEBUG "Input: $url\n"; system("/usr/bin/wget", "-q", "-O", "/var/www/images/$pid-$count.gif", "http://thecatapi.com/api/images/get?format=src&type=gif&nosquid"); chmod 0777, "/var/www/images/$pid-$count.gif"; print "http://127.0.0.1/images/$pid-$count.gif\n"; } else { print "$_\n"; } $count++; } 

Torne o script executável e também precisamos fazer alguns diretórios para ele trabalhar.

 sudo chmod +x cats.pl sudo mkdir /var/www/images sudo chmod 777 /var/www/images sudo usermod -a -G www-data proxy sudo chown www-data:www-data /var/www sudo chown www-data:www-data /var/www/images touch /tmp/cats.log chmod 777 /tmp/cats.log 

Você pode alterar o log a qualquer momento com:

 tail -f /tmp/cats.log 

cauda-log

Tente fazer o login no Pinterest e, de repente, todos esses projetos de plantas e modas de moda estúpidas fazem escolhas e serão muito mais atraentes.

melhor-pinterest

Se você preferir servir imagens de cabeça para baixo (crédito para o script original para Ex-Parrot, eu modifiquei apenas para lidar com alguns erros de permissões), crie upsidedown.pl e cole o seguinte.

 #!/usr/bin/perl $|=1; $count = 0; $pid = $$; while () { chomp $_; if ($_ =~ /(.*\.jpg")/i) { $url = $1; system("/usr/bin/wget", "-q", "-O", "/var/www/images/$pid-$count.jpg"", "$url"); system("/usr/bin/mogrify", "-flip", "/var/www/images/$pid-$count.jpg""); chmod 0777, "/var/www/images/$pid-$count.jpg""; print "http://127.0.0.1/images/$pid-$count.jpg"\n"; } elsif ($_ =~ /(.*\.gif)/i) { $url = $1; system("/usr/bin/wget", "-q", "-O", "/var/www/images/$pid-$count.gif", "$url"); system("/usr/bin/mogrify", "-flip", "/var/www/images/$pid-$count.gif"); chmod 0777, "/var/www/images/$pid-$count.gif"; print "http://127.0.0.1/images/$pid-$count.gif\n"; } elsif ($_ =~ /(.*\.png")/i) { $url = $1; system("/usr/bin/wget", "-q", "-O", "/var/www/images/$pid-$count.png"", "$url"); system("/usr/bin/mogrify", "-flip", "/var/www/images/$pid-$count.png""); chmod 0777, "/var/www/images/$pid-$count.png""; print "http://127.0.0.1/images/$pid-$count.png"\n"; } elsif ($_ =~ /(.*\.jpeg)/i) { $url = $1; system("/usr/bin/wget", "-q", "-O", "/var/www/images/$pid-$count.jpeg", "$url"); system("/usr/bin/mogrify", "-flip", "/var/www/images/$pid-$count.jpeg"); chmod 0777, "/var/www/images/$pid-$count.jpeg"; print "http://127.0.0.1/images/$pid-$count.jpeg\n"; } else { print "$_\n";; } $count++; } 

Siga as outras etapas acima, alterando o nome do arquivo, para tornar o script executável e modifique a configuração do Squid para apontar para upsidedown.pl em vez de cats.pl. Por fim, você precisará reiniciar o Squid com:

 sudo service squid3 restart 

Os resultados são impressionantes em ambos os casos. Se você fizer alguma modificação ou melhorar esses scripts com recursos adicionais, por favor, deixe-me nos comentários e coloque um link do Pastebin no seu script.

Precisa de algo mais complicado? Você poderia tentar combinar este projeto com um Raspberry Pi NAS Transforme seu Raspberry Pi em uma caixa NAS Transforme seu Raspberry Pi em um NAS Box Você tem um par de discos rígidos externos por aí e um Raspberry Pi? Disponibilize um dispositivo de armazenamento em rede conectado barato e de baixo consumo. Enquanto o resultado final certamente não será tão ... Leia mais ou sempre-on torrent downloader Como transformar o seu Raspberry Pi em um Megalith Sempre-On Download Como transformar o seu Raspberry Pi em um Megalith Sempre-On Download Faça o seu parte da "rede de distribuição Linux" global através da construção de um megálito dedicado, seguro e que faz download de torrents que usa apenas 10W de energia. Será, claro, baseado em um Raspberry Pi. Consulte Mais informação !

In this article