Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
capability-sdk — SDK Go partagé définissant une interface de capacité standard pour les scanners de sécurité, avec une sortie de résultats multi-format (terminal, JSON, NDJSON, Markdown, SARIF) et des vérifications de dérive de la documentation CLI. | Kitploit
Outils/GitHubGitHub/praetorian-inc/capability-sdk
Outils DéfensifsAnalyse StatiqueScanners de VulnérabilitésScripting et AutomatisationVirtualisation de SécuritéDevSecOpsUtilitaires et Frameworks
GitHub

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
praetorian-inc/capability-sdk

capability-sdk

SDK Go partagé définissant une interface de capacité standard pour les scanners de sécurité, avec une sortie de résultats multi-format (terminal, JSON, NDJSON, Markdown, SARIF) et des vérifications de dérive de la documentation CLI.

Voir le dépôt
18il y a 2 joursPas encore vérifié
Partager

SDK de capacités

SDK Go partagé pour la création de capacités de sécurité pour la plateforme Guard.

Paquets

pkg/capability - Interface de capacité

Définit l'interface standardisée que les scanners de sécurité implémentent.

Types :

// Target - ce qu'une capacité scanne
type Target struct {
    Type  TargetType        // domain, ip, port, url, cloud_resource
    Value string            // La valeur de la cible
    Meta  map[string]string // Contexte supplémentaire
}

// Finding - ce qu'une capacité découvre
type Finding struct {
    Type     FindingType    // asset, risk, attribute
    Severity Severity       // info, low, medium, high, critical
    Data     map[string]any // Charge utile flexible
}

// Capability - l'interface à implémenter
type Capability interface {
    Name() string
    Run(ctx context.Context, target Target) ([]Finding, error)
}

Exemple d'implémentation :

type SubdomainScanner struct{}

func (s *SubdomainScanner) Name() string {
    return "subdomain-scanner"
}

func (s *SubdomainScanner) Run(ctx context.Context, target capability.Target) ([]capability.Finding, error) {
    if target.Type != capability.TargetDomain {
        return nil, fmt.Errorf("expected domain, got %s", target.Type)
    }

    // Scan logic here...

    return []capability.Finding{
        {
            Type: capability.FindingAsset,
            Data: map[string]any{
                "dns":   "found.example.com",
                "class": "domain",
            },
        },
    }, nil
}

pkg/formatter - Formatage de sortie

Système de sortie multi-format pour le rendu des résultats de scan.

Formats pris en charge :

  • Terminal (streaming, coloré via lipgloss)
  • JSON (tamponné, option d'impression élégante)
  • NDJSON (streaming, délimité par des retours à la ligne)
  • Markdown (tamponné, rapports basés sur des modèles)
  • SARIF 2.1.0 (tamponné, intégration GitHub/Azure)

Utilisation de base :

import "github.com/praetorian-inc/capability-sdk/pkg/formatter"

// Create a formatter
f, err := formatter.New(formatter.Config{
    Format: formatter.FormatJSON,
    Writer: os.Stdout,
    Pretty: true,
})
if err != nil {
    return err
}
defer f.Close()

// Format findings
f.Format(ctx, formatter.Finding{
    ID:       "vuln-001",
    Title:    "Security Issue",
    Severity: formatter.SeverityHigh,
})

// Complete with summary
f.Complete(ctx, formatter.Summary{TotalFindings: 1, HighCount: 1})

Conversion des résultats de capacité :

import (
    "github.com/praetorian-inc/capability-sdk/pkg/capability"
    "github.com/praetorian-inc/capability-sdk/pkg/formatter"
)

// Run capability
findings, err := scanner.Run(ctx, target)

// Convert and format for CLI output
for _, cf := range findings {
    ff := formatter.FromCapabilityFinding(cf)
    f.Format(ctx, ff)
}

Sortie multiple (TeeFormatter) :

terminal, _ := formatter.New(formatter.Config{Format: formatter.FormatTerminal, Writer: os.Stdout})
jsonFile, _ := formatter.New(formatter.Config{Format: formatter.FormatJSON, Writer: file})

tee, _ := formatter.NewTee(terminal, jsonFile)
tee.Format(ctx, finding) // Writes to both

Soumission concurrente (Aggregator) :

agg := formatter.NewAggregator(f, 100) // buffer size 100

// From multiple goroutines
go func() { agg.Submit(ctx, finding1) }()
go func() { agg.Submit(ctx, finding2) }()

agg.Close() // Wait for all writes

pkg/clisurface - Barrière de dérive de la documentation CLI

Parcourt un arbre de commandes cobra et génère, assemble et vérifie les artefacts de documentation construits à partir de celui-ci, afin que la documentation commitée ne puisse pas dériver silencieusement du binaire. Construisez un Docs avec clisurface.New, puis utilisez Docs.Write pour régénérer et Docs.CheckArtifacts ainsi que Docs.LintRepo pour faire échouer la CI lorsque les fichiers commités, la prose ou les commentaires Go ne correspondent plus à la CLI. Voir go doc ./pkg/clisurface pour l'API complète.

Architecture

┌─────────────────────────────────────────────────────────────────────┐
│                     STANDALONE TOOL                                 │
│  Implements: capability.Capability                                  │
│  Produces:   []capability.Finding                                   │
└────────────────────────────┬────────────────────────────────────────┘
                             │
              ┌──────────────┴──────────────┐
              ▼                              ▼
┌─────────────────────────┐    ┌─────────────────────────────-────────┐
│   CLI OUTPUT PATH       │    │       CHARIOT INTEGRATION PATH       │
│                         │    │                                      │
│  capability.Finding     │    │  capability.Finding                  │
│         │               │    │         │                            │
│         ▼               │    │         ▼                            │
│  formatter.Finding      │    │  Chariot Adapter (in chariot repo)   │
│  (FromCapabilityFinding)│    │         │                            │
│         │               │    │         ▼                            │
│         ▼               │    │  Tabularium Model (Asset/Risk/Attr)  │
│  Terminal/JSON/SARIF    │    │         │                            │
│                         │    │         ▼                            │
│     stdout/file         │    │     job.Send() → Storage             │
└─────────────────────────┘    └───────────────────────────────-──────┘

Extension des types

Ajout d'un nouveau type de cible

  1. Ouvrir un ticket : « Besoin du type de cible git_repo pour X »
  2. Un développeur backend examine le mapping Tabularium
  3. Ajouter dans pkg/capability/target.go :
    TargetGitRepo TargetType = "git_repo"
    
  4. Mettre à jour la méthode Valid()
  5. Ajouter des tests
  6. Mettre à jour l'adaptateur Chariot

Ajout d'un nouveau type de résultat

  1. Ouvrir un ticket : « Besoin du type de résultat relationship pour X »
  2. Définir le schéma Data
  3. Ajouter dans pkg/capability/finding.go
  4. Mettre à jour le convertisseur dans pkg/formatter/capability_converter.go
  5. Ajouter des tests

Modules utilisant ce SDK

  • diocletian - Scanner de sécurité cloud

Licence

Apache License 2.0. Voir LICENSE.

La licence est énoncée une seule fois, à la racine du dépôt. N'ajoutez pas d'en-têtes de copyright ou de licence par fichier — y compris lors du portage de code depuis un projet voisin qui en contient. Un fichier LICENSE à la racine constitue la déclaration faisant autorité ; le répéter sur chaque fichier n'est pas nécessaire.

Télécharger l’outil