Annotation of embedaddon/hping2/docs/APD.txt, revision 1.1

1.1     ! misho       1: ARS Packet Description system
        !             2: 
        !             3:   This document describes the APD format. APD is a way to describe TCP/IP
        !             4:   packets, and it is used in high level functions of the ARS library.
        !             5:   The general format is the following:
        !             6: 
        !             7:        layer_type{field_1=value_1,field_2=value_2,...,field_n=value_n}
        !             8: 
        !             9:   more layers can be combined using the "+" simbol. Example:
        !            10: 
        !            11:        ip{dst=192.168.1.2}+udp{sport=53,dport=53}+data{file=./dns.packet}
        !            12: 
        !            13:   You don't need to specify fields that ARS can guess. For example
        !            14:   if you don't specify checksums they will be correctly generated
        !            15:   in the process of packet compilation.
        !            16: 
        !            17:   AVAILABLE LAYERS
        !            18:   ~~~~~~~~~~~~~~~~
        !            19: 
        !            20:   A layer type is one of the following:
        !            21: 
        !            22:        ip                      IP header
        !            23:        ipopt.eol               IP option EOL
        !            24:        ipopt.nop               IP option NOP
        !            25:        ipopt.sec               IP option Security
        !            26:        ipopt.sid               IP option Stream ID
        !            27:        ipopt.lsrr              IP option Loose Source Routing
        !            28:        ipopt.ssrr              IP option Strict Source Routing
        !            29:        ipopt.rr                IP option Record Route
        !            30:        ipopt.ts                IP option Timestamp
        !            31:        udp                     UDP header
        !            32:        tcp                     TCP header
        !            33:        tcpopt.end              TCP option END
        !            34:        tcpopt.nop              TCP option NOP
        !            35:        tcpopt.mss              TCP option Max Segment Size
        !            36:        tcpopt.wscale           TCP option Window Scale
        !            37:        tcpopt.sackperm         TCP option Selective ACK permitted
        !            38:        tcpopt.sack             TCP option Selevtive ACK
        !            39:        tcpopt.echo             TCP option Echo Request
        !            40:        tcpopt.echoreply        TCP option Echo Reply
        !            41:        tcpopt.ts               TCP option Timestamp
        !            42:        icmp                    ICMP header
        !            43:        data                    Generic Data
        !            44: 
        !            45:   Different fields are defined for different layer types:
        !            46: 
        !            47:   IP FIELDS:   DESCRIPTION:            POSSIBLE VALUE:
        !            48:   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        !            49:   saddr                Source address          192.168.1.2, or www.yahoo.com
        !            50:   daddr                Destination address     192.168.1.2, or www.yahoo.com
        !            51:   ihl          IP header len           numerical value
        !            52:   ver          IP version              numerical value
        !            53:   tos          Type of Service         numerical value
        !            54:   totlen       IP tot len              numerical value
        !            55:   id           IP packet ID            numerical value
        !            56:   fragoff      IP fragment offset      numerical vaule
        !            57:   mf           More Fragment           0 or 1
        !            58:   df           Dont Fragment           0 or 1
        !            59:   rf           Reserved Frag. bit      0 or 1
        !            60:   ttl          Time to Live            numerical value
        !            61:   proto                ip protocol field       numerical value
        !            62:   cksum                ip checksum             numerical value
        !            63: 
        !            64:   UDP FIELDS:  DESCRIPTION:            POSSIBLE VALUE:
        !            65:   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        !            66:   sport                Source port             numerical value
        !            67:   dport                Destination port        numerical value
        !            68:   len          UDP len field           numerical value
        !            69:   cksum                UDP checksum            numerical value
        !            70: 
        !            71:   TCP FIELDS:  DESCRIPTION:            POSSIBLE VALUE:
        !            72:   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        !            73:   sport                Source port             numerical value
        !            74:   dport                Destination port        numerical value
        !            75:   seq          TCP sequence number     numerical value
        !            76:   ack          TCP acknowledge number  numerical value
        !            77:   x2           TCP reserved bits       numerical value
        !            78:   off          TCP header size         numerical value
        !            79:   flags                TCP flags               FSRPAUXY (see the example)
        !            80:   win          TCP window              numerical value
        !            81:   cksum                TCP checksum            numerical value
        !            82:   urp          TCP urgent pointer      numerical value
        !            83: 
        !            84:   ICMP FIELDS: DESCRIPTION:            POSSIBLE VALUE:
        !            85:   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        !            86:   type         ICMP type               numerical value
        !            87:   code         ICMP code               numerical value
        !            88:   cksum                ICMP cksum              numerical value
        !            89:   id           ICMP echo ID            numerical value
        !            90:   seq          ICMP echo sequence nr   numerical value
        !            91:   gw           ICMP gateway            192.168.1.2 or www.yahoo.com
        !            92: 
        !            93:   DATA FIELDS: DESCRIPTION:            POSSIBLE VALUE:
        !            94:   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        !            95:   file         Data file               /etc/passwd
        !            96:   str          A string                hello world! (no escaping available)
        !            97: 
        !            98: 
        !            99:   Other layer types fields aren't still implemented, anyway
        !           100:   most of this contains sane defaults, (like IP record route option
        !           101:   and so on).
        !           102: 
        !           103:   You can specify numerical values as hex, octal and decimal numbers.
        !           104: 
        !           105:   Decimail:    10
        !           106:   Hex:         0xA
        !           107:   Octal:       012
        !           108: 
        !           109:   Examples
        !           110:   ~~~~~~~~
        !           111: 
        !           112:   /* Just an ICMP echo request */
        !           113:   ip{saddr=1.2.3.4,daddr=www.yahoo.com}+icmp{type=8,code=0}\
        !           114:   +data{str=hello world}
        !           115: 
        !           116:   /* An ICMP destination unreachable with the quoted UDP packet */
        !           117:   ip{saddr=1.2.3.4,daddr=5.6.7.8}+icmp{type=3,code=3}\
        !           118:   +ip{saddr=www.yahoo.com,daddr=1.2.3.4}+udp{sport=53,dport=53}\
        !           119: 
        !           120:   /* A TCP packet with the SYN flag set */
        !           121:   ip{saddr=1.2.3.4,daddr=5.6.7.8}+tcp{flags=S,dport=80,sport=10}

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>