python小工具|python3实用小工具--wifi路由器厂商查看器(附源码)
目录
- 一.准备工作
- 二.效果展示
-
- 1.结果
- 2.依赖
- 三.基本思路
- 四.源代码
- 五.总结
本次使用python编写一款wifi路由器厂商查看器,能够扫描并查看附近wifi的基本信息,包括ssid、MAC地址、路由器所属厂商、加密方式、信道、信号强度、wifi信号类型等等,这里最重要的是 路由器所属厂商,Let’s Go!
一.准备工作 python标准库:re、subprocess。
二.效果展示 1.结果
文章图片
使用了pprint打印输出的结果。
2.依赖
文章图片
本次设备厂商查找主要依赖于oui.txt.
三.基本思路
文章图片
四.源代码
import re
import subprocess
from pprint import pprintclass Parse_Mac_Addr(object):
def __init__(self):
self.oui_file=r'./oui.txt'
self.load_oui_file()def load_oui_file(self):
with open(self.oui_file,'r',encoding='utf-8')as f:
self.oui_file_content=f.readlines()def get_popen_result(self,cmd):
find_str = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
execute_result = find_str.stdout.read().decode('gbk',errors='ignore')
return execute_resultdef get_loacl_wifi(self):
cmd='netsh wlan show networks mode=bssid'
local_wifi_infos=self.get_popen_result(cmd)
# print(local_wifi_infos)
wifi_data_list=[]
wifi_ssids=re.findall('SSID \d+ : (.*?)\r\n',local_wifi_infos)#ssid
wifi_macs=re.findall('BSSID 1.*: (.*?)\r\n',local_wifi_infos)#mac地址
wifi_singles=re.findall('信号.*: (.*?)\r\n',local_wifi_infos)#信号强度
wifi_types=re.findall('无线电类型.*: (.*?)\r\n',local_wifi_infos)#无线电类型
wifi_encrypts=re.findall('加密.*: (.*?) \r\n',local_wifi_infos)#加密方式
wifi_auts=re.findall('身份验证.*: (.*?)\r\n',local_wifi_infos)#身份验证方式
wifi_channels=re.findall('频道.*: (\d+) \r\n',local_wifi_infos)#信道
wifi_base_rates=re.findall('基本速率\(Mbps\).*: (.*?)\r',local_wifi_infos)#基本速率
wifi_other_rates=re.findall('其他速率.*: (.*?)\r',local_wifi_infos)#其他速率
for data in zip(wifi_ssids,wifi_macs,wifi_singles,wifi_types,wifi_encrypts,wifi_auts,wifi_channels,wifi_base_rates,wifi_other_rates):
item={
}
item['wifi_ssid']=data[0]
item['wifi_single']=data[2]
wifi_mac=data[1]
wifi_brand=self.do_search(self.format_mac(wifi_mac))
item['wifi_type']=data[3]
item['wifi_encrypt']=data[4]
item['wifi_mac']=wifi_mac
item['wifi_aut']=data[5]
item['wifi_channel']=data[6]
item['wifi_base_rate']=data[7]
item['wifi_other_rate']=data[8]
item['wifi_brand']=wifi_brand
wifi_data_list.append(item)
pprint(wifi_data_list,sort_dicts=True)
print(f'附近有{
len(wifi_data_list)}个可连接wifi')
return wifi_data_listdef format_mac(self,mac):
if '-' in mac:
mac_format=''.join(mac.split('-'))
elif ':' in mac:
mac_format=''.join(mac.split(':'))
elif ':' in mac:
mac_format=''.join(mac.split(':'))
else:
mac_format=mac
if len(mac_format)==12:
return mac_format[:6].upper()
else:
print('mac地址不合法!')def do_search(self,mac):
for line in self.oui_file_content:
if mac in line:
brand_=re.findall('\(base 16\)\t\t(.*?)$',line)
brand=brand_[0]
return brand
else:
brand='未知厂商'
return brandif __name__ == '__main__':
p=Parse_Mac_Addr()
# test_mac = '00-16-EA-AE-3C-40'
# wifi=p.format_mac(test_mac)
# print(p.do_search(wifi))
p.get_loacl_wifi()
五.总结 【python小工具|python3实用小工具--wifi路由器厂商查看器(附源码)】本次使用python撰写了一个wifi路由器厂商查看器,能够帮助我们自动扫描附近的wifi,列出其详细信息包括网卡所属厂商信息,方便又实用,依赖于oui.txt,我把它放在了蓝奏云大家可以自取。思路、代码方面有什么不足欢迎各位大佬指正、批评!
推荐阅读
- 一个小故事,我的思考。
- 家乡的那条小河
- 一个人的碎碎念
- 野营记-第五章|野营记-第五章 讨伐梦魇兽
- 昨夜小楼听风
- 2021-02-17|2021-02-17 小儿按摩膻中穴-舒缓咳嗽
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- 2019.4.18感恩日记
- 那件我们忽略的小事叫感恩
- 你有婚内虐待行为吗()