我是靠谱客的博主 闪闪天空,最近开发中收集的这篇文章主要介绍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 pprint

class 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_result

    def 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+ : (.*?)rn',local_wifi_infos)  #ssid
        wifi_macs=re.findall('BSSID 1.*: (.*?)rn',local_wifi_infos)   #mac地址
        wifi_singles=re.findall('信号.*: (.*?)rn',local_wifi_infos)     #信号强度
        wifi_types=re.findall('无线电类型.*: (.*?)rn',local_wifi_infos)    #无线电类型
        wifi_encrypts=re.findall('加密.*: (.*?) rn',local_wifi_infos)   #加密方式
        wifi_auts=re.findall('身份验证.*: (.*?)rn',local_wifi_infos)      #身份验证方式
        wifi_channels=re.findall('频道.*: (d+) rn',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_list

    def 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)tt(.*?)$',line)
                brand=brand_[0]
                return brand
            else:
                brand='未知厂商'
        return brand


if __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撰写了一个wifi路由器厂商查看器,能够帮助我们自动扫描附近的wifi,列出其详细信息包括网卡所属厂商信息,方便又实用,依赖于oui.txt,我把它放在了蓝奏云大家可以自取。思路、代码方面有什么不足欢迎各位大佬指正、批评!

最后

以上就是闪闪天空为你收集整理的python3实用小工具--wifi路由器厂商查看器(附源码)一.准备工作二.效果展示三.基本思路四.源代码五.总结的全部内容,希望文章能够帮你解决python3实用小工具--wifi路由器厂商查看器(附源码)一.准备工作二.效果展示三.基本思路四.源代码五.总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部