[转帖]IPv6地址解析库,窥探IPv6地址中包含的信息

ipv6,地址,解析,窥探,包含,信息 · 浏览次数 : 0

小编点评

该代码解析了IP地址“fe80::2aa:ff:fe3f:2a1c”,可以分成以下信息: * **unicast**: 该地址是本地链路地址,无法被公网访问。 * **mac_address**: 该地址是主机标识部分的IEEE的EUI64地址,可以用于查询网卡生产厂商信息。 * **vendor**: 该字段包含网卡生产厂商名称,这里是INTEL。

正文

https://zhuanlan.zhihu.com/p/479028720

 

大家好,我是明说网络的小明同学。

今天和大家介绍一个IPv6 地址解析库IPv6 address Parser :

众所周知,互联网正在向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地址解析库,窥探IPv6地址中包含的信息

https://zhuanlan.zhihu.com/p/479028720 大家好,我是明说网络的小明同学。 今天和大家介绍一个IPv6 地址解析库IPv6 address Parser :https://github.com/dianwoshishi/ipv6_address_parser.gi

[转帖]DNS解析常见问题:如何添加AAAA记录?

很多人在添加解析记录时都会看到有AAAA记录,那什么是AAAA记录呢?它和A记录的区别是什么,我们又该如何添加AAAA记录呢?接下里中科三方将针对这些问题做下简单介绍。 什么是AAAA记录? AAAA记录(AAAA record)是用来将域名解析到IPv6地址的DNS记录。与之相对的A记录只能将域名

[转帖]IPv6报文头深度解析

https://blog.51cto.com/key3feng/5725797 IPv6报文由IPv6基本报文头、IPv6扩展报文头以及上层协议数据单元3部分组成。上层协议数据单元一般由上层协议报文头和它的有效载荷构成,上层协议数据单元可以是一个ICMPv6报文、一个TCP报文或一个UDP报文。1、

[转帖](译文)Path MTU discovery in practice | 链路MTU探测实践

https://www.jianshu.com/p/765476290f29 Last week, a very small number of our users who are using IP tunnels (primarily tunneling IPv6 over IPv4) were

[转帖][译]tcpdump 示例教程

https://colobu.com/2019/07/16/a-tcpdump-tutorial-with-examples/ 目录 [−] 基于IP查找流量 根据来源和目标进行筛选 根据网段进行查找 使用十六进制输出 显示特定端口的流量 显示特定协议的流量 只显示 ipv6 的流量 查看一个端口段

[转帖]Linux之pure-ftpd安装和使用

一、pure-ftpd简介 PureFTPd是一款专注于程序健壮和软件安全的免费FTP服务器软件(基于BSD License),以安全和配置简单为设计目标,支持虚拟主机,IPV6,PAM等功能。。其可以在多种类Unix操作系统中编译运行,包括Linux、OpenBSD、NetBSD、FreeBSD、

[转帖]

Linux ubuntu20.04 网络配置(图文教程) 因为我是刚装好的最小系统,所以很多东西都没有,在开始配置之前需要做下准备 环境准备 系统:ubuntu20.04网卡:双网卡 网卡一:供连接互联网使用网卡二:供连接内网使用(看情况,如果一张网卡足够,没必要做第二张网卡) 工具: net-to

[转帖]

https://cloud.tencent.com/developer/article/2168105?areaSource=104001.13&traceId=zcVNsKTUApF9rNJSkcCbB 前言 Redis作为高性能的内存数据库,在大数据量的情况下也会遇到性能瓶颈,日常开发中只有时刻

[转帖]ISV 、OSV、 SIG 概念

ISV 、OSV、 SIG 概念 2022-10-14 12:29530原创大杂烩 本文链接:https://www.cndba.cn/dave/article/108699 1. ISV: Independent Software Vendors “独立软件开发商”,特指专门从事软件的开发、生产、

[转帖]Redis 7 参数 修改 说明

2022-06-16 14:491800原创Redis 本文链接:https://www.cndba.cn/dave/article/108066 在之前的博客我们介绍了Redis 7 的安装和配置,如下: Linux 7.8 平台 Redis 7 安装并配置开机自启动 操作手册https://ww