如何在”没信号”的情况下保持联系:构建离网Wi-Fi语音通信系统的方法

  • 这个方法也许在抗议活动中或敏感行动中会更有用

在抗议活动出现时,当局会首先倾向于削弱移动信号或干脆断网,以切断活动家之间的联系,从而实现分头打击。

于是在没信号的情况下如何保持行动力和继续工作,已经成为一个重要课题。不要错过 “如何应对断网” 系列,如下:

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 [email protected]

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.
[email protected]'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
[[email protected] ~]$

步骤3:更换Wi-Fi网卡(可选)

现在已经位于 PirateBox Pi 中了,如果您使用的是外部Wi-Fi适配器,则需要更改 /boot/wifi_card.conf 文件中的一个变量,以将其内部卡切换为您需要使用的卡。首先需要找到卡的名字,因此使用 ifconfig

[[email protected] ~]$ ifconfig

如果您只看到一个卡例如 wlan1,则需要 ip a 扫描一下,然后您可能会看到 wlan1 和 wlan0,那就对了。

[[email protected] ~]$ ip a

要启动并运行第二张卡,请使用以下命令,用您自己的卡名代替。然后输入您的密码。这时候您再返回去使用 ifconfig,就应该可以看到两张卡。

[[email protected] ~]$ sudo ifconfig wlan0 up

[sudo] password for alarm:

现在,打开前面在nano中提到的配置文件,并确保它说出您正在使用的Wi-Fi适配器的名称。在键盘上按 Control-X 退出nano。如果更改了名称,请单击Y,然后按 Enter 以保存它。

[[email protected] ~]$ sudo nano /boot/wifi_card.conf

GNU nano 2.9.6              /boot/wifi_card.config

wlan1

步骤4:安装对讲机并连接到 PirateBox

现在,需要在将要使用 PirateBox Pi 相互通信的所有 Android 设备上下载并安装用于通信的应用程序。该应用程序称为 “Intercom for Android”。

应用准备就绪后,要测试下,请断开 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

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据