Skip to main content

Cofense Triage API V2 的 Python 接口

项目描述

适用于 Python 的 Cofense 分类 SDK

这个包为 Triage API V2 提供了一个面向对象的 Python 接口。有关 Cofense 分类的更多信息,请参阅https://cofense.com

有关数据架构的详细信息,请参阅您的 Triage API 文档。

此软件包适用于 Triage 1.20 及更高版本。

安装

这个包在 PyPI 上可用。

python -m pip install cofense_triage

用法

初始化

首先,实例化一个 Triage 对象。client_idclient_secret值在 API V2 应用程序下的分类 Web 界面中提供。api_version 必须是2现在,并且存在以简化未来的升级。

from cofense_triage import Triage

triage = Triage(
    host="https://triage.example.com",
    api_version=2,
    client_id="client_id_here",
    client_secret="client_secret_here",
)

获取数据

您可以通过调用按照该 get_resourcename()模式命名的方法来获取资源。

for report in triage.get_reports():
    print(report)

for threat_indicator in triage.get_threat_indicators():
    print(threat_indicator)

所有get_*方法都返回迭代器,这些迭代器被延迟评估——对后续结果页面的请求会在需要时自动发出。您可以通过将迭代器强制转换为列表来强制立即获取所有结果。

list(triage.get_reporters())

Triage 类为常见请求提供了一些便利功能。查看 cofense_triage/triage.py更多。

reports = triage.get_processed_reports()

reports = triage.get_processed_reports_since("2020-01-01")

reports = triage.get_processed_reports_by_reporter("j.random@cofense.com")

operators = triage.get_operators_by_email("j.random@cofense.com")

您还可以将通用过滤条件传递给基本get_*方法或便利方法。过滤条件由字典或字典列表表示,其中每个字典包含attr(属性名称)、val(值)和可选op的(比较操作,默认为eq)。有关受支持的属性和操作以及组合逻辑,请参阅 Triage API 文档。

triage.get_reporters(
    {"attr": "email", "op": "not_end", "val": "example.com"}
)

triage.get_reporters(
    [
        {"attr": "reports_count", "op": "gt", "val": "0"},
        {"attr": "email", "op": "not_end", "val": "example.com"}
    ]
)

创建

使用按照create_resourcename()模式命名的方法来创建记录。这些方法采用单个参数,它是一个字典或字典列表,用于描述要创建的记录。

triage.create_rules(
    {
      "name": "Great_New_Rule",
      "priority": 3,
      "scope": "Email",
      "rule_context": "Phishing Tactic",
      "content": "YARA code here",
      "time_to_live": "1 year"
    }
)

更新

通过为字段分配新值来更新记录。调用commit()以将更新请求发送到 Triage。

rule = next(triage.get_rules({"attr": "name", "val": "Great_New_Rule"}))

rule.priority = 2

rule.commit()

删除

通过调用delete()后跟删除记录commit()

rule = next(triage.get_rules({"attr": "name", "val": "Great_New_Rule"}))

rule.delete()

rule.commit()

例子

查找名称中带有“凭据”的所有规则,并将优先级设置为 4。

for rule in triage.get_rules({"attr": "name", "val": "Credential", "op": "cont"}):
    rule.priority = 4
    rule.commit()

构建上周的记者 CSV,按报告数量排序。

import datetime
import itertools
import csv

reports = triage.get_reports(
    [
        {
            "attr": "created_at",
            "op": "gt",
            "val": datetime.datetime.now() - datetime.timedelta(days=7),
        }
    ]
)
grouped_reports = itertools.groupby(reports, key=lambda report: report.reporter.email)
results = [
    {
        "address": reporter_address,
        "num_reports": len(list(reports)),
    }
    for reporter_address, reports in grouped_reports
]

with open("reporters_last_week.csv", "w", newline="") as f:
    csv_writer = csv.DictWriter(f, fieldnames=results[0].keys())
    csv_writer.writeheader()
    csv_writer.writerows(results)

执照

该软件根据 MIT 许可证获得许可,包含在文件中LICENSE

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

cofense_triage-0.1.tar.gz (13.0 kB 查看哈希

已上传 source

内置发行版

cofense_triage-0.1.0-py3-none-any.whl (18.4 kB 查看哈希

已上传 py3

cofense_triage-0.1-py3-none-any.whl (18.5 kB 查看哈希

已上传 py3