Documentation ¶
Index ¶
- type ConversationInfo
- type DataFragments
- type DecoderAPI
- type StreamData
- func (s *StreamData) CaptureInfo() gopacket.CaptureInfo
- func (s *StreamData) Context() reassembly.AssemblerContext
- func (s *StreamData) Direction() reassembly.TCPFlowDirection
- func (s *StreamData) Network() gopacket.Flow
- func (s *StreamData) Raw() []byte
- func (s *StreamData) SetDirection(d reassembly.TCPFlowDirection)
- func (s *StreamData) Transport() gopacket.Flow
- type StreamDecoderAPI
- type StreamDecoderFactory
- type StreamDecoderInterface
- type TransportProtocol
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ConversationInfo ¶
type ConversationInfo struct { Data DataFragments Ident string FirstClientPacket time.Time FirstServerPacket time.Time ClientIP string ServerIP string ClientPort int32 ServerPort int32 }
ConversationInfo is wrapper structure for traffic sent over a Transport protocol to allow Transport agnostic decoding of data streams.
type DataFragments ¶
type DataFragments []dataFragment
DataFragments implements sort.Interface to sort data fragments based on their timestamps.
func (DataFragments) First ¶
func (d DataFragments) First() []byte
First returns the first fragment.
func (DataFragments) Less ¶
func (d DataFragments) Less(i, j int) bool
Less will check if the value at index i is less than the one at index j.
func (DataFragments) Size ¶
func (d DataFragments) Size() int
Size returns the fragments total data size.
type DecoderAPI ¶
type DecoderAPI interface { // PostInitFunc is called after the decoder has been initialized PostInitFunc() error // DeInitFunc is called prior to teardown DeInitFunc() error // GetName returns the name of the decoder GetName() string // SetWriter sets the netcap writer to use for the decoder SetWriter(io.AuditRecordWriter) // GetType returns the netcap type of the decoder GetType() types.Type // GetDescription returns the description of the decoder GetDescription() string // GetChan returns a channel to receive serialized audit records from the decoder GetChan() <-chan []byte // Destroy initiates teardown Destroy() (string, int64) // NumRecords returns the number of processed audit records NumRecords() int64 }
DecoderAPI describes functionality of a decoder.
type StreamData ¶
type StreamData struct { // raw binary data RawData []byte // tcp specific fields AssemblerContext reassembly.AssemblerContext Dir reassembly.TCPFlowDirection // udp specific fields CaptureInformation gopacket.CaptureInfo Net gopacket.Flow Trans gopacket.Flow }
StreamData is a payload fragment of data we received from a streamReader its contains the raw bytes as well an assembler context with timestamp information.
func (*StreamData) CaptureInfo ¶
func (s *StreamData) CaptureInfo() gopacket.CaptureInfo
CaptureInfo returns the capture information from gopacket
func (*StreamData) Context ¶
func (s *StreamData) Context() reassembly.AssemblerContext
Context returns the assembler context.
func (*StreamData) Direction ¶
func (s *StreamData) Direction() reassembly.TCPFlowDirection
Direction returns the direction of the flow.
func (*StreamData) Network ¶
func (s *StreamData) Network() gopacket.Flow
Network returns the network layer
func (*StreamData) Raw ¶
func (s *StreamData) Raw() []byte
Raw returns the raw byte slice that makes up the data fragment.
func (*StreamData) SetDirection ¶
func (s *StreamData) SetDirection(d reassembly.TCPFlowDirection)
SetDirection will update the flow direction.
func (*StreamData) Transport ¶
func (s *StreamData) Transport() gopacket.Flow
Transport returns the transport layer
type StreamDecoderAPI ¶
type StreamDecoderAPI interface { DecoderAPI // CanDecodeStream determines if this decoder can understand the protocol used CanDecodeStream(client []byte, server []byte) bool // GetReaderFactory returns a factory for processing streams of the current decoder GetReaderFactory() StreamDecoderFactory Transport() TransportProtocol }
StreamDecoderAPI describes an interface that all stream decoders need to implement this allows to supply a custom structure and maintain state for advanced protocol analysis.
type StreamDecoderFactory ¶
type StreamDecoderFactory interface { // New StreamDecoderInterface New(conversation *ConversationInfo) StreamDecoderInterface }
StreamDecoderFactory produces stream decoder instances.
type StreamDecoderInterface ¶
type StreamDecoderInterface interface {
// Decode parses the stream according to the identified protocol.
Decode()
}
StreamDecoderInterface is the interface for processing a bi-directional network connection.
type TransportProtocol ¶
type TransportProtocol int
TransportProtocol is a layer 4 protocol from the OSI model
const ( // TCP protocol TCP TransportProtocol = iota // UDP protocol UDP // All will invoke decoder for all transport protocols All )