Bitex API Reference

This page summarizes the main packages and signatures from the current Bitex codebase.

Module

github.com/ilexum-group/bitex

Packages

PackagePurpose
internal/configCLI parsing and validation
internal/osOS abstraction layer
internal/tskTSK orchestration and parsing
internal/acquisitionEnd-to-end disk acquisition workflow
internal/senderHTTP transmission
pkg/modelsData structures

internal/config

ParseFlags

func ParseFlags() *Config

ValidateConfig

func ValidateConfig(cfg *Config) error

Config Struct

type Config struct {
    DiskPath  string
    CaseID    string
    ServerURL string
    AuthToken string
}

internal/tsk

NewTSKAnalyzer

func NewTSKAnalyzer(custodyChainEntry *models.CustodyChainEntry, osImpl *internalos.OS) *Analyzer

AnalyzeDisk

func (t *Analyzer) AnalyzeDisk(diskPath string) (*models.TSKAnalysis, error)

Performs metadata-focused partition/filesystem/file-listing analysis using TSK commands.


internal/acquisition

NewAcquirer

func NewAcquirer(
    osImpl internalos.OS,
    diskPath string,
    custodyChainEntry *models.CustodyChainEntry,
    tskAnalyzer *tsk.Analyzer,
) *Acquirer

AcquireDisk

func (a *Acquirer) AcquireDisk() (*models.TSKAnalysis, error)

GetAnalysisWithCustody

func (a *Acquirer) GetAnalysisWithCustody(analysis *models.TSKAnalysis) *models.TSKAnalysis

Usage Example

package main

import (
    "fmt"
    "github.com/ilexum-group/bitex/internal/acquisition"
    "github.com/ilexum-group/bitex/internal/config"
    internalos "github.com/ilexum-group/bitex/internal/os"
    "github.com/ilexum-group/bitex/internal/sender"
    "github.com/ilexum-group/bitex/internal/tsk"
    "github.com/ilexum-group/bitex/pkg/models"
)

func main() {
    cfg := config.ParseFlags()
    if err := config.ValidateConfig(cfg); err != nil {
        panic(err)
    }

    osImpl := internalos.New()
    custody := models.NewCustodyChainEntry("bitex", "1.0.0")
    tskAnalyzer := tsk.NewTSKAnalyzer(custody, &osImpl)
    acquirer := acquisition.NewAcquirer(osImpl, cfg.DiskPath, custody, tskAnalyzer)

    analysis, err := acquirer.AcquireDisk()
    if err != nil {
        panic(err)
    }

    analysisWithCustody := acquirer.GetAnalysisWithCustody(analysis)

    senderClient := sender.NewSender(cfg.ServerURL, cfg.AuthToken)
    if err := senderClient.SendAnalysis(analysisWithCustody); err != nil {
        panic(err)
    }

    fmt.Printf("Analysis complete: %d partitions found\n", len(analysis.Partitions))
}