用 Python 指令碼,監聽附近網路 Wi-Fi 裝置,通過郵件和微信進行訊息推送

神奇的戰士發表於2019-02-02

程式碼地址 github.com/wangshub/hm…

在樹莓派上,利用 Wireshark 掃描附近網路 WiFi 裝置,並對掃描結果通過郵件或者微信進行推送。

臨近春節回老家過年,家裡沒人,又不想安裝攝像頭監控,參考howmanypeoplearearound寫了一個監測指令碼,當有手機或其它 Wi-Fi 裝置在附近時,通過郵件或者微信提醒。

用 Python 指令碼,監聽附近網路 Wi-Fi 裝置,通過郵件和微信進行訊息推送

特性

  • Wi-Fi 裝置掃描
  • 郵件提醒
  • 微信提醒(Server 醬)
  • 陌生裝置檢測

原理

在 Wi-Fi 網路中,無線網路卡是以廣播模式發射訊號的。當無線網路卡將資訊廣播出去後,所有的裝置都可以接收到該資訊。將無線網路卡設定為監聽模式後,就可以捕獲到該網路卡接收範圍的所有資料包。 通過這些資料包,就可以掃描出附近 Wi-Fi 的網路內的裝置與訊號強度。

用 Python 指令碼,監聽附近網路 Wi-Fi 裝置,通過郵件和微信進行訊息推送

監聽模式的網路卡

一些支援監聽模式的網路卡

wifi-adapter-that-supports-monitor-mode

軟體安裝

Mac

brew install wireshark
 brew cask install wireshark-chmodbpf
複製程式碼

Linux 或 Raspberry Pi

sudo apt-get install tshark

# run as non-root

sudo dpkg-reconfigure wireshark-common     (select YES)
sudo usermod -a -G wireshark ${USER:-root}
newgrp wireshark
複製程式碼

配置網路卡

  • 如果是支援監聽模式的網路卡,可以直接執行
  • 如果剛好是 Rtl8192 + Raspberry Pi,需要先解除安裝rtl8192驅動,再載入RTL8188驅動
#!/usr/bin/env bash
uname -a

# disable rtl8192 driver
sudo depmod 4.14.79-v7+
sudo rmmod 8192cu
sudo modprobe rtl8192cu

# set RTL8188 monitor mode
sudo ifconfig wlan1 down
sudo iwconfig wlan1 mode monitor
sudo ifconfig wlan1 up
複製程式碼

執行程式碼

下載程式碼

git clone https://github.com/wangshub/hmpa-pi.git
cd hmpa-pi/ && pip install -r requirements.txt
複製程式碼

編輯配置檔案

cp config/config.py.example config/config.py
vi config/config.py
複製程式碼

參考配置

adapter = 'wlan1'

use_email = True
email = {"host": "smtp.163.com",
         "port": 465,
         "user": "xxxxxxx@163.com",
         "password": "xxxxxxxxxx",
         "to_user": "xxxxxxxx@xxxx.com"}

use_wechat = True
serverchan = {"sckey": "xxxxxxxxxxxxxxxxxxxxx"}

known_devices = {"94:65:2d:xx:xx:xx": "my cellPhone",
                 "dc:a4:ca:xx:xx:xx": "my Mac",
                 "b8:27:eb:xx:xx:xx": "my raspberry"}
複製程式碼

執行

python main.py
複製程式碼

訊息推送

執行結果

2019-01-24 07:37:01.211617 一共發現了 67 臺裝置

Known Devices:
- my cellPhone
- my raspberry
- my mac

All Devices:
- 00:e0:70:3e:xx:xx 14 DH TECHNOLOGY
- 94:65:2d:91:xx:xx 14 OnePlus Technology (Shenzhen) Co., Ltd
- dc:d9:16:7e:xx:xx -12 HUAWEI TECHNOLOGIES CO.,LTD
- b8:27:eb:12:xx:xx -20 Raspberry Pi Foundation
- 98:01:a7:eb:xx:xx -40 Apple, Inc.
- 20:5d:47:44:xx:xx -44 vivo Mobile Communication Co., Ltd.
- ac:b5:7d:5f:xx:xx -46 Liteon Technology Corporation
- 04:03:d6:1f:xx:xx -47 Nintendo Co.,Ltd
- d4:ee:07:55:xx:xx -48 HIWIFI Co., Ltd.
- 44:6e:e5:63:xx:xx -51 HUAWEI TECHNOLOGIES CO.,LTD
- 14:75:90:8d:xx:xx -51 TP-LINK TECHNOLOGIES CO.,LTD.
- 34:96:72:1d:xx:xx -56 TP-LINK TECHNOLOGIES CO.,LTD.
- d8:cb:8a:74:xx:xx -57 Micro-Star INTL CO., LTD.
- 40:8d:5c:21:xx:xx -57 GIGA-BYTE TECHNOLOGY CO.,LTD.
- 6c:59:40:25:xx:xx -58 SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.

More ...
複製程式碼

TODO

  • 美化列印資訊
  • 更優雅的引數配置
  • 當發現新裝置時提醒
  • 繪圖統計
  • 裝置距離估計

參考連結

License

  • MIT
  • 僅供學習和研究,切勿非法使用

Code

程式碼地址 github.com/wangshub/hm…

相關文章