diff --git a/pcap/pcap.go b/pcap/pcap.go new file mode 100644 index 0000000..73460c1 --- /dev/null +++ b/pcap/pcap.go @@ -0,0 +1,120 @@ +package pcap + +import ( + "bufio" + "bytes" + "encoding/binary" + "errors" + "fmt" + "io" + "time" +) + +// LinkType describes the contents of each packet in a pcap. +type LinkType uint32 + +// Some of the more commonly used LinkTypes. +const ( + LinkEthernet LinkType = 1 + LinkRaw LinkType = 101 +) + +// Reader extracts packets from a pcap file. +type Reader struct { + LinkType LinkType + + r io.Reader + order binary.ByteOrder + tmult int64 +} + +// Packet is one raw packet and its metadata. +type Packet struct { + Timestamp time.Time + Length int + Bytes []byte +} + +// NewReader returns a new Reader that decodes pcap data from r. +func NewReader(r io.Reader) (*Reader, error) { + ret := &Reader{ + r: bufio.NewReader(r), + order: binary.LittleEndian, + } + + header := struct { + Magic uint32 + Major uint16 + Minor uint16 + // Timezone correction and time accuracy - both 0 in practice. + Ignored uint64 + Snaplen uint32 + Type uint32 + }{} + + bs := make([]byte, binary.Size(header)) + if _, err := io.ReadFull(ret.r, bs); err != nil { + return nil, fmt.Errorf("reading pcap header: %s", err) + } + + // Annoyingly, the header encodings are defined in terms of "same" + // or "opposite" endian, rather than in absolute terms, so reading + // the magic alone (as is intended) doesn't let us figure out what + // endianness to use. However, we can cheat and look at the + // major/minor version numbers instead. Try little-endian first, + // since that's more common these days. + if err := binary.Read(bytes.NewBuffer(bs), ret.order, &header); err != nil { + return nil, err + } + if header.Major == 0x200 && header.Minor == 0x400 { + // Byte order was wrong, read again + ret.order = binary.BigEndian + if err := binary.Read(bytes.NewBuffer(bs), ret.order, &header); err != nil { + return nil, err + } + } + fmt.Printf("%x\n", header.Magic) + switch header.Magic { + case 0xa1b2c3d4: + // Timestamps are (sec, usec) + ret.tmult = 1000 + case 0xa1b23c4d: + // Timestamps are (sec, nsec) + ret.tmult = 1 + default: + return nil, errors.New("bad magic") + } + + if header.Major != 2 || header.Minor != 4 { + return nil, fmt.Errorf("Unknown pcap version %d.%d", header.Major, header.Minor) + } + + ret.LinkType = LinkType(header.Type) + + return ret, nil +} + +// Next returns the next packet in r. +func (r *Reader) Next() (*Packet, error) { + hdr := struct { + Sec uint32 + SubSec uint32 + Len uint32 + OrigLen uint32 + }{} + + if err := binary.Read(r.r, r.order, &hdr); err != nil { + return nil, err + } + + bs := make([]byte, hdr.Len) + if _, err := io.ReadFull(r.r, bs); err != nil { + return nil, err + } + + return &Packet{ + Timestamp: time.Unix(int64(hdr.Sec), r.tmult*int64(hdr.SubSec)), + Length: int(hdr.OrigLen), + Bytes: bs, + }, nil +} diff --git a/pcap/pcap.test b/pcap/pcap.test new file mode 100755 index 0000000..f75335d Binary files /dev/null and b/pcap/pcap.test differ diff --git a/pcap/pcap_test.go b/pcap/pcap_test.go new file mode 100644 index 0000000..34cc1d4 --- /dev/null +++ b/pcap/pcap_test.go @@ -0,0 +1,53 @@ +package pcap + +import ( + "fmt" + "io" + "io/ioutil" + "os" + "testing" + + "github.com/kr/pretty" +) + +func TestFiles(t *testing.T) { + for _, fname := range []string{"usec", "nsec"} { + f, err := os.Open(fmt.Sprintf("testdata/%s.pcap", fname)) + if err != nil { + t.Fatalf("Opening test input file: %s", err) + } + r, err := NewReader(f) + if err != nil { + t.Fatalf("Creating pcap reader: %s", err) + } + if r.LinkType != LinkEthernet { + t.Errorf("Expected link type %d, got %d", LinkEthernet, r.LinkType) + } + pkts := []*Packet{} + ReadLoop: + for { + pkt, err := r.Next() + if err != nil { + if err == io.EOF { + break ReadLoop + } + t.Fatalf("Unexpected error reading packets: %s", err) + } + pkts = append(pkts, pkt) + } + res := pretty.Sprintf("%# v", pkts) + expectedFile := fmt.Sprintf("testdata/%s.parsed", fname) + expected, err := ioutil.ReadFile(expectedFile) + if err != nil { + t.Fatalf("Reading expected file: %s", err) + } + if res != string(expected) { + if os.Getenv("UPDATE_TESTDATA") != "" { + ioutil.WriteFile(expectedFile, []byte(res), 0644) + t.Errorf("%s.pcap didn't decode to %s.parsed (updated %s.parsed)", fname, fname, fname) + } else { + t.Fatalf("%s.pcap didn't decode to %s.parsed (rerun with UPDATE_TESTDATA=1 to get diff)", fname, fname) + } + } + } +} diff --git a/pcap/testdata/nsec.parsed b/pcap/testdata/nsec.parsed new file mode 100644 index 0000000..be2ee67 --- /dev/null +++ b/pcap/testdata/nsec.parsed @@ -0,0 +1,83 @@ +[]*pcap.Packet{ + &pcap.Packet{ + Timestamp: time.Time{ + sec: 63592222913, + nsec: 232810547, + loc: &time.Location{}, + }, + Length: 590, + Bytes: {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd0, 0x50, 0x99, 0x4e, 0x5, 0x57, 0x8, 0x0, 0x45, 0x0, 0x2, 0x40, 0x0, 0x1, 0x0, 0x0, 0x14, 0x11, 0xa4, 0xad, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0x0, 0x44, 0x0, 0x43, 0x2, 0x2c, 0x39, 0x1e, 0x1, 0x1, 0x6, 0x0, 0x9b, 0x4e, 0x5, 0x57, 0x0, 0x8, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd0, 0x50, 0x99, 0x4e, 0x5, 0x57, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x63, 0x82, 0x53, 0x63, 0x35, 0x1, 0x1, 0x37, 0x24, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0xb, 0xc, 0xd, 0xf, 0x10, 0x11, 0x12, 0x16, 0x17, 0x1c, 0x28, 0x29, 0x2a, 0x2b, 0x32, 0x33, 0x36, 0x3a, 0x3b, 0x3c, 0x42, 0x43, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x39, 0x2, 0x4, 0xec, 0x61, 0x11, 0x0, 0x0, 0x2, 0x0, 0x3, 0x0, 0x4, 0x0, 0x5, 0x0, 0x6, 0x0, 0x7, 0x0, 0x8, 0x0, 0x9, 0x5d, 0x2, 0x0, 0x0, 0x5e, 0x3, 0x1, 0x2, 0x1, 0x3c, 0x20, 0x50, 0x58, 0x45, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x3a, 0x41, 0x72, 0x63, 0x68, 0x3a, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3a, 0x55, 0x4e, 0x44, 0x49, 0x3a, 0x30, 0x30, 0x32, 0x30, 0x30, 0x31, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, + }, + &pcap.Packet{ + Timestamp: time.Time{ + sec: 63592222913, + nsec: 233463264, + loc: &time.Location{}, + }, + Length: 363, + Bytes: {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xce, 0xe7, 0x7b, 0xef, 0x45, 0xf7, 0x8, 0x0, 0x45, 0x0, 0x1, 0x5d, 0xf1, 0xbb, 0x40, 0x0, 0x40, 0x11, 0x77, 0x22, 0xc0, 0xa8, 0x10, 0xa, 0xff, 0xff, 0xff, 0xff, 0x0, 0x43, 0x0, 0x44, 0x1, 0x49, 0xd2, 0xc, 0x2, 0x1, 0x6, 0x0, 0x9b, 0x4e, 0x5, 0x57, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd0, 0x50, 0x99, 0x4e, 0x5, 0x57, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x63, 0x82, 0x53, 0x63, 0x35, 0x1, 0x2, 0x36, 0x4, 0xc0, 0xa8, 0x10, 0xa, 0x3c, 0x9, 0x50, 0x58, 0x45, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x11, 0x0, 0x0, 0x2, 0x0, 0x3, 0x0, 0x4, 0x0, 0x5, 0x0, 0x6, 0x0, 0x7, 0x0, 0x8, 0x0, 0x9, 0x2b, 0x27, 0x6, 0x1, 0x3, 0x8, 0x7, 0x80, 0x0, 0x1, 0xc0, 0xa8, 0x10, 0xa, 0x9, 0xc, 0x80, 0x0, 0x9, 0x50, 0x69, 0x78, 0x69, 0x65, 0x63, 0x6f, 0x72, 0x65, 0xa, 0xa, 0x0, 0x50, 0x69, 0x78, 0x69, 0x65, 0x63, 0x6f, 0x72, 0x65, 0xff, 0xff}, + }, + &pcap.Packet{ + Timestamp: time.Time{ + sec: 63592222916, + nsec: 119500748, + loc: &time.Location{}, + }, + Length: 360, + Bytes: {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x52, 0x54, 0x0, 0x98, 0x2b, 0x65, 0x8, 0x0, 0x45, 0xc0, 0x1, 0x5a, 0xc0, 0xdb, 0x0, 0x0, 0x40, 0x11, 0xe7, 0x4e, 0xc0, 0xa8, 0x10, 0x1, 0xff, 0xff, 0xff, 0xff, 0x0, 0x43, 0x0, 0x44, 0x1, 0x46, 0x99, 0x89, 0x2, 0x1, 0x6, 0x0, 0x9b, 0x4e, 0x5, 0x57, 0x0, 0x8, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0, 0xa8, 0x10, 0xc, 0xc0, 0xa8, 0x10, 0x1, 0x0, 0x0, 0x0, 0x0, 0xd0, 0x50, 0x99, 0x4e, 0x5, 0x57, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x63, 0x82, 0x53, 0x63, 0x35, 0x1, 0x2, 0x36, 0x4, 0xc0, 0xa8, 0x10, 0x1, 0x33, 0x4, 0x0, 0x0, 0xe, 0x10, 0x3a, 0x4, 0x0, 0x0, 0x7, 0x8, 0x3b, 0x4, 0x0, 0x0, 0xc, 0x4e, 0x1, 0x4, 0xff, 0xff, 0xff, 0x0, 0x1c, 0x4, 0xc0, 0xa8, 0x10, 0xff, 0x3, 0x4, 0xc0, 0xa8, 0x10, 0x1, 0x6, 0x4, 0xc0, 0xa8, 0x10, 0x1, 0xf, 0x10, 0x68, 0x6f, 0x6d, 0x65, 0x2e, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x65, 0x2e, 0x74, 0x66, 0xc, 0x6, 0x63, 0x6f, 0x72, 0x65, 0x30, 0x31, 0xff}, + }, + &pcap.Packet{ + Timestamp: time.Time{ + sec: 63592222921, + nsec: 251264962, + loc: &time.Location{}, + }, + Length: 590, + Bytes: {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd0, 0x50, 0x99, 0x4e, 0x5, 0x57, 0x8, 0x0, 0x45, 0x0, 0x2, 0x40, 0x0, 0x2, 0x0, 0x0, 0x14, 0x11, 0xa4, 0xac, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0x0, 0x44, 0x0, 0x43, 0x2, 0x2c, 0xd0, 0x14, 0x1, 0x1, 0x6, 0x0, 0x9b, 0x4e, 0x5, 0x57, 0x0, 0x8, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd0, 0x50, 0x99, 0x4e, 0x5, 0x57, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x63, 0x82, 0x53, 0x63, 0x35, 0x1, 0x3, 0x32, 0x4, 0xc0, 0xa8, 0x10, 0xc, 0x37, 0x24, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0xb, 0xc, 0xd, 0xf, 0x10, 0x11, 0x12, 0x16, 0x17, 0x1c, 0x28, 0x29, 0x2a, 0x2b, 0x32, 0x33, 0x36, 0x3a, 0x3b, 0x3c, 0x42, 0x43, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x39, 0x2, 0x4, 0xec, 0x36, 0x4, 0xc0, 0xa8, 0x10, 0x1, 0x61, 0x11, 0x0, 0x0, 0x2, 0x0, 0x3, 0x0, 0x4, 0x0, 0x5, 0x0, 0x6, 0x0, 0x7, 0x0, 0x8, 0x0, 0x9, 0x5d, 0x2, 0x0, 0x0, 0x5e, 0x3, 0x1, 0x2, 0x1, 0x3c, 0x20, 0x50, 0x58, 0x45, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x3a, 0x41, 0x72, 0x63, 0x68, 0x3a, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3a, 0x55, 0x4e, 0x44, 0x49, 0x3a, 0x30, 0x30, 0x32, 0x30, 0x30, 0x31, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, + }, + &pcap.Packet{ + Timestamp: time.Time{ + sec: 63592222921, + nsec: 334685833, + loc: &time.Location{}, + }, + Length: 360, + Bytes: {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x52, 0x54, 0x0, 0x98, 0x2b, 0x65, 0x8, 0x0, 0x45, 0xc0, 0x1, 0x5a, 0xcf, 0xec, 0x0, 0x0, 0x40, 0x11, 0xd8, 0x3d, 0xc0, 0xa8, 0x10, 0x1, 0xff, 0xff, 0xff, 0xff, 0x0, 0x43, 0x0, 0x44, 0x1, 0x46, 0x96, 0x89, 0x2, 0x1, 0x6, 0x0, 0x9b, 0x4e, 0x5, 0x57, 0x0, 0x8, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0, 0xa8, 0x10, 0xc, 0xc0, 0xa8, 0x10, 0x1, 0x0, 0x0, 0x0, 0x0, 0xd0, 0x50, 0x99, 0x4e, 0x5, 0x57, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x63, 0x82, 0x53, 0x63, 0x35, 0x1, 0x5, 0x36, 0x4, 0xc0, 0xa8, 0x10, 0x1, 0x33, 0x4, 0x0, 0x0, 0xe, 0x10, 0x3a, 0x4, 0x0, 0x0, 0x7, 0x8, 0x3b, 0x4, 0x0, 0x0, 0xc, 0x4e, 0x1, 0x4, 0xff, 0xff, 0xff, 0x0, 0x1c, 0x4, 0xc0, 0xa8, 0x10, 0xff, 0x3, 0x4, 0xc0, 0xa8, 0x10, 0x1, 0x6, 0x4, 0xc0, 0xa8, 0x10, 0x1, 0xf, 0x10, 0x68, 0x6f, 0x6d, 0x65, 0x2e, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x65, 0x2e, 0x74, 0x66, 0xc, 0x6, 0x63, 0x6f, 0x72, 0x65, 0x30, 0x31, 0xff}, + }, + &pcap.Packet{ + Timestamp: time.Time{ + sec: 63592222921, + nsec: 346522476, + loc: &time.Location{}, + }, + Length: 590, + Bytes: {0xce, 0xe7, 0x7b, 0xef, 0x45, 0xf7, 0xd0, 0x50, 0x99, 0x4e, 0x5, 0x57, 0x8, 0x0, 0x45, 0x0, 0x2, 0x40, 0x0, 0x3, 0x0, 0x0, 0x14, 0x11, 0x3, 0x44, 0xc0, 0xa8, 0x10, 0xc, 0xc0, 0xa8, 0x10, 0xa, 0xf, 0xab, 0xf, 0xab, 0x2, 0x2c, 0x1b, 0x40, 0x1, 0x1, 0x6, 0x0, 0x9b, 0x4e, 0x5, 0x57, 0x0, 0x8, 0x0, 0x0, 0xc0, 0xa8, 0x10, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd0, 0x50, 0x99, 0x4e, 0x5, 0x57, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x63, 0x82, 0x53, 0x63, 0x35, 0x1, 0x3, 0x37, 0x24, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0xb, 0xc, 0xd, 0xf, 0x10, 0x11, 0x12, 0x16, 0x17, 0x1c, 0x28, 0x29, 0x2a, 0x2b, 0x32, 0x33, 0x36, 0x3a, 0x3b, 0x3c, 0x42, 0x43, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x39, 0x2, 0x4, 0xec, 0x61, 0x11, 0x0, 0x0, 0x2, 0x0, 0x3, 0x0, 0x4, 0x0, 0x5, 0x0, 0x6, 0x0, 0x7, 0x0, 0x8, 0x0, 0x9, 0x5d, 0x2, 0x0, 0x0, 0x5e, 0x3, 0x1, 0x2, 0x1, 0x3c, 0x20, 0x50, 0x58, 0x45, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x3a, 0x41, 0x72, 0x63, 0x68, 0x3a, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3a, 0x55, 0x4e, 0x44, 0x49, 0x3a, 0x30, 0x30, 0x32, 0x30, 0x30, 0x31, 0x2b, 0x7, 0x47, 0x4, 0x80, 0x0, 0x0, 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, + }, + &pcap.Packet{ + Timestamp: time.Time{ + sec: 63592222921, + nsec: 346850983, + loc: &time.Location{}, + }, + Length: 363, + Bytes: {0xd0, 0x50, 0x99, 0x4e, 0x5, 0x57, 0xce, 0xe7, 0x7b, 0xef, 0x45, 0xf7, 0x8, 0x0, 0x45, 0x0, 0x1, 0x5d, 0x92, 0x38, 0x40, 0x0, 0x40, 0x11, 0x5, 0xf1, 0xc0, 0xa8, 0x10, 0xa, 0xc0, 0xa8, 0x10, 0xc, 0xf, 0xab, 0xf, 0xab, 0x1, 0x49, 0xa2, 0xc1, 0x2, 0x1, 0x6, 0x0, 0x9b, 0x4e, 0x5, 0x57, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0, 0xa8, 0x10, 0xc, 0xc0, 0xa8, 0x10, 0xa, 0x0, 0x0, 0x0, 0x0, 0xd0, 0x50, 0x99, 0x4e, 0x5, 0x57, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x62, 0x6f, 0x6f, 0x74, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x63, 0x82, 0x53, 0x63, 0x35, 0x1, 0x5, 0x36, 0x4, 0xc0, 0xa8, 0x10, 0xa, 0x3c, 0x9, 0x50, 0x58, 0x45, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x11, 0x0, 0x0, 0x2, 0x0, 0x3, 0x0, 0x4, 0x0, 0x5, 0x0, 0x6, 0x0, 0x7, 0x0, 0x8, 0x0, 0x9, 0x2b, 0x7, 0x47, 0x4, 0x80, 0x0, 0x0, 0x0, 0xff, 0xd2, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x31, 0x39, 0x32, 0x2e, 0x31, 0x36, 0x38, 0x2e, 0x31, 0x36, 0x2e, 0x31, 0x30, 0x3a, 0x37, 0x30, 0x2f, 0xd3, 0x4, 0x0, 0x0, 0x0, 0x5, 0xff}, + }, + &pcap.Packet{ + Timestamp: time.Time{ + sec: 63592222922, + nsec: 338314270, + loc: &time.Location{}, + }, + Length: 63, + Bytes: {0xce, 0xe7, 0x7b, 0xef, 0x45, 0xf7, 0xd0, 0x50, 0x99, 0x4e, 0x5, 0x57, 0x8, 0x0, 0x45, 0x0, 0x0, 0x31, 0x0, 0x4, 0x0, 0x0, 0x14, 0x11, 0x5, 0x52, 0xc0, 0xa8, 0x10, 0xc, 0xc0, 0xa8, 0x10, 0xa, 0x8, 0x16, 0x0, 0x45, 0x0, 0x1d, 0xcc, 0x42, 0x0, 0x1, 0x62, 0x6f, 0x6f, 0x74, 0x0, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x0, 0x74, 0x73, 0x69, 0x7a, 0x65, 0x0, 0x30, 0x0}, + }, + &pcap.Packet{ + Timestamp: time.Time{ + sec: 63592222922, + nsec: 338724381, + loc: &time.Location{}, + }, + Length: 68, + Bytes: {0xce, 0xe7, 0x7b, 0xef, 0x45, 0xf7, 0xd0, 0x50, 0x99, 0x4e, 0x5, 0x57, 0x8, 0x0, 0x45, 0x0, 0x0, 0x36, 0x0, 0x6, 0x0, 0x0, 0x14, 0x11, 0x5, 0x4b, 0xc0, 0xa8, 0x10, 0xc, 0xc0, 0xa8, 0x10, 0xa, 0x8, 0x17, 0x0, 0x45, 0x0, 0x22, 0xf5, 0xa7, 0x0, 0x1, 0x62, 0x6f, 0x6f, 0x74, 0x0, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x0, 0x62, 0x6c, 0x6b, 0x73, 0x69, 0x7a, 0x65, 0x0, 0x31, 0x34, 0x35, 0x36, 0x0}, + }, +} \ No newline at end of file diff --git a/pcap/testdata/nsec.pcap b/pcap/testdata/nsec.pcap new file mode 100644 index 0000000..7890d4d Binary files /dev/null and b/pcap/testdata/nsec.pcap differ diff --git a/pcap/testdata/usec.parsed b/pcap/testdata/usec.parsed new file mode 100644 index 0000000..2d6ceef --- /dev/null +++ b/pcap/testdata/usec.parsed @@ -0,0 +1,83 @@ +[]*pcap.Packet{ + &pcap.Packet{ + Timestamp: time.Time{ + sec: 63592222913, + nsec: 232810000, + loc: &time.Location{}, + }, + Length: 590, + Bytes: {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd0, 0x50, 0x99, 0x4e, 0x5, 0x57, 0x8, 0x0, 0x45, 0x0, 0x2, 0x40, 0x0, 0x1, 0x0, 0x0, 0x14, 0x11, 0xa4, 0xad, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0x0, 0x44, 0x0, 0x43, 0x2, 0x2c, 0x39, 0x1e, 0x1, 0x1, 0x6, 0x0, 0x9b, 0x4e, 0x5, 0x57, 0x0, 0x8, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd0, 0x50, 0x99, 0x4e, 0x5, 0x57, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x63, 0x82, 0x53, 0x63, 0x35, 0x1, 0x1, 0x37, 0x24, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0xb, 0xc, 0xd, 0xf, 0x10, 0x11, 0x12, 0x16, 0x17, 0x1c, 0x28, 0x29, 0x2a, 0x2b, 0x32, 0x33, 0x36, 0x3a, 0x3b, 0x3c, 0x42, 0x43, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x39, 0x2, 0x4, 0xec, 0x61, 0x11, 0x0, 0x0, 0x2, 0x0, 0x3, 0x0, 0x4, 0x0, 0x5, 0x0, 0x6, 0x0, 0x7, 0x0, 0x8, 0x0, 0x9, 0x5d, 0x2, 0x0, 0x0, 0x5e, 0x3, 0x1, 0x2, 0x1, 0x3c, 0x20, 0x50, 0x58, 0x45, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x3a, 0x41, 0x72, 0x63, 0x68, 0x3a, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3a, 0x55, 0x4e, 0x44, 0x49, 0x3a, 0x30, 0x30, 0x32, 0x30, 0x30, 0x31, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, + }, + &pcap.Packet{ + Timestamp: time.Time{ + sec: 63592222913, + nsec: 233463000, + loc: &time.Location{}, + }, + Length: 363, + Bytes: {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xce, 0xe7, 0x7b, 0xef, 0x45, 0xf7, 0x8, 0x0, 0x45, 0x0, 0x1, 0x5d, 0xf1, 0xbb, 0x40, 0x0, 0x40, 0x11, 0x77, 0x22, 0xc0, 0xa8, 0x10, 0xa, 0xff, 0xff, 0xff, 0xff, 0x0, 0x43, 0x0, 0x44, 0x1, 0x49, 0xd2, 0xc, 0x2, 0x1, 0x6, 0x0, 0x9b, 0x4e, 0x5, 0x57, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd0, 0x50, 0x99, 0x4e, 0x5, 0x57, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x63, 0x82, 0x53, 0x63, 0x35, 0x1, 0x2, 0x36, 0x4, 0xc0, 0xa8, 0x10, 0xa, 0x3c, 0x9, 0x50, 0x58, 0x45, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x11, 0x0, 0x0, 0x2, 0x0, 0x3, 0x0, 0x4, 0x0, 0x5, 0x0, 0x6, 0x0, 0x7, 0x0, 0x8, 0x0, 0x9, 0x2b, 0x27, 0x6, 0x1, 0x3, 0x8, 0x7, 0x80, 0x0, 0x1, 0xc0, 0xa8, 0x10, 0xa, 0x9, 0xc, 0x80, 0x0, 0x9, 0x50, 0x69, 0x78, 0x69, 0x65, 0x63, 0x6f, 0x72, 0x65, 0xa, 0xa, 0x0, 0x50, 0x69, 0x78, 0x69, 0x65, 0x63, 0x6f, 0x72, 0x65, 0xff, 0xff}, + }, + &pcap.Packet{ + Timestamp: time.Time{ + sec: 63592222916, + nsec: 119500000, + loc: &time.Location{}, + }, + Length: 360, + Bytes: {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x52, 0x54, 0x0, 0x98, 0x2b, 0x65, 0x8, 0x0, 0x45, 0xc0, 0x1, 0x5a, 0xc0, 0xdb, 0x0, 0x0, 0x40, 0x11, 0xe7, 0x4e, 0xc0, 0xa8, 0x10, 0x1, 0xff, 0xff, 0xff, 0xff, 0x0, 0x43, 0x0, 0x44, 0x1, 0x46, 0x99, 0x89, 0x2, 0x1, 0x6, 0x0, 0x9b, 0x4e, 0x5, 0x57, 0x0, 0x8, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0, 0xa8, 0x10, 0xc, 0xc0, 0xa8, 0x10, 0x1, 0x0, 0x0, 0x0, 0x0, 0xd0, 0x50, 0x99, 0x4e, 0x5, 0x57, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x63, 0x82, 0x53, 0x63, 0x35, 0x1, 0x2, 0x36, 0x4, 0xc0, 0xa8, 0x10, 0x1, 0x33, 0x4, 0x0, 0x0, 0xe, 0x10, 0x3a, 0x4, 0x0, 0x0, 0x7, 0x8, 0x3b, 0x4, 0x0, 0x0, 0xc, 0x4e, 0x1, 0x4, 0xff, 0xff, 0xff, 0x0, 0x1c, 0x4, 0xc0, 0xa8, 0x10, 0xff, 0x3, 0x4, 0xc0, 0xa8, 0x10, 0x1, 0x6, 0x4, 0xc0, 0xa8, 0x10, 0x1, 0xf, 0x10, 0x68, 0x6f, 0x6d, 0x65, 0x2e, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x65, 0x2e, 0x74, 0x66, 0xc, 0x6, 0x63, 0x6f, 0x72, 0x65, 0x30, 0x31, 0xff}, + }, + &pcap.Packet{ + Timestamp: time.Time{ + sec: 63592222921, + nsec: 251264000, + loc: &time.Location{}, + }, + Length: 590, + Bytes: {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd0, 0x50, 0x99, 0x4e, 0x5, 0x57, 0x8, 0x0, 0x45, 0x0, 0x2, 0x40, 0x0, 0x2, 0x0, 0x0, 0x14, 0x11, 0xa4, 0xac, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0x0, 0x44, 0x0, 0x43, 0x2, 0x2c, 0xd0, 0x14, 0x1, 0x1, 0x6, 0x0, 0x9b, 0x4e, 0x5, 0x57, 0x0, 0x8, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd0, 0x50, 0x99, 0x4e, 0x5, 0x57, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x63, 0x82, 0x53, 0x63, 0x35, 0x1, 0x3, 0x32, 0x4, 0xc0, 0xa8, 0x10, 0xc, 0x37, 0x24, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0xb, 0xc, 0xd, 0xf, 0x10, 0x11, 0x12, 0x16, 0x17, 0x1c, 0x28, 0x29, 0x2a, 0x2b, 0x32, 0x33, 0x36, 0x3a, 0x3b, 0x3c, 0x42, 0x43, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x39, 0x2, 0x4, 0xec, 0x36, 0x4, 0xc0, 0xa8, 0x10, 0x1, 0x61, 0x11, 0x0, 0x0, 0x2, 0x0, 0x3, 0x0, 0x4, 0x0, 0x5, 0x0, 0x6, 0x0, 0x7, 0x0, 0x8, 0x0, 0x9, 0x5d, 0x2, 0x0, 0x0, 0x5e, 0x3, 0x1, 0x2, 0x1, 0x3c, 0x20, 0x50, 0x58, 0x45, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x3a, 0x41, 0x72, 0x63, 0x68, 0x3a, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3a, 0x55, 0x4e, 0x44, 0x49, 0x3a, 0x30, 0x30, 0x32, 0x30, 0x30, 0x31, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, + }, + &pcap.Packet{ + Timestamp: time.Time{ + sec: 63592222921, + nsec: 334685000, + loc: &time.Location{}, + }, + Length: 360, + Bytes: {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x52, 0x54, 0x0, 0x98, 0x2b, 0x65, 0x8, 0x0, 0x45, 0xc0, 0x1, 0x5a, 0xcf, 0xec, 0x0, 0x0, 0x40, 0x11, 0xd8, 0x3d, 0xc0, 0xa8, 0x10, 0x1, 0xff, 0xff, 0xff, 0xff, 0x0, 0x43, 0x0, 0x44, 0x1, 0x46, 0x96, 0x89, 0x2, 0x1, 0x6, 0x0, 0x9b, 0x4e, 0x5, 0x57, 0x0, 0x8, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0, 0xa8, 0x10, 0xc, 0xc0, 0xa8, 0x10, 0x1, 0x0, 0x0, 0x0, 0x0, 0xd0, 0x50, 0x99, 0x4e, 0x5, 0x57, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x63, 0x82, 0x53, 0x63, 0x35, 0x1, 0x5, 0x36, 0x4, 0xc0, 0xa8, 0x10, 0x1, 0x33, 0x4, 0x0, 0x0, 0xe, 0x10, 0x3a, 0x4, 0x0, 0x0, 0x7, 0x8, 0x3b, 0x4, 0x0, 0x0, 0xc, 0x4e, 0x1, 0x4, 0xff, 0xff, 0xff, 0x0, 0x1c, 0x4, 0xc0, 0xa8, 0x10, 0xff, 0x3, 0x4, 0xc0, 0xa8, 0x10, 0x1, 0x6, 0x4, 0xc0, 0xa8, 0x10, 0x1, 0xf, 0x10, 0x68, 0x6f, 0x6d, 0x65, 0x2e, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x65, 0x2e, 0x74, 0x66, 0xc, 0x6, 0x63, 0x6f, 0x72, 0x65, 0x30, 0x31, 0xff}, + }, + &pcap.Packet{ + Timestamp: time.Time{ + sec: 63592222921, + nsec: 346522000, + loc: &time.Location{}, + }, + Length: 590, + Bytes: {0xce, 0xe7, 0x7b, 0xef, 0x45, 0xf7, 0xd0, 0x50, 0x99, 0x4e, 0x5, 0x57, 0x8, 0x0, 0x45, 0x0, 0x2, 0x40, 0x0, 0x3, 0x0, 0x0, 0x14, 0x11, 0x3, 0x44, 0xc0, 0xa8, 0x10, 0xc, 0xc0, 0xa8, 0x10, 0xa, 0xf, 0xab, 0xf, 0xab, 0x2, 0x2c, 0x1b, 0x40, 0x1, 0x1, 0x6, 0x0, 0x9b, 0x4e, 0x5, 0x57, 0x0, 0x8, 0x0, 0x0, 0xc0, 0xa8, 0x10, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd0, 0x50, 0x99, 0x4e, 0x5, 0x57, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x63, 0x82, 0x53, 0x63, 0x35, 0x1, 0x3, 0x37, 0x24, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0xb, 0xc, 0xd, 0xf, 0x10, 0x11, 0x12, 0x16, 0x17, 0x1c, 0x28, 0x29, 0x2a, 0x2b, 0x32, 0x33, 0x36, 0x3a, 0x3b, 0x3c, 0x42, 0x43, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x39, 0x2, 0x4, 0xec, 0x61, 0x11, 0x0, 0x0, 0x2, 0x0, 0x3, 0x0, 0x4, 0x0, 0x5, 0x0, 0x6, 0x0, 0x7, 0x0, 0x8, 0x0, 0x9, 0x5d, 0x2, 0x0, 0x0, 0x5e, 0x3, 0x1, 0x2, 0x1, 0x3c, 0x20, 0x50, 0x58, 0x45, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x3a, 0x41, 0x72, 0x63, 0x68, 0x3a, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3a, 0x55, 0x4e, 0x44, 0x49, 0x3a, 0x30, 0x30, 0x32, 0x30, 0x30, 0x31, 0x2b, 0x7, 0x47, 0x4, 0x80, 0x0, 0x0, 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, + }, + &pcap.Packet{ + Timestamp: time.Time{ + sec: 63592222921, + nsec: 346850000, + loc: &time.Location{}, + }, + Length: 363, + Bytes: {0xd0, 0x50, 0x99, 0x4e, 0x5, 0x57, 0xce, 0xe7, 0x7b, 0xef, 0x45, 0xf7, 0x8, 0x0, 0x45, 0x0, 0x1, 0x5d, 0x92, 0x38, 0x40, 0x0, 0x40, 0x11, 0x5, 0xf1, 0xc0, 0xa8, 0x10, 0xa, 0xc0, 0xa8, 0x10, 0xc, 0xf, 0xab, 0xf, 0xab, 0x1, 0x49, 0xa2, 0xc1, 0x2, 0x1, 0x6, 0x0, 0x9b, 0x4e, 0x5, 0x57, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0, 0xa8, 0x10, 0xc, 0xc0, 0xa8, 0x10, 0xa, 0x0, 0x0, 0x0, 0x0, 0xd0, 0x50, 0x99, 0x4e, 0x5, 0x57, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x62, 0x6f, 0x6f, 0x74, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x63, 0x82, 0x53, 0x63, 0x35, 0x1, 0x5, 0x36, 0x4, 0xc0, 0xa8, 0x10, 0xa, 0x3c, 0x9, 0x50, 0x58, 0x45, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x11, 0x0, 0x0, 0x2, 0x0, 0x3, 0x0, 0x4, 0x0, 0x5, 0x0, 0x6, 0x0, 0x7, 0x0, 0x8, 0x0, 0x9, 0x2b, 0x7, 0x47, 0x4, 0x80, 0x0, 0x0, 0x0, 0xff, 0xd2, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x31, 0x39, 0x32, 0x2e, 0x31, 0x36, 0x38, 0x2e, 0x31, 0x36, 0x2e, 0x31, 0x30, 0x3a, 0x37, 0x30, 0x2f, 0xd3, 0x4, 0x0, 0x0, 0x0, 0x5, 0xff}, + }, + &pcap.Packet{ + Timestamp: time.Time{ + sec: 63592222922, + nsec: 338314000, + loc: &time.Location{}, + }, + Length: 63, + Bytes: {0xce, 0xe7, 0x7b, 0xef, 0x45, 0xf7, 0xd0, 0x50, 0x99, 0x4e, 0x5, 0x57, 0x8, 0x0, 0x45, 0x0, 0x0, 0x31, 0x0, 0x4, 0x0, 0x0, 0x14, 0x11, 0x5, 0x52, 0xc0, 0xa8, 0x10, 0xc, 0xc0, 0xa8, 0x10, 0xa, 0x8, 0x16, 0x0, 0x45, 0x0, 0x1d, 0xcc, 0x42, 0x0, 0x1, 0x62, 0x6f, 0x6f, 0x74, 0x0, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x0, 0x74, 0x73, 0x69, 0x7a, 0x65, 0x0, 0x30, 0x0}, + }, + &pcap.Packet{ + Timestamp: time.Time{ + sec: 63592222922, + nsec: 338724000, + loc: &time.Location{}, + }, + Length: 68, + Bytes: {0xce, 0xe7, 0x7b, 0xef, 0x45, 0xf7, 0xd0, 0x50, 0x99, 0x4e, 0x5, 0x57, 0x8, 0x0, 0x45, 0x0, 0x0, 0x36, 0x0, 0x6, 0x0, 0x0, 0x14, 0x11, 0x5, 0x4b, 0xc0, 0xa8, 0x10, 0xc, 0xc0, 0xa8, 0x10, 0xa, 0x8, 0x17, 0x0, 0x45, 0x0, 0x22, 0xf5, 0xa7, 0x0, 0x1, 0x62, 0x6f, 0x6f, 0x74, 0x0, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x0, 0x62, 0x6c, 0x6b, 0x73, 0x69, 0x7a, 0x65, 0x0, 0x31, 0x34, 0x35, 0x36, 0x0}, + }, +} \ No newline at end of file diff --git a/pcap/testdata/usec.pcap b/pcap/testdata/usec.pcap new file mode 100644 index 0000000..7faf133 Binary files /dev/null and b/pcap/testdata/usec.pcap differ