返回首页
当前位置: > 计算机类 > 计算机网络 >

基于领域相关语言的拒绝服务攻击描述语言设计(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|if_bloc
  
  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,? (责任编辑:南粤论文中心)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
推荐内容