class FlowTag::Packet

Attributes

data[R]
dport[R]
ip_dst[R]
ip_src[R]
length[R]
sport[R]
tcp_dport[R]
tcp_sport[R]
time[R]
udp_dport[R]
udp_sport[R]

Public Class Methods

new(time, data) click to toggle source
# File lib/flowtag/pcapparser.rb, line 60
def initialize(time, data)
        @time = time
        @data = data
        @length = data.length
        @ip = @tcp = @udp = false
        @ip_src = @ip_dst = @sport = @dport = @tcp_sport = @tcp_dport = @udp_sport = @udp_dport = nil
        @ip = (data[12,2].unpack("n")[0] == 0x0800) ? true : false
        offset = 14
        if @ip
                @ip_hlen = (data[offset,1].unpack("C")[0] & 0x0f) << 2
                @ip_proto = data[offset+9,1].unpack("C")[0]
                @ip_src, @ip_dst = data[offset+12,8].unpack("NN")
                offset += @ip_hlen
                @tcp = true if @ip_proto == 0x06
                @udp = true if @ip_proto == 0x11
                if @tcp
                        @sport, @dport = data[offset,4].unpack("nn")
                        @tcp_sport = @sport
                        @tcp_dport = @dport
                        @tcp_hlen = (data[offset+12,1].unpack("C")[0] >> 4) << 2
                        offset += @tcp_hlen
                elsif @udp
                        @sport, @dport = data[offset,4].unpack("nn")
                        @udp_sport = @sport
                        @udp_dport = @dport
                        offset += 8
                end
        end
        @data_offset = offset
end

Public Instance Methods

ip?() click to toggle source
# File lib/flowtag/pcapparser.rb, line 91
def ip?
        @ip
end
payload() click to toggle source
# File lib/flowtag/pcapparser.rb, line 103
def payload
        @data[@data_offset,10000]
end
tcp?() click to toggle source
# File lib/flowtag/pcapparser.rb, line 99
def tcp?
        @tcp
end
udp?() click to toggle source
# File lib/flowtag/pcapparser.rb, line 95
def udp?
        @udp
end