question about Argus Data Specific Records (DSR) header format

mel mel at hackinthebox.org
Wed Jan 16 01:53:46 EST 2008


Hi Carter,

In include/argus_def.h, the DSR header is like the one below:

     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |0|    Type     |0|  SubType    |   Qualifier   |     Length    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |                         Argus DSR Data                        |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

I pretty much understand the Type, SubType, Qualifier, Length and the
various DSR data and their format. Also, from include/argus_def.h:

       There are two types of DSR, 1) a Type Value (TV) record
       with an explicit length of 4 bytes, and 2) a Type Length
       Value (TLV) record, that is longer than 4 bytes and supports
       variable length records.

       The fixed length record is distinquished from the variable
       length records with the most significant bit of the Type
       Field set to 1 (>= 0x80).

However, looking deeper at the code, I found:

     ARGUS_FLOW_CLASSIC5TUPLE
     TYPE=ARGUS_FLOW   SubType=ARGUS_CLASSIC5TUPLE
     Qual=ARGUS_TYPE_IPV4

     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |0|   0x02      |1|D|  0x01     |     0x01      |      0x06     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


     ARGUS_FLOW_CLASSIC5TUPLE
     TYPE=FLOW   SubType=ARGUS_CLASSIC5TUPLE    Qual=ARGUS_TYPE_ARP
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |0|   0x02      |1|0|    0x01   |      0x07     |      0x06     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

     TYPE=FLOW   SubType=ARGUS_FLOW_MATRIX    Qual=ARGUS_TYPE_IPV4
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |0|   0x02      |K|D|    0x02   |      0x01     |      0x03     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

and so on.


It seems like the 8th and 9th bit have different values other than 1 or 
0. Can you please explain?


Cheers,

--mel



More information about the argus mailing list