基于领域相关语言的拒绝服务攻击描述语言设计(3)

来源:网络(转载) 作者:祝宁 张永福 陈性元 发表于:2012-01-26 13:37  点击:
【关健词】抗攻击测试;领域相关语言;拒绝服务攻击描述语言;原子攻击;攻
arg_decl: | arg_decl_1; arg_decl_1: identifier|identifier , arg_decl_1 /*语句结构*/ block: { instr_list } | { }; instr_list: instr|instr instr_list /*语句*/ instr: simple_instr ; |block|i

  arg_decl: | arg_decl_1;
  arg_decl_1: identifier|identifier ′,′ arg_decl_1
  /*语句结构*/
  block: ′{′ instr_list ′}′ | ′{′ ′}′;
  instr_list: instr|instr instr_list
  /*语句*/
  instr: simple_instr ′;′ |block|if_block|loop;
  /*简单语句*/
  simple_instr : aff|post_pre_incr
  |func_call|ret|inc|loc|glob
  |break|continue|/*空语句*/
  /*返回*/
  ret:return expr|return;
  /*If语句*/
  if_block: if ′(′ expr ′)′ instr 
  | if ′(′ expr ′)′ instr else instr;
  /*循环语句*/
  loop: for_loop|while_loop;
  for_loop: for ′(′ aff_func ′;′ expr ′;′ aff_func ′)′ instr;
  while_loop: while ′(′ expr ′)′ instr;
  /*赋值操作*/
  aff_func: aff|post_pre_incr|func_call|/*空*/
  /*赋值语句*/
  aff:value=expr
  |value+=expr
  |value-=expr
  |value*=expr
  |value/=expr
  |value%=expr;
  /*函数调用*/
  func_call: identifier ′(′ arg_list ′)′
  arg_list:arg_list_1
  arg_list_1: arg|arg ′,′ arg_list_1
  arg: expr|identifier ′:′ expr
  string: STRING|STRING_RAW;
  /*文件包含*/
  inc:include ′(′ string ′)′
  value: identifier|array_elem;
  identifier: IDENT;
  array_elem: identifier ′[′ array_index ′]′;
  array_index: expr;
  post_pre_incr:++value
  |--value|value++|value--;
  /*表达式*/
  expr: ′(′ expr ′)′
  |expr AND expr
  |′!′ expr|expr OR expr
  |expr ′+′ expr|expr ′-′ expr
  |′-′ expr| ′~′ expr 
  |expr ′*′ expr|expr ′%′ expr
  |expr ′/′ expr|expr ′&′ expr
  |expr ′^′ expr|expr ′|′ expr 
  |expr>>expr|expr>>>expr
  |expr<  |expr>!  |expr=~string|expr!=string
  |expr ′<′ expr|expr ′>′ expr
  |expr==expr|expr!=expr
  |expr>=expr|expr<=expr
  |var|aff||atom;
  atom: INTEGER|STRING|STRING_RAW;
  var: var_name|array_elem|func_call;
  var_name: identifier
  
  程序后
  
  3 基于ANTLR的DASL解释器设计
  DASL的解释器主要完成对DASL编写的脚本代码进行扫描和分析,解释执行其中的语义动作,从而产生有效的攻击操作。解释器的设计主要包括词法分析、语法分析和语义执行三个主要功能[10-13]。
  1)词法分析。根据词法规则识别出DASL脚本源程序中符号(token),每种符号代表一类词法单词。这些词法单词可以分为:标识符、运算符、关键字、数据、特殊符号等。词法分析的本质是将字符流转换成符号流。
  2)语法分析。根据语法规则识别出符号流中的语法成分,检查所给的单词序列是否是符合DASL语法的一个句子,如果是则构造出能够正确反映该语法结构的语法树,如果不是则表明有语法错误,给出错误的性质和位置。
  3)语义执行。依据语法分析构造的语法树,对语法树进行遍历,执行语法树所描述的语义动作,对DASL脚本中使用到的原子攻击按照语法树传递的参数进行调用,实现攻击动作。
  根据DASL功能的划分和实现的要求,所设计的解释器包括:符号表、词法分析、语法分析、语义执行、出错处理等部分,其结构如图1所示。
  
  在解释器的实现过程中,使用语言解释器生成工具ANTLR(Another Tool for Language Recognition)[14-15]来实现。相较于BISON[16]来说,它可自动生成代码,且同使用递归下降方法生成的代码很相似,便于阅读,容易理解;同时又可直接生成C++、C#描述的源程序,即降低解释器的开发难度,又提高了解释器的开发效率。同时,当需要对DASL进行功能扩展时,又便于增补功能函数、语法修改与测试维护。
  
  4 实例与比较
  
  4.1 代码实例
  利用DASL开发的SYNFlood攻击脚本代码如下:
  
  程序前
  
  
  //属性描述部分
  Description {
  attackname=SYNFlood;
  attacktype=DoS;
  …}
  //建立连接——原始套接字
  soc=open_sock_raw();
  //强度控制
  While(true) {
  //构造带有SYN标志的TCP数据包
  tcp=tcp_packet_construct(sport: 7000,
  dport:80,
  //序号为随机序号
  seq:0x6839+rand(),
  ack:0,
  flags:2,
  urp:0);
  //构造IP数据包
  ip=ip_packet_construct(ip_v:4, (责任编辑:南粤论文中心)转贴于南粤论文中心: http://www.nylw.net(南粤论文中心__代写代发论文_毕业论文带写_广州职称论文代发_广州论文网)
顶一下
(0)
0%
踩一下
(0)
0%


版权声明:因本文均来自于网络,如果有版权方面侵犯,请及时联系本站删除.