如何制作仅通过Raspberry Pi传输猫图片的WiFi网络

这是一个常见的用例场景:您想广播一个公共WiFi网络供任何人使用,但是您有严格的要求,即只允许使用猫图像。好消息:您的Raspberry Pi是完美的 transmoggification 机器。感兴趣吗?继续阅读。

您需要什么

  • Raspberry Pi模型B (Raspberry Pi的新功能?这是初学者需要了解的一切,以视频形式)
  • 4GB或更大容量的SD卡
  • 以太网电缆
  • 兼容的WiFi适配器
  • MicroUSB电源线和适配器
  • 该项目的开始与几周前我们建造的洋葱路由器相同。首先,我们将Raspberry Pi变成标准的WiFi网络,然后在中间放置一个代理。代理将通过Perl脚本过滤帖子,该脚本将用TheCatAPI.com的cat GIF替换每个HTTP请求上的图像。看着困惑的用户既极度沮丧,又异常镇定。这是英国广播公司(BBC)的事后修改。

    建立WiFi网络

    由于本教程的这一部分与DIY洋葱路由器完全相同,请按照此处的说明进行操作。到安装Tor 的地步。

    我们唯一需要做的小更改就是广播一个开放的WiFi网络,而不是使用WPA保护的网络。完成此处的设置后,请更改 /etc/hostapd/hostapd.conf ,并粘贴以下配置。重新开始应用更改。

    interface=wlan0driver=nl80211ssid=Kittenshw_mode=gchannel=6auth_algs=1wmm_enabled=0

    您现在应该在Raspberry Pi上广播一个可以公开访问的无线网络。本指南的其余部分将重点放在使有趣的事情发生上。

    如果事情不起作用,请键入:

    ifconfig -a

    ,然后在wlan0上查找IP地址。如果重新启动时未分配,请尝试以下操作:

    sudo nano /etc/default/ifplugd

    将以下行从:

    INTERFACES="auto"HOTPLUG_INTERFACES="all"

    更改为:

    INTERFACES="eth0"HOTPLUG_INTERFACES="eth0"

    重新启动,并验证您可以连接到WiFi网络,并访问Internet。

    Squid代理和IPTable

    从安装先决条件开始,然后创建一个新的路由表。

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

    粘贴以下内容:

    iptables -t nat -A POSTROUTING -j MASQUERADEiptables -t nat -A PREROUTING -i wlan0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.42.1:3128iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128

    保存,然后退出。

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

    保存以下内容,然后退出。

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

    忽略警告,仅表示我们未遵守某些Debian规则(但未破坏任何内容)。最后,我们仍然在引导时使用旧的 iptables 规则,因此请从 / etc / network / interfaces

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

    中删除以下行(删除或注释)

    然后重新启动。接下来,我们将删除默认的Squid代理配置,然后重新进行配置。

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

    将以下内容粘贴到空白文件中:

    cache_mgr picachemgr_passwd pi allredirect_program /home/pi/cats.placl manager proto cache_objectacl localhost src 127.0.0.1/32 ::1acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1acl localnet src 192.168.42.0/24 # RFC1918 possible internal networkacl SSL_ports port 443acl Safe_ports port 80 # httpacl Safe_ports port 21 # ftpacl Safe_ports port 443 # httpsacl Safe_ports port 70 # gopheracl Safe_ports port 210 # waisacl Safe_ports port 1025-65535 # unregistered portsacl Safe_ports port 280 # http-mgmtacl Safe_ports port 488 # gss-httpacl Safe_ports port 591 # filemakeracl Safe_ports port 777 # multiling httpacl CONNECT method CONNECThttp_access allow manager localhosthttp_access deny managerhttp_access deny !Safe_portshttp_access deny CONNECT !SSL_portshttp_access allow localnethttp_access allow localhosthttp_access deny allhttp_port 3128 transparentumask 022cache_mem 128 MBcache_dir ufs /var/spool/squid3 1500 16 256coredump_dir /var/spool/squid3refresh_pattern ^ftp: 1440 20% 10080refresh_pattern ^gopher: 1440 0% 1440refresh_pattern -i (/cgi-bin/|\?) 0 0% 0refresh_pattern . 0 20% 4320

    保存并退出。使用以下命令初始化缓存目录,然后编辑用于分类所有图像的脚本:

    sudo squid3 -znano /home/pi/cats.pl

    粘贴:

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

    制作

    sudo chmod +x cats.plsudo mkdir /var/www/imagessudo chmod 777 /var/www/imagessudo usermod -a -G www-data proxysudo chown www-data:www-data /var/wwwsudo chown www-data:www-data /var/www/imagestouch /tmp/cats.logchmod 777 /tmp/cats.log

    您可以随时通过以下方式尾随日志:

    tail -f /tmp/cats.log

    尝试登录Pinterest,然后突然间,所有这些愚蠢的DIY盆栽植物项目和男士时装精选都将变得更具吸引力。

    如果您想倒置图片(为Ex-Parrot提供原始脚本的版权,我只是进行修改以处理一些权限错误),创建 upsidedown.pl 并粘贴以下内容。

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

    请按照上述其他步骤操作,更改文件名,使脚本可执行,并修改Squid配置使其指向 upsidedown.pl 而不是 cats.pl 。最后,您需要使用以下命令重新启动Squid:

    sudo service squid3 restart

    无论哪种情况,结果都非常棒。如果您对这些脚本进行了其他修改或改进,使其具有其他功能,请在评论中让我输入,并在您的脚本中添加一个Pastebin链接。

    需要更复杂的东西吗?您可以尝试将此项目与Raspberry Pi NAS结合!

    标签: Raspberry Pi Wi-Fi