一些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-Type
和Authorization
)和方法(比如GET
、PUT
、PATCH
和DELETE
)来实现使用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