Comment faire un réseau WiFi qui transmet seulement des images de chat avec un Raspberry Pi

Regardez comme des utilisateurs égarés sont à la fois intensément frustrés, mais étrangement calmés.

Regardez comme des utilisateurs égarés sont à la fois intensément frustrés, mais étrangement calmés.
Publicité

C'est un scénario d'utilisation courant: vous voulez diffuser un réseau WiFi public pour que vous puissiez l'utiliser, mais vous avez des exigences strictes selon lesquelles seules les images de chat sont autorisées. Bonne nouvelle: votre Raspberry Pi est une machine de transmoggification parfaite. Intrigué? Continuer à lire.

Ce dont vous aurez besoin

  • Raspberry Pi modèle B (nouveau à Raspberry Pi? Voici tout ce qu'un débutant aurait besoin de savoir Just Acheté un Raspberry Pi? 11 choses que vous devez savoir juste acheté un Raspberry Pi? 11 choses que vous devez savoir Dans cette vidéo, nous expliquons tout ce que vous Vous pourriez avoir besoin de savoir si vous venez d'acheter un Raspberry Pi ou si vous envisagez d'en acheter un.
  • Carte SD de 4 Go ou plus
  • câble Ethernet
  • Adaptateur WiFi compatible
  • MicroUSB câble d'alimentation et adaptateur

La théorie

Ce projet commence à l'identique du Routeur Onion Construisez votre propre: Safeplug (Tor Proxy Box) Construisez votre propre: SafePlug (Tor Proxy Box) Pourquoi payer 50 $ pour une boîte proxy Tor quand vous pouvez faire votre propre avec un Raspberry Pi et USB WiFi dongle? Lire la suite nous avons construit il y a quelques semaines. Nous allons d'abord faire du Raspberry Pi un réseau WiFi standard, puis placer un proxy au milieu. Le proxy filtrera les messages via un script Perl, qui remplacera les images de chaque requête HTTP par des GIFs de chat provenant de TheCatAPI.com. Regardez comme des utilisateurs égarés sont à la fois intensément frustrés, mais étrangement calmés. Voici la BBC, modifications post-chat.

post-cat-bbc

Faire un réseau WiFi

Puisque cette partie du tutoriel est exactement la même que celle du routeur DIY Onion Construisez votre propre: Safeplug (Tor Proxy Box) Construisez votre propre: Safeplug (Tor Proxy Box) Pourquoi payer 50 $ pour une boîte de proxy Tor quand vous pouvez faire votre propre un Raspberry Pi et un dongle USB WiFi? Lire la suite, s'il vous plaît suivez les instructions là jusqu'à l' installation de Tor .

Le seul petit changement que nous devons faire est de diffuser un réseau WiFi ouvert au lieu d'un réseau sécurisé avec WPA. Une fois que vous avez suivi la configuration, changez /etc/hostapd/hostapd.conf, en insérant les configurations suivantes à la place. Redémarrez pour appliquer les modifications.

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

Vous devriez maintenant avoir un réseau sans fil diffusé sur votre Raspberry Pi qui est accessible au public. Le reste de ce guide se concentrera sur l'obtention de choses intéressantes.

Si les choses ne fonctionnent pas, tapez:

 ifconfig -a 

et cherchez une adresse IP sur wlan0. Si aucune n'est assignée au redémarrage, essayez ce qui suit:

 sudo nano /etc/default/ifplugd 

Changez les lignes suivantes de:

 INTERFACES="auto" HOTPLUG_INTERFACES="all" 

à:

 INTERFACES="eth0" HOTPLUG_INTERFACES="eth0" 

Redémarrez et vérifiez que vous êtes en mesure de vous connecter au réseau Wi-Fi et d'accéder à Internet.

Squid Proxy et IPTables

Commencez par installer les prérequis, puis créez une nouvelle table de routage. Nous servirons des images du Raspberry Pi plus tard, donc nous aurons aussi besoin du serveur web Apache.

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

Collez ce qui suit:

 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 

Enregistrez, puis quittez.

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

iptable-sh-erreur

Ignorez les avertissements, cela signifie simplement que nous n'avons pas respecté certaines règles Debian (mais ne casse rien). Enfin, nous avons toujours les anciennes règles iptables au démarrage, donc supprimez la ligne suivante de / etc / network / interfaces

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

(Supprimer ou commenter)

Puis redémarrez. Nous allons supprimer la configuration par défaut du proxy Squid et en créer une nouvelle.

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

Collez le suivant dans le fichier vide:

 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 

Sauvegarder et quitter. Initialisez les répertoires de cache avec la commande suivante, puis éditez le script que nous utiliserons pour catifier toutes les images:

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

Coller dans:

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

Rendez le script exécutable, et nous avons aussi besoin de créer des répertoires avec lesquels travailler.

 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 

Vous pouvez terminer le journal à tout moment avec:

 tail -f /tmp/cats.log 

queue-log

Essayez de vous connecter à Pinterest, et tout à coup tous ces stupides projets de plantes en pot bricolage et choix de mode pour hommes et sera beaucoup plus attrayant.

mieux-pinterest

Si vous préférez servir des images à l'envers (crédit pour le script original à Ex-Parrot, j'ai seulement modifié pour faire face à certaines erreurs d'autorisations), créez upsidedown.pl et collez ce qui suit.

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

Suivez les autres étapes ci-dessus, en changeant le nom de fichier, pour rendre le script exécutable, et modifiez la configuration de Squid pour pointer sur upsidedown.pl au lieu de cats.pl. Enfin, vous devrez redémarrer Squid avec:

 sudo service squid3 restart 

Les résultats sont assez impressionnants dans les deux cas. Si vous modifiez ou améliorez ces scripts avec des fonctionnalités supplémentaires, laissez-moi un commentaire dans les commentaires et ajoutez un lien Pastebin à votre script.

Besoin de quelque chose de plus compliqué? Vous pouvez essayer de combiner ce projet avec un NAS Raspberry Pi Transformez votre Raspberry Pi en une NAS Box Transformez votre Raspberry Pi en une NAS Box Avez-vous un couple de disques durs externes qui traînent et un Raspberry Pi? Créez un périphérique de stockage connecté en réseau bon marché et à faible consommation. Alors que le résultat final ne sera certainement pas aussi ... Lire la suite ou un téléchargeur de torrent toujours-sur Comment faire de votre Raspberry Pi dans un toujours-sur le téléchargement de mégalithe Comment faire de votre Raspberry Pi dans un méga-téléchargement toujours sur Faites votre part pour le "réseau de distribution Linux" mondial en construisant un mégalithe dédié, sécurisé, de téléchargement de torrent qui utilise à peine 10W de puissance. Il sera, bien sûr, basé sur un Raspberry Pi. Lire la suite !

In this article