如何在windows下成功的編譯和安裝python組件hyperscan
摘要:hyperscan 是英特爾推出的一款高性能正則表達式引擎,一次介面調用可以實現多條規則與多個對象之間的匹配,可以支援多種匹配模式,塊模式和流模式,它是以PCRE為原型開發,並以BSD許可證開源。
本文分享自華為雲社區《Windows下python組件hyperscan的編譯與安裝》,作者:安全技術猿。
什麼是Hyperscan:
hyperscan 是英特爾推出的一款高性能正則表達式引擎,一次介面調用可以實現多條規則與多個對象之間的匹配,可以支援多種匹配模式,塊模式和流模式,它是以PCRE為原型開發,並以BSD許可證開源。
使用時分2步來實現:
- 第1步:對規則集進行預編譯,編譯時可以指定規則集類型的參數:正則表達式或文本模式
- 第2步:利用編譯好的規則集進行匹配,匹配時可以指定為塊模式或流模式
另外需要注意的是x86版本和arm版本的源程式碼是有區別的,官網下載x86版本(//github.com/intel/hyperscan)無法在arm平台中編譯通過,arm版本下載地址(//github.com/tqltech/hyperscan/releases)。
下面以在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/hyperscan/),原來的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)
- 執行成功
可以試試下面的漏掃服務,看看系統是否存在安全風險:>>>漏洞掃描服務