首页
相册
统计
留言
更多
网安工具
CTF工具
关于
Search
1
椭圆曲线加密算法原理(ECC)
5,324 阅读
2
SMBGhost(CVE-2020-0796)漏洞利用
4,302 阅读
3
关于gdb调试
4,065 阅读
4
Arduino使用CubeCell开发板进行LORA无线通信
3,852 阅读
5
Diffie-Hellman密钥协商算法
3,542 阅读
深度学习
技术随笔
应急响应
漏洞复现
流量分析
溯源
入侵检测
Linux
eBPF
服务配置
渗透测试
信息收集
横向攻击
密码学
web安全
CTF
登录
Search
标签搜索
单片机
密码学
Windows
BPF
Python
Linux
Mysql
APP开发
软考
Cobalt Strike
flutter
入侵检测
HSM's Blog
累计撰写
53
篇文章
累计收到
11
条评论
首页
栏目
深度学习
技术随笔
应急响应
漏洞复现
流量分析
溯源
入侵检测
Linux
eBPF
服务配置
渗透测试
信息收集
横向攻击
密码学
web安全
CTF
页面
相册
统计
留言
网安工具
CTF工具
关于
搜索到
1
篇与
的结果
2022-02-20
用Python获取计算机网卡信息
1. 使用的模块netifaces模块:https://pypi.org/project/netifaces/winreg模块:https://docs.python.org/3/library/winreg.html#exception-changed2. 查看操作系统Linux系统:import platform platform.system() # 'Linux' #返回结果Windows系统:import platform platform.system() # 'Win32' #返回结果2. netifaces模块使用示例外置模块,安装方式请参考网上,此处忽略(很简单)。用处:用于收集网络接口等信息(IP/地址/网关)。netiface模块定了3个函数:def gateways(*args, **kwargs): #获取网关 代码块 def ifaddresses(*args, **kwargs): #获取IP信息 代码块 def interfaces(*args, **kwargs): #获取接口ID 代码块 先看下地址族:#!/usr/bin/env python3 #-*- coding:UTF-8 -*- #以下在Linux环境下演示 from netifaces import pprint pp = pprint.PrettyPrinter(indent=4) #这里使用pprint输出会更直观 pp.pprint(netifaces.address_families) #返回结果: { 0: 'AF_UNSPEC', 1: 'AF_FILE', 2: 'AF_INET', #ipv4地址 3: 'AF_AX25', 4: 'AF_IPX', 5: 'AF_APPLETALK', 6: 'AF_NETROM', 7: 'AF_BRIDGE', 8: 'AF_ATMPVC', 9: 'AF_X25', 10: 'AF_INET6', #ipv6地址 11: 'AF_ROSE', 12: 'AF_DECnet', 13: 'AF_NETBEUI', 14: 'AF_SECURITY', 15: 'AF_KEY', 16: 'AF_NETLINK', 17: 'AF_PACKET', #ipv4的MAC地址 18: 'AF_ASH', 19: 'AF_ECONET', 20: 'AF_ATMSVC', 22: 'AF_SNA', 23: 'AF_IRDA', 24: 'AF_PPPOX', 25: 'AF_WANPIPE', 31: 'AF_BLUETOOTH'} #这里大家重点关注下:AF_NET、AF_NET6 #其他的大家自己去研究下2.1 Linux环境下如何获取网卡口的信息#!/usr/bin/env python3 #-*- coding:UTF-8 -*- import netifaces import pprint pp = pprint.PrettyPrinter(indent=4) netifaces.interfaces() ['lo', 'ens32'] #返回结果,ubuntu系统网卡ID pp.pprint(netifaces.ifaddresses('ens32')) #返回结果,是一个字典,字典中又嵌套列表,所以切片的时候要注意 { 2: [ { 'addr': '192.168.0.253', 'broadcast': '192.168.0.255', 'netmask': '255.255.255.0'}], 10: [ { 'addr': 'fe80::20c:29ff:fe5d:2f55%ens32', 'netmask': 'ffff:ffff:ffff:ffff::/64'}], 17: [{'addr': '00:0c:29:5d:2f:55', 'broadcast': 'ff:ff:ff:ff:ff:ff'}]} netifaces.ifaddresses('ens32')[netifaces.AF_INET][0]['addr'] '192.168.0.253' #返回结果,获取到IPv4地址 netifaces.ifaddresses('ens32')[netifaces.AF_PACKET][0]['addr'] '00:0c:29:5d:2f:55' #返回结果,获取到IPv4的MAC地址 netifaces.ifaddresses('ens32')[netifaces.AF_INET6][0]['addr'] 'fe80::20c:29ff:fe5d:2f55%ens32' #返回结果,获取到IPv6地址2.2 Windows环境下如何获取网卡口的信息说明:windows取值相比Linux复杂多了,不能直接根据接口获取ip信息,需要先找到一串唯一的键值,然后才能依据它获取到接口IP信息:import netifaces netinterfaces_list = netifaces.interfaces() for i in netinterfaces_list: try: print(netifaces.ifaddresses(i)[netifaces.AF_INET]) except: pass # 结果: [{'addr': '2.0.0.1', 'netmask': '255.255.255.0', 'broadcast': '2.0.0.255'}] [{'addr': '169.254.214.182', 'netmask': '255.255.0.0', 'broadcast': '169.254.255.255'}] [{'addr': '169.254.53.200', 'netmask': '255.255.0.0', 'broadcast': '169.254.255.255'}] [{'addr': '192.168.41.253', 'netmask': '255.255.255.0', 'broadcast': '192.168.41.255'}] [{'addr': '127.0.0.1', 'netmask': '255.0.0.0', 'broadcast': '127.255.255.255'}] [{'addr': '172.23.144.1', 'netmask': '255.255.240.0', 'broadcast': '172.23.159.255'}] [{'addr': '172.29.240.1', 'netmask': '255.255.240.0', 'broadcast': '172.29.255.255'}]
2022年02月20日
3,436 阅读
0 评论
0 点赞