GitHub

Bitex API Reference

Go API documentation for Bitex packages.

Module

github.com/ilexum-group/bitex

Packages

PackagePurpose
configCLI flag parsing and validation
loggerRFC 5424 compliant logging
internal/osOS abstraction layer
tskThe Sleuth Kit integration
acquisitionDisk acquisition orchestration
senderHTTP transmission
pkg/modelsData structures

config Package

ParseFlags

func ParseFlags() *Config

Parses command-line flags and returns a Config struct.

ValidateConfig

func ValidateConfig(cfg *Config) error

Validates that all required configuration fields are present. Returns an error if validation fails.

Config Struct

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

tsk Package

NewTSKAnalyzer

func NewTSKAnalyzer(custody *models.CustodyChainEntry, osImpl *os.OS) *TSKAnalyzer

Creates a new TSK analyzer with custody chain and OS implementation.

AnalyzeDisk

func (a *TSKAnalyzer) AnalyzeDisk(diskPath string) (*models.TSKAnalysis, error)

Performs complete disk analysis.


acquisition Package

NewAcquirer

func NewAcquirer(
    osImpl *os.OS,
    diskPath string,
    custody *models.CustodyChainEntry,
    tskAnalyzer *tsk.TSKAnalyzer,
) *Acquirer

AcquireDisk

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

GetAnalysisWithCustody

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

Usage Example

package main

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

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

    hostname, _ := os.New().Hostname()
    logger.InitDefaultLogger("bitex", hostname, os.New().GetProcessID())

    custody := models.NewCustodyChainEntry("bitex", "1.0.3")
    custody.SetAgentHostname(hostname)
    custody.SetAgentUser(os.New().GetCurrentUser())

    osImpl := os.New()
    tskAnalyzer := tsk.NewTSKAnalyzer(custody, osImpl)
    acquirer := acquisition.NewAcquirer(osImpl, cfg.DiskPath, custody, tskAnalyzer)

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

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

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

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