bettercap: Index | Files

package session

import ""

Package session contains code to manage the interactive session, modules, environment, etc.


Package Files

command_handler.go doc.go environment.go events.go module.go module_handler.go module_param.go prompt.go session.go session_core_handlers.go session_parse.go session_setup.go


const (
    STRING ParamType = iota
    BOOL             = iota
    INT              = iota
    FLOAT            = iota
const (
    PromptVariable       = "$"
    DefaultPrompt        = "{by}{fw}{cidr} {fb}> {env.iface.ipv4} {reset} {bold}» {reset}"
    DefaultPromptMonitor = "{by}{fb} {} {reset} {bold}» {reset}"
const (
    HistoryFile = "~/bettercap.history"
const IPv4Validator = `^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$`
const ParamIfaceAddress = "<interface address>"
const ParamIfaceName = "<interface name>"
const ParamRandomMAC = "<random mac>"
const ParamSubnet = "<entire subnet>"


var (
    I   = (*Session)(nil)

    ErrAlreadyStarted = errors.New("module is already running")
    ErrAlreadyStopped = errors.New("module is not running")
    ErrNotSupported   = errors.New("this component is not supported on this OS")
var (
    PromptCallbacks = map[string]func(s *Session) string{
        "{cidr}": func(s *Session) string {
            return s.Interface.CIDR()
        "{net.sent}": func(s *Session) string {
            return fmt.Sprintf("%d", s.Queue.Stats.Sent)
        "{net.sent.human}": func(s *Session) string {
            return humanize.Bytes(s.Queue.Stats.Sent)
        "{net.received}": func(s *Session) string {
            return fmt.Sprintf("%d", s.Queue.Stats.Received)
        "{net.received.human}": func(s *Session) string {
            return humanize.Bytes(s.Queue.Stats.Received)
        "{net.packets}": func(s *Session) string {
            return fmt.Sprintf("%d", s.Queue.Stats.PktReceived)
        "{net.errors}": func(s *Session) string {
            return fmt.Sprintf("%d", s.Queue.Stats.Errors)

func AsTag Uses

func AsTag(name string) string

func ParseCommands Uses

func ParseCommands(line string) []string

type CommandHandler Uses

type CommandHandler struct {
    Name        string
    Description string
    Completer   *readline.PrefixCompleter
    Parser      *regexp.Regexp
    Exec        func(args []string, s *Session) error

func NewCommandHandler Uses

func NewCommandHandler(name string, expr string, desc string, exec func(args []string, s *Session) error) CommandHandler

func (*CommandHandler) Parse Uses

func (h *CommandHandler) Parse(line string) (bool, []string)

type Environment Uses

type Environment struct {
    Data map[string]string `json:"data"`
    // contains filtered or unexported fields

func NewEnvironment Uses

func NewEnvironment(envFile string) (*Environment, error)

func (*Environment) Get Uses

func (env *Environment) Get(name string) (bool, string)

func (*Environment) GetInt Uses

func (env *Environment) GetInt(name string) (error, int)

func (*Environment) Has Uses

func (env *Environment) Has(name string) bool

func (*Environment) Load Uses

func (env *Environment) Load(fileName string) error

func (*Environment) Save Uses

func (env *Environment) Save(fileName string) error

func (*Environment) Set Uses

func (env *Environment) Set(name, value string) string

func (*Environment) Sorted Uses

func (env *Environment) Sorted() []string

func (*Environment) WithCallback Uses

func (env *Environment) WithCallback(name, value string, cb EnvironmentChangedCallback) string

type EnvironmentChangedCallback Uses

type EnvironmentChangedCallback func(newValue string)

type Event Uses

type Event struct {
    Tag  string      `json:"tag"`
    Time time.Time   `json:"time"`
    Data interface{} `json:"data"`

func NewEvent Uses

func NewEvent(tag string, data interface{}) Event

func (Event) Label Uses

func (e Event) Label() string

type EventPool Uses

type EventPool struct {
    // contains filtered or unexported fields

func NewEventPool Uses

func NewEventPool(debug bool, silent bool) *EventPool

func (*EventPool) Add Uses

func (p *EventPool) Add(tag string, data interface{})

func (*EventPool) Clear Uses

func (p *EventPool) Clear()

func (*EventPool) Listen Uses

func (p *EventPool) Listen() <-chan Event

func (*EventPool) Log Uses

func (p *EventPool) Log(level log.Verbosity, format string, args ...interface{})

func (*EventPool) SetDebug Uses

func (p *EventPool) SetDebug(d bool)

func (*EventPool) SetSilent Uses

func (p *EventPool) SetSilent(s bool)

func (*EventPool) Sorted Uses

func (p *EventPool) Sorted() []Event

func (*EventPool) Unlisten Uses

func (p *EventPool) Unlisten(listener <-chan Event)

type JSONModule Uses

type JSONModule struct {
    Name        string                  `json:"name"`
    Description string                  `json:"description"`
    Author      string                  `json:"author"`
    Parameters  map[string]*ModuleParam `json:"parameters"`
    Handlers    []ModuleHandler         `json:"handlers"`
    Running     bool                    `json:"running"`

type JSONModuleHandler Uses

type JSONModuleHandler struct {
    Name        string `json:"name"`
    Description string `json:"description"`
    Parser      string `json:"parser"`

type JSONModuleParam Uses

type JSONModuleParam struct {
    Name        string    `json:"name"`
    Type        ParamType `json:"type"`
    Description string    `json:"description"`
    Value       string    `json:"default_value"`
    Validator   string    `json:"validator"`

type LogMessage Uses

type LogMessage struct {
    Level   log.Verbosity
    Message string

type Module Uses

type Module interface {
    Name() string
    Description() string
    Author() string
    Handlers() []ModuleHandler
    Parameters() map[string]*ModuleParam

    Running() bool
    Start() error
    Stop() error

type ModuleHandler Uses

type ModuleHandler struct {
    Name        string
    Description string
    Parser      *regexp.Regexp
    Exec        func(args []string) error

func NewModuleHandler Uses

func NewModuleHandler(name string, expr string, desc string, exec func(args []string) error) ModuleHandler

func (*ModuleHandler) Help Uses

func (h *ModuleHandler) Help(padding int) string

func (ModuleHandler) MarshalJSON Uses

func (h ModuleHandler) MarshalJSON() ([]byte, error)

func (*ModuleHandler) Parse Uses

func (h *ModuleHandler) Parse(line string) (bool, []string)

type ModuleList Uses

type ModuleList []Module

func (ModuleList) MarshalJSON Uses

func (mm ModuleList) MarshalJSON() ([]byte, error)

type ModuleParam Uses

type ModuleParam struct {
    Name        string
    Type        ParamType
    Value       string
    Description string

    Validator *regexp.Regexp

func NewBoolParameter Uses

func NewBoolParameter(name string, def_value string, desc string) *ModuleParam

func NewDecimalParameter Uses

func NewDecimalParameter(name string, def_value string, desc string) *ModuleParam

func NewIntParameter Uses

func NewIntParameter(name string, def_value string, desc string) *ModuleParam

func NewModuleParameter Uses

func NewModuleParameter(name string, def_value string, t ParamType, validator string, desc string) *ModuleParam

func NewStringParameter Uses

func NewStringParameter(name string, def_value string, validator string, desc string) *ModuleParam

func (ModuleParam) Dump Uses

func (p ModuleParam) Dump(padding int) string

func (ModuleParam) Get Uses

func (p ModuleParam) Get(s *Session) (error, interface{})

func (ModuleParam) Help Uses

func (p ModuleParam) Help(padding int) string

func (ModuleParam) MarshalJSON Uses

func (p ModuleParam) MarshalJSON() ([]byte, error)

func (ModuleParam) Register Uses

func (p ModuleParam) Register(s *Session)

func (ModuleParam) Validate Uses

func (p ModuleParam) Validate(value string) (error, interface{})

type ParamType Uses

type ParamType int

type Prompt Uses

type Prompt struct {

func NewPrompt Uses

func NewPrompt() Prompt

func (Prompt) Render Uses

func (p Prompt) Render(s *Session) string

type Session Uses

type Session struct {
    Options   core.Options      `json:"options"`
    Interface *network.Endpoint `json:"interface"`
    Gateway   *network.Endpoint `json:"gateway"`
    Env       *Environment      `json:"env"`
    Lan       *network.LAN      `json:"lan"`
    WiFi      *network.WiFi     `json:"wifi"`
    BLE       *network.BLE      `json:"ble"`
    Queue     *packets.Queue    `json:"packets"`
    StartedAt time.Time         `json:"started_at"`
    Active    bool              `json:"active"`
    GPS       nmea.GNGGA        `json:"gps"`
    Modules   ModuleList        `json:"modules"`

    Input          *readline.Instance       `json:"-"`
    Prompt         Prompt                   `json:"-"`
    CoreHandlers   []CommandHandler         `json:"-"`
    Events         *EventPool               `json:"-"`
    UnkCmdCallback UnknownCommandCallback   `json:"-"`
    Firewall       firewall.FirewallManager `json:"-"`

func New Uses

func New() (*Session, error)

func (*Session) Close Uses

func (s *Session) Close()

func (*Session) FindMAC Uses

func (s *Session) FindMAC(ip net.IP, probe bool) (net.HardwareAddr, error)

func (*Session) IsOn Uses

func (s *Session) IsOn(moduleName string) bool

func (*Session) Lock Uses

func (s *Session) Lock()

func (*Session) Module Uses

func (s *Session) Module(name string) (err error, mod Module)

func (*Session) ReadLine Uses

func (s *Session) ReadLine() (string, error)

func (*Session) Refresh Uses

func (s *Session) Refresh()

func (*Session) Register Uses

func (s *Session) Register(mod Module) error

func (*Session) Run Uses

func (s *Session) Run(line string) error

func (*Session) RunCaplet Uses

func (s *Session) RunCaplet(filename string) error

func (*Session) Skip Uses

func (s *Session) Skip(ip net.IP) bool

func (*Session) Start Uses

func (s *Session) Start() error

func (*Session) Unlock Uses

func (s *Session) Unlock()

type SessionModule Uses

type SessionModule struct {
    Name       string        `json:"name"`
    Session    *Session      `json:"-"`
    Started    bool          `json:"started"`
    StatusLock *sync.RWMutex `json:"-"`
    // contains filtered or unexported fields

func NewSessionModule Uses

func NewSessionModule(name string, s *Session) SessionModule

func (*SessionModule) AddHandler Uses

func (m *SessionModule) AddHandler(h ModuleHandler)

func (*SessionModule) AddParam Uses

func (m *SessionModule) AddParam(p *ModuleParam) *ModuleParam

func (SessionModule) BoolParam Uses

func (m SessionModule) BoolParam(name string) (error, bool)

func (*SessionModule) Debug Uses

func (m *SessionModule) Debug(format string, args ...interface{})

func (SessionModule) DecParam Uses

func (m SessionModule) DecParam(name string) (error, float64)

func (*SessionModule) Error Uses

func (m *SessionModule) Error(format string, args ...interface{})

func (*SessionModule) Fatal Uses

func (m *SessionModule) Fatal(format string, args ...interface{})

func (*SessionModule) Handlers Uses

func (m *SessionModule) Handlers() []ModuleHandler

func (SessionModule) IPParam Uses

func (m SessionModule) IPParam(name string) (error, net.IP)

func (*SessionModule) Info Uses

func (m *SessionModule) Info(format string, args ...interface{})

func (SessionModule) IntParam Uses

func (m SessionModule) IntParam(name string) (error, int)

func (SessionModule) ListParam Uses

func (m SessionModule) ListParam(name string) (err error, values []string)

func (*SessionModule) Param Uses

func (m *SessionModule) Param(name string) *ModuleParam

func (*SessionModule) Parameters Uses

func (m *SessionModule) Parameters() map[string]*ModuleParam

func (*SessionModule) Running Uses

func (m *SessionModule) Running() bool

func (*SessionModule) SetRunning Uses

func (m *SessionModule) SetRunning(running bool, cb func()) error

func (SessionModule) StringParam Uses

func (m SessionModule) StringParam(name string) (error, string)

func (*SessionModule) Warning Uses

func (m *SessionModule) Warning(format string, args ...interface{})

type UnknownCommandCallback Uses

type UnknownCommandCallback func(cmd string) bool

Package session imports 32 packages (graph) and is imported by 47 packages. Updated 2019-02-18. Refresh now. Tools for package owners.