Package dpkt :: Module netflow
[hide private]
[frames] | no frames]

Source Code for Module dpkt.netflow

  1  # $Id: netflow.py 23 2006-11-08 15:45:33Z dugsong $ 
  2  # -*- coding: utf-8 -*- 
  3  """Cisco Netflow.""" 
  4  from __future__ import print_function 
  5  from __future__ import absolute_import 
  6   
  7  import struct 
  8   
  9  from . import dpkt 
 10  from .compat import compat_izip 
 11   
12 -class NetflowBase(dpkt.Packet):
13 """Base class for Cisco Netflow packets. 14 15 TODO: Longer class information.... 16 17 Attributes: 18 __hdr__: Header fields of NetflowBase. 19 TODO. 20 """ 21 22 __hdr__ = ( 23 ('version', 'H', 1), 24 ('count', 'H', 0), 25 ('sys_uptime', 'I', 0), 26 ('unix_sec', 'I', 0), 27 ('unix_nsec', 'I', 0) 28 ) 29
30 - def __len__(self):
31 return self.__hdr_len__ + (len(self.data[0]) * self.count)
32
33 - def __bytes__(self):
34 # for now, don't try to enforce any size limits 35 self.count = len(self.data) 36 return self.pack_hdr() + b''.join(map(bytes, self.data))
37
38 - def unpack(self, buf):
39 dpkt.Packet.unpack(self, buf) 40 buf = self.data 41 l = [] 42 while buf: 43 flow = self.NetflowRecord(buf) 44 l.append(flow) 45 buf = buf[len(flow):] 46 self.data = l
47
48 - class NetflowRecordBase(dpkt.Packet):
49 """Base class for netflow v1-v7 netflow records. 50 51 TODO: Longer class information.... 52 53 Attributes: 54 __hdr__: Header fields of NetflowRecordBase. 55 TODO. 56 """ 57 58 # performance optimizations
59 - def __len__(self):
60 # don't bother with data 61 return self.__hdr_len__
62
63 - def __bytes__(self):
64 # don't bother with data 65 return self.pack_hdr()
66
67 - def unpack(self, buf):
68 # don't bother with data 69 for k, v in compat_izip(self.__hdr_fields__, 70 struct.unpack(self.__hdr_fmt__, buf[:self.__hdr_len__])): 71 setattr(self, k, v) 72 self.data = b""
73 74
75 -class Netflow1(NetflowBase):
76 """Netflow Version 1. 77 78 TODO: Longer class information.... 79 80 Attributes: 81 __hdr__: Header fields of Netflow Version 1. 82 TODO. 83 """ 84
85 - class NetflowRecord(NetflowBase.NetflowRecordBase):
86 """Netflow v1 flow record. 87 88 TODO: Longer class information.... 89 90 Attributes: 91 __hdr__: Header fields of Netflow Version 1 flow record. 92 TODO. 93 """ 94 95 __hdr__ = ( 96 ('src_addr', 'I', 0), 97 ('dst_addr', 'I', 0), 98 ('next_hop', 'I', 0), 99 ('input_iface', 'H', 0), 100 ('output_iface', 'H', 0), 101 ('pkts_sent', 'I', 0), 102 ('bytes_sent', 'I', 0), 103 ('start_time', 'I', 0), 104 ('end_time', 'I', 0), 105 ('src_port', 'H', 0), 106 ('dst_port', 'H', 0), 107 ('pad1', 'H', 0), 108 ('ip_proto', 'B', 0), 109 ('tos', 'B', 0), 110 ('tcp_flags', 'B', 0), 111 ('pad2', 'B', 0), 112 ('pad3', 'H', 0), 113 ('reserved', 'I', 0) 114 )
115 116 117 # FYI, versions 2-4 don't appear to have ever seen the light of day. 118
119 -class Netflow5(NetflowBase):
120 """Netflow Version 5. 121 122 TODO: Longer class information.... 123 124 Attributes: 125 __hdr__: Header fields of Netflow Version 5. 126 TODO. 127 """ 128 129 __hdr__ = NetflowBase.__hdr__ + ( 130 ('flow_sequence', 'I', 0), 131 ('engine_type', 'B', 0), 132 ('engine_id', 'B', 0), 133 ('reserved', 'H', 0), 134 ) 135
136 - class NetflowRecord(NetflowBase.NetflowRecordBase):
137 """Netflow v5 flow record. 138 139 TODO: Longer class information.... 140 141 Attributes: 142 __hdr__: Header fields of Netflow Version 5 flow record. 143 TODO. 144 """ 145 146 __hdr__ = ( 147 ('src_addr', 'I', 0), 148 ('dst_addr', 'I', 0), 149 ('next_hop', 'I', 0), 150 ('input_iface', 'H', 0), 151 ('output_iface', 'H', 0), 152 ('pkts_sent', 'I', 0), 153 ('bytes_sent', 'I', 0), 154 ('start_time', 'I', 0), 155 ('end_time', 'I', 0), 156 ('src_port', 'H', 0), 157 ('dst_port', 'H', 0), 158 ('pad1', 'B', 0), 159 ('tcp_flags', 'B', 0), 160 ('ip_proto', 'B', 0), 161 ('tos', 'B', 0), 162 ('src_as', 'H', 0), 163 ('dst_as', 'H', 0), 164 ('src_mask', 'B', 0), 165 ('dst_mask', 'B', 0), 166 ('pad2', 'H', 0), 167 )
168 169
170 -class Netflow6(NetflowBase):
171 """Netflow Version 6. 172 173 XXX - unsupported by Cisco, but may be found in the field. 174 TODO: Longer class information.... 175 176 Attributes: 177 __hdr__: Header fields of Netflow Version 6. 178 TODO. 179 """ 180 181 __hdr__ = Netflow5.__hdr__ 182
183 - class NetflowRecord(NetflowBase.NetflowRecordBase):
184 """Netflow v6 flow record. 185 186 TODO: Longer class information.... 187 188 Attributes: 189 __hdr__: Header fields of Netflow Version 6 flow record. 190 TODO. 191 """ 192 193 __hdr__ = ( 194 ('src_addr', 'I', 0), 195 ('dst_addr', 'I', 0), 196 ('next_hop', 'I', 0), 197 ('input_iface', 'H', 0), 198 ('output_iface', 'H', 0), 199 ('pkts_sent', 'I', 0), 200 ('bytes_sent', 'I', 0), 201 ('start_time', 'I', 0), 202 ('end_time', 'I', 0), 203 ('src_port', 'H', 0), 204 ('dst_port', 'H', 0), 205 ('pad1', 'B', 0), 206 ('tcp_flags', 'B', 0), 207 ('ip_proto', 'B', 0), 208 ('tos', 'B', 0), 209 ('src_as', 'H', 0), 210 ('dst_as', 'H', 0), 211 ('src_mask', 'B', 0), 212 ('dst_mask', 'B', 0), 213 ('in_encaps', 'B', 0), 214 ('out_encaps', 'B', 0), 215 ('peer_nexthop', 'I', 0), 216 )
217 218
219 -class Netflow7(NetflowBase):
220 """Netflow Version 7. 221 222 TODO: Longer class information.... 223 224 Attributes: 225 __hdr__: Header fields of Netflow Version 7. 226 TODO. 227 """ 228 229 __hdr__ = NetflowBase.__hdr__ + ( 230 ('flow_sequence', 'I', 0), 231 ('reserved', 'I', 0), 232 ) 233
234 - class NetflowRecord(NetflowBase.NetflowRecordBase):
235 """Netflow v6 flow record. 236 237 TODO: Longer class information.... 238 239 Attributes: 240 __hdr__: Header fields of Netflow Version 6 flow record. 241 TODO. 242 """ 243 244 __hdr__ = ( 245 ('src_addr', 'I', 0), 246 ('dst_addr', 'I', 0), 247 ('next_hop', 'I', 0), 248 ('input_iface', 'H', 0), 249 ('output_iface', 'H', 0), 250 ('pkts_sent', 'I', 0), 251 ('bytes_sent', 'I', 0), 252 ('start_time', 'I', 0), 253 ('end_time', 'I', 0), 254 ('src_port', 'H', 0), 255 ('dst_port', 'H', 0), 256 ('flags', 'B', 0), 257 ('tcp_flags', 'B', 0), 258 ('ip_proto', 'B', 0), 259 ('tos', 'B', 0), 260 ('src_as', 'H', 0), 261 ('dst_as', 'H', 0), 262 ('src_mask', 'B', 0), 263 ('dst_mask', 'B', 0), 264 ('pad2', 'H', 0), 265 ('router_sc', 'I', 0), 266 )
267 268 # No support for v8 or v9 yet. 269 270 __sample_v1 = b"\x00\x01\x00\x18gza<B\x00\xfc\x1c$\x93\x08p\xac\x01 W\xc0\xa8c\xf7\n\x00\x02\x01\x00\x03\x00\n\x00\x00\x00\x01\x00\x00\x02(gz7,gz7,\\\x1b\x00P\xac\x01\x11,\x10\x00\x00\x00\x00\x04\x00\x1b\xac\x01\x18S\xac\x18\xd9\xaa\xc0\xa82\x02\x00\x03\x00\x19\x00\x00\x00\x01\x00\x00\x05\xdcgz7|gz7|\xd8\xe3\x00P\xac\x01\x06,\x10\x00\x00\x00\x00\x04\x00\x1b\xac\x01\x14\x18\xac\x18\x8d\xcd\xc0\xa82f\x00\x03\x00\x07\x00\x00\x00\x01\x00\x00\x05\xdcgz7\x90gz7\x90\x8a\x81\x17o\xac\x01\x066\x10\x00\x00\x00\x00\x04\x00\x03\xac\x0f'$\xac\x01\xe5\x1d\xc0\xa82\x06\x00\x04\x00\x1b\x00\x00\x00\x01\x00\x00\x02(gz:8gz:8\xa3Q\x126\xac)\x06\xfd\x18\x00\x00\x00\x00\x04\x00\x1b\xac\x01\x16E\xac#\x17\x8e\xc0\xa82\x06\x00\x03\x00\x1b\x00\x00\x00\x01\x00\x00\x02(gz:Lgz:L\xc9\xff\x00P\xac\x1f\x06\x86\x02\x00\x00\x00\x00\x03\x00\x1b\xac\r\t\xff\xac\x01\x99\x95\xc0\xa82\x06\x00\x04\x00\x1b\x00\x00\x00\x01\x00\x00\x05\xdcgz:Xgz:X\xee9\x00\x17\xac\x01\x06\xde\x10\x00\x00\x00\x00\x04\x00\x03\xac\x0eJ\xd8\xac\x01\xae/\xc0\xa82\x06\x00\x04\x00\x1b\x00\x00\x00\x01\x00\x00\x05\xdcgz:hgz:h\xb3n\x00\x15\xac\x01\x06\x81\x10\x00\x00\x00\x00\x04\x00\x1b\xac\x01#8\xac\x01\xd9*\xc0\xa82\x06\x00\x03\x00\x1b\x00\x00\x00\x01\x00\x00\x05\xdcgz:tgz:t\x00\x00\x83P\xac!\x01\xab\x10\x00\x00\x00\x00\x03\x00\x1b\xac\n`7\xac*\x93J\xc0\xa82\x06\x00\x04\x00\x1b\x00\x00\x00\x01\x00\x00\x05\xdcgz:tgz:t\x00\x00\x00\x00\xac\x012\xa9\x10\x00\x00\x00\x00\x04\x00\x07\xac\nG\x1f\xac\x01\xfdJ\xc0\xa82\x06\x00\x04\x00\x1b\x00\x00\x00\x01\x00\x00\x00(gz:\x88gz:\x88!\x99i\x87\xac\x1e\x06~\x02\x00\x00\x00\x00\x03\x00\x1b\xac\x01(\xc9\xac\x01B\xc4\xc0\xa82\x02\x00\x03\x00\x19\x00\x00\x00\x01\x00\x00\x00(gz:\x88gz:\x88}6\x00P\xac\x01\x06\xfe\x10\x00\x00\x00\x00\x04\x00\x1b\xac\x0b\x08\xe8\xac\x01F\xe2\xc0\xa82\x02\x00\x04\x00\x19\x00\x00\x00\x01\x00\x00\x05\xdcgz:\x9cgz:\x9c`ii\x87\xac\x01\x06;\x10\x00\x00\x00\x00\x04\x00\x1b\xac\x01\x1d$\xac<\xf0\xc3\xc0\xa82\x06\x00\x03\x00\x1b\x00\x00\x00\x01\x00\x00\x05\xdcgz:\x9cgz:\x9cF2\x00\x14\xac\x01\x06s\x18\x00\x00\x00\x00\x04\x00\x03\xac\x0b\x11Q\xac\x01\xde\x06\xc0\xa82\x06\x00\x04\x00\x1b\x00\x00\x00\x01\x00\x00\x05\xdcgz:\xb0gz:\xb0\xef#\x1a+\xac)\x06\xe9\x10\x00\x00\x00\x00\x04\x00\x1b\xac\x0cR\xd9\xac\x01o\xe8\xc0\xa82\x02\x00\x04\x00\x19\x00\x00\x00\x01\x00\x00\x05\xdcgz:\xc4gz:\xc4\x13n\x00n\xac\x19\x06\xa8\x10\x00\x00\x00\x00\x03\x00\x19\xac\x01=\xdd\xac\x01}\xee\xc0\xa82f\x00\x03\x00\x07\x00\x00\x00\x01\x00\x00\x00(gz:\xc4gz:\xc4\x00\x00\xdc\xbb\xac\x01\x01\xd3\x10\x00\x00\x00\x00\x04\x00\x1b\xac\x0f(\xd1\xac\x01\xcc\xa5\xc0\xa82\x06\x00\x04\x00\x1b\x00\x00\x00\x01\x00\x00\x05\xdcgz:\xd8gz:\xd8\xc5s\x17o\xac\x19\x06#\x18\x00\x00\x00\x00\x03\x00\x07\xac\n\x85[\xc0\xa8cn\n\x00\x02\x01\x00\x04\x00\n\x00\x00\x00\x01\x00\x00\x05\xdcgz:\xe4gz:\xe4\xbfl\x00P\xac\x01\x06\xcf\x10\x00\x00\x00\x00\x04\x00\x07\xac\x010\x1f\xac\x18!E\xc0\xa82f\x00\x03\x00\x07\x00\x00\x00\x01\x00\x00\x05\xdcgz;\x00gz;\x00\x11\x95\x04\xbe\xc0\xa8\x06\xea\x10\x00\x00\x00\x00\x03\x00\n\xac\x010\xb6\xac\x1e\xf4\xaa\xc0\xa82\x06\x00\x03\x00\x1b\x00\x00\x00\x01\x00\x00\x05\xdcgz;4gz;4\x88d\x00\x17\xac\x01\x06\x1f\x10\x00\x00\x00\x00\x04\x00\x1b\xac\x01#_\xac\x1e\xb0\t\xc0\xa82\x06\x00\x03\x00\x1b\x00\x00\x00\x01\x00\x00\x05\xdcgz;Hgz;H\x81S\x00P\xac \x06N\x10\x00\x00\x00\x00\x03\x00\x1b\xac\x01\x04\xd9\xac\x01\x94c\xc0\xa82\x06\x00\x03\x00\x1b\x00\x00\x00\x01\x00\x00\x02(gz;\\gz;\\U\x10\x00P\xac\x01\x06P\x18\x00\x00\x00\x00\x04\x00\x1b\xac\x01<\xae\xac*\xac!\xc0\xa82\x06\x00\x03\x00\x1b\x00\x00\x00\x01\x00\x00\x00\xfagz;\x84gz;\x84\x0c\xe7\x00P\xac\x01\x11\xfd\x10\x00\x00\x00\x00\x04\x00\x1b\xac\x01\x1f\x1f\xac\x17\xedi\xc0\xa82\x02\x00\x03\x00\x19\x00\x00\x00\x01\x00\x00\x05\xdcgz;\x98gz;\x98\xba\x17\x00\x16\xac\x01\x06|\x10\x00\x00\x00\x00\x03\x00\x07" 271 __sample_v5 = b'\x00\x05\x00\x1d\xb5\xfa\xc9\xd0:\x0bAB&Vw\xde\x9bsv1\x00\x01\x00\x00\xac\n\x86\xa6\xac\x01\xaa\xf7\xc0\xa822\x02q\x00i\x00\x00\x00\x01\x00\x00\x02(\xb5\xfa\x81\x14\xb5\xfa\x81\x1452\x00P\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x01\x91D\xac\x14C\xe4\xc0\xa82\x16\x00i\x02q\x00\x00\x00\x01\x00\x00\x00(\xb5\xfa\x9b\xbd\xb5\xfa\x9b\xbd\x00P\x85\xd7\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x17\xe2\xd7\xac\x01\x8cV\xc0\xa822\x02q\x00i\x00\x00\x00\x01\x00\x00\x05\xdc\xb5\xfao\xb8\xb5\xfao\xb8v\xe8\x17o\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x0e\xf2\xe5\xac\x01\x91\xb2\xc0\xa822\x02q\x00i\x00\x00\x00\x01\x00\x00\x00\xfa\xb5\xfa\x81\xee\xb5\xfa\x81\xee\xd0\xeb\x00\x15\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\nCj\xac)\xa7\t\n\x00\x02\x01\x02q\x00\xdb\x00\x00\x00\x01\x00\x00\x02(\xb5\xfa\x85\x92\xb5\xfa\x85\x92\x8c\xb0\x005\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x01\x96=\xac\x15\x1a\xa8\xc0\xa82\x16\x00i\x02q\x00\x00\x00\x01\x00\x00\x05\xdc\xb5\xfa\x86\xe0\xb5\xfa\x86\xe0\xb4\xe7\x00\xc2\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x01V\xd1\xac\x01\x86\x15\xc0\xa822\x02q\x00i\x00\x00\x00\x01\x00\x00\x05\xdc\xb5\xfa}:\xb5\xfa}:[Q\x00P\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac2\xf1\xb1\xac)\x19\xca\n\x00\x02\x01\x02q\x00\xdb\x00\x00\x00\x01\x00\x00\x05\xdc\xb5\xfa\x83\xc3\xb5\xfa\x83\xc3\x16,\x00\x15\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x0cA4\xac\x01\x9az\xc0\xa822\x02q\x00i\x00\x00\x00\x01\x00\x00\x05\xdc\xb5\xfa\x8d\xa7\xb5\xfa\x8d\xa7\x173\x00\x15\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x1e\xd2\x84\xac)\xd8\xd2\n\x00\x02\x01\x02q\x00\xdb\x00\x00\x00\x01\x00\x00\x05\xdc\xb5\xfa\x8e\x97\xb5\xfa\x8e\x977*\x17o\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x01\x85J\xac \x11\xfc\xc0\xa82\x16\x00i\x02q\x00\x00\x00\x01\x00\x00\x02(\xb5\xfa\x884\xb5\xfa\x884\xf5\xdd\x00\x8f\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x01\x04\x80\xac<[n\n\x00\x02\x01\x02q\x00\xdb\x00\x00\x00\x01\x00\x00\x05\xdc\xb5\xfa\x9dr\xb5\xfa\x9drs$\x00\x16\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x01\xb9J\xac"\xc9\xd7\xc0\xa82\x16\x00i\x02q\x00\x00\x00\x01\x00\x00\x00(\xb5\xfa\x90r\xb5\xfa\x90r\x0f\x8d\x00\xc2\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac*\xa3\x10\xac\x01\xb4\x19\xc0\xa822\x02q\x00i\x00\x00\x00\x01\x00\x00\x00(\xb5\xfa\x92\x03\xb5\xfa\x92\x03pf\x00\x15\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x01\xabo\xac\x1e\x7fi\xc0\xa82\x16\x00i\x02q\x00\x00\x00\x01\x00\x00\x05\xdc\xb5\xfa\x93\x7f\xb5\xfa\x93\x7f\x00P\x0b\x98\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x0c\n\xea\xac\x01\xa1\x15\xc0\xa822\x02q\x00i\x00\x00\x00\x01\x00\x00\x05\xdc\xb5\xfay\xcf\xb5\xfay\xcf[3\x17\xe0\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x01\xbb\xb3\xac)u\x8c\n\x00\x02\x01\x00i\x00\xdb\x00\x00\x00\x01\x00\x00\x00\xfa\xb5\xfa\x943\xb5\xfa\x943\x00P\x1e\xca\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x0fJ`\xac\x01\xab\x94\xc0\xa822\x02q\x00i\x00\x00\x00\x01\x00\x00\x02(\xb5\xfa\x87[\xb5\xfa\x87[\x9a\xd6/\xab\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac*\x0f\x93\xac\x01\xb8\xa3\xc0\xa822\x02q\x00i\x00\x00\x00\x01\x00\x00\x00(\xb5\xfa\x89\xbb\xb5\xfa\x89\xbbn\xe1\x00P\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x01\x93\xa1\xac\x16\x80\x0c\xc0\xa82\x16\x00i\x02q\x00\x00\x00\x01\x00\x00\x00(\xb5\xfa\x87&\xb5\xfa\x87&\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x01\x83Z\xac\x1fR\xcd\xc0\xa82\x16\x00i\x02q\x00\x00\x00\x01\x00\x00\x05\xdc\xb5\xfa\x90\r\xb5\xfa\x90\r\xf7*\x00\x8a\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x0c\xe0\xad\xac\x01\xa8V\xc0\xa822\x02q\x00i\x00\x00\x00\x01\x00\x00\x05\xdc\xb5\xfa\x9c\xf6\xb5\xfa\x9c\xf6\xe5|\x1a+\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x1e\xccT\xac<x&\n\x00\x02\x01\x02q\x00\xdb\x00\x00\x00\x01\x00\x00\x05\xdc\xb5\xfa\x80\xea\xb5\xfa\x80\xea\x00\x00\x00\x00\x00\x00/\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x01\xbb\x18\xac\x01|z\xc0\xa82\x16\x00i\x02q\x00\x00\x00\x01\x00\x00\x00\xfa\xb5\xfa\x88p\xb5\xfa\x88p\x00P\x0b}\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x17\x0er\xac\x01\x8f\xdd\xc0\xa822\x02q\x00i\x00\x00\x00\x01\x00\x00\x02(\xb5\xfa\x89\xf7\xb5\xfa\x89\xf7\r\xf7\x00\x8a\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\n\xbb\x04\xac<\xb0\x15\n\x00\x02\x01\x02q\x00\xdb\x00\x00\x00\x01\x00\x00\x05\xdc\xb5\xfa\x90\xa9\xb5\xfa\x90\xa9\x9c\xd0\x00\x8f\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\nz?\xac)\x03\xc8\n\x00\x02\x01\x02q\x00\xdb\x00\x00\x00\x01\x00\x00\x05\xdc\xb5\xfaue\xb5\xfaue\xee\xa6\x00P\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x01\xb5\x05\xc0\xa8c\x9f\n\x00\x02\x01\x00i\x00\xdb\x00\x00\x00\x01\x00\x00\x05\xdc\xb5\xfa{\xc7\xb5\xfa{\xc7\x00P\x86\xa9\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac2\xa5\x1b\xac)0\xbf\n\x00\x02\x01\x02q\x00\xdb\x00\x00\x00\x01\x00\x00\x00\xfa\xb5\xfa\x9bZ\xb5\xfa\x9bZC\xf9\x17\xe0\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00' 272 273
274 -def test_net_flow_v1_pack(): pass
275 276
277 -def test_net_flow_v1_unpack():
278 nf = Netflow1(__sample_v1) 279 assert len(nf.data) == 24
280 # print repr(nfv1) 281 282
283 -def test_net_flow_v5_pack(): pass
284 285
286 -def test_net_flow_v5_unpack():
287 nf = Netflow5(__sample_v5) 288 assert len(nf.data) == 29
289 # print repr(nfv5) 290 291 292 if __name__ == '__main__': 293 test_net_flow_v1_pack() 294 test_net_flow_v1_unpack() 295 test_net_flow_v5_pack() 296 test_net_flow_v5_unpack() 297 print('Tests Successful...') 298