如何查看IP网络块?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何查看IP网络块?相关的知识,希望对你有一定的参考价值。

在这里,我正在检查IP地址是否落在给定范围内,即:在最低IP数和最高IP数之间。我尝试了一些在数组中循环的脚本,但是它们给出了错误的响应。所以我使用下面的代码将其分解了2天,直到它落入以下网络范围:

IP address = 40.77.167.163
Low = 40.74.0.0
High = 40.125.127.255

function validateIP(ip, low, high)

    validateIP = False
    Dim ipArray, lowArray, highArray, ipTotal

    ipArray = split(ip, ".")
    lowArray = split(low, ".")
    highArray = split(high, ".")

    if CInt(ipArray(3)) >= CInt(lowArray(3)) And CInt(ipArray(3)) <= CInt(highArray(3))then
        validate3 = "1"
    end if
    if CInt(ipArray(2)) >= CInt(lowArray(2)) And CInt(ipArray(2)) <= CInt(highArray(2))then
        validate2 = "1"
    end if
    if CInt(ipArray(1)) >= CInt(lowArray(1)) And CInt(ipArray(1)) <= CInt(highArray(1))then
        validate1 = "1"
    end if
    if CInt(ipArray(0)) >= CInt(lowArray(0)) And CInt(ipArray(0)) <= CInt(highArray(0))then
        validate0 = "1"
    end if

    ipTotal = validate0 & validate1 & validate2 & validate3
    if ipTotal = "1111" then
       validateIP = True
    end if

end function

由于某种原因,超出我的意义,它不适用于这些价值观。但它适用于较小的块。

答案

如果您正在验证IPV4地址,那么将IP地址转换为数字并检查给定的IP是否在低范围和高范围之间是非常简单的(将IPV6地址转换为数字有点复杂,尤其是在VBScript中)

Function ipv4ToNumber(ByVal ipv4)

    Dim i, pos, PrevPos, num

    For i = 1 To 4

        pos = InStr(PrevPos + 1, ipv4, ".", 1)
        If i = 4 Then pos = Len(ipv4) + 1
        num = Int(Mid(ipv4, PrevPos + 1, pos - PrevPos - 1))
        PrevPos = pos
        ipv4ToNumber = ((num Mod 256) * (256 ^ (4 - i))) + ipv4ToNumber

    next

End function

Function validateIP(ByVal ip, ByVal Low, ByVal High)

    ip = ipv4ToNumber(ip)
    Low = ipv4ToNumber(Low)
    High = ipv4ToNumber(High)

    If ip >= Low AND ip <= High Then
        validateIP = True
    Else
        validateIP = False
    End If

End Function

validateIP(“40.77.167.163”,“40.74.0.0”,“40.125.127.255”)

输出:

真正

编辑:如果任何经典ASP开发人员想要将IPV6地址转换为数字,使用VBScript是不可能的(据我所知),但它可以在mysql中完成:

Function ipv6ToNumber(ByVal ipv6)

    Dim SQL : SQL = "SELECT CAST(" &_
        "CONV(" &_
            "SUBSTR(" &_
                "HEX(" &_
                    "INET6_ATON('" & ipv6 & "')" &_
                ")" &_
            ",1,16)" &_
        ",16,10" &_
    ")AS DECIMAL(65))" &_
    "*18446744073709551616" &_
    "+CAST(" &_
        "CONV(" &_
            "SUBSTR(" &_
                "HEX(" &_
                    "INET6_ATON('" & ipv6 & "')" &_
                ")" &_
            ",17,16)" &_
        ",16,10" &_
    ") AS DECIMAL(65))"

    'ipv6ToNumber = Execute using MySQL and return the number

End Function

或者使用服务器端的javascript

<script language="javascript" type="text/javascript" runat="server">

    function ipv6ToNumber(ip) {

        ip.replace("::",":0:0:0:")

        var parts = [];
        ip.split(":").forEach(function(it) {
            var bin = parseInt(it, 16).toString(2);
            while (bin.length < 16) {
                bin = "0" + bin;
            }
            parts.push(bin);
        })
        var bin = parts.join("");

        var dec = bigInt(bin, 2).toString();

        return dec;

    }

</script>

以上是关于如何查看IP网络块?的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段

Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段

如何使用手机查看自己所连接wifi的ip

如何查看网络共享打印机的IP地址(怎么共享打印机 怎么查看IP地址)

如何在 Linux 终端中知道你的公有 IP

centos7如何查看ip信息