正式表达式判断私有 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.da/b/c/d 代表一个小于或等于 255 的 10 进制数,并且 a 不能为 0。
  对于 a,它的范围是 1 – 255,分 3 种情况来编写正式表达式:

  1. 一位数的情况,范围是 1 – 9,正则表达式为 [1-9]
  2. 两位数的情况,范围是 10 – 99,正则表达式为 [1-9][0-9]
  3. 三位数的情况,需细分为三个范围:
    • 第一个范围是 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}

 
 
 
 

正式表达式判断私有 IP 地址的更多相关文章

  1. 解析私有IP地址和公网IP地址

    局域网私有IP地址上外网的原理 IP地址分为两部分,网络号和主机号,这种分法应用在私有和公有IP地址上.一个局域网中,为了该局域网的安全,我们应用了私有IP地址,为了和Internet中的其他主机进行 ...

  2. 私有IP地址范围

    私有IP地址范围 有一部分的地址专门是用于内网的地址,包括: A类中 10.0.0.0/8 B类中 172.16.0.0/12 ~ 172.31.0.0/12 C类中 192.168.0.0/16 这 ...

  3. 使用二分查找判断某个数在某个区间中--如何判断某个IP地址所属的地区

    一,问题描述 给定100万个区间对,假设这些区间对是互不重叠的,如何判断某个数属于哪个区间? 首先需要对区间的特性进行分析:区间是不是有序的?有序是指:后一个区间的起始位置要大于前一个区间的终点位置. ...

  4. 私有IP地址共有三个范围段

    在现在的网络中,IP地址分为公网IP和私有IP地址.公网IP是在Internet使用的IP地址,而私有IP地址是在局域网中使用的IP地址. 由于我们目前使用的IP V4协议的限制,现在IP地址的数量是 ...

  5. 转:php中判断某个IP地址是否存在范围内

    原文:php中判断某个IP地址是否存在范围内 //案例:判断192.168.1.127是否在 (192.168.1.1--192.168.1.255)的范围里面 $ip_start = get_ipl ...

  6. 【网络基础】【TCP/IP】私有IP地址段

    私有IP地址段 Class A:10.0.0.0    - 10.255.255.255 Class B:172.16.0.0  - 172.31.255.255 Class C:192.168.0. ...

  7. 判断一个IP地址是否是本局域网内地址

    //        /// <summary>        /// 判断一个IP地址是否是本局域网内地址,是返回true 否则返回false,        /// </summa ...

  8. IPv4私有IP地址有哪些!

    私有IP地址是一段保留的IP地址.只是使用在局域网中,在Internet上是不使用的. 私有IP地址的范围有: 私网地址分有三类, A类中,第一段为10的都为私网地址,B类中,以172.16--172 ...

  9. 私有ip地址知多少?

    1.私有ip的由来 在现在的网络中,ip地址分为公网ip地址和私有ip地址.公网ip是在Internet中使用的ip地址,而私有ip地址是在局域网中使用,在Internet上不使用. 由于我们目前使用 ...

随机推荐

  1. cocos creator 中的粒子效果

    途中的粒子效果,通过plist文件和png两个文件,创建一个粒子节点,将plist文件拖入到粒子节点的file属性中,然后给custom属性打钩,把png文件拖入到texture属性中即可.

  2. vscode 最新中文设置

    切换中文 首先看商店里有没有chinese language那个中文插件. 在ctrl + shift +p 搜索configure language,然后配置locale如下即可配置中文.

  3. 20164322韩玉婷 -----Exp1 PC平台逆向破解

    Exp1 PC平台逆向破解 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串.该程序同时包含另一 ...

  4. 让你真正了解Java(纯干货)

    “你学习一门技术的最佳时机是三年前,其次是现在.”这句话对于哪一种行业都很适用,如果你已经学习过Java,那么恭喜你你很有先见之明,如果你并不了解Java,这篇文章带你快速掌握Java的几个核心知识点 ...

  5. requests 爬虫

    爬虫 常用爬虫爬取网页,但如果一直爬取会被ban掉,因此需要对爬虫进行一些改进反反爬 使用requests和beautifulsoup4构建爬虫,1.随机user-agent:2.ip代理:4.coo ...

  6. win10 安装 face_recognition

    环境:Python 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 10:22:32) [MSC v.1900 64 bit (AMD64)] on win ...

  7. CentOS6/7快捷使用gcc5

    Centos6/7自带的gcc为4.x版本,可通过devtoolset工具集安装gcc5.x版本 1. 添加yum源 1)CentOS6 [hhorak-devtoolset--rebuild-boo ...

  8. java 运算符的优先级比较

    口诀:淡云一笔安洛三福 单目>算数运算符>移位>比较>按位>逻辑>三目>赋值 单目运算符:+,-,++,-- 算数运算符:+,-,*,/,% 移位运算符:&l ...

  9. failed: dlopen failed: cannot locate symbol

    修改proj.android/jni/Application.mk 添加:APP_PLATFORM := android-19

  10. [蓝桥杯]PREV-25.历届试题_城市建设

    问题描述 栋栋居住在一个繁华的C市中,然而,这个城市的道路大都年久失修.市长准备重新修一些路以方便市民,于是找到了栋栋,希望栋栋能帮助他. C市中有n个比较重要的地点,市长希望这些地点重点被考虑.现在 ...