本文分享自华为云社区《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)
  • 执行成功

可以试试下面的漏扫服务,看看系统是否存在安全风险:>>>漏洞扫描服务

点击关注,第一时间了解华为云新鲜技术~​

如何在windows下成功的编译和安装python组件hyperscan相关推荐

  1. cygwin+编译php,Windows 下:cygwin编译 HTS 安装

    安裝 packages Devel -> gcc, make, patchutils, automake, autoconf Editors -> joe Web -> wget P ...

  2. 开源实时音视频技术WebRTC在Windows下的简明编译教程

    1.前言 随着音视频技术的不断普及,Google推出的 WebRTC 越来越受到大家的喜欢.现在很多直播产品都是基于WebRTC 进行二次开发做出来的. WebRTC是提供了一整套处理实时音视频的开源 ...

  3. 在Windows下正确地编译最新的pytorch和tensorflow

    目录 0 前言 1 Basic Configure 1.1 Main Build environment 1.2 Main Tools 1.3 Configure 2. Build Tensoflow ...

  4. 实践详细篇-Windows下使用VS2015编译的Caffe训练mnist数据集

    上一篇记录的是学习caffe前的环境准备以及如何创建好自己需要的caffe版本.这一篇记录的是如何使用编译好的caffe做训练mnist数据集,步骤编号延用上一篇 <实践详细篇-Windows下 ...

  5. Windows下用CMake编译JsonCpp及配置(适合新手)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 JsonCpp是什么? JSON是一种轻量级的数据交换格式.它可以表示数字.字符串.有序的值序列 ...

  6. 如何在 Windows 下创建 macOS 引导介质 (USB 启动盘)

    请访问原文链接:如何创建可引导的 macOS 安装介质,查看最新版.原创作品,转载请保留出处. 作者主页:www.sysin.org 完整版请参看:如何创建可引导的 macOS 安装介质 补充章节: ...

  7. Windows下用ndk编译ffmpeg

    Windows下用ndk编译ffmpeg   第一步:创建一个android工程,然后将ffmpeg整体放到jni下,并创建Android.mk和Application.mk Android.mk: ...

  8. 手把手教你在windows下源码编译Open3D

    文章目录 前言 1.编译环境 2.编译步骤 3.编译中的bug 3.1 下载超时问题,ispc.pybind11.open3d_sphinx_theme等 3.2 boringssl 3.3 Dire ...

  9. mysql 源码 sln_在windows下使用vs2013编译和调试mysql源代码

    在windows下使用vs2013编译和调试mysql源代码 1. 准备工作 1)OS:win10 + VS2013 2)mysql 源码(windows版):mysql-5.6.25.zip 3)p ...

最新文章

  1. 《实例化需求》读书笔记
  2. OSI七层模型中每层的协议及网络设备—Vecloud微云
  3. GitHub 五万星登顶,命令行的艺术!
  4. mysql并发写入性能分析
  5. php 五角星,php使用GD库画五角星_PHP教程
  6. win32开发(创建子窗口)
  7. Button的UseSubmitBehavior屬性
  8. Silverlight 5的新功能预测
  9. hadoop安装和配置 详解
  10. ansys_apdl使用教程
  11. MATLAB求解线性规划(含整数规划和0-1规划)问题
  12. oracle分页怎么查询,Oracle的分页查询详解
  13. 启动vidalia 时不用打开firefox
  14. 字节跳动2019春招算法题
  15. LaTex中文编辑入门
  16. android手机公交卡,哪些手机可以刷公交卡 支持刷公交卡手机有哪些【详细介绍】...
  17. Python自动化办公之PDF拆分工具
  18. 迅速用Github展开团队协作
  19. 案例精选 | 蘑菇街、滴滴、淘宝、微信的组件化架构解析
  20. 在线二维码生成器如何为你设计二维码?

热门文章

  1. Bootstrap3 面板的情景类
  2. HTML5 Canvas中 绘制圆弧
  3. es6 Class 的静态方法
  4. 视觉SLAM笔记(48) 局部地图
  5. canal java_易用的 canal java 客户端 canal-client
  6. linux sort命令 性能,Linux sort 命令简单使用
  7. gms签名不一致_第三方稳定不掉ios软件企业签名怎么买
  8. 在Linux中切换用户的命令是set,Linux基础命令---切换用户su
  9. java 8 date time,Java8 日期/时间(Date Time)API指南
  10. 常用css样式属性大全(中文注释)