🧄Jupyter Notebook分析Wireshark捕捉ESP8266信标数据
Last updated
Last updated
Jupyter Notebook | WiFi | ESP8266 | Arduino | Wireshark | Pandas | Python | Matplotlib | 信标
在嗅探Wi-Fi时,Wireshark是跨平台的,能够捕获大量数据。 弄清这些数据完全是另一项任务。 这就是Jupyter Notebook的用武之地。它可以帮助分析Wi-Fi数据包,并确定特定电话以前连接过的网络,从而使我们可以了解所有者的身份。
总体而言,数据可能会造成混乱,尤其是当数据很多时,这既是福也是祸。 它使它更有可能包含重要的模式,但也更有可能使它们模糊不清。 在原始数据中寻找有意义的模式就像在大海捞针一样,但是用于大数据分析的免费工具(例如Jupyter Notebook)使事情变得更加轻松。
Wireshark是用于收集Wi-Fi数据的令人难以置信的工具,它可以快速将信息填充到屏幕上。 这些数据可以告诉您很多信息,具体取决于您要查找的内容,但是通常说来太多,以至于无法轻松识别模式。 Wireshark确实具有用于分析数据的内置方法,但是共享结果可能很困难,并且Wireshark内置的工具可能无法告诉您所需的信息。
您可以从Wireshark捕获中获取的数据类型包括在附近发送或接收的每个设备的MAC地址,有关哪些客户端当前连接到哪些网络的信息,甚至还包括附近客户端过去已连接的网络的信息。
在Wireshark中收集信息后,我们可以将其导出为CSV文件并将其导入Jupyter Notebook。 这样做的好处是,我们可以使用Python的Pandas库快速剖析Wireshark生成的数据。 该库可以将CSV文件作为数据框架使用,可以轻松地绘制数据图形和图表以显示关系。
使用Jupyter Notebook的好处之一就是挖掘信息以获取洞察力是多么容易。 数据与情报之间的一个显着区别是将数据处理成洞察力,这就是在Jupyter中处理数据所允许的。
在我们的示例中,我们将使用Jupyter Notebook检查公共流量上的Wireshark捕获。 在捕获中,我们记录了响应Arduino“信标垃圾信息发送器”sketch的设备,该设备创建了40个带有流行开放网络名称的伪Wi-Fi AP。 任何已加入与伪名称相同名称的热点的设备都将尝试连接。 我们可以在Jupyter Notebook中记录这些响应并将其绘制成图形,以了解哪些伪网络导致最多的手机做出反应,以及每个手机过去连接过哪些伪网络名称。
导出Wireshark捕获为CSV文件
首先,我们将在Wireshark中获取一个PCAP文件,并将其转换为CSV文件以在Jupyter Notebook中使用。 为此,请在Wireshark中打开捕获,然后通过右键单击要添加的字段并选择“应用为列”,将数据包中所需的所有数据添加到列中。
最后,是时候导出我们选择的数据包了。在“文件”下,单击“导出数据包解剖”,然后选择“作为CSV”以正确的格式导出。
在这里,您可以命名文件并指定是要导出显示的数据包还是捕获中的所有数据包。
完成后,应将包含数据的CSV文件保存到您的计算机,以准备导入Jupyter Notebook。
Jupyter是一个用Python编写的数据分析程序,它可以很容易地在安装了Python3的任何计算机上安装。您可以通过在新的终端窗口中运行以下命令来执行此操作。
安装Jupyter后,我们可以运行它来创建Web界面并自动打开它。 为此,请键入以下内容。 如果您以root用户身份运行,则系统会提示您不建议这样做,您可以选择继续或切换帐户。
应打开一个网络浏览器,使您可以选择以前的项目或打开一个新的项目。
单击“新建”,然后单击“ Python 3”以打开一个新笔记本。
让我们看一下布局。在顶部,我们将看到保存,插入输入和运行命令的选项。我们还将看到“输入”提示,等待我们添加一些Python 3。
现在,我们需要将Wireshark CSV文件导入到Pandas数据框中。 Pandas和Matplotlib库将帮助我们轻松地处理和处理捕获的数据。
首先,我们将导入Pandas并将其昵称为pd,同时使用Matplotlib中的Pyplot库作为plt进行相同的操作。现在,当我们提到pd时,Python 3知道我们在谈论熊猫,而plt和Pyplot也是如此。
In [ ]: import pandas as pd
from matplotlib import pyplot as plt
接下来,我们将使用Pandas read_csv选项来指定要使用的CSV文件的位置,分隔数据的字符类型(CSV文件中的逗号或TSV文件中的标签),编码类型以及包含单元格名称的标题所在的行。 所有这些都将放置在名为wd(无线数据)的变量中,但是您可以随意调用它。
最后,我们将使用.sample(10)方法对10个随机数据点进行采样,以查看结果。
In [ ]: wd = pd.read_csv('PATH/TO/FILE.csv', delimiter = ',', encoding='latin-1', header=0)
wd.sample(10)
既然我们已经导入了数据,那么我们就可以开始使用它,看看可以从其中的模式中学到什么。