diver-osint-ctf/challenge_dependencies

GitHub: diver-osint-ctf/challenge_dependencies

将 CTF 挑战仓库中的题目依赖关系自动解析并可视化为 Mermaid 有向图,支持本地和 CI 环境运行。

Stars: 0 | Forks: 0

# 挑战依赖 将 CTF 挑战依赖可视化为 Mermaid 图表。支持本地和 GitHub Actions 环境运行。 ## 安装说明 ``` make build ``` ## 使用说明 ``` # 仅分析当前分支 ./bin/challenge-deps --repo ./testdata # 比较两个分支 ./bin/challenge-deps --repo ./testdata --base main --head feature-branch ``` ### 选项 - `--repo`:挑战仓库路径(必填) - `--base`:基础分支(可选,需配合 --head 使用) - `--head`:目标分支(可选,需配合 --base 使用) - `--format`:输出格式:`markdown`、`mermaid`、`summary`(默认:`markdown`) - `--direction`:图表方向:`LR`、`TB`、`RL`、`BT`(默认:`LR`) ## 挑战格式 参见 [测试数据](./testdata) ## 输出示例 ``` graph LR challenge-2 --> challenge-1 challenge-3 --> challenge-1 challenge-4 --> challenge-2 challenge-4 --> challenge-3 ``` ## GitHub Actions ``` name: Check Dependencies on: pull_request: branches: [main] issue_comment: types: - created permissions: contents: read pull-requests: write issues: write jobs: analyze: if: | github.event_name == 'pull_request' || ( github.event_name == 'issue_comment' && github.event.issue.pull_request && contains(github.event.comment.body, '@github deps') && ( github.event.comment.author_association == 'MEMBER' || github.event.comment.author_association == 'OWNER' || github.event.comment.author_association == 'COLLABORATOR' ) ) runs-on: ubuntu-latest steps: - name: Set PR info run: | if [[ "${EVENT_NAME}" == "pull_request" ]]; then echo "BRANCH_NAME=${PR_HEAD_REF}" >> $GITHUB_ENV echo "BASE_REF=${PR_BASE_REF}" >> $GITHUB_ENV else BRANCH_NAME=$(gh pr view "${ISSUE_NUMBER}" --json headRefName --jq .headRefName --repo "${REPO}") BASE_REF=$(gh pr view "${ISSUE_NUMBER}" --json baseRefName --jq .baseRefName --repo "${REPO}") echo "BRANCH_NAME=${BRANCH_NAME}" >> $GITHUB_ENV echo "BASE_REF=${BASE_REF}" >> $GITHUB_ENV fi env: GH_TOKEN: ${{ github.token }} EVENT_NAME: ${{ github.event_name }} PR_HEAD_REF: ${{ github.event.pull_request.head.ref }} PR_BASE_REF: ${{ github.base_ref }} ISSUE_NUMBER: ${{ github.event.issue.number }} REPO: ${{ github.repository }} - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: ref: ${{ env.BRANCH_NAME }} fetch-depth: 0 # Required for branch comparison - name: Fetch base branch run: git fetch origin "${BASE_REF}" - name: Analyze dependencies id: deps uses: diver-osint-ctf/challenge_dependencies@220be8bdabaa9c72ef782cb49beb7bdfa674cb44 # v1.2.0 with: repo: "." base: "origin/${{ env.BASE_REF }}" head: "HEAD" - name: Comment PR uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 env: GRAPH_OUTPUT: ${{ steps.deps.outputs.graph }} with: script: | github.rest.issues.createComment({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, body: process.env.GRAPH_OUTPUT }); ```
标签:EVTX分析, GitHub Actions, Linux安全, Mermaid, WebSocket, 依赖分析, 可视化工具, 日志审计, 自动笔记, 防御加固