怎么判断私网地址_正式表达式判断私有 IP 地址

正式表达式判断私有 IP 地址

^1(((0|27)(.(([1-9]?|1[0-9])[0-9]|2([0-4][0-9]|5[0-5])))|(72.(1[6-9]|2[0-9]|3[01])|92.168))(.(([1-9]?|1[0-9])[0-9]|2([0-4][0-9]|5[0-5]))){2})$

正则表达式判断合法IP及私有IP

正则表达式在线测试

splunk 正则提取私有地址

源地址为内部地址:()

| regex src="^1(((0|27)(.(([1-9]?|1[0-9])[0-9]|2([0-4][0-9]|5[0-5])))|(72.(1[6-9]|2[0-9]|3[01])|92.168))(.(([1-9]?|1[0-9])[0-9]|2([0-4][0-9]|5[0-5]))){2})$"

AND dst!="^1(((0|27)(.(([1-9]?|1[0-9])[0-9]|2([0-4][0-9]|5[0-5])))|(72.(1[6-9]|2[0-9]|3[01])|92.168))(.(([1-9]?|1[0-9])[0-9]|2([0-4][0-9]|5[0-5]))){2})$"

攻击方向:

内到外攻击过滤:攻击者源地址为私有地址,目标地址为公网地址。

src = private address, dst = public address

内到内攻击过滤:攻击者源地址为私有地址,目标地址为私有地址

src = private address, dst =private address

外到内攻击过滤:攻击者源地址公网地址,目标地址为私有地址。

src =public address, dst = private address

正式表达式判断合法 IP 地址

对于一个 IP 地址 a.b.c.d ,a/b/c/d 代表一个小于或等于 255 的 10 进制数,并且 a 不能为 0。

对于 a,它的范围是 1 – 255,分 3 种情况来编写正式表达式:

一位数的情况,范围是 1 – 9,正则表达式为 [1-9]

两位数的情况,范围是 10 – 99,正则表达式为 [1-9][0-9]

三位数的情况,需细分为三个范围:

第一个范围是 100 – 199,正则表达式为 1[0-9][0-9]

第二个范围是 200 – 249,正则表达式为 2[0-4][0-9]

第三个范围是 250 – 255,正式表达式为 25[0-5]

所以匹配 a 的完整的正则表达式应该为:

[1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]

1

[1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]

对于 b/c/d,它的范围是 0-255,所以匹配的正则表达应该为:

[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]

1

[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]

上面已经把一个 IP 地址各段数字的正则表达推导出来了,现在对其进行合并,让正则表达式更加简短。对于 a 段,合并后的正则表达式如下:

[1-9][0-9]?|1[0-9]{2}|2([0-4][0-9]|5[0-5])

1

[1-9][0-9]?|1[0-9]{2}|2([0-4][0-9]|5[0-5])

对于 b/c/d 段,合并后的正则表达式如下:

([1-9]?|1[0-9])[0-9]|2([0-4][0-9]|5[0-5])

1

([1-9]?|1[0-9])[0-9]|2([0-4][0-9]|5[0-5])

再看完整的 a.b.c.d ,可以拆分为a+.(b)+.(c)+.(d),后面三段完全相同,所以合并之后就是 a+(.(b)){3},即:

^([1-9][0-9]?|1[0-9]{2}|2([0-4][0-9]|5[0-5]))(.(([1-9]?|1[0-9])[0-9]|2([0-4][0-9]|5[0-5]))){3}$

1

^([1-9][0-9]?|1[0-9]{2}|2([0-4][0-9]|5[0-5]))(.(([1-9]?|1[0-9])[0-9]|2([0-4][0-9]|5[0-5]))){3}$

需要注意的是,以上正则表达式不能匹配 0.0.0.0 这个 IP 地址。

私有 IP 地址有三类,分别是:

A 类私有地址,范围:10.0.0.0 - 10.255.255.255

B 类私有地址,范围:172.16.0.0 - 172.31.255.255

C 类私有地址,范围:192.168.0.0 - 192.168.255.255

A类:10(.(([1-9]?|1[0-9])[0-9]|2([0-4][0-9]|5[0-5]))){3}

B类:127.(1[6-9]|2[0-9]|3[01])(.(([1-9]?|1[0-9])[0-9]|2([0-4][0-9]|5[0-5]))){2}

C类:192.168(.(([1-9]?|1[0-9])[0-9]|2([0-4][0-9]|5[0-5]))){2}

回环:127(.(([1-9]?|1[0-9])[0-9]|2([0-4][0-9]|5[0-5]))){3}

172.16.44.0/22

Start:172.16.44.1

End: 172.16.47.254

172.16.4[4-7].([0-9]?|([1-9][0-9])?|(1[0-9][0-9])?|(2[0-4][0-9]|25[0-5])?){3}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值