Sådan laver du et WiFi-netværk, der kun sender kat billeder med en hindbær Pi

Watch som befuddled brugere er både intenst frustrerede, men alligevel mærkeligt roligt.

Watch som befuddled brugere er både intenst frustrerede, men alligevel mærkeligt roligt.
Reklame

Det er et almindeligt brugsscenarium: Du vil sende et offentligt WiFi-netværk, som alle kan bruge, men du har strenge krav om, at kun kattebilleder skal tillades. Store nyheder: Din Raspberry Pi er en perfekt transmoggification maskine. Fascineret? Læs videre.

Hvad du skal bruge

  • Raspberry Pi model B (Ny til Raspberry Pi? Her er alt, hvad en nybegynder skulle vide. Bare købt en Raspberry Pi? 11 Ting du behøver at vide, har du lige købt en Raspberry Pi? 11 Ting du behøver at vide I denne video forklarer vi alt, hvad du Måske skal du vide, om du lige har købt en Raspberry Pi eller tænker på at købe en. Læs mere, i videoformular)
  • 4 GB eller større SD-kort
  • Ethernet-kabel
  • Kompatibel WiFi adapter
  • MicroUSB strømkabel og adapter

Teorien

Dette projekt starter identisk med Onion Router. Byg din egen: Safeplug (Tor Proxy Box). Byg din egen: Safeplug (Tor Proxy Box) Hvorfor betale $ 50 for en Tor Proxy-boks, når du kan lave din egen med Raspberry Pi og USB WiFi dongle? Læs mere vi byggede et par uger tilbage. Vi vil gøre Raspberry Pi til et standard WiFi-netværk først, og derefter placere en proxy i midten. Proxyen filtrerer indlæg via et Perl-script, som erstatter billederne på hver HTTP-anmodning med cat GIFs fra TheCatAPI.com. Watch som befuddled brugere er både intenst frustrerede, men alligevel mærkeligt roligt. Her er BBC, post-cat modifikationer.

post-cat-bbc

Gør et WiFi-netværk

Da denne del af tutorialen er nøjagtig den samme som DIY Onion Router Byg din egen: Safeplug (Tor Proxy Box) Byg din egen: Safeplug (Tor Proxy Box) Hvorfor betale $ 50 for en Tor proxy boks, når du kan lave din egen med en Raspberry Pi og USB WiFi dongle? Læs mere, følg vejledningen der op til Install Tor .

Den eneste lille ændring, vi skal gøre, er at udsende et åbent WiFi-netværk i stedet for en sikret med WPA. Når du har fulgt opsætningen der, skal du ændre /etc/hostapd/hostapd.conf, og indsætte følgende konfigurationer i stedet. Genstart for at anvende ændringerne.

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

Du skal nu have et trådløst netværk, der sendes på din Raspberry Pi, der er offentligt tilgængelig. Resten af ​​denne vejledning vil fokusere på at få de interessante ting der sker.

Hvis tingene ikke virker, skriv:

 ifconfig -a 

og se efter en IP-adresse på wlan0. Hvis man ikke bliver tildelt ved genstart, skal du prøve følgende:

 sudo nano /etc/default/ifplugd 

Skift følgende linjer fra:

 INTERFACES="auto" HOTPLUG_INTERFACES="all" 

til:

 INTERFACES="eth0" HOTPLUG_INTERFACES="eth0" 

Genstart, og kontroller, at du kan oprette forbindelse til WiFi-netværket og få adgang til internettet.

Blæksprutteproxy og IPTables

Start med at installere forudsætningerne, og lav derefter en ny rutingstabel. Vi serverer billeder fra Raspberry Pi senere, så vi har også brug for Apache web-server.

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

Indsæt 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 

Gem, og afslut derefter.

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

iptable-sh-fejl

Ignorer advarslerne, det betyder bare, at vi ikke har overholdt nogle Debians regler (men bryder ikke noget). Endelig har vi stadig de gamle iptables regler om opstart, så fjern den følgende linje fra / etc / network / interfaces

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

(Slet eller kommentere det)

Genstart derefter. Næste Vi vil slette standard Squid proxy-konfigurationen, og lave en ny.

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

Indsæt følgende i den tomme fil:

 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 

Gem og luk. Initialiser cache-mapper med følgende kommando, og rediger det script, vi vil bruge til at kategorisere alle billederne:

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

Indsæt i:

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

Gør scriptet eksekverbart, og vi også ned for at lave nogle mapper, for at det kan 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 til enhver tid hale loggen med:

 tail -f /tmp/cats.log 

hale-log

Prøv at logge ind på Pinterest, og pludselig vælger alle de dumme DIY potteplanter og menneskeskabte motorer og bliver langt mere tiltalende.

bedre-pinterest

Hvis du hellere vil servere billeder på hovedet (kredit for det originale script til Ex-Parrot, ændres jeg kun for at håndtere nogle tilladelsesfejl), opretter upsidedown.pl og indsætter i 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 trin ovenfor, skift filnavnet, for at gøre scriptet eksekverbart, og modificer blækspruttekonfigurationen til at pege på upsidedown.pl i stedet for cats.pl. Endelig skal du genstarte blæksprutter med:

 sudo service squid3 restart 

Resultaterne er temmelig awesome i begge tilfælde. Hvis du foretager nogen ændringer eller forbedrer disse scripts med ekstra funktioner, så lad mig komme ind i kommentarerne og læg et Pastebin-link til dit script.

Har du brug for noget mere kompliceret? Du kan prøve at kombinere dette projekt med en Raspberry Pi NAS Skift din Raspberry Pi i en NAS Box Skift din Raspberry Pi til en NAS Box Har du et par eksterne harddiske liggende rundt og en Raspberry Pi? Lav en billig, lavdrevet netværksforbundet lagerenhed ud af dem. Mens slutresultatet helt sikkert ikke vil være som ... Læs mere eller en altid-on torrent downloader Sådan skifter du din Raspberry Pi til en Alltid-On Downloading Megalith Sådan slår du din Raspberry Pi til en Alltid-On Downloading Megalith Gør din del for det globale "Linux distributionsnet" ved at opbygge en dedikeret, sikker, torrent-downloadende megalit, der næsten ikke bruger 10W strøm. Det vil selvfølgelig være baseret på en Raspberry Pi. Læs mere !

In this article