python3实用小工具--wifi路由器厂商查看器(附源码)

本文阅读 1 分钟
首页 安全分享,WEB安全 正文

python标准库:re、subprocess。

1.结果

img 使用了pprint打印输出的结果。

2.依赖

img 本次设备厂商查找主要依赖于oui.txt.

img

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+ : (.*?)\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_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\)\t\t(.*?)$',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,我把它放在了 蓝奏云大家可以自取。思路、代码方面有什么不足欢迎各位大佬指正、批评!

本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://blog.csdn.net/a1397852386/article/details/120161444
-- 展开阅读全文 --
BUUCTF Web [极客大挑战 2019]Knife
« 上一篇 06-24
安全面试之XSS(跨站脚本攻击)
下一篇 » 07-24

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复