1. 程式人生 > 其它 >如何在windows下成功的編譯和安裝python元件hyperscan

如何在windows下成功的編譯和安裝python元件hyperscan

摘要:hyperscan 是英特爾推出的一款高效能正則表示式引擎,一次介面呼叫可以實現多條規則與多個物件之間的匹配,可以支援多種匹配模式,塊模式和流模式,它是以PCRE為原型開發,並以BSD許可證開源。

本文分享自華為雲社群《Windows下python元件hyperscan的編譯與安裝》,作者:安全技術猿。

什麼是Hyperscan:

hyperscan 是英特爾推出的一款高效能正則表示式引擎,一次介面呼叫可以實現多條規則與多個物件之間的匹配,可以支援多種匹配模式,塊模式和流模式,它是以PCRE為原型開發,並以BSD許可證開源。

使用時分2步來實現:

  • 第1步:對規則集進行預編譯,編譯時可以指定規則集型別的引數:正則表示式或文字模式
  • 第2步:利用編譯好的規則集進行匹配,匹配時可以指定為塊模式或流模式

另外需要注意的是x86版本和arm版本的原始碼是有區別的,官網下載x86版本(https://github.com/intel/hyperscan)無法在arm平臺中編譯通過,arm版本下載地址(https://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原始碼(https://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)
  • 執行成功

可以試試下面的漏掃服務,看看系統是否存在安全風險:>>>漏洞掃描服務

點選關注,第一時間瞭解華為雲新鮮技術~