如何查看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 工具查看数据块文件 )(代码片段