Python3之读取连接过的网络并定位的方法

yipeiwu_com5年前Python基础

如下所示:

#!/usr/bin/python
# coding=utf-8
import json
from urllib.request import urlopen
from winreg import *
def val2addr(val):
 addr = ""
 for ch in val:
  addr += ("%02x " % ord(ch))
 addr = addr.strip(" ").replace(" ", ":")[0:17]
 return addr
def printNets():
 net = r"SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\Unmanaged"
 key = OpenKey(HKEY_LOCAL_MACHINE, net)
 print(r"\nNetworks You have Joined.")
 for i in range(100):
  try:
   guid = EnumKey(key, i)
   netKey = OpenKey(key, str(guid))
   (n, addr, t) = EnumValue(netKey, 5)
   (n, name, t) = EnumValue(netKey, 4)
   macAddr = val2addr(addr)
   netName = name
   jsondata = urlopen('http://api.cellocation.com:81/wifi/?mac=' + macAddr + '&output=json').read()
   data = json.loads(jsondata)['address']
   if data == '':
    address = 'unknow'
   else:
    address = data
   print('[+] ' + netName + ' ' + macAddr + ' ' + address)
   CloseKey(netKey)
  except:
   break
def main():
 printNets()
 input('please press enter')
if __name__ == '__main__':
 main()

内置模块:

python2中的_winreg在python3中改名为winreg!!!

以上这篇Python3之读取连接过的网络并定位的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

Python中尝试多线程编程的一个简明例子

Python中尝试多线程编程的一个简明例子

综述     多线程是程序设计中的一个重要方面,尤其是在服务器Deamon程序方面。无论何种系统,线程调度的开销都比传统的进程要快得多。   Py...

Python实现读取字符串按列分配后按行输出示例

本文实例讲述了Python实现读取字符串按列分配后按行输出。分享给大家供大家参考,具体如下: 问题: 输入一个字符串和一个数字,数字代表分为几行,需要按照给定的列存储方法存储下来之后按行...

Python Web框架Flask中使用新浪SAE云存储实例

对于部署在新浪应用引擎SAE上的项目,使用新浪SAE云存储是不错的存储方案。 新浪SAE云存储仅能在SAE环境中正常使用,对它进行简单封装后,可以直接在Flask中使用,项目代码见Git...

python编写朴素贝叶斯用于文本分类

python编写朴素贝叶斯用于文本分类

朴素贝叶斯估计 朴素贝叶斯是基于贝叶斯定理与特征条件独立分布假设的分类方法。首先根据特征条件独立的假设学习输入/输出的联合概率分布,然后基于此模型,对给定的输入x,利用贝叶斯定理求出后验...

Apache,wsgi,django 程序部署配置方法详解

Apache,wsgi,django 程序部署配置方法详解

本文实例讲述了Apache,wsgi,django 程序部署配置方法。分享给大家供大家参考,具体如下: 前面写过一篇文章,ngixn,uwsgi,django,python 环境配置,有...