Come realizzare una rete WiFi che trasmette solo immagini di gatti con un Raspberry Pi

Guarda come gli utenti confusi sono entrambi intensamente frustrati, ma stranamente calmati.

Guarda come gli utenti confusi sono entrambi intensamente frustrati, ma stranamente calmati.
Annuncio pubblicitario

Si tratta di uno scenario di utilizzo comune: si desidera trasmettere una rete WiFi pubblica a chiunque, ma i requisiti rigorosi prevedono l'autorizzazione solo per le immagini di gatti. Ottime notizie: il tuo Raspberry Pi è una macchina di trasmutazione perfetta. Incuriosito? Continuare a leggere.

Cosa ti serve

  • Raspberry Pi modello B (Nuovo per Raspberry Pi? Ecco tutto ciò che un principiante avrebbe bisogno di sapere Appena comprato un Raspberry Pi? 11 Cose che devi sapere Ho appena comprato un Raspberry Pi? 11 Cose che devi sapere In questo video, ti spieghiamo tutto ciò che potrebbe essere necessario sapere se hai appena acquistato un Raspberry Pi o stai pensando di acquistarne uno. Per saperne di più, in formato video)
  • Scheda SD da 4 GB o superiore
  • cavo Ethernet
  • Adattatore WiFi compatibile
  • Cavo di alimentazione e adattatore MicroUSB

La teoria

Questo progetto inizia identico a Onion Router Crea il tuo: Safeplug (Tor Proxy Box) Crea il tuo: Safeplug (Tor Proxy Box) Perché pagare $ 50 per una casella proxy Tor quando puoi crearne uno con un Raspberry Pi e USB WiFi dongle? Per saperne di più abbiamo costruito qualche settimana fa. Creeremo prima il Raspberry Pi in una rete WiFi standard, quindi inseriremo un proxy nel mezzo. Il proxy filtrerà i messaggi attraverso uno script Perl, che sostituirà le immagini su ogni richiesta HTTP con GIF cat da TheCatAPI.com. Guarda come gli utenti confusi sono entrambi intensamente frustrati, ma stranamente calmati. Ecco la BBC, modifiche post-gatto.

post-cat-bbc

Fare una rete WiFi

Poiché questa parte del tutorial è esattamente la stessa del DIY Onion Router Crea il tuo: Safeplug (Tor Proxy Box) Crea il tuo: Safeplug (Tor Proxy Box) Perché pagare $ 50 per una casella proxy Tor quando puoi crearne uno con un dongle WiFi Raspberry Pi e USB? Per saperne di più, si prega di seguire le istruzioni lì fino al punto di installare Tor .

L'unica piccola modifica che dobbiamo fare è trasmettere una rete WiFi aperta invece di una protetta con WPA. Una volta che hai seguito la configurazione, cambia /etc/hostapd/hostapd.conf, incollando invece le seguenti configurazioni. Riavvia per applicare le modifiche.

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

Ora dovresti avere una rete wireless trasmessa sul tuo Raspberry Pi che sia pubblicamente accessibile. Il resto di questa guida si concentrerà su come far accadere le cose interessanti.

Se le cose non funzionano, digita:

 ifconfig -a 

e cercare un indirizzo IP su wlan0. Se uno non viene assegnato al riavvio, prova quanto segue:

 sudo nano /etc/default/ifplugd 

Cambia le seguenti righe da:

 INTERFACES="auto" HOTPLUG_INTERFACES="all" 

a:

 INTERFACES="eth0" HOTPLUG_INTERFACES="eth0" 

Riavvia e verifica di essere in grado di connettersi alla rete WiFi e di accedere a Internet.

Squid Proxy e IPTables

Inizia installando i prerequisiti, quindi crea una nuova tabella di routing. Serviremo le immagini dal Raspberry Pi in seguito, quindi avremo anche bisogno del server web Apache.

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

Incolla quanto segue:

 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 

Salva, quindi esci.

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

iptable-sh-errore

Ignora gli avvertimenti, significa solo che non abbiamo rispettato alcune regole Debian (ma non infrange nulla). Infine, abbiamo ancora le vecchie regole di iptables all'avvio, quindi rimuovi la seguente riga da / etc / network / interfaces

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

(Cancella o commenta)

Quindi riavviare. Successivo Cancelleremo la configurazione predefinita del proxy Squid e ne creeremo una nuova.

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

Incolla quanto segue nel file vuoto:

 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 

Salva ed esci. Inizializza le directory della cache con il seguente comando, quindi modifica lo script che useremo per catificare tutte le immagini:

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

Incolla in:

 #!/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++; } 

Rendi lo script eseguibile, e abbiamo anche bisogno di creare delle directory con cui lavorare.

 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 

Puoi tagliare il log in qualsiasi momento con:

 tail -f /tmp/cats.log 

finale del log

Prova ad accedere a Pinterest e improvvisamente tutti quegli stupidi progetti di piante in vaso fai-da-te e le collezioni di moda uomo saranno molto più accattivanti.

meglio-pinterest

Se preferisci servire immagini capovolte (credito per lo script originale per Ex-Parrot, ho solo modificato per gestire alcuni errori di autorizzazione), creare upsidedown.pl e incollare quanto segue.

 #!/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++; } 

Segui gli altri passaggi sopra, cambiando il nome del file, per rendere eseguibile lo script e modifica la configurazione di Squid per puntare su upsidedown.pl invece di cats.pl. Infine, dovrai riavviare Squid con:

 sudo service squid3 restart 

I risultati sono piuttosto fantastici in entrambi i casi. Se apporti modifiche o migliori su questi script con funzionalità aggiuntive, lasciami nei commenti e inserisci un link Pastebin nel tuo script.

Hai bisogno di qualcosa di più complicato? Potresti provare a combinare questo progetto con un NAS Raspberry Pi Trasforma il tuo Raspberry Pi in un NAS Box Trasforma il tuo Raspberry Pi in un NAS Box Hai un paio di dischi rigidi esterni in giro e un Raspberry Pi? Esegui un dispositivo di archiviazione collegato in rete economico ea basso consumo. Mentre il risultato finale non sarà certamente ... Read More o un downloader sempre in streaming torrent Come trasformare il tuo Raspberry Pi in un download sempre attivo Megalith Come trasformare il tuo Raspberry Pi in un download sempre attivo Megalith Fai il tuo parte per la "rete di distribuzione Linux" globale con la creazione di un megalite dedicato, sicuro e in grado di scaricare torrent che utilizza a malapena 10W di potenza. Sarà, ovviamente, basato su un Raspberry Pi. Leggi di più !

In this article