首页
官网
应用过滤(OAF)
刷机教程
首页
官网
应用过滤(OAF)
刷机教程
  • 应用过滤(OAF)

    • 简介
    • 新手入门
    • 固件下载
    • 插件安装
    • 自定义特征库
    • 特征库更新记录
    • 版本更新记录
    • Q&A

自定义特征库

名词定义

  • 特征码
    特征码用于定义App的协议特征,一个App可能有多个特征码,特征码之间用逗号(英文)隔开。
  • 特征库
    所有App特征码的集合,还包括版本、App分类定义,特征库中还包括App图标。

App特征码定义

在特征库中,App按照以下格式描述,包括id、name和特征码,其中特征码可以包含多个。 以下为单个特征码的基本格式:

$id $name:[$proto;$sport;$dport;$host;$request;$dict]

以下为多个特征码格式:

$id $name:[$proto;$sport;$dport;$host;$request;$dict,$proto;$sport;$dport;$host;$request;$dict]

字段说明

字段说明示例
$id唯一的APP编号,不能重复1001
$nameAPP的名称抖音
$proto传输层协议,tcp或udp,必须设置tcp
$sport源端口,1-65535,不设置表示匹配所有,一般不用设置源端口12345
$dport目的端口,1-65535,不设置表示匹配所有443
$hosthttp或者https请求的域名,比如www.baidu.com,可不设置www.baidu.com
$requesthttp请求的地址,GET 或 POST后面的内容/api/xxxx
$dict七层内容字典,可不设置, 格式xx:aa|yy:bb,其中xx,yy是位置,表示第几个字节,aa,bb表示十六进制内容。
示例:00:a0|02:08|03:0a,表示第0个位置为0xa0,第2个位置为0x08,第3个位置为0x0a。注意第一位从0开始,如果位置为负数,表示从最后一个开始,一般不要用负数表示。
00:a0|02:08|03:0a

匹配机制
在所有字段中,匹配关系是与,必须各个字段都匹配成功,但是$host、$request、 $dict三个字段只用设置一个,即使设置了多个也只会匹配一个,当然也可以三个字段都不设置,那只要前面的$proto、端口匹配成功即可,可以达到端口过滤的作用。

示例:

  • 1001 test:[tcp;;8000;;;]
    匹配所有tcp 8000端口
  • 1001 test:[tcp;;443;baidu.com;;]
    匹配https协议的baidu.com
  • 1001 test:[tcp;;80;;/video;]
    匹配http 80端口并且GET或者POST请求为/video开头的报文
  • 1001 test:[tcp;;10000;;;00:02|01:0b|03:ff]
    匹配tcp 10000端口,并且应用层payload第一个字节为0x02、第二个字节0x0b、第4个字节0xff(注意第一个从0开始)

如何自定义

  • 解压
    修改后缀.bin为.tar.gz,然后通过工具解压,这样会得到明文的.cfg特征库文件,该文件为文本文件,可以直接编辑。 建议在linux系统中操作,通过Windows的工具可能出现不兼容。

  • 修改特征库文件

可以在同一个分类中复制某个APP特征,追加到该分类的最后一行,这样用于保证appid中的分类字段是统一的。 appid的低3位表示分类中的编号,高位表示分类id,比如8001,其中8表示分类,而001为编号

复制后首先需要修改appid,保证组内唯一,最好是组内编号最大值加1,比如当前最大值为8012,那新的appid就设置成8013,这样方便统一管理。

比如现在要增加一个常用网站google,那新增的特征码定义如下:

8008 谷歌:[tcp;;;www.google.com;;] 如果只想匹配443端口,可以定义为

8008 谷歌:[tcp;;443;www.google.com;;]

  • 增加图标
    在图标目录增加对应App的图标文件,名称为${appid}.png

  • 打包
    修改完成后将整个特征库目录中的文件打包成tar.gz压缩包,注意不包括文件夹本身,打包子目录和文件即可,保证解压后特征库文件在根目录。

  • 测试
    在应用过滤特征库页面中选择新的文件升级,查看是否成功,如果没有成功,请检查目录结构是否则正确。

Prev
插件安装
Next
特征库更新记录