在抗议活动出现时,当局会首先倾向于削弱移动信号或干脆断网,以切断活动家之间的联系,从而实现分头打击。
于是在没信号的情况下如何保持行动力和继续工作,已经成为一个重要课题。不要错过 “如何应对断网” 系列,如下:
null-byte 介绍了一个方法,帮助您和队友之间保持通信。当然,在任何 “没信号” 的情况下都可以使用这种方法。
当您无法获得稳定的蜂窝信号或无法立即访问Wi-Fi、但需要与周围的人进行通信时,可以使用 Raspberry Pi 和 Android 应用程序建立离网语音通信网络。
有些应用程序(例如 Bridgefy)可以创建一个网状网络,以通过蓝牙与其他设备进行通信。但是,当您的行动是车队、并想与其他车子上的人打交道时,你们之间隔着的所有金属都会形成阻碍。即使在露天的情况下,也有很多阻碍蓝牙信号的障碍物。所以您最好还是使用其他东西。
如果一个热点路由器的功能不足以连接所有人,那么带有体面的无线网络适配器的 Raspberry Pi 可以提供帮助。
有了它,并在上面运行了 PirateBox 服务器,只要每个人都连接到其Wi-Fi热点,你就可以匿名共享图像、视频、音频文件、文档、语音通信和其他内容。
随着抗议活动在世界各地发生,某些地区的执法部门会尝试禁用该地区的手机连接,以防止示威者彼此交谈。今年,抗议活动从美国开始席卷了很多国家,这种情况下移动通信可能陷入瘫痪或阻塞。
本文中介绍的技巧可以帮助解决这类情况。
你需要什么
1、Raspberry Pi 3:因为较新的 Raspberry Pi 4 还没有 PirateBox 映像(这是一个匿名离线移动文件共享和通信系统)。但只要您有一个Wi-Fi加密狗,其他任何 Pi 都可以使用。
具体来说,这里使用的是 Raspberry Pi 3 B+ 模型。
2、USB闪存驱动器:需要一个闪存驱动器作为 PirateBox 的硬驱。大小将取决于您的使用方式,因此大点儿的更好。
如果您预计将传输大量的照片和视频,请尝试使用1 TB 的外部硬盘驱动器,您将永远不必担心。
3、MicroSD卡:确保其容量为16 GB或更大。为了安全起见,建议至少32 GB。
4、MicroSD读卡器:有很多选择,基本上任何一个都可以。
5、电源:Raspberry Pi 单元需要此电源。
6、以太网电缆:使用它来将您的 Raspberry Pi 连接到路由器,以进行全部设置。此后将不再需要。
7、带有高增益天线的无线网络适配器:如果您想获得更强的信号,则需要一个好的Wi-Fi适配器(Alfa Tube-U 是一个不错的选择),带有不错的大型全向天线,专为室外使用而设计,例如用于房车和海上。
确保它可与 Kali Linux 一起使用,以便在需要时可以将其用于其他目的。另外,这样做几乎可以保证它能与 PirateBox 一起使用。此外,Wi-Fi增强器可以帮助确保所有人保持连接状态。
如果您想要花哨点的话,可以搞一个带有平板天线的适配器,然后将其指向目标,把它置于通信区域的中间位置(例如,中间位置的汽车),这是车队或大篷车的理想选择。
步骤1:设定 PirateBox
PirateBox 是一个非常酷的工具,您可以将其加载到充当离线通信盒子的 Raspberry Pi 上,在这里您可以连接到无线网络并在附近的设备上使用其聊天、文件服务器和其他功能。
尤其是它基于开源路由器技术,应具有您进行语音通信所需要的所有交换。
对于 PirateBox 的设置,可以参见这里。为了方便起见,下面嵌入了 null-byte 的网络武器实验室视频。基本在本案例的目的上您只需将 PirateBox 映像加载到 Raspberry Pi 上,通电,然后就应该能够连接到其Wi-Fi网络,在其中通过SSH登录。
因此建议您先下载 Raspberry Pi 3 的 PirateBox 映像,然后继续将其刷到 Raspberry Pi 的SD卡上,然后,一旦打开电源,您就应该能够连接到它所建立的Wi-Fi网络,然后通过SSH登录。
步骤2:连接到 PirateBox
要找出 PirateBox Pi 的IP地址是什么,使用一个 arp-scan。在下面可以看到其中的一个确实是 Raspberry Pi,如果您没有其他Pi的话,很可能就是您的 PirateBox Pi。
~$ arp-scan -l
Interface: en0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.9.5 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.77.1 b8:27:eb:4d:1f:f2 Raspberry Pi Foundation
192.168.77.128 b4:f1:da:ec:4c:e7 (Unknown)
516 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.5: 256 hosts scanned in 1.858 seconds (137.78 hosts/sec). 2 responded
现在测试一下以确保没错。确保将Pi的地址换成下面命令中的地址。当要求连接时选择 “是”,然后输入您的 PirateBox Pi 的密码。
~$ ssh alarm@192.168.77.1
The authenticity of host '192.168.77.1 (192.168.77.1)' can't be established.
ECDSA key fingerprint is SHA256xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.77.1' (ECDSA) to the list of known hosts.
alarm@192.168.77.1's password:
当您看到 PirateBox 屏幕时就成功了。
____________________.__ __ __________
\______ \______ \__|___________ _/ |_ ____\______ \ _______ ___
| _/| ___/ \_ __ \__ \\ __\/ __ \| | _// _ \ \/ /
| | \| | | || | \// __ \| | \ ___/| | ( < > > <
|____|_ /|____| |__||__| (____ /__| \___ >______ /\____/__/\_ \
\/ \/ \/ \/ \/
Website: http://piratebox.cc PirateBox Version: 1.1.4
Forum: http://forum/piratebox.cc Build date: 11-05-2018
IRC: #piratebox irc.freenode.net Be open -- Share freely!
First Steps After Flashing
1. Change password of alarm user
> passwd
2. Change password of root user
> sudo password root
3. Enable Fake-Timeservice
3.1 Set date and time
# Disable network time sync
> sudo timedatectl set-ntp false
# Set time to "Mon May 23 17:42:00" (Format: CCYYMMDD hhmm)
> sudo date -s "20170523 1742"
> cd /opt/piratebox && sudo ./bin/timesave.sh ./conf/piratebox.conf install
3.2 Enable on startup
> sudo systemctl enable timesave
4. Enable the Kareha Image and Discussion Board
> sudo /opt/piratebox/bin/board-autoconf.sh
5. Enable USB thumb drive share OR extend SDCard
USB: > sudo /opt/piratebox/rpi/bin/usb_share.sh
SDCard: > sudo /opt/piratebox/rpi/bin/sdcard_share.sh
6. Enable UPnP Media Server
> sudo cp /etc/minidlna.conf /etc/minidlna.conf.bkp
> sudo cp /opt/piratebox/src/linux.example.minidlna.conf /etc/minidlna.conf
> sudo systemctl stsart minidlna
> sudo systemctl enable minidlna
7. Enable RealTimeClock timekeeping (needs DS3231 or 1307 RTC module!)
> sudo systemctl enable rpi_hwclock
[alarm@alarmpi ~]$
步骤3:更换Wi-Fi网卡(可选)
现在已经位于 PirateBox Pi 中了,如果您使用的是外部Wi-Fi适配器,则需要更改 /boot/wifi_card.conf 文件中的一个变量,以将其内部卡切换为您需要使用的卡。首先需要找到卡的名字,因此使用 ifconfig。
[alarm@alarmpi ~]$ ifconfig
如果您只看到一个卡例如 wlan1,则需要 ip a 扫描一下,然后您可能会看到 wlan1 和 wlan0,那就对了。
[alarm@alarmpi ~]$ ip a
要启动并运行第二张卡,请使用以下命令,用您自己的卡名代替。然后输入您的密码。这时候您再返回去使用 ifconfig,就应该可以看到两张卡。
[alarm@alarmpi ~]$ sudo ifconfig wlan0 up
[sudo] password for alarm:
现在,打开前面在nano中提到的配置文件,并确保它说出您正在使用的Wi-Fi适配器的名称。在键盘上按 Control-X 退出nano。如果更改了名称,请单击Y,然后按 Enter 以保存它。
[alarm@alarmpi ~]$ sudo nano /boot/wifi_card.conf
GNU nano 2.9.6 /boot/wifi_card.config
wlan1
步骤4:安装对讲机并连接到 PirateBox
现在,需要在将要使用 PirateBox Pi 相互通信的所有 Android 设备上下载并安装用于通信的应用程序。该应用程序称为 “Intercom for Android”。
Play Store Link: Intercom for Android (free)
应用准备就绪后,要测试下,请断开 Android 手机上的移动数据网络连接,然后打开Wi-Fi设置,找到你的 PirateBox Pi,并连接到它。
您的手机可能会警告您没有网络可用,别理它。当连接到 PirateBox 后,PirateBox 页面应该会马上打开,但现在对 PirateBox 界面不感兴趣。
步骤5:在同一 Wi-Fi 网络上与其他人交谈
现在,打开 Intercom for Android。您应该看到连接到 PirateBox Pi 的设备的列表。
如果没有看到,请摸摸那个指南针,看会不会出现。如果不起作用,您可能首先需要通过蓝牙连接到其他设备,这似乎会拖慢应用程序识别它们的速度。希望对大多数人而言不会出现这种情况,因为理论上任何人都无需其他工作即可轻松连接。
在本案例中现在可以看到一个设备,如果您点击Wi-Fi图标,它会发出声音以告知您已连接并可以通信。
按住 “随按即说 PTT” 按钮就可以开始和其他人交谈。如果所有连接的设备的应用程序也都打开了,那他们就应该会听到您的声音。
或者,您可以点击上方的圆点图标来切换模式。这样做将启用语音检测,因此您不必一直按着那个按钮。只需讲话,它就会听到您的声音并将通信传输给同一网络上的其他人。要切换回按键模式,只需点击评论框图标。
完成了!这样一来即使没有蜂窝网络,您也应该能够将多部 Android 手机连接在一起。很酷是吧?
您可以执行更多高级操作
此项目有一些限制,但通常如果您想进一步深入,可以使用 OpenWrt 加载 Raspberry Pi。这是一款很酷的开源路由器固件,可让您深入研究选项并做各种有趣的事。
但它设置起来有点复杂。于是本指南应该对初学者来说更合适些。⚪️
Build an Off-Grid Wi-Fi Voice Communication System with Android & Raspberry Pi