一些nsoc工具的python包装器。

Corsair的Python项目详细描述


海盗船

一些nsoc工具的python包装器。Corsair旨在为网络和安全操作中心(NSOC)常用的不同工具实现RESTFul包装器。

corsair背后的主要思想是提供一种访问不同api的方法,以便于集成工具。到目前为止,每个工具至少有三种类:

  • Api:更高层次的抽象,它连接到api。
  • Endpoint:通过使用CRUD方法,使用端点连接到某些api资源。
  • Request:使用HTTP methods在给定的api端点或资源中执行操作。

根据所表示的api,每个Api类都有特定的属性。Endpoint类实现crud方法本身,通常是:

  • create要插入新项目,
  • read要检索一定数量的项,
  • update更改某些项,以及
  • delete删除项。

Request类通过处理url(过滤参数)、头(比如Content-TypeAuthorization)和方法(比如GETPUTPATCHDELETE)来实现使用http与服务器交互的方法。由于所有的例子都经过这个存储库,用户只需要使用Api类连接到特定的api,并了解Endpoint类中有哪些端点可用。这应该足以进行所有交互。

架构

从api返回几乎“原始”的数据是一个项目决策,因此消费者必须处理这些数据。之所以这样做,是因为在项目的这一点上,理解每个api提供的所有资源并组织它们输出数据的方式将需要很多时间。

这是海盗号试图实现的url模板:

https://app.corp/api/endpoint/resource/suffix?filter=f1&filter2=2
\__________________/\_______/\_______/\_____/\__________________/
     Base URL       Endpoint  Resource Suffix      Filters
\___________________________/\__________________________________/
    Corsair will implement         Corsair will facilitate,
                                 but programmer must implement

根据普通目录学,{{CD19>}字段不存在,但一些API使用它,如IBM/QRadar。在这种情况下,当程序员需要某些资源的详细信息时,他必须在url中插入/results。它暴露了跨多个供应商的标准化方面的一些问题,因为其中一些供应商明智地倾向于使用过滤器来处理此类问题,而另一些供应商则使用resources字段甚至http头。

默认情况下,海盗包装器将验证TLS证书,但有时程序员可能希望避免这种行为。这就是为什么Api类将tls_verify参数设置为True。将值更改为False会使海盗通知urllib.urlopen使用不同的上下文来绕过tls验证。

另一个重要的项目决策是只使用Python Standard Library实现所有包装器。

测试

使用以下命令运行测试:

$ python -m unittest tests.test_prime_api
$ python -m unittest tests.test_netbox_api
$ python -m unittest tests.test_qradar_api
$ python -m unittest tests.test_hibp_api
$ python -m unittest tests.test_vt_api
$ python -m unittest tests.test_ise_api
$ python -m unittest tests.test_rdap_api

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
数组JAVA登录页面;如何使用阅读记事本两次?   在堆分析期间提供未知类名的java jprofiler   SpringJava反应器Mono<Tuple2>。zipWith(Mono<>)应返回Mono<Tuple3>   java如何在图形对象上绘制填充椭圆?   java JavaMail支持通过CRL或OCSP进行证书撤销检查吗?   如何使用自制cask升级到最新版本的java JDK?   java为什么从/manager重新启动应用程序会导致大量“此web应用程序实例已停止”警告。为什么?   图形如何在Java中绘制文本上方的线   java如何使Tomcat 7应用程序向后兼容?   java struts中的差异路径类型是什么。xml?   JavaSpringBootJPA表层次结构   java ChangeListener功能,用于使用时间延迟/或其他解决方案检查键入的值   java如何使Libgdx粒子不受背景颜色的影响?   c#无法读取JSON:无法构造java实例。util。从字符串值开始的日期