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

Come realizzare una rete WiFi che trasmette solo immagini di gatti con un Raspberry Pi / Fai da te

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 è perfetto transmoggification macchina. Incuriosito? Continuare a leggere.

Cosa ti serve

  • Raspberry Pi modello B (Nuovo a Raspberry Pi? Ecco tutto ciò che un principiante avrebbe bisogno di sapere Ho appena comprato un Raspberry Pi? 11 Cose che devi sapere Ho appena comprato un Raspberry Pi? 11 Cose che devi sapere In questo video, spieghiamo tutto ciò che potresti aver bisogno di sapere se hai appena acquistato un Raspberry Pi o stai pensando di acquistarne uno. Per saperne di più, nel modulo 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.

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 Installa 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 lì, cambia /etc/hostapd/hostapd.conf, incollando invece nelle seguenti configurazioni. Riavvia per applicare le modifiche.

interface = driver wlan0 = 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 = "tutto" 

a:

INTERFACES = "eth0" HOTPLUG_INTERFACES = "eth0" 

Riavvia e verifica di essere in grado di connettersi alla rete WiFi e 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 -dip 80 -j DNAT -diritto 192.168.42.1:3128 iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp -dip 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 

Ignora gli avvertimenti, significa solo che non abbiamo rispettato alcune regole Debian (ma non infrange nulla). Infine, abbiamo ancora il vecchio iptables regole all'avvio, quindi rimuovere 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 tutto 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 possibile rete interna acl porta SSL_ports 443 acl porta Safe_ports 80 # http acl porta Safe_ports 21 # ftp acl porta Safe_ports 443 # https acl porta Safe_ports 70 # gopher acl porta Safe_ports 210 # wais acl porta Safe_ports 1025-65535 # non registrata porte acl Porta safe_ports 280 # http-mgmt acl Porta safe_ports 488 # gss-http acl Porta safe_ports 591 # filemaker acl Porta safe_ports 777 # multiling http acl Metodo CONNECT CONNECT http_access consente gestore localhost http_access nega gestore http_access deny! Safe_ports http_access deny CONNECT! SSL_ports http_access consentire localnet http_access consentire localhost http_access negare tutto http_port 3128 umask trasparente 022 cache_mem 128 MB cache_dir ufs / var / spool / squid3 1500 16 256 coredump_dir / var / spool / squid3 refresh_patt ern ^ 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 catify 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; stampa DEBUG "########################################################### ######################### \ n "; while (<>) chomp $ _; if (m / nosquid /) print DEBUG "Input NOSQUID: $ url \ n"; stampa "$ _ \ n"; print DEBUG "Output NOSQUID: $ _ \ n";  elsif ($ _ = ~ /(.*\.jpg)/i) $ url = $ 1; stampa DEBUG "Input: $ url \ n"; sistema ("/ 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"; stampa "http://127.0.0.1/images/$pid-$count.gif\n";  elsif ($ _ = ~ /(.*\.gif)/i) $ url = $ 1; stampa DEBUG "Input: $ url \ n"; sistema ("/ 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"; stampa "http://127.0.0.1/images/$pid-$count.gif\n";  elsif ($ _ = ~ /(.*\.png)/i) $ url = $ 1; stampa DEBUG "Input: $ url \ n"; sistema ("/ 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"; stampa "http://127.0.0.1/images/$pid-$count.gif\n";  elsif ($ _ = ~ /(.*\.jpeg)/i) $ url = $ 1; stampa DEBUG "Input: $ url \ n"; sistema ("/ 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"; stampa "http://127.0.0.1/images/$pid-$count.gif\n";  else stampa "$ _ \ 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 

Prova ad accedere a Pinterest, e improvvisamente tutti quegli stupidi progetti di piante in vaso fai-da-te e le mode mens scelte saranno molto più accattivanti.

Se preferisci servire immagini capovolte (credito per lo script originale per Ex-Parrot, ho modificato solo 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; sistema ("/ usr / bin / wget", "-q", "-O", "/ var / www / images / $ pid- $ count.jpg", "$ url"); sistema ("/ usr / bin / mogrify", "-flip", "/ var / www / images / $ pid- $ count.jpg"); chmod 0777, "/ var / www / images / $ pid- $ count.jpg"; stampa "http://127.0.0.1/images/$pid-$count.jpg\n";  elsif ($ _ = ~ /(.*\.gif)/i) $ url = $ 1; sistema ("/ usr / bin / wget", "-q", "-O", "/ var / www / images / $ pid- $ count.gif", "$ url"); sistema ("/ usr / bin / mogrify", "-flip", "/ var / www / images / $ pid- $ count.gif"); chmod 0777, "/ var / www / images / $ pid- $ count.gif"; stampa "http://127.0.0.1/images/$pid-$count.gif\n";  elsif ($ _ = ~ /(.*\.png)/i) $ url = $ 1; sistema ("/ usr / bin / wget", "-q", "-O", "/ var / www / images / $ pid- $ count.png", "$ url"); sistema ("/ usr / bin / mogrify", "-flip", "/ var / www / images / $ pid- $ count.png"); chmod 0777, "/ var / www / images / $ pid- $ count.png"; stampa "http://127.0.0.1/images/$pid-$count.png\n";  elsif ($ _ = ~ /(.*\.jpeg)/i) $ url = $ 1; sistema ("/ usr / bin / wget", "-q", "-O", "/ var / www / images / $ pid- $ count.jpeg", "$ url"); sistema ("/ usr / bin / mogrify", "-flip", "/ var / www / images / $ pid- $ count.jpeg"); chmod 0777, "/ var / www / images / $ pid- $ count.jpeg"; stampa "http://127.0.0.1/images/$pid-$count.jpeg\n";  else stampa "$ _ \ n" ;;  $ count ++;  

Segui gli altri passaggi sopra, cambiando il nome del file, per rendere eseguibile lo script e modifica la configurazione di Squid in punto 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 nello 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 Megalith sempre attivo Come trasformare il tuo Raspberry Pi in un download Megalith sempre attivo Fai la tua 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ù !

Scopri di più su: Raspberry Pi, Wi-Fi.