Skip to main content

tasklite

一个用于安全测试工具集成的 Python SDK,提供任务管理、流程编排、日志记录和漏洞上报等能力。

工具集成说明

1、已有工具改造非常简单,把之前的工具转换为 cli 启动,接受一个文件路径参数。

2、需要把原来的任务输入改装一下,通过调用函数方法获取任务。

3、(可选)如果有任务调度图,可以把节点、边(执行流向)分别保存一下,如果没有可以不保存。

4、把之前的任务日志,调用函数方法保存一下。

5、把之前的漏洞信息,调用函数方法保存一下。

6、把工具编译成一个二进制文件,目标平台:Linux x86_64 架构,或者提供代码和 dockerfile 文件。

安装

pip install tasklite

依赖要求:Python >= 3.8

快速开始

from datetime import datetime
from tasklite import model, task, dto

# 1. 初始化数据库(仅需执行一次)
model.init_db()

# 2. 更新任务进度
task.update_task_progress(50.5)

# 3. 保存任务日志
log = dto.TaskLog()
log.status = "success"
log.message = "SQL 注入扫描完成"
log.level = "info"
log.execute_time = datetime.now()
task.save_task_log(log)

# 4. 上报漏洞信息
vlun = dto.TaskVlun()
vlun.name = "SQL注入漏洞"
vlun.level = "高危"
vlun.path = "/api/login"
vlun.description = "登录接口存在 SQL 注入漏洞"
task.save_task_vlun(vlun)

API 参考

model 模块

提供数据库初始化与会话管理。

init_db(echo: bool = False)

初始化数据库连接并创建所有表。必须在调用其他任何 API 之前执行。

参数 类型 默认值 说明
db_path str "/home/db.sqlite" SQLite 数据库文件路径,也可以从环境变量 DB_PATH 读取
echo bool False 是否打印 SQL 执行日志(调试用)
model.init_db(echo=True)  # 开启 SQL 调试日志

dto 数据模型

所有数据模型均基于 Pydantic,支持从 ORM 对象直接转换(from_attributes=True)。

dto.Task — 任务信息

字段 类型 默认值 说明
test_type str "" 测试任务类型:binary / web / app / code / agent / miniprogram
name str "" 测试任务名称
target str "" 测试目标
download_dir Optional[str] None 工具文件自动下载到本地的目录
upload_dir Optional[str] None 工具运行完成后需要上传到 COS 的文件目录
status Optional[str] None 任务状态:pending / running / finish / error
progress Optional[str] None 测试进度
ai_summary Optional[str] None AI 总结
error_reason Optional[str] None 错误原因

dto.TaskFlowNode — 任务流程节点

字段 类型 默认值 说明
code str "" 流程代码(唯一标识)
name str "" 流程名称
status Optional[str] None 节点状态:static / pending / running / finish / error
result Optional[str] None 流程结果
description Optional[str] None 流程描述
error_reason Optional[str] None 错误原因

dto.TaskFlowEdge — 任务流程边(执行流向)

字段 类型 默认值 说明
from_node str "" 起始节点代码
to_node str "" 目标节点代码
condition Optional[str] None 执行条件(如 "所有用例通过")
description Optional[str] None 描述信息
error_reason Optional[str] None 错误原因
order_no Optional[int] None 多条相同路径时的执行顺序
execute_time datetime datetime.now() 执行时间

dto.TaskLog — 任务日志

字段 类型 默认值 说明
execute_time datetime datetime.now() 执行时间
level str "" 日志级别(如 info / warn / error
status str "" 状态:success / failed
message str "" 日志消息内容

dto.TaskVlun — 漏洞信息

字段 类型 默认值 说明
discovery_time datetime datetime.now() 发现时间
level str "" 漏洞等级
name str "" 漏洞名称
path str "" 漏洞路径
description Optional[str] None 漏洞描述
related Optional[str] None 相关信息(如 CVE 编号)
payload Optional[str] None 漏洞 payload
result Optional[str] None 漏洞结果
reproduce Optional[str] None 漏洞复现完整过程
ai_summary Optional[str] None AI 总结
fix_suggestion Optional[str] None 修复建议

task 模块

提供任务管理、进度上报、日志记录和漏洞保存等核心功能。所有方法返回 bool 表示操作是否成功。


get_task() -> Optional[dto.Task]

获取最新的任务信息。

返回值:最新的一条 dto.Task 对象,无任务时返回 None

t = task.get_task()
if t:
    print(f"当前任务: {t.name}")

update_task_progress(progress: float) -> bool

更新最新任务的执行进度。

参数 类型 说明
progress float 任务进度,范围建议 0~100
task.update_task_progress(75.0)

update_flow_node_progress(progress: float, code: str, status: str) -> bool

更新指定流程节点的进度和状态。

参数 类型 说明
progress float 节点进度
code str 节点代码(唯一标识)
status str 节点状态:static / pending / running / finish / error,传空字符串则仅更新进度
task.update_flow_node_progress(100.0, "scan_sql_injection", "finish")

save_static_task_nodes(nodes: list[dto.TaskFlowNode], is_auto_add_edge: bool) -> bool

保存静态任务流程节点(在 SaaS 平台展示执行流程)。节点的 status 会自动设置为 "static"

参数 类型 说明
nodes list[dto.TaskFlowNode] 按执行顺序排列的节点列表,不能为空
is_auto_add_edge bool 是否自动按顺序生成边(from_nodeto_node)。如边的信息有描述需求(如 condition),建议设为 False 并手动调用 save_task_node_edge
nodes = [
    dto.TaskFlowNode(code="step1", name="代码扫描"),
    dto.TaskFlowNode(code="step2", name="漏洞验证"),
    dto.TaskFlowNode(code="step3", name="报告生成"),
]
task.save_static_task_nodes(nodes, is_auto_add_edge=True)

save_task_node(node: dto.TaskFlowNode) -> bool

保存单个任务流程节点。status 不能为 "static" 或空,需调用 save_task_node_edge 手动添加边。

参数 类型 说明
node dto.TaskFlowNode 流程节点对象,status 必填且不能为 "static"
node = dto.TaskFlowNode(
    code="scan_sql",
    name="SQL注入扫描",
    status="running",
    description="正在执行SQL注入扫描"
)
task.save_task_node(node)

save_task_nodes(nodes: list[dto.TaskFlowNode]) -> bool

批量保存任务流程节点。每个节点的 status 不能为 "static" 或空。

参数 类型 说明
nodes list[dto.TaskFlowNode] 流程节点列表
task.save_task_nodes([node1, node2, node3])

save_task_node_edge(edge: dto.TaskFlowEdge) -> bool

保存单条任务节点间的执行流向(边)。

参数 类型 说明
edge dto.TaskFlowEdge 边的流向信息
edge = dto.TaskFlowEdge(
    from_node="step1",
    to_node="step2",
    condition="所有用例通过",
    description="测试全部通过则部署"
)
task.save_task_node_edge(edge)

save_task_node_edges(edges: list[dto.TaskFlowEdge]) -> bool

批量保存任务节点间的执行流向(边)。

参数 类型 说明
edges list[dto.TaskFlowEdge] 边的流向信息列表

save_task_log(log: dto.TaskLog) -> bool

保存一条任务执行日志。

参数 类型 说明
log dto.TaskLog 日志对象
log = dto.TaskLog()
log.level = "error"
log.status = "failed"
log.message = "SQL注入扫描失败:目标无响应"
task.save_task_log(log)

save_task_vlun(vlun: dto.TaskVlun) -> bool

保存一条漏洞信息。

参数 类型 说明
vlun dto.TaskVlun 漏洞信息对象
vlun = dto.TaskVlun(
    name="XSS 跨站脚本漏洞",
    level="中危",
    path="/search",
    description="搜索参数未做 HTML 实体编码",
    payload='<script>alert(1)</script>',
    fix_suggestion="对用户输入进行 HTML 实体编码"
)
task.save_task_vlun(vlun)

完整示例

from datetime import datetime
from tasklite import model, task, dto

def main():
    # 初始化数据库
    model.init_db(echo=False)

    # 上报进度
    task.update_task_progress(10.0)

    # 记录执行日志
    log = dto.TaskLog()
    log.level = "info"
    log.status = "success"
    log.message = "工具初始化完成"
    log.execute_time = datetime.now()
    task.save_task_log(log)

    # ... 执行核心扫描逻辑 ...

    # 上报漏洞
    vlun = dto.TaskVlun()
    vlun.name = "SQL注入漏洞"
    vlun.level = "高危"
    vlun.path = "/api/login"
    vlun.description = "登录接口 username 参数存在 SQL 注入"
    vlun.payload = "' OR 1=1 --"
    vlun.fix_suggestion = "使用参数化查询或 ORM 框架"
    task.save_task_vlun(vlun)

    # 更新进度至完成
    task.update_task_progress(100.0)

if __name__ == "__main__":
    main()

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tasklite-0.0.6.tar.gz (11.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tasklite-0.0.6-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file tasklite-0.0.6.tar.gz.

File metadata

  • Download URL: tasklite-0.0.6.tar.gz
  • Upload date:
  • Size: 11.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.2

File hashes

Hashes for tasklite-0.0.6.tar.gz
Algorithm Hash digest
SHA256 a5424e7beae85c6873c847559a2df99a2cd02ad403499818669aa5226d042ecb
MD5 9897e1f4ef3dc527c13d96e75ef8eb48
BLAKE2b-256 7d2392c59b81252bda5b7184a8ef6b61180a29918960598664637792235bf7c5

See more details on using hashes here.

File details

Details for the file tasklite-0.0.6-py3-none-any.whl.

File metadata

  • Download URL: tasklite-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 9.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.2

File hashes

Hashes for tasklite-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 ee7a50bfdb00176f2250a61a539b1b169b1311e1106cd75913a4ea31e29c6d57
MD5 18fe592f145f59e324f4edb55f3ebdc4
BLAKE2b-256 e879948a3af0f895f156d48629026c7d93ad9ac5e9369ad2a73c61bf14d584a4

See more details on using hashes here.

Release history Release notifications | RSS feed

0.0.7

2 files

This release

0.0.6 This release

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

0.0.2

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page