免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2092 | 回复: 5
打印 上一主题 下一主题

[内核入门] 协议精度识别 [复制链接]

论坛徽章:
13
15-16赛季CBA联赛之八一
日期:2016-07-08 21:00:1415-16赛季CBA联赛之同曦
日期:2017-02-15 14:26:1515-16赛季CBA联赛之佛山
日期:2017-02-20 14:19:2615-16赛季CBA联赛之青岛
日期:2017-05-07 16:49:1115-16赛季CBA联赛之广夏
日期:2017-07-30 09:13:1215-16赛季CBA联赛之广东
日期:2018-07-05 22:34:3615-16赛季CBA联赛之江苏
日期:2018-09-03 12:10:2115-16赛季CBA联赛之上海
日期:2018-09-25 03:49:2215-16赛季CBA联赛之广东
日期:2018-09-25 04:09:12
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2017-04-01 02:06 |只看该作者 |倒序浏览
支持这样的配置:
  1. # pkt1: 1234567DE
  2. # pkt2: abcdef1234567\"ABCDEF
  3. # pkt3: xxsss
  4. # pkt4: hello
  5. # pkt5: 123haha~\d2\04\00\00..
  6. # pkt6: xxxhaha~
  7. # pkt7: olddie
  8. [http] {
  9.     #u1: N(); u2: S(5, [1]"1234567"), S(0, [~]"\\\"\41\42\43"), S(-2, "EF"), C(5, "BCD"), SL(6,P(u1,0),7), CL(-6,P(u1,7),2)
  10.        
  11.     #                 xs      s      shello
  12.     #                xss      s      hello
  13.     #[~]u1[~]: S(0, [~]"s" [0]"s" [~]"hello")
  14.        
  15.     #pkt1-------------pkt5
  16.     #pkt1-------------pkt6------------------pkt7
  17.     #pkt5-------------pkt6------------------pkt7
  18.     #u1: S(0, "123"); [~]u2: S(3, "haha~"); u3: S(0,"olddie")
  19.        
  20.     #              (   (   (   (21   +2)*   (17--1))/9    )= 46)
  21.     #u1: N(); u2: E(DIV(MUL(ADD(L(u2),2),SUB(17,-1)),L(u1)), 46)
  22.        
  23.     [4]u: E(V(8,2),1234)
  24. }
复制代码


配置解释:
  1. /*
  2. * 空特征:
  3. *   N(),用于报文占位
  4. * 串特征:
  5. *   S(a,"b"), !memcmp(a,"b","b"长度)
  6. *   C(a,"b"), !strnstr(a,("b","b"长度),a长度)
  7. *   SL(a,b,l),!memcmp(a,b,l);
  8. *   CL(a,b,l),!strnstr(a,(b,l),a长度)
  9. * 值特征:
  10. *   E(a,b),  a=b
  11. *   NE(a,b), a!=b
  12. *   G(a,b),  a>b
  13. *   GE(a,b), a>=b
  14. *   B(a,b),  a<b
  15. *   BE(a,b), a<=b
  16. * 正则特征:
  17. *   R(a,b),a串符合b串描述的正则表达式
  18. * 编码特征:
  19. *   D(a,b),a串符合b格式编码
  20. */
复制代码
  1. // 字符串
  2. /******* "" *******/
  3. // 转义(在字符串内部使用)
  4. /******* \hex、\r、\n、\t、\\、\" *******/

  5. // 十进制数值
  6. /******* n *******/

  7. // 报文内偏移
  8. /******* +n、-n *******/

  9. // 报文命名(n为名字一部分,不表示位置)
  10. /******* un、dn *******/

  11. // 长度
  12. /******* L() *******/

  13. // 计算
  14. /******* ADD(,)、SUB(,)、MUL(,)、DIV(,) *******/

  15. // 取值
  16. /******* V(,) *******/

  17. // 位置
  18. /******* P(,) *******/

  19. // 跳过/范围
  20. /******* [n]、[~] *******/
  21. /*
  22. * 用于字符串,向后结合: [10]"haha" [~]"xx" [10]"haha"
  23. *
  24. * 用于报文前,表示位置: [7]u, 第7个上行报文
  25. *                      默认[1], u=(前面u/前面d)+1, d=前面u/(前面d+1)
  26. * 用于报文后,表示范围: u[~], 当前上行报文及以后上行报文
  27. *                      默认[1], 仅当前报文内容
  28. */
复制代码


已完成。。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
2 [报告]
发表于 2017-04-01 17:03 |只看该作者
回复 1# _nosay

上下文是什么?

论坛徽章:
13
15-16赛季CBA联赛之八一
日期:2016-07-08 21:00:1415-16赛季CBA联赛之同曦
日期:2017-02-15 14:26:1515-16赛季CBA联赛之佛山
日期:2017-02-20 14:19:2615-16赛季CBA联赛之青岛
日期:2017-05-07 16:49:1115-16赛季CBA联赛之广夏
日期:2017-07-30 09:13:1215-16赛季CBA联赛之广东
日期:2018-07-05 22:34:3615-16赛季CBA联赛之江苏
日期:2018-09-03 12:10:2115-16赛季CBA联赛之上海
日期:2018-09-25 03:49:2215-16赛季CBA联赛之广东
日期:2018-09-25 04:09:12
3 [报告]
发表于 2017-04-01 17:31 |只看该作者
回复 2# Godbach

通过frame-xx()“栈桢”前面的内容,推导后面是什么,递归式的往下识别。
  1. // 字符串
  2. /******* "" *******/
  3. // 转义(在字符串内部使用)
  4. /******* \hex、\r、\n、\t、\\、\" *******/
  5. /*
  6. * frame-"xx":
  7. *   OP_S_ASSIGN
  8. *  "xx"'s address
  9. */

  10. // 十进制数值
  11. /******* n *******/
  12. /*
  13. * frame-n:
  14. *   OP_V_ASSIGN
  15. *   n
  16. */

  17. // 报文内偏移
  18. /******* +n、-n *******/
  19. /*
  20. * frame-offset:
  21. *   OP_OFF_FW / OP_OFF_BW
  22. *   n
  23. */

  24. // 报文命名(n为名字一部分,不表示位置)
  25. /******* un、dn *******/
  26. /*
  27. * frame-u|d
  28. *   OP_P_ASSIGN
  29. *   offset from current rp to dest rp
  30. */

  31. // 长度
  32. /******* L() *******/
  33. /*
  34. * frame-L():
  35. *   OP_FUN_L
  36. *   frame-u|d
  37. */

  38. // 计算
  39. /******* ADD(,)、SUB(,)、MUL(,)、DIV(,) *******/
  40. /*
  41. * frame-calc():
  42. *   OP_FUN_ADD / OP_FUN_SUB / OP_FUN_MUL / OP_FUN_DIV
  43. *   frame-n / frame-L() / frame-V() / frame-calc()
  44. *   frame-n / frame-L() / frame-V() / frame-calc()
  45. */

  46. // 取值
  47. /******* V(,) *******/
  48. /*
  49. * frame-V():
  50. *   OP_FUN_V
  51. *   frame-offset / frame-L() / frame-V() / frame-calc() / frame-P()
  52. *   frame-n      // bits
  53. */

  54. // 位置
  55. /******* P(,) *******/
  56. /*
  57. * frame-P():
  58. *   OP_FUN_P
  59. *   frame-u|d
  60. *   frame-offset / frame-L() / frame-V() / frame-calc()
  61. */

  62. // 跳过/范围
  63. /******* [n]、[~] *******/
  64. /*
  65. * 用于字符串,向后结合: [10]"haha" [~]"xx" [10]"haha"
  66. *
  67. * 用于报文前,表示位置: [7]u, 第7个上行报文
  68. *                      默认[1], u=(前面u/前面d)+1, d=前面u/(前面d+1)
  69. * 用于报文后,表示范围: u[~], 当前上行报文及以后上行报文
  70. *                      默认[1], 仅当前报文内容
  71. */

  72. // 识别对象(可继续扩展)↑
  73. // 识别规则(可继续扩展)↓

  74. /*
  75. * 空特征:
  76. *   N(),用于报文占位
  77. * 串特征:
  78. *   S(a,"b"), !memcmp(a,"b","b"长度)
  79. *   C(a,"b"), !strnstr(a,("b","b"长度),a长度)
  80. *   SL(a,b,l),!memcmp(a,b,l);
  81. *   CL(a,b,l),!strnstr(a,(b,l),a长度)
  82. * 值特征:
  83. *   E(a,b),  a=b
  84. *   NE(a,b), a!=b
  85. *   G(a,b),  a>b
  86. *   GE(a,b), a>=b
  87. *   B(a,b),  a<b
  88. *   BE(a,b), a<=b
  89. * 正则特征:
  90. *   R(a,b),a串符合b串描述的正则表达式
  91. * 编码特征:
  92. *   D(a,b),a串符合b格式编码
  93. */
  94. /*
  95. * frame-N():
  96. *   no frame
  97. *
  98. * frame-S():    // string,  support [n]/[~]
  99. * frame-C():    // contain, support [n]/[~]
  100. * frame-R():    // regex
  101. * frame-D():    // decode
  102. *   OP_FUN_S / OP_FUN_C / OP_FUN_R / OP_FUN_D
  103. *   frame-offset / frame-L() / frame-V() / frame-calc() / frame-P()
  104. *   frame-"xx"
  105. *
  106. * frame-SL():
  107. * frame-CL():
  108. *   OP_FUN_SL / OP_FUN_CL
  109. *   frame-offset / frame-L() / frame-V() / frame-calc() / frame-P()
  110. *   frame-offset / frame-L() / frame-V() / frame-calc() / frame-P()
  111. *   frame-n / frame-L() / frame-V() / frame-calc()
  112. *
  113. * frame-E()
  114. * frame-NE()
  115. * frame-G()
  116. * frame-GE()
  117. * frame-B()
  118. * frame-BE()
  119. *   OP_FUN_E / OP_FUN_NE / OP_FUN_G / OP_FUN_GE / OP_FUN_B / OP_FUN_BE
  120. *   frame-n / frame-L() / frame-V() / frame-calc()
  121. *   frame-n / frame-L() / frame-V() / frame-calc()
  122. */

  123. // 分隔符
  124. /*
  125. * ,: 同一报文中的不同特征
  126. * ;: 不同报文的特征
  127. * \n: 同一协议的不同识别规则
  128. * []{}: 不同协议
  129. */
复制代码


论坛徽章:
13
15-16赛季CBA联赛之八一
日期:2016-07-08 21:00:1415-16赛季CBA联赛之同曦
日期:2017-02-15 14:26:1515-16赛季CBA联赛之佛山
日期:2017-02-20 14:19:2615-16赛季CBA联赛之青岛
日期:2017-05-07 16:49:1115-16赛季CBA联赛之广夏
日期:2017-07-30 09:13:1215-16赛季CBA联赛之广东
日期:2018-07-05 22:34:3615-16赛季CBA联赛之江苏
日期:2018-09-03 12:10:2115-16赛季CBA联赛之上海
日期:2018-09-25 03:49:2215-16赛季CBA联赛之广东
日期:2018-09-25 04:09:12
4 [报告]
发表于 2017-04-01 17:36 |只看该作者
回复 2# Godbach

通过frame-xx()“桢”前面的内容,推导后面是什么内容,递归式的往下识别:
  1. // 字符串
  2. /******* "" *******/
  3. // 转义(在字符串内部使用)
  4. /******* \hex、\r、\n、\t、\\、\" *******/
  5. /*
  6. * frame-"xx":
  7. *   OP_S_ASSIGN
  8. *  "xx"'s address
  9. */

  10. // 十进制数值
  11. /******* n *******/
  12. /*
  13. * frame-n:
  14. *   OP_V_ASSIGN
  15. *   n
  16. */

  17. // 报文内偏移
  18. /******* +n、-n *******/
  19. /*
  20. * frame-offset:
  21. *   OP_OFF_FW / OP_OFF_BW
  22. *   n
  23. */

  24. // 报文命名(n为名字一部分,不表示位置)
  25. /******* un、dn *******/
  26. /*
  27. * frame-u|d
  28. *   OP_P_ASSIGN
  29. *   offset from current rp to dest rp
  30. */

  31. // 长度
  32. /******* L() *******/
  33. /*
  34. * frame-L():
  35. *   OP_FUN_L
  36. *   frame-u|d
  37. */

  38. // 计算
  39. /******* ADD(,)、SUB(,)、MUL(,)、DIV(,) *******/
  40. /*
  41. * frame-calc():
  42. *   OP_FUN_ADD / OP_FUN_SUB / OP_FUN_MUL / OP_FUN_DIV
  43. *   frame-n / frame-L() / frame-V() / frame-calc()
  44. *   frame-n / frame-L() / frame-V() / frame-calc()
  45. */

  46. // 取值
  47. /******* V(,) *******/
  48. /*
  49. * frame-V():
  50. *   OP_FUN_V
  51. *   frame-offset / frame-L() / frame-V() / frame-calc() / frame-P()
  52. *   frame-n      // bits
  53. */

  54. // 位置
  55. /******* P(,) *******/
  56. /*
  57. * frame-P():
  58. *   OP_FUN_P
  59. *   frame-u|d
  60. *   frame-offset / frame-L() / frame-V() / frame-calc()
  61. */

  62. // 跳过/范围
  63. /******* [n]、[~] *******/
  64. /*
  65. * 用于字符串,向后结合: [10]"haha" [~]"xx" [10]"haha"
  66. *
  67. * 用于报文前,表示位置: [7]u, 第7个上行报文
  68. *                      默认[1], u=(前面u/前面d)+1, d=前面u/(前面d+1)
  69. * 用于报文后,表示范围: u[~], 当前上行报文及以后上行报文
  70. *                      默认[1], 仅当前报文内容
  71. */

  72. // 识别对象(可继续扩展)↑
  73. // 识别规则(可继续扩展)↓

  74. /*
  75. * 空特征:
  76. *   N(),用于报文占位
  77. * 串特征:
  78. *   S(a,"b"), !memcmp(a,"b","b"长度)
  79. *   C(a,"b"), !strnstr(a,("b","b"长度),a长度)
  80. *   SL(a,b,l),!memcmp(a,b,l);
  81. *   CL(a,b,l),!strnstr(a,(b,l),a长度)
  82. * 值特征:
  83. *   E(a,b),  a=b
  84. *   NE(a,b), a!=b
  85. *   G(a,b),  a>b
  86. *   GE(a,b), a>=b
  87. *   B(a,b),  a<b
  88. *   BE(a,b), a<=b
  89. * 正则特征:
  90. *   R(a,b),a串符合b串描述的正则表达式
  91. * 编码特征:
  92. *   D(a,b),a串符合b格式编码
  93. */
  94. /*
  95. * frame-N():
  96. *   no frame
  97. *
  98. * frame-S():    // string,  support [n]/[~]
  99. * frame-C():    // contain, support [n]/[~]
  100. * frame-R():    // regex
  101. * frame-D():    // decode
  102. *   OP_FUN_S / OP_FUN_C / OP_FUN_R / OP_FUN_D
  103. *   frame-offset / frame-L() / frame-V() / frame-calc() / frame-P()
  104. *   frame-"xx"
  105. *
  106. * frame-SL():
  107. * frame-CL():
  108. *   OP_FUN_SL / OP_FUN_CL
  109. *   frame-offset / frame-L() / frame-V() / frame-calc() / frame-P()
  110. *   frame-offset / frame-L() / frame-V() / frame-calc() / frame-P()
  111. *   frame-n / frame-L() / frame-V() / frame-calc()
  112. *
  113. * frame-E()
  114. * frame-NE()
  115. * frame-G()
  116. * frame-GE()
  117. * frame-B()
  118. * frame-BE()
  119. *   OP_FUN_E / OP_FUN_NE / OP_FUN_G / OP_FUN_GE / OP_FUN_B / OP_FUN_BE
  120. *   frame-n / frame-L() / frame-V() / frame-calc()
  121. *   frame-n / frame-L() / frame-V() / frame-calc()
  122. */

  123. // 分隔符
  124. /*
  125. * ,      同一报文中的不同特征
  126. * ;     不同报文的特征
  127. * \n    同一协议的不同识别规则
  128. * []{}  不同协议
  129. */
复制代码


论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-08-17 06:20:00程序设计版块每日发帖之星
日期:2016-07-16 06:20:00程序设计版块每日发帖之星
日期:2016-07-18 06:20:00每日论坛发贴之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16赛季CBA联赛之江苏
日期:2017-06-26 11:05:5615-16赛季CBA联赛之上海
日期:2017-07-21 18:12:5015-16赛季CBA联赛之青岛
日期:2017-09-04 17:32:0515-16赛季CBA联赛之吉林
日期:2018-03-26 10:02:16程序设计版块每日发帖之星
日期:2016-07-15 06:20:0015-16赛季CBA联赛之江苏
日期:2016-07-07 18:37:512015亚冠之萨济拖拉机
日期:2015-08-17 12:21:08
5 [报告]
发表于 2017-04-06 17:41 |只看该作者
上下文是什么?

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-08-17 06:20:00程序设计版块每日发帖之星
日期:2016-07-16 06:20:00程序设计版块每日发帖之星
日期:2016-07-18 06:20:00每日论坛发贴之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16赛季CBA联赛之江苏
日期:2017-06-26 11:05:5615-16赛季CBA联赛之上海
日期:2017-07-21 18:12:5015-16赛季CBA联赛之青岛
日期:2017-09-04 17:32:0515-16赛季CBA联赛之吉林
日期:2018-03-26 10:02:16程序设计版块每日发帖之星
日期:2016-07-15 06:20:0015-16赛季CBA联赛之江苏
日期:2016-07-07 18:37:512015亚冠之萨济拖拉机
日期:2015-08-17 12:21:08
6 [报告]
发表于 2017-04-06 17:42 |只看该作者
本帖最后由 nswcfd 于 2017-04-06 17:46 编辑

===========已删除============
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP