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;