Hvordan lage et WiFi-nettverk som bare overfører kattebilder med en Raspberry Pi

Se som befuddled brukere er både intenst frustrert, men likevel rart beroliget.

Se som befuddled brukere er både intenst frustrert, men likevel rart beroliget.
Annonse

Det er et vanlig bruksscenario: Du vil kringkaste et offentlig WiFi-nettverk for alle som skal bruke, men du har strenge krav om at kun kattebilder skal tillates. Gode ​​nyheter: Din Raspberry Pi er en perfekt transmoggification maskin. Fascinert? Les videre.

Hva du trenger

  • Raspberry Pi modell B (Ny til Raspberry Pi? Her er alt en nybegynner trenger å vite Bare kjøpt en Raspberry Pi? 11 Ting du trenger å vite har du bare kjøpt en Raspberry Pi? 11 ting du trenger å vite I denne videoen forklarer vi alt du kan trenge å vite om du nettopp har kjøpt en Raspberry Pi, eller tenker på å kjøpe en. Les mer, i videoform)
  • 4 GB eller større SD-kort
  • Ethernet-kabel
  • Kompatibel WiFi-adapter
  • MicroUSB strømkabel og adapter

Teorien

Dette prosjektet begynner å være identisk med Onion Router. Bygg din egen: Safeplug (Tor Proxy Box). Bygg din egen: Safeplug (Tor Proxy Box). Hvorfor betale $ 50 for en Tor Proxy-boks når du kan lage din egen med Raspberry Pi og USB WiFi dongle? Les mer vi bygget noen uker tilbake. Vi vil gjøre Raspberry Pi til et standard WiFi-nettverk først, og deretter plassere en proxy i midten. Proxyen vil filtrere innlegg gjennom et Perl-skript, som erstatter bildene på hver HTTP-forespørsel med kattegifter fra TheCatAPI.com. Se som befuddled brukere er både intenst frustrert, men likevel rart beroliget. Her er BBC, post-cat modifikasjoner.

post-cat-bbc

Lag et WiFi-nettverk

Siden denne delen av opplæringen er nøyaktig den samme som DIY Onion Router Bygg din egen: Safeplug (Tor Proxy Box) Bygg din egen: Safeplug (Tor Proxy Box) Hvorfor betale $ 50 for en Tor Proxy-boks når du kan lage din egen med en Raspberry Pi og USB WiFi dongle? Les mer, følg instruksjonene der opp til punktet Install Tor .

Den eneste lille forandringen vi må gjøre er å kringkaste et åpent WiFi-nettverk i stedet for en sikret med WPA. Når du har fulgt oppsettet der, endrer du /etc/hostapd/hostapd.conf, og legger inn følgende konfigurasjoner i stedet. Start på nytt for å bruke endringene.

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

Du bør nå ha et trådløst nettverk som sendes på din Raspberry Pi som er offentlig tilgjengelig. Resten av denne guiden vil fokusere på å få interessante ting som skjer.

Hvis ting ikke virker, skriv:

 ifconfig -a 

og se etter en IP-adresse på wlan0. Hvis en ikke blir tildelt ved omstart, kan du prøve følgende:

 sudo nano /etc/default/ifplugd 

Endre følgende linjer fra:

 INTERFACES="auto" HOTPLUG_INTERFACES="all" 

til:

 INTERFACES="eth0" HOTPLUG_INTERFACES="eth0" 

Start på nytt og bekreft at du kan koble til WiFi-nettverket, og få tilgang til Internett.

Squid Proxy og IPTables

Start med å installere forutsetningene, og opprett deretter et nytt rutetabell. Vi serverer bilder fra Raspberry Pi senere, så vi trenger også Apache webserver.

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

Lim inn følgende:

 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 

Lagre, og avslutt deretter.

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

iptable-sh-feil

Ignorer advarslene, det betyr bare at vi ikke har overholdt noen Debians regler (men ikke bryter noe). Til slutt har vi fortsatt de gamle iptables- reglene på oppstart, så fjern følgende linje fra / etc / network / interfaces

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

(Slett eller kommentere det)

Start deretter på nytt. Neste Vi sletter standard Squid proxy config, og lager en ny.

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

Lim inn følgende i den tomme filen:

 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 

Lagre og lukk. Initialiser hurtigbufferkatalogene med følgende kommando, og rediger deretter skriptet vi vil bruke til å kategorisere alle bildene:

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

Lim inn:

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

Gjør skriptet kjørbart, og vi også ned for å lage noen kataloger for at det skal fungere med.

 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 

Du kan hale loggen til enhver tid med:

 tail -f /tmp/cats.log 

tail-log

Prøv å logge inn på Pinterest, og plutselig plukker alle de dumme DIY-potteplanteprosjektene og mennsfashionene seg og blir langt mer tiltalende.

bedre pinte

Hvis du helst vil servere opp ned bilder (kreditt for det originale skriptet til Ex-Parrot, endret jeg bare for å håndtere noen tillatelsesfeil), opprett upsidedown.pl og lim inn det følgende.

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

Følg de andre trinnene ovenfor, endre filnavn, for å gjøre skriptet kjørbar, og modifiser Squid-konfigurasjonen for å peke på upsidedown.pl i stedet for cats.pl. Til slutt må du starte om blekksprut med:

 sudo service squid3 restart 

Resultatene er ganske kjempebra i begge tilfeller. Hvis du gjør noen endringer eller forbedringer på disse skriptene med tilleggsfunksjoner, vennligst la meg kommentere og legg en Pastebin-kobling til skriptet ditt.

Trenger du noe mer komplisert? Du kan prøve å kombinere dette prosjektet med en Raspberry Pi NAS Slå din Raspberry Pi inn i en NAS-boks Slå din Raspberry Pi inn i en NAS-bok Har du et par eksterne harddisker som ligger rundt og en Raspberry Pi? Lag en billig, lavdrevet nettverksmontert lagringsenhet ut av dem. Mens sluttresultatet absolutt ikke vil være som ... Les mer eller en alltid-på-torrent-nedlasting Hvordan slå din Raspberry Pi inn i en Alltid-på Nedlasting av Megalith Slik slår du din Raspberry Pi i en Alltid-På Nedlasting Megalith Gjør din del for det globale "Linux distribusjonsnettverket" ved å bygge en dedikert, sikker, torrent-nedlasting megalitt som knapt bruker 10W strøm. Det vil selvfølgelig være basert på en Raspberry Pi. Les mer !

In this article