Een WiFi-netwerk maken dat alleen katfoto's met een Raspberry Pi verzendt
Het is een standaardgebruiksscenario: u wilt een openbaar wifi-netwerk uitzenden dat door iedereen kan worden gebruikt, maar u hebt strikte vereisten om alleen kattenafbeeldingen toe te staan. Goed nieuws: je Raspberry Pi is perfect transmoggification machine. Geïntrigeerd? Lees verder.
Wat je nodig hebt
- Raspberry Pi model B (Nieuw voor Raspberry Pi? Hier is alles wat een beginner nodig zou moeten hebben Net Bought A Raspberry Pi? 11 Dingen die je moet weten Een raspberry Pi gekocht 11 Dingen die je moet weten In deze video leggen we je alles uit wat je misschien moet weten als je net een Raspberry Pi hebt gekocht, of erover denkt er een te kopen. Lees meer in videovorm)
- SD-kaart van 4 GB of groter
- ethernetkabel
- Compatibele WiFi-adapter
- MicroUSB-voedingskabel en adapter
De theorie
Dit project begint identiek aan de Onion Router Build Your Own: Safeplug (Tor Proxy Box) Build Your Own: Safeplug (Tor Proxy Box) Waarom betaal je $ 50 voor een Tor-proxy-box als je er zelf een kunt maken met een Raspberry Pi en USB WiFi dongle? Meer lezen hebben we een paar weken geleden gebouwd. We zullen eerst de Raspberry Pi in een standaard WiFi-netwerk veranderen en vervolgens een proxy in het midden plaatsen. De proxy filtert berichten via een Perl-script, dat de afbeeldingen op elk HTTP-verzoek zal vervangen door katten-GIF's van TheCatAPI.com. Kijk hoe verwarde gebruikers zowel intens gefrustreerd zijn als toch vreemd gekalmeerd. Hier is de BBC, aanpassingen na de kat.
Een WiFi-netwerk maken
Aangezien dit deel van de tutorial precies hetzelfde is als de DIY Onion Router Build Your Own: Safeplug (Tor Proxy Box) Bouw je eigen: Safeplug (Tor Proxy Box) Waarom betaal je $ 50 voor een Tor proxy-box als je er zelf een kunt maken met een Raspberry Pi en USB WiFi-dongle? Lees meer, volg de instructies daar tot op het punt van Installeer Tor.
De enige kleine verandering die we moeten maken, is om een open WiFi-netwerk uit te zenden in plaats van een beveiligd met WPA. Zodra je de setup daar hebt gevolgd, verander je /etc/hostapd/hostapd.conf, in plaats daarvan in de volgende configuraties plakken. Start opnieuw om de wijzigingen toe te passen.
interface = wlan0 bestuurder = nl80211 ssid = Kittens hw_mode = g kanaal = 6 auth_algs = 1 wmm_enabled = 0
U zou nu een draadloos netwerk moeten hebben dat op uw Raspberry Pi wordt uitgezonden en dat publiek toegankelijk is. De rest van deze gids zal zich concentreren op het krijgen van interessante dingen.
Als dingen niet werken, typt u:
ifconfig -a
en zoek naar een IP-adres op wlan0. Als een niet wordt toegewezen tijdens het opnieuw opstarten, probeert u het volgende:
sudo nano / etc / default / ifplugd
Wijzig de volgende regels van:
INTERFACES = "auto" HOTPLUG_INTERFACES = "alles"
naar:
INTERFACES = "eth0" HOTPLUG_INTERFACES = "eth0"
Start opnieuw op en controleer of u verbinding kunt maken met het wifi-netwerk en toegang hebt tot internet.
Squid Proxy en IPTables
Begin met het installeren van de vereisten en maak vervolgens een nieuwe routeringstabel. We zullen later afbeeldingen van de Raspberry Pi serveren, dus we hebben ook Apache-webserver nodig.
sudo apt-get installeren squid3 bridge-utils apache perl nano iptables.sh
Plak het volgende:
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
Opslaan en vervolgens afsluiten.
chmod + x iptables.sh sudo cp iptables.sh /etc/init.d/ sudo update-rc.d iptables.sh start 99
Negeer de waarschuwingen, het betekent alleen dat we niet aan bepaalde Debian-regels hebben voldaan (maar niets breken). Ten slotte hebben we nog steeds het oude iptables regels voor het booten, dus verwijder de volgende regel uit / Etc / network / interfaces
up iptables-restore < /etc/iptables.ipv4.nat
(Verwijder of becommentarieer het)
Start dan opnieuw op. Volgende We zullen de standaard Squid proxy config verwijderen en een nieuwe maken.
sudo rm /etc/squid3/squid.conf sudo nano /etc/squid3/squid.conf
Plak het volgende in het lege bestand:
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 mogelijk intern netwerk acl SSL_poort poort 443 acl Safe_ports poort 80 # http acl Safe_ports poort 21 # ftp acl Safe_ports poort 443 # https acl Safe_ports poort 70 # gopher acl Safe_ports poort 210 # wais acl Safe_ports poort 1025-65535 # niet-geregistreerd poorten acl Safe_ports poort 280 # http-mgmt acl Safe_ports poort 488 # gss-http acl Safe_ports poort 591 # filemaker acl Safe_ports poort 777 # multiling http acl CONNECT methode CONNECT http_access staat manager localhost toe http_access ontkenner manager http_access weigert! Safe_ports http_access weigert CONNECT! SSL_ports http_access laat localnet http_access toe allow localhost http_access ontken alles http_port 3128 transparant umask 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
Opslaan en afsluiten. Initialiseer de cachemaps met de volgende opdracht en bewerk vervolgens het script dat we zullen gebruiken catify alle afbeeldingen:
sudo squid3 -z nano /home/pi/cats.pl
Plak 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"; systeem ("/ 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"; systeem ("/ 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"; systeem ("/ 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"; systeem ("/ 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 ++;
Maak het script uitvoerbaar, en we willen ook een aantal directory's maken om ermee te werken.
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
U kunt het log op elk gewenst moment afstellen met:
tail -f /tmp/cats.log
Probeer in te loggen op Pinterest en ineens al die stomme DIY potplantenprojecten en herenmode-picks en zal veel aantrekkelijker zijn.
Als u liever afbeeldingen op de kop wilt dienen (credit voor het originele script van Ex-Parrot, ik heb alleen gewijzigd om met een aantal machtigingsfouten om te gaan), creëren upsidedown.pl en plak het volgende in.
#! / usr / bin / perl $ | = 1; $ count = 0; $ pid = $$; while (<>) chomp $ _; if ($ _ = ~ /(.*\.jpg)/i) $ url = $ 1; systeem ("/ usr / bin / wget", "-q", "-O", "/ var / www / images / $ pid- $ count.jpg", "$ url"); systeem ("/ 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; systeem ("/ 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; systeem ("/ usr / bin / wget", "-q", "-O", "/ var / www / images / $ pid- $ count.png", "$ url"); systeem ("/ 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; systeem ("/ usr / bin / wget", "-q", "-O", "/ var / www / images / $ pid- $ count.jpeg", "$ url"); systeem ("/ 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 ++;
Volg de andere bovenstaande stappen, verander de bestandsnaam, maak het script uitvoerbaar en wijzig de Squid-configuratie om naar te wijzen upsidedown.pl in plaats van cats.pl. Ten slotte moet je Squid opnieuw opstarten met:
sudo service squid3 herstarten
De resultaten zijn in beide gevallen best goed. Als u wijzigingen aanbrengt in deze scripts of deze wilt verbeteren met extra functies, kunt u me in de opmerkingen plaatsen en een Pastebin-koppeling naar uw script plaatsen.
Iets ingewikkelder nodig? Je zou kunnen proberen dit project te combineren met een Raspberry Pi NAS Zet je Raspberry Pi in een NAS-doos Zet je Raspberry Pi in een NAS-doos Heb je een paar externe harde schijven liggen rond en een Raspberry Pi? Maak er een goedkoop, laagvermogen netwerkgebonden aangesloten opslagapparaat van. Hoewel het eindresultaat zeker niet zal zijn ... Lees meer of een altijd-on torrent downloader Hoe je je Raspberry Pi in een always-on kunt zetten Megalith downloaden Hoe je je Raspberry Pi in een always-on kunt veranderen Megalith downloaden Doe je deel voor het wereldwijde "Linux-distributienetwerk" door een speciale, veilige, torrent-downloadende megaliet te bouwen die amper 10 W stroom verbruikt. Het zal natuurlijk gebaseerd zijn op een Raspberry Pi. Lees verder !
Ontdek meer over: Raspberry Pi, Wi-Fi.