[转帖]IPv6地址解析库,窥探IPv6地址中包含的信息
https://zhuanlan.zhihu.com/p/479028720
大家好,我是明说网络的小明同学。
今天和大家介绍一个IPv6 地址解析库IPv6 address Parser :https://github.com/dianwoshishi/ipv6_address_parser.git
众所周知,互联网正在向IPv6大步迈迈进,很多基础服务已经开始向IPv6迁移。
但是,相比IPv4来说,我们对于IPv6并不熟悉。大部分人知道的仅仅是IPv6有128bit长,有用不完的空间,仅此而已。
但是IPv6从设计上来说,绝对比IPv4要漂亮,毕竟是吸收了几十年v4的经验,才推出的版本,并且现在还在不断完善。
IPv6的话题非常的大,今天主要想分享的是关于IPv6地址的那些事。
提个问题吧,"fe80::2aa:ff:fe3f:2a1c",从这个地址中能看到的信息有哪些?
现在公布答案
这是一个本地链路地址(不能被公网访问到),并且主机标识部分使用的IEEE的EUI64地址(也就是我们常说的嵌入了mac地址的地址),这个IPv6地址暴露了链路层的mac信息,根据IEEE的OUI信息,我们可以查到这个网卡是INTEL生产的。是不是很神奇!
当然了,我自己是记不住这么多信息的,query的事必须交给计算机去做,又快又准!
ipv6 = "fe80::2aa:ff:fe3f:2a1c"
ipstat = IPstat(ipv6)
print(ipstat.get_ip_type())
mac_address = ipstat.get_mac_address()
print(mac_address.get_mac()) print(mac_address.get_org())
这个库给出的信息如下所示:
unicast=link-local=link=ieee-derived=00-aa-00
00AA003F2A1C
INTEL CORPORATION
解析EUI64地址 Python 代码
#!/bin/python3
import IPy
import sys
from OuiLookup import OuiLookup
import argparse
parser = argparse.ArgumentParser(description='ipv6 fffe parser')
#type是要传入的参数的数据类型 help是该参数的提示信息
parser.add_argument('--file', type=str, help='file to parser')
parser.add_argument('--ip', type=str, help='ip to parser')
args = parser.parse_args()
# filename=sys.argv[1]
# ip = "2a01:c22:d200:fee7:2e91:abff:fed8:c40a"
# OuiLookup().update()
def check_fffe(ip):
f1 = (ip >> (6 * 4 + 3)) & 0xf == 0xf
f2 = (ip >> (6 * 4 + 2)) & 0xf == 0xf
f3 = (ip >> (6 * 4 + 1)) & 0xf == 0xf
e4 = (ip >> (6 * 4 + 0)) & 0xf == 0xe
return f1 and f2 and f3 and e4
def convert_hex2mac(hexstr):
m1 = (hexstr >> (0 * 8)) & 0xff
m2 = (hexstr >> (1 * 8)) & 0xff
m3 = (hexstr >> (2 * 8)) & 0xff
m4 = (hexstr >> (3 * 8)) & 0xff
m5 = (hexstr >> (4 * 8)) & 0xff
m6 = (hexstr >> (5 * 8)) & 0xff
mac = [m6,m5,m4,m3,m2,m1]
return ":".join([hex(x)[2:].zfill(2) for x in mac])
def convert(ip):
mask64 = (1 << 64) - 1
mask24 = (1 << 24) -1
try:
ip_int = IPy.IP(ip).int()
except Exception as e:
# print(e)
return
else:
pass
finally:
pass
if check_fffe(ip_int):
ip_int = ip_int ^ (1 << 57)
ip_int = ip_int & mask64
# print(hex(ip_int))
oui = (ip_int & mask24)
last24 = (((ip_int >> (24 + 16))&mask24) << 24)
mac = oui + last24
# print(hex(mac))
# print(".", end="")
return convert_hex2mac(mac)
else:
return None
from collections import defaultdict
if __name__ == "__main__":
oui_set = defaultdict(int)
mac_set = set()
if args.file:
with open(args.file) as f:
for line in f:
ip = line.strip("\n").split(",")[0]
mac = convert(ip)
if mac:
mac_set.add(mac)
if args.ip:
ip = args.ip.strip("\n").split(",")[0]
mac = convert(ip)
if mac:
mac_set.add(mac)
mac = " ".join([m for m in mac_set])
# print(mac)
mac_result = OuiLookup().query(mac)
# print(ip, mac, mac_result)
# print(mac_result)
# import pdb; pdb.set_trace()
for result in mac_result:
vendor = list(result.values())[0]
# oui_set.add(vendor)
oui_set[vendor] += 1
# if vendor:
# print(vendor, result)
if mac_set:
print(oui_set)
print(mac_set)
[转帖]IPv6地址解析库,窥探IPv6地址中包含的信息的更多相关文章
- ipv6地址在URL中的表达方式,如何在URL地址中包含ipv6地址
摘要 本文档定义了在WWW浏览器的URL中执行的文本IPv6地址的格式.在包括Microsoft的IE,Mozilla和Lynx等几个已经被广泛安装使用的浏览器的IPv6版本中,这种格式已经被使用.并 ...
- SVN如何将版本库url访问地址中的https改为http
1.选择控制台树中的根节点,右键选择“属性”. 2.切换至面板“网络”. 3.取消勾选项“使用安全连接协议(https://)”.
- 解决URL中包含“%2F”导致Apache地址重写mod_rewrite失效的问题
在使用Apache地址重写mod_rewrite期间,发现,当URL和PATH_INFO中出现%2f(/)或者%5c(\), 会被认为这是个不合法的请求, Apache将会直接返回"404 ...
- IPV6地址中的%号什么意思
在我配置ipv6 网络中,会发现ipv6地址后有%号,这表示什么呢? IPv6地址中的百分号是网卡interface标识.这个表示该地址仅限于标号为21的网络接口(一般指网卡或者虚拟网卡).而在其他网 ...
- nginx实现Ipv6地址解析
nginx实现Ipv6地址解析 1.nginx实现Ipv6地址解析 [root@ip-10-109-1-47 conf]# cat nginx.conf worker_processes 2; eve ...
- iOS 上线因iPv6被拒,查询服务器是否支持iPv6,mac设置iPv6网络,手机测试iPv6
一. iOS----如何检查域名是否支持ipv6 iOS----------如何检查域名是否支持ipv6 1.检查你所用到的库,像af 3.0以上什么的(不用改),其他的库自己去搜下是否支持ipv6吧 ...
- [CB]IPv6 在中国 - 大规模部署进行中 进展明显
IPv6 在中国 - 大规模部署进行中 进展明显 2019年02月04日 08:21 3078 次阅读 稿源:solidot 0 条评论 中国有着世界上最大的网民人口,但它的 IPv6 普及度却处于世 ...
- IPv6地址格式示例及IPv6与IPv4的区别分析
认识IPv6地址 IPv4地址是类似 A.B.C.D 的格式,它是32位,用\".\"分成四段,用10进制表示: 而IPv6地址类似X:X:X:X:X:X:X:X的格式,它是128 ...
- 光猫和路由器都支持ipv6,却无法使用ipv6?
这些年很多地方的光猫都能获得ipv6地址了,而且新出的路由基本都支持ipv6,但是还是有很多人在http://test-ipv6.com看不到自己的ipv6地址,也上不了ipv6网站. 我也遇到这个问 ...
- Redrain个人维护并使用的DuiLib和UiLib库源代码下载地址
转载请说明原出处:http://blog.csdn.net/zhuhongshu/article/details/40740353,谢谢~~ 首先说明一下Duilib和Uilib的差别:UiLIb是D ...
随机推荐
- 代码也能“杀”虫:此虫,真虫非Bug也
摘要:看这群大学生如何保护粮食,让害虫.霉变无处遁形. 国以民为本,民以食为天,对有着14亿人口的中国来说,粮食安全,一直都是关系国计民生的头等大事. 2010年以来,我国人均粮食占有量持续高于世界平 ...
- 智能对联模型太难完成?华为云ModelArts助你实现!手把手教学
摘要:农历新年将至,听说华为云 AI 又将开启智能对对联迎接牛气冲天,让我们拭目以待!作为资深 Copy 攻城狮,想要自己实现一个对对联的模型,是不能可能完成的任务,因此我搜罗了不少前人的实践案例,今 ...
- 华为云企业级Redis:助力VMALL打造先进特征平台
摘要:当电商平台对AI算法模型的需求越来越多,特征数据平台的统一建设是不少开发团队头疼的事情.因为只有通过统一的特征数据存储,才能改变原有的"数据孤岛",解决生产重复造轮子的窘境. ...
- 苹果商店上架流程_App上架苹果流程及注意事项
苹果商店上架流程_App上架苹果流程及注意事项 APP上架是:APP应用从提交审核到上架整个过程.目的是让应用展示在APP Store上获取流量及用户 一.IOS上架整个流程 1.申请开发者账号 2. ...
- 火山引擎ByteHouse:如何用OLAP引擎提升数字营销效果?
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 随着市场竞争的加剧,企业对数字营销投入的效果监测和优化需求日益增强,营销实时监控也成为企业提升运营效率的重要手 ...
- 音乐 APP 用户争夺战,火山引擎 VeDI 助力用户体验升级!
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群 国内数字音乐市场正在保持稳定增长. 根据华经产业研究院数据报告显示,2020 年数字音乐市场规模为 357.3 亿元,到 ...
- Mac 复制文件名目录路径
Mac快速复制文件路径 在Mac电脑上,我们经常需要复制文件的路径,其实,Mac系统提供了快速复制文件路径的方法.下面我们来详细介绍. 方法一:使用菜单栏 首先,打开Finder,然后选择你要复制路径 ...
- Ubuntu 安装 MySQL 5.7
一.安装MySQL 1. 删除Mysql 数据库 sudo apt autoremove --purge mysql-server-* sudo apt remove mysql-server sud ...
- 创建DOM节点时出现错误信息:box.appendChild is not a function
1.代码正常书写如下 <div class="box"></div> <!-- JavaScript代码 --> <script> ...
- P1525 关押罪犯 (并查集 / 二分图)| 二分图伪码
原题链接:https://www.luogu.com.cn/problem/P1525 题目概括: 给你m对关系,每对关系分别涉及到x,y两人,矛盾值为w 请你判断分配x和y到两个集合中,能否避免冲突 ...