用Wireshark监听WIFI通讯
起因是,买了go pro hero 3+之后,觉得这个官方的app太烂,所以想看能不能拿到它的通讯协议。
首先用Wireshark试了几下,没成功。在网上搜了一下,发现已经有人这么做了(1. https://github.com/KonradIT/goprowifihack , 2. https://github.com/r1pper/GoPro.Hero),go pro的通讯协议也只是简单的HTTP,并没有什么难度。
在这里(https://github.com/r1pper/GoPro.Hero/issues/5),他们想找一台hero 3+来测试新的设置,我就自报奋勇,继续找了一些Wireshark的资料(1:http://wiki.wireshark.org/CaptureSetup/WLAN, 2: http://wiki.wireshark.org/HowToDecrypt802.11, 3: http://www.willhackforsushi.com/books/377_eth_2e_06.pdf, etc ),以前关于Mac上WIFI设置的文章,终于可以监听到WIFI通讯了。
我使用的是MacOSX 10.9.1, Wireshark 1.10.2.
要使用wireshark来监听 wifi通信需要这样几个条件
1. 断开本机的wifi链接,并在特定的信道上监听。我试了很久都没有嗅探成功就是因为这个。WIFI有很多信道,只有在特写信道监听,所得的信息才是完整的。当不确定信道的时候可以使用跳频扫描的技术来确定信道,但这时候获得的数据是不完整的,不能用于解码。当MacOSX连接到某一个wifi路由器之后,它的监听模式也只在当前的信道上监听,所以必须断开这个连接。
2. eapol。Wireshark需要获取设备连接到WIFI上时进行的eapol握手消息才可以解密通信。也就是说,只有你的wireshark的监听早于设备连接在WIFI之前,否则,wireshark监听到的信息是不能够解密的(也许有别的软件可以直接解密)
3. 解密钥。需要在wireshark里设置当前SSID对应的密码才可以对数据解密。当然在不知道特定wifi的密码的时候,有别的方法可以破解,比如kisMAC软件。解密速度也很快。不过kismac在我的最新的系统上无法运行了(似乎很久没有更新了)。
4. 监听模式。wireshark要在启动时启用监听模式。
下面是嗅探的步骤
1. 打开控制台窗口,创建airport工具的符号链接:
$sudo ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/sbin/airport
2. 确定无线网卡设备名
$ifconfig
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=27<RXCSUM,TXCSUM,VLAN_MTU,TSO4>
ether xxxxxxxxxxxxxx
nd6 options=1<PERFORMNUD>
media: autoselect
status: inactive
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether xxxxxxxxxxxxxx
inet6 xxxxxxxxxxxxxx en1 prefixlen 64 scopeid 0x5
inet xxxxxxxxxxxxxx netmask 0xffffff00 broadcast xxxxxxxxxxxxxx
nd6 options=1<PERFORMNUD>
media: autoselect
status: active
这里en1是我的无线网卡
3. 获取确定gopro的信道
$airport en1 scan
SSID BSSID RSSI CHANNEL HT CC SECURITY (auth/unicast/group)
gogogopro xxxxxxxxxxxxxx -38 11 Y US WPA2(PSK/AES/AES)
我的gopro的信道是11
4. 断开wifi连接并设置监听信道。MacOSX没有提供断开当前连接的方法,所以需要使用airport来实现
$sudo airport -z
$sudo airport -c11
并确认一下
$airport -I
agrCtlRSSI: 0
agrExtRSSI: 0
agrCtlNoise: 0
agrExtNoise: 0
state: init
op mode:
lastTxRate: 0
maxRate: 0
lastAssocStatus: 65535
802.11 auth: open
link auth: none
BSSID: 0:0:0:0:0:0
SSID:
MCS: -1
channel: 11
5. 打开Wireshark,配置嗅探设置
6. 设置WIFI密码和解密设置
key里的格式是---密码:SSID
7.启动监听,让手机连接到gopro的wifi上。
只有wireshark截获到四个eapol消息之后,才可以解密通信数据。在过滤器里输入eapol来显示截获到的eapol
8.使用其他的过滤器来查看在这台wifi上的通信了
如果把gopro换成一台普通的wifi路由器,那么,你就可以看到所有连接在这台wifi上的设备的所有通信了。
Good Luck
首先用Wireshark试了几下,没成功。在网上搜了一下,发现已经有人这么做了(1. https://github.com/KonradIT/goprowifihack , 2. https://github.com/r1pper/GoPro.Hero),go pro的通讯协议也只是简单的HTTP,并没有什么难度。
在这里(https://github.com/r1pper/GoPro.Hero/issues/5),他们想找一台hero 3+来测试新的设置,我就自报奋勇,继续找了一些Wireshark的资料(1:http://wiki.wireshark.org/CaptureSetup/WLAN, 2: http://wiki.wireshark.org/HowToDecrypt802.11, 3: http://www.willhackforsushi.com/books/377_eth_2e_06.pdf, etc ),以前关于Mac上WIFI设置的文章,终于可以监听到WIFI通讯了。
我使用的是MacOSX 10.9.1, Wireshark 1.10.2.
要使用wireshark来监听 wifi通信需要这样几个条件
1. 断开本机的wifi链接,并在特定的信道上监听。我试了很久都没有嗅探成功就是因为这个。WIFI有很多信道,只有在特写信道监听,所得的信息才是完整的。当不确定信道的时候可以使用跳频扫描的技术来确定信道,但这时候获得的数据是不完整的,不能用于解码。当MacOSX连接到某一个wifi路由器之后,它的监听模式也只在当前的信道上监听,所以必须断开这个连接。
2. eapol。Wireshark需要获取设备连接到WIFI上时进行的eapol握手消息才可以解密通信。也就是说,只有你的wireshark的监听早于设备连接在WIFI之前,否则,wireshark监听到的信息是不能够解密的(也许有别的软件可以直接解密)
3. 解密钥。需要在wireshark里设置当前SSID对应的密码才可以对数据解密。当然在不知道特定wifi的密码的时候,有别的方法可以破解,比如kisMAC软件。解密速度也很快。不过kismac在我的最新的系统上无法运行了(似乎很久没有更新了)。
4. 监听模式。wireshark要在启动时启用监听模式。
下面是嗅探的步骤
1. 打开控制台窗口,创建airport工具的符号链接:
$sudo ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/sbin/airport
2. 确定无线网卡设备名
$ifconfig
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=27<RXCSUM,TXCSUM,VLAN_MTU,TSO4>
ether xxxxxxxxxxxxxx
nd6 options=1<PERFORMNUD>
media: autoselect
status: inactive
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether xxxxxxxxxxxxxx
inet6 xxxxxxxxxxxxxx en1 prefixlen 64 scopeid 0x5
inet xxxxxxxxxxxxxx netmask 0xffffff00 broadcast xxxxxxxxxxxxxx
nd6 options=1<PERFORMNUD>
media: autoselect
status: active
这里en1是我的无线网卡
3. 获取确定gopro的信道
$airport en1 scan
SSID BSSID RSSI CHANNEL HT CC SECURITY (auth/unicast/group)
gogogopro xxxxxxxxxxxxxx -38 11 Y US WPA2(PSK/AES/AES)
我的gopro的信道是11
4. 断开wifi连接并设置监听信道。MacOSX没有提供断开当前连接的方法,所以需要使用airport来实现
$sudo airport -z
$sudo airport -c11
并确认一下
$airport -I
agrCtlRSSI: 0
agrExtRSSI: 0
agrCtlNoise: 0
agrExtNoise: 0
state: init
op mode:
lastTxRate: 0
maxRate: 0
lastAssocStatus: 65535
802.11 auth: open
link auth: none
BSSID: 0:0:0:0:0:0
SSID:
MCS: -1
channel: 11
![]() |
5. 打开Wireshark,配置嗅探设置
![]() |
6. 设置WIFI密码和解密设置
key里的格式是---密码:SSID
![]() |
![]() |
7.启动监听,让手机连接到gopro的wifi上。
只有wireshark截获到四个eapol消息之后,才可以解密通信数据。在过滤器里输入eapol来显示截获到的eapol
![]() |
8.使用其他的过滤器来查看在这台wifi上的通信了
![]() |
如果把gopro换成一台普通的wifi路由器,那么,你就可以看到所有连接在这台wifi上的设备的所有通信了。
Good Luck