什麼是Hyperscan:
hyperscan 是英特爾推出的一款高性能正規表達式引擎,一次接口調用可以實作多條規則與多個對象之間的比對,可以支援多種比對模式,塊模式和流模式,它是以PCRE為原型開發,并以BSD許可證開源。
使用時分2步來實作:
- 第1步:對規則集進行預編譯,編譯時可以指定規則集類型的參數:正規表達式或文本模式。
- 第2步:利用編譯好的規則集進行比對,比對時可以指定為塊模式或流模式。
- 另外需要注意的是x86版本和arm版本的源代碼是有差別的,官網下載下傳x86版本(github.com/intel/hyper…)無法在arm平台中編譯通過,arm版本下載下傳位址(github.com/tqltech/hyp…)。
下面以在windows X86平台為例來講解hyperscan python元件的編譯安裝方法:
1、 下載下傳和解壓hyperscan-5.4.0。
2、 在powershell下建立build目錄,執行cd build。
3、 輸入cmake -G指令,檢視-G支援的類型清單。

4、 輸入cmake -G “Visual Studio 15 2017 Win64” -DBUILD_SHARED_LIBS=on …/指令。
- 提示指令執行失敗,需要指定BOOST_ROOT參數
5、 下載下傳boost源代碼,解壓到hyperscan目錄中。
6、 輸入cmake -G “Visual Studio 15 2017 Win64” -D BOOST_ROOT=%cd%/…/boost_1_78_0/ -DBUILD_SHARED_LIBS=on …/指令。
- 提示缺少PCRE和sqlite3
7、 下載下傳PCRE、sqlite源代碼并解壓到hyperscan目錄中。
8、 輸入cmake -G “Visual Studio 15 2017 Win64” -D BOOST_ROOT=%cd%/…/boost_1_78_0/ -DBUILD_SHARED_LIBS=on -D PCRE_SOURCE=%cd%/…/pcre-8.45/ …/指令,指令執行成功,build目錄下生成一系列的vs2017工程檔案。
9、 輸入cmake –build .指令執行編譯,編譯成功後分别在bin、lib目錄下生成一系列檔案。
- bin目錄清單
- lib目錄清單
10、 下載下傳hyperscan python源代碼(pypi.org/project/hyp…) ,原來的setup.py無法在windows下安裝成功,需要修改setup.py檔案内容如下:
# -*- coding: utf-8 -*-
from distutils.core import *
module1 = Extension("hyperscan.hyperscan",
include_dirs = ['src/hyperscan'],
libraries = ['hs', 'hs_runtime'],
library_dirs = [r'../hyperscan-5.4.0/build/lib'],
extra_compile_args = ['/Zi', '/Od'],
extra_link_args = ['/DEBUG'],
sources = ["src/hyperscan/hyperscanmodule.c"])
setup(
name="hyperscan", #打封包件名稱 庫說明檔案的檔案名
version="0.2.0",
package_dir = {'': 'src'},
packages = ['hyperscan'],
package_data = {'': ['*']},
ext_modules=[module1]
)
複制代碼
11、 輸入python setup.py install指令進行python元件安裝,提示安裝失敗,找不到hs_compile_lit_multi。
12、 在hs.def中增加導出函數hs_compile_lit_multi,重新編譯hyperscan工程後再執行python元件安裝腳本,安裝成功。
13、 成功執行python測試。腳本表示安裝成功,腳本如下:
import hyperscan
db = hyperscan.Database()
print(db)
複制代碼
- 執行成功
可以試試下面的漏掃服務,看看系統是否存在安全風險
作者:華為雲開發者社群
連結:https://juejin.cn/post/7072182814333992967
來源:稀土掘金
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。