

The syntax and usage is nearly identical to that of WinDump, which we have already discussed, so what I will do here is demonstrate how to install tcpdump on a Linux system if you find it isn’t already installed. Because tcpdump is so widely used, there is a wealth of support information and articles on the Internet on how to use tcpdump. Tcpdump is installed by default on a large number of Linux/UNIX systems. Tcpdump is native to Linux and does not run on Windows systems. Here’s the capture file of 3 packets from our Health Report protocol.Eric Seagren, in Secure Your Network for Free, 2007 Tcpdump


We can also filter packets generated field value: We see Wireshark shows us our the our fields, and protocol name: get ( "udp.port" ): add ( 55055, proto_health ) Results fields = health_code_table = "Healthy" health_code_table = "High Load" health_code_table = "Failure" - we remember that `health_buffer` holds a byte range, we interpret this as a uint local health_code = health_buffer : uint () - we fetch the string from our table local health_string = health_code_table - we associate this string as the value for our generated field - it'll also be searchable in the display filter - and also appear in the inspection/dissection tree - set_generated() adds square brackets around the field to mark it as generated payload_tree : add ( generated_health_name, health_string ): set_generated () end udp_table = DissectorTable. string ( "health.status", "Health Status" ) - we attach all fields (normal and generated) to our protocol proto_health. guid ( "health.guid", "Worked ID" ) - Our Generated Fields - Generated fields are fields derived from information found in the packet - In this case, we want to display a string representation of the health code generated_health_name = ProtoField. HEX ) - guid field has its own representation local field_workerguid = ProtoField. uint8 ( "health.version", "Version", base. health.version = 1) - "Version" is the display name/field label shown when drilling down in a packet - `base.DEC` is the representation of the uint8 (we could have used base.HEX) local field_version = ProtoField. "health.version" to be used in the display filter to query/search/narrow down a - list of packets (e.g. new ( "health", "Health Protocol" ) - Our Fields - These are the fields defined in our protocol - They will also be searchable in the display filter - for `field_version`: - type/size of this field (here uint8, a byte).
