Wireshark-users: Re: [Wireshark-users] match packets at sender and receiver
From: Andrej van der Zee <andrejvanderzee@xxxxxxxxx>
Date: Tue, 20 Apr 2010 17:20:02 +0900
Hi Ian,
Thank you again for your method. I used the following fields for
identifying a packet:
* src ip
* dst ip
* src port
* dst port
* tcp seq nr
* tcp ack seq nr
* ip id
* packet length
In a single 1.7GB cap-file with 17424367 TCP packets I get 27
identical packets based on the above id.
Are there any other field in the tcphdr struct that I could use? I am
not sure about their meaning:
struct tcphdr {
unsigned short source;
unsigned short dest;
unsigned long seq;
unsigned long ack_seq;
# if __BYTE_ORDER == __LITTLE_ENDIAN
unsigned short res1:4;
unsigned short doff:4;
unsigned short fin:1;
unsigned short syn:1;
unsigned short rst:1;
unsigned short psh:1;
unsigned short ack:1;
unsigned short urg:1;
unsigned short res2:2;
# elif __BYTE_ORDER == __BIG_ENDIAN
unsigned short doff:4;
unsigned short res1:4;
unsigned short res2:2;
unsigned short urg:1;
unsigned short ack:1;
unsigned short psh:1;
unsigned short rst:1;
unsigned short syn:1;
unsigned short fin:1;
# endif
unsigned short window;
unsigned short check;
unsigned short urg_ptr;
};
Thank you,
Andrej
On Wed, Apr 7, 2010 at 8:54 AM, Ian Schorr <ian.schorr@xxxxxxxxx> wrote:
> On Tue, Apr 6, 2010 at 10:45 PM, Andrej van der Zee
> <andrejvanderzee@xxxxxxxxx> wrote:
>> What I would like to know is how to match packets on both ends of the
>> line, provided that I have the IP numbers. Are there any unique packet
>> identifiers that appear in the cap-files on both ends? What should I
>> use? For example, when I study the cap-file in Wireshark, I see under
>> "Internet Protocol" an "Identification" number that seems to be
>> incremented for packets over the same connection (or conversation?).
>> Is this Identification number generated by Wireshark or is it really
>> in the packet headers? Does it appear in both cap files? In that case,
>> I could use a tuple <IP, Identification> to match packets on both
>> ends.
>
> IP IDs are actually in the packet header. Two ways to know: 1) Click
> on the field. Notice how 4 bytes (containing the IP ID value) are
> highlighted in the bottom pane, the data portion of the packet. 2)
> Generally Wireshark-generated fields should be enclosed in square
> brackets (though those things aren't necessarily always going to be
> the case, they're generally true and are SUPPOSED to always be true)
>
> You could use an ID field like IP ID to identify your packets.
> However, IP ID is not only not guaranteed to be unique within your
> capture, but it's one of the most likely fields to not be unique. For
> one thing, it's a relatively small field (16-bit) and even if a host
> increments the ID steadily (i.e. it doesn't re-use IDs more often than
> it has to), it will re-use an ID after sending only 65536 packets. A
> reasonably busy system is going to wrap IDs pretty quickly.
>
> Incidentally, different hosts increment the IDs differently. Some
> increment it globally - once per
> packet they send. Some have an incrementing counter for each host
> they're talking to. One host that
> I was looking at yesterday does some weird things - it seems to be
> aware at IP-level what
> packets are still in-flight on the network (based on being
> unacknowledged at TCP level). It only
> generated unique IDs for each in-flight packet, but once they'd
> been acknowledged, it'd reuse that
> IP ID. So it tended to use IDs 0, 1, and maybe 2 ALL the time. Weird.
>
> And really, that's the tricky part. There aren't really any fields in
> TCP/IP packets that are guaranteed to be unique. There's always SOME
> chance of miscorrelating two packets that share the same properties
> that you're checking for.
>
> Anyway, if you were going to go that route, the TCP sequence number is
> probably much better for your you'd get better results by comparing
> TCP Sequence number (tcp.seq), plus the 4-tuple (source and
> destination IPs and ports). Although it's still not 100% guaranteed
> to be unique, it's much, much more likely. Although the numbers will
> wrap, it will only happen after 4billion bytes have been transferred.
> There's a chance that if connections are being opened and closed
> frequently, then port numbers will be reused and that the host will
> also start TCP sequence numbers at the same point, but that's also
> extremely unlikely (and a big no-no - to avoid attacks hosts typically
> should assign a random sequence ID).
>
> Now compare the IP IDs as well, and it's now very, very, VERY unlikely
> that two packets you compare match criteria but aren't actually the
> same. Theoretically there is a chance of misidentification, but
> practically, for your purposes, that's probably plenty accurate.
>
>
> Keep in mind also that if the network is modifying your packets
> enroute, you'll have troubles. If there is a TCP proxy of some kind,
> a NAT/PAT device, or even a router that "fragments" packets, it may
> seriously impact what you're comparing.
> ___________________________________________________________________________
> Sent via: Wireshark-users mailing list <wireshark-users@xxxxxxxxxxxxx>
> Archives: http://www.wireshark.org/lists/wireshark-users
> Unsubscribe: https://wireshark.org/mailman/options/wireshark-users
> mailto:wireshark-users-request@xxxxxxxxxxxxx?subject=unsubscribe
>
--
Andrej van der Zee
Koenji-minami 2-40-19A
Suginami-ku, Tokyo
166-0003 JAPAN
Mobile: +81-(0)80-65251092
Phone/Fax: +81-(0)3-3318-3155
- Follow-Ups:
- Re: [Wireshark-users] match packets at sender and receiver
- From: Andrej van der Zee
- Re: [Wireshark-users] match packets at sender and receiver
- References:
- [Wireshark-users] match packets at sender and receiver
- From: Andrej van der Zee
- Re: [Wireshark-users] match packets at sender and receiver
- From: Ian Schorr
- Re: [Wireshark-users] match packets at sender and receiver
- From: Andrej van der Zee
- Re: [Wireshark-users] match packets at sender and receiver
- From: Ian Schorr
- [Wireshark-users] match packets at sender and receiver
- Prev by Date: Re: [Wireshark-users] Any Replacement functionfor proto_tree_add_boolean_hidden
- Next by Date: [Wireshark-users] Wireshark and Big Sniffs
- Previous by thread: Re: [Wireshark-users] match packets at sender and receiver
- Next by thread: Re: [Wireshark-users] match packets at sender and receiver
- Index(es):