在这个Raspberry Pi网络扫描仪项目中,详细记录了如何利用一个名为Kismet的软件包扫描周围的网络设备。
这个项目依赖于Kismet软件,它利用网络接口,如WiFi适配器和蓝牙适配器,扫描周围所有的网络设备。Kismet会读入设备的信息,并监控它们的数据包流量。它还会监控它们工作的频率等信息。请注意,在本教程中,不能使用Raspberry Pi的内置WiFi,因为它没有进入 "监控 "模式的功能。
需要注意的是,Kismet可以和WiFi、蓝牙和一些软件定义的无线电(SDR)硬件一起工作,但不能与以太网一起工作。
建议你不要运行任何其他网络项目,除非你知道自己在做什么,因为它们可能会与Kismet冲突。
设备清单以下是将Raspberry Pi变成网络扫描仪所需要的所有设备,点击链接可直达特别优惠购买。
建议- 树莓派
- 高速SD卡
- 树莓派4B电源
- 以太网线或Wifi
- USB鼠标
- USB键盘
- Micro HDMI
- 树莓派外壳
1. 在开始设置Raspberry Pi扫描网络之前,首先运行以下命令来确保Pi是最新的。
sudo apt-get update
sudo apt-get upgrade
2. 现在已经更新了Raspberry Pi,使用下面的命令来检索所有可用的无线网络设备。
使用该命令中的一个值来验证网络设备是否能够支持网络扫描仪软件所需的监控模式。
iw dev
3. 这个命令应该产生一个类似于下面的列表。寻找您打算进入监控模式的无线设备。
例如,我的接口是wlan1设备,目前没有连接到任何网络。所以由此,记下它的物理id,即phy1(phy#1)。
phy#1
Interface wlan1
ifindex 4
wdev 0x100000001
addr 00:c1:41:07:11:76
type managed
channel 11 (2462 MHz), width: 40 MHz, center1: 2452 MHz
txpower 20.00 dBm
phy#0
Interface wlan0
ifindex 3
wdev 0x1
addr b8:27:eb:44:ad:fe
type managed
channel 11 (2462 MHz), width: 20 MHz, center1: 2462 MHz
txpower 31.00 dBm
4. 现在已经获得了要使用的无线设备的物理地址,运行下面的命令来检查它是否能够支持所需要的监控模式。
确保用你打算使用的设备的地址代替phy1。
iw phy phy1 info
5. 从phy1 info命令的输出中,需要寻找一个标题为Supported interface modes:的部分。
找到了这个部分后,在其中寻找*显示器。如果能看到它,那么就可以继续进行这个Raspberry Pi网络扫描仪教程。如果找不到它,那么就需要换一个无线网卡。
准备无线监视器进行网络扫描1. 现在知道可以使用我们的无线适配器了,运行以下命令来修改我们的接口文件。
sudo nano /etc/network/interfaces
2. 在该文件的底部,需要输入以下几行:
这几行对我们的wlan1接口做了一些不同的事情。
第一行allow-hotplug,告诉操作系统等待kernel/drivers/udev检测设备。
第二行设置wlan1接口不会被自动分配IP地址,因为我们正在做的事情不需要这些地址。
接下来的几行设置了我们实际的监视器接口。首先,我们为phy1设备添加一个新的接口,类型为监视器。
我在这几行中利用了pre-up命令,这样这些操作就会在界面被操作系统提起之前发生。
然后我们继续删除wlan1接口,因为不需要它。
使用最后一行,调出刚才创建的mon1界面。
allow-hotplug wlan1
iface wlan1 inet manual
pre-up iw phy phy1 interface add mon1 type monitor
pre-up iw dev wlan1 del
pre-up ifconfig mon1 up
3. 配置编辑好之后,按CTRL X,然后按Y,最后按ENTER键保存它。
4. 现在已经完成了这些更改,需要通过运行以下命令来重新启动Raspberry Pi。
sudo reboot
5. 当Raspberry Pi重启后,使用以下命令检查网络配置。
ifconfig
6. 从这个命令中,应该看到mon1:接口出现在网络配置的列表中。
如果mon1:确实出现在列表中,那么对接口文件的修改就成功了,现在可以继续进行本教程了。
从Repo安装Kismet无线监控工具1. 要从他们的软件库中安装Kismet,需要下载他们的GPG密钥,并将其添加到软件包密钥管理器中。
还需要添加Kismet的版本库,这样它就可以作为一个可用的源版本库被读取。在/sources.list.d/目录下创建一个包含URL的文件来实现。
运行以下两个命令来添加GPG密钥以及新的源。
wget -O - https://www.kismetwireless.net/repos/kismet-release.gpg.key | sudo apt-key add -
echo 'deb https://www.kismetwireless.net/repos/apt/release/stretch stretch main' | sudo tee /etc/apt/sources.list.d/kismet.list
2. 由于Kismet的软件包仓库已经写进了系统中,需要更新软件包列表。更新列表会从新添加的软件库中抓取所有的软件包。
要更新软件包列表,需要在Raspberry Pi上运行以下命令。
sudo apt-get update
3. 现在已经成功更新了软件包仓库列表,可以安装Kismet软件Raspberry Pi上。
运行以下命令,该命令将安装Kismet软件的最新版本。
不要只输入Kismet,因为那是添加的repo所提供的旧包。
sudo apt-get install kismet2018
4. 在安装Kismet软件的过程中,会创建一个新的Kismet用户和组,该用户和组具有配置网络接口和捕获数据包的特殊权限。
现在我们需要将我们的默认pi用户添加到新创建的Kismet组中,这样它就可以毫无问题地操作软件了。
运行以下命令将用户 pi 添加到 kismet 组。
sudo usermod -aG kismet pi
5. 当我们运行了usermod命令后,现在我们需要通过运行下面的命令来注销。
注销会导致操作系统更新我们用户的权限和组列表。
logout
6. 一旦你重新登录,你可以通过运行以下命令来检索你的用户所属的组列表。你应该能在这个列表中看到kismet。
groups
现在您可以继续进入本Raspberry Pi网络扫描器教程的启动Kismet监控工具部分。
从源头安装Kismet无线监控工具1. 现在已经正确设置好了mon1接口,我们需要安装编译Kismet这个软件所需要的包。
要安装Kismet软件所需的所有软件包,您需要在Raspberry Pi上运行以下一组命令。
我们将安装分为多个命令,以方便输入或复制粘贴。
sudo apt-get install -y build-essential git libmicrohttpd-dev pkg-config zlib1g-dev
sudo apt-get install -y libnl-3-dev libnl-genl-3-dev libcap-dev libpcap-dev libncurses5-dev
sudo apt-get install -y libnm-dev libdw-dev libsqlite3-dev libprotobuf-dev libprotobuf-c-dev
sudo apt-get install -y protobuf-compiler protobuf-c-compiler libsensors4-dev
sudo apt-get install -y libusb-1.0-0-dev
2. 要编译Kismet,我们首先要利用GIT从其官方GitHub上抓取其源代码。这样做可以确保我们运行的是最新版本的Kismet。
要做到这一点,我们需要在终端内输入以下命令。
git clone https://github.com/kismetwireless/kismet.git
3. 一旦代码下载到你的Raspberry Pi,让我们继续改变到它的目录,并通过运行以下命令开始配置过程。
配置过程确保我们拥有所有所需的包,并根据当前的操作系统对它需要的编译方式进行修改。
cd kismet
./configure
4. 现在Kismet代码已经配置好,可以在我们的Raspberry Pi上进行编译,让我们开始实际的编译过程。通过运行make命令来完成。
请注意,由于Raspberry Pi的处理能力有限,编译过程会花费很长的时间,所以现在是休息的好时机。这个编译过程在我们的Raspberry Pi 3B 上花了一个多小时。
make
5. 当Raspberry Pi完成编译Kismet后,让我们把它安装到Raspbian上。
为了安装Kismet,我们将再次利用make程序,但要利用Kismet的suidinstall。
我们在make命令中使用的额外参数将安装程序,并为软件创建所需的用户和组。
sudo make suidinstall
6. 当Kismet的安装过程完成后,我们需要将pi用户添加到kismet组中。这额外的一步是由于Kismet软件所要求的权限。
运行以下命令将用户 pi 添加到 kismet 组。
sudo usermod -aG kismet pi
7. 要刷新当前用户的组列表,你需要先注销,然后再重新登录。
要注销您的Raspberry Pi,您可以利用以下命令。
logout
8. 重新登录后,运行以下命令检查当前用户的组。
groups
你应该在这个命令生成的组列表中看到kismet。如果你没有看到它,那么请确认你在步骤6中输入的命令是否正确。
启动Kismet监控工具1. 在我们启动Kismet之前,让我们通过运行以下命令为它创建配置文件。
Kismet会在启动时读取这个配置文件,并利用我们指定的来源来扫描流量。
根据源代码编译
sudo nano /usr/local/etc/kismet_site.conf
从存储库安装
sudo nano /etc/kismet/kismet_site.conf
2. 在该文件中输入以下两行:
这几行代码告诉Kismet使用我们的mon1接口作为无线连接的数据源,同时也使用hci0接口作为监控蓝牙连接的数据源。
如果你使用的是不支持蓝牙的Pi,那么请忽略第二行。
source=mon1
source=hci0
一旦输入了行,你就可以按CTRL X然后按Y,最后按ENTER键保存文件。
3. 要连接到Kismet的网络界面,你需要找出你的Raspberry Pi的本地IP地址,这样你就可以通过网络浏览器访问它。
要查看你的Raspberry Pi的本地IP地址,你可以使用下面的命令。
hostname -I
4. 现在我们已经检索到了Raspberry Pi的本地IP地址,现在我们可以继续启动Kismet服务器,以便我们可以通过它的Web界面访问它。
要启动Kismet服务器,你需要在Raspberry Pi上运行以下命令。
kismet
5. 当Kismet监控工具启动后,继续打开你最喜欢的网络浏览器,进入以下网址。
确保你把下面的例子IP替换成你在本节步骤1中获得的IP。这样做应该可以加载我们在Raspberry Pi上运行的Kismet网络扫描仪接口。
http://192.168.0.145:2501
使用Kismet监控工具
1. 当你第一次加载Kismet的网页界面时,你会被要求输入新的登录信息。设置一个容易记住的用户名和密码(1.),然后按 "保存"(2.)按钮。
2. 设置好用户名和密码后,您将看到以下画面。
如果你曾经需要用尚未登录的网络浏览器登录,那么你需要先进入设置界面,点击设置按钮,如下图所示。
3. 进入 "设置 "页面后,您将看到以下画面。在此页面中,说明了每个浏览器的登录和密码等用户界面的设置都会被保存下来。
要继续,请点击左侧边栏的 "登录和密码 "标签,如下图所示。
4. 在这里,输入你在本节步骤1中设置的用户名和密码(1.
一旦您输入了正确的用户名和密码,请按位于模式右下角的 "保存更改 "按钮(2.)。
一旦您正确设置了一切,您可以按 "X"(3.)关闭设置框。
5. 现在你应该看到,该表已经填满了你的WiFi适配器和蓝牙适配器能找到的所有WiFi设备和蓝牙设备。
您可以通过点击表格中的特定设备来了解更多信息。
点击一个设备会弹出一个设备详细信息屏幕,提供该设备的更多信息。这包括为其下载pcap(数据包捕获)文件的能力。
6. 您还可以通过网络界面管理您用来采集数据的设备。这个界面将允许您启用更多的设备或改变您正在扫描的频率。
首先,按左上角的汉堡包图标打开菜单。
7. 现在在弹出的菜单中点击数据源按钮,如下图所示。
8. 现在我们已经进入数据源设置页面,我们可以看到所有可用的数据源,包括我们之前在配置文件中启用的数据源。
任何带有 "可用接口 "旁边的接口都意味着它可以作为一个活动数据源被启用。请注意,这并不意味着它能完美无缺地工作,启用后可能会出现错误。
例如,如果你使用的是使用内置WiFi芯片的Pi,请确保不要启用wlan0。否则,就会因为它缺乏进入监控模式的能力而出现大量错误。
9. 点击已经启用的接口后,你会看到更多的选项。这些选项将允许你更好地配置你的数据源,以捕获你想要的信息。
例如,对于无线监视器,你可以指定你要收听的频道,以及是否应该将自己锁定在某个频道上。
此外,您还可以暂停任何活动的数据源。
10. 你现在应该知道如何查看Kismet收集的数据了。这包括如何启用、禁用和修改数据源。
在本教程的下一节中了解如何让Kismet在启动时启动。
网络扫描器开机启动1. 让Kismet在启动时启动是一个直接的过程,如果你的Raspberry Pi网络扫描仪随机重启,那么这个过程很重要。
如果你通过他们的仓库安装了Kismet,你可以跳到第2步。否则,如果你编译了源代码,就可以跳过这一步。
我们需要先将服务复制到systemd文件夹中。你可以在你的Raspberry Pi上运行以下命令来完成这项工作。
sudo cp /home/pi/kismet/packaging/systemd/kismet.service /lib/systemd/system/
2. 现在,在我们继续使用systemd服务文件之前,我们需要对其进行一些修改,使其使用我们的pi用户而不是root用户。
通过运行以下命令开始编辑Raspberry Pi上的服务文件。
sudo systemctl edit kismet
3. 在这个空白文件中,输入以下几行:
这些行将覆盖服务的默认设置,并使其利用我们的pi用户而不是root用户。
[Service]
User=pi
Group=kismet
4. 现在你可以按CTRL X,然后按Y,最后按ENTER键保存这个文件。
5. 现在我们已经复制了Kismet服务文件,并创建了一个定义用户和组的覆盖,我们可以进入下一阶段。
下一阶段涉及启用服务文件。启用服务非常容易,只需输入以下命令即可。
sudo systemctl enable kismet
6. 启用Kismet服务后,我们也来启动它。这将测试服务,以确保一切工作正常。
输入下面的命令,Kismet就会启动,你应该可以再次通过网页界面访问它。
sudo systemctl start kismet
7. 一旦我们启动了Kismet服务,我们可以在任何时候利用以下命令检查它的状态。
sudo systemctl status kismet
如果出现 "Active: active (running) "的文字,那么一切都在正常工作。如果出现其他内容,请检查提供的日志,查看程序打印出的最后一条信息。
8. 最后一个测试,看看一切是否正常,就是通过运行以下命令重新启动Raspberry Pi。
sudo reboot
如果一切正常,您应该可以在Raspberry Pi重启后连接到Kismet的Web界面,而无需手动重新启用软件。
我希望本教程已经向您展示了设置Raspberry Pi网络扫描仪所需了解的一切。
,