2009年3月10日星期二

Bro支持的数据类型

Bro ids的策略层分析和检测组件是由一种脚本语言实现的,这种脚本语言主要面向网络连接和流量的处理,支持特定的类型。Bro数据类型系统支持18种数据类型:

  • bool:二进制数据;
  • count、int,和doublet:统称数字,可以进行数学、逻辑,和对比操作;
  • enum:类似于C语言的枚举;
  • string,、character:字符串和字符,可以进行对比和查询操作;
  • pattern:定义用于模式匹配的正则表达式;
  • time、interval:表示绝对时间和时间间隔;
  • port:传输层的端口号;
  • addr:IP地址;
  • net:网络前缀;
  • record:一组数据的集合(可能是不同类型),每个数据都有自己的名字;
  • table:联合数组;
  • set: 标量元组的集合;
  • file:一个被写入的硬盘文件;
  • function:能够通过一组参数调用,并且有返回值;
  • event:事件处理器,事件产生后,通过一组参数进行调用。

bro脚本中的每个变量都必须是上述类型之一。对于大多数类型,有很多方式将变量指定为常量。例如,2.71828是一个双精度类型的常量,80/tcp是一个port类型的常量。


最后,Bro的变量是静态类型,意味着他们的类型是固定的,但即使这样,也可以通过重新指定变量的方式,对其类型进行转换。例如,通过以下操作,整数a能够直接被转换为双精度数字:

   local a = 5;
local b = a * .2;

没有评论: