Tue Feb 12 15:57:20 EST 2019 Irwin Tillman (irwin at princeton dot edu) * bootpdc: Print DHCP Message Types values 10 (DHCPLEASEQUERY), 11 (DHCPLEASEUNASSIGNED), 12 (DHCPLEASEUNKNOWN), 13 (DHCPLEASEACTIVE); decode Option 91 (client-last-transaction-time) and Option 92 (associated-ip) as per RFC 4388. * Released version 2.0.13. Tue Feb 12 16:03:39 EST 2013 Irwin Tillman (irwin at princeton dot edu) * bootpdc: for Option 81 (Client FQDN Option), if length of binary-encoded name ('E' flag) makes no sense to us, give up decoding it, and instead print an error message for that name. That addresses a "'@' outside of string in unpack at bootpdc line 1319" error. Our decode for binary-encoded name in option 81 may still be broken. * Released version 2.0.12. Tue Aug 28 15:16:25 EDT 2012 Irwin Tillman (irwin at princeton dot edu) * bootpdc: don't print a trailing dot after an IPv4 address. Mon Jan 17 13:18:44 EST 2011 Irwin Tillman (irwin at princeton dot edu) * bootpdc: decode option: 252 (site-wpad). * bootpdc: label several more options: 95 (unassigned-appleLDAPserverURL), 119 (domainSearch), 121 (classlessStaticRoute), 249 (site-classlessStaticRoute). Mon Jun 15 14:45:27 EDT 2009 Irwin Tillman (irwin at princeton dot edu) * bootpdc: for Option 81 (Client FQDN Option), fix decoding of N, E, O, and S flags. Misdecoding the E flag was causing the program to sometimes fail with the error: "'@' outside of string in unpack at bootpdc line 1255" Stop requiring the presence of the domain name portion of the option; it is optional. Mon May 4 12:29:49 EDT 2009 Irwin Tillman (irwin at princeton dot edu) replace 'require 5.6.0;' with 'use 5.006; use 5.6.0;' to silence warning in perl 5.10.0. Wed Jan 3 14:46:02 EST 2007 Irwin Tillman (irwin at princeton dot edu) * bootpdc: decode the 'Rapid Commit' option (option 81). Fri Jun 18 14:57:58 EDT 2004 Irwin Tillman (irwin at princeton dot edu) * bootpdc: add support for output format change in tcpdump 3.8.3: addition of address offsets to left of hex dump. Ignore ASCII dump erroneously added due to new bug in tcpdump 3.8.3 whenever only a hex dump is requested. * Released version 2.0.8. Fri Apr 25 10:55:31 EDT 2003 Irwin Tillman (irwin at princeton dot edu) * README, COPYING, Changelog, bootpdc, bootpdc.1: replace email addresses with human-parseable versions, to reduce spam from simple Web-based address harvesters. Thu Apr 3 10:00:52 EST 2003 Irwin Tillman (irwin at princeton dot edu) * COPYING: last paragraph was truncated, fix it. Also fix a spelling error. * README: correct spelling error. * Released version 2.0.7. Thu May 9 17:48:07 EDT 2002 Irwin Tillman (irwin at princeton dot edu) * Released version 2.0.6. Sun Mar 31 17:40:32 EST 2002 Irwin Tillman (irwin at princeton dot edu) * decode DHCP Message Type 9 (FORCERENEW), as per RFC 3203. Thu Aug 30 13:14:44 EDT 2001 Irwin Tillman (irwin at princeton dot edu) * when decoding the proposed Client FQDN option (option 81), show the new 'N' flag. * add limited support for DHCPauthentication (option 90); we do not really decode it. Wed Aug 1 14:15:37 EDT 2001 Irwin Tillman (irwin at princeton dot edu) * README bootpdc.1: software home moved from wwwnet.princeton.edu to www.net.princeton.edu Sat Jun 23 14:39:39 EDT 2001 Irwin Tillman (irwin at princeton dot edu) * bootpd.1: fix typo Thu Apr 19 10:02:11 EDT 2001 Irwin Tillman (irwin at princeton dot edu) * add -i and -u options, to parse packets that lack IP and/or UDP headers. Wed Mar 7 14:00:07 EST 2001 Irwin Tillman (irwin at princeton dot edu) * BootP op, htype, flags, and chaddr were being treated as decimal though we actually unpacked them as hex. When the opcode contained an invalid valid with a hex value containing alpha chars, it caused an error "Argument "3e" isn't numeric in numeric eq (==) at bootpdc line 442." Sun Feb 25 14:29:39 EST 2001 Irwin Tillman (irwin at princeton dot edu) * remove 'use warnings', add -w. * stop unbuffering STDOUT, instead use the flush() method from IO::File. Sat Feb 17 16:10:06 EST 2001 Irwin Tillman (irwin at princeton dot edu) * rewrote manual page. * Initial public release. Version 2.0.0. Fri Feb 16 13:57:42 EST 2001 Irwin Tillman (irwin at princeton dot edu) * printIPaddrList(): when handed an IP address list that's not a multiple of 4 bytes, don't try to decode past end of the data. Instead print final value, flagging it as incomplete. * general code cleanup: removal of some unecessary temporary values, convert some vars from global or dynamic scope to lexical scope. * when handed a non-UDP packet, we used to print the tcpdump header line, but nothing else. Now we also print "not UDP", so you know why we didn't decode it. * when handed a UDP packet in which the UDP source port or the UDP dest port wasn't among bootps, bootpc, we used to print the tcpdump header line, but nothing else. Now we also print "UDP src/dst port not BOOTPS or BOOTPC", so you know why we didn't decode it. * use warnings, use strict. * when printing an option that by definition must have a fixed (or minimum) length, verify that the option len byte matches (or is at least) that length. When it does not, print the value (however long it is) in hex, instead of trying to decode it. * restructure packet reading loop to be clearer, move printing of tcpdump header line into decodePacket() * require perl 5.6.0, for UTF and warnings. Thu Feb 15 14:14:48 EST 2001 Irwin Tillman (irwin at princeton dot edu) * stop showing the DNS name corresponding to the value of the 'Requested IP Address' option (in the presence of AUTONET, too often it is not in DNS). * when -s specified, stop reporting its value at startup. For each packet, check if -s value will cause us to skip over entire packet; if so, report error for that packet. * when -n specified, stop reporting it at startup. * don't try to decode IP packets other than IPv4. * before trying to decode the IP header, make sure we have enough data. * before trying to decode the UDP header, make sure we have enough data. * before trying to decode the UDP payload, make sure we have enough data for a minimum-length DHCP packet (one with a 0-length options field). * before trying to decode the options field, make sure we have enough data for whatever-style cookie (if any) we think we're decoding. * hex2hostname() just returns 0.0.0.0 and 255.255.255.255 instead of wasting time looking up hostnames for these two IP addresses. Also don't try to decode IP addresses shorter than 4 bytes. * COPYING, README, ChangeLog, TODO, NEWS: files added in preparation for public release. * add -h option to print usage summary * add -v option to print version number * stop hardcoding the DNS domain name suffix to strip from hostnames. Instead obtain it from Sys::Hostname, allow override with new -D option. * bootpdc.1: man page overhauled in preparation for public release. Feb 12 2001 Irwin Tillman (irwin at princeton dot edu) * in addition to recognizing that a tcpdump packet header line indicates that the previous packet has ended, also accept a short hexdump line as an earlier incdication that the current packet has ended and can be decoded. This allows us to print most packets when we seen them, rather than when the next packet arrives. * stop losing the payload of the last packet we read * show the DNS name corresponding to the value of the 'DHCP Server Identifier' option and the 'Requested IP Address' option (unless hostname lookups have been suppressed). * let perl 5.6.0 handle printing UTF strings. * if an option would extend beyond the end of the current field (options, sname, or file), print an error, rather than trying to unpack data we don't have. * add limited support for clientSystemArchitecture, clientNetworkDeviceInterface, and UUID/GUIDclientIdentifer (options 93, 94, 97); we do not really decode them. * add limited support for netinfoAddress and netinfoTag (options 112, 113). I can't find documentation for these, so we don't decode them yet. * add limited support for relayAgentInformation option (option 82); we don't really decode this yet. * decode autoconfiguration option (option 116). * decode nameServiceSearch option (option 117). * decode subnetSelection option (options 118). * rename the 'suppress hostname lookups' option from -H to -n. The latter is more intuitive for tcpdump users. Feb 1 14:09:46 2001 Irwin Tillman (irwin at princeton dot edu) * when printing an overloaded sname field, we were claiming it was the file field. Sep 8 21:18:14 1999 Irwin Tillman (irwin at princeton dot edu) * drop perl4 support, stop using perl4 libs. Sep 1 18:39:53 1999 Irwin Tillman (irwin at princeton dot edu) * for boolean options, we were printing True/False backwards. Aug 31 20:34:02 1999 Irwin Tillman (irwin at princeton dot edu) * add support for the proposed clientFQDN option (option 81) Jul 14 18:36:56 1999 Irwin Tillman (irwin at princeton dot edu) * factor out UTF-8 decode subroutine (not yet implemented). * add support for the NDSserverList, NDStreeName, and NDSContext options (options 85, 86, 87). This code is not yet tested. Jul 14 18:20:22 1999 Irwin Tillman (irwin at princeton dot edu) * add support for NetwareIPdomainName and NetwareIPinformation options (options 62, 63). We don't fully decode the latter one. This code is not yet tested. * add support for userAuthenticationProtocol option (option 98). This code is not yet tested. * add support for SLPdirectoryAgentList and SLPserviceScope options (options 78, 79). This code is not yet tested. Jun 4 19:21:15 1999 Irwin Tillman (irwin at princeton dot edu) * when printing an unknown option, also show the value in ASCII, and explicitly show when the value is null. Aug 7 21:26:28 1998 Irwin Tillman (irwin at princeton dot edu) * add support for perl5: escape '@' in unpack strings, 'use Socket' instead of 'require sys/socket.ph' (to get AF_INET defined), put perl-version dependent code into evals. Still works under perl4. Jan 21 21:15:20 1997 Irwin Tillman (irwin at princeton dot edu) * add decode for CMU cookie options. * the decode of NETBIOSnodeType (options 46) had a typo. Jan 16 22:33:44 1997 Irwin Tillman (irwin at princeton dot edu) * print length of the vendor/options field. * after END option, don't attempt to decode non-PAD bytes. Instead just count & report them. * if cookie==CMU, say so (still don't decode CMU-style options). * if DHCPoptionOverload (options 52) appears, try to decode the sname and file fields. This new code isn't tested yet. Oct 4 15:06:44 1996 Irwin Tillman (irwin at princeton dot edu) * added -s option, to skip first n bytes of packet. (Use -s 8 when decoding FDDI packets.) Jun 25 21:27:15 1996 Irwin Tillman (irwin at princeton dot edu) * BootP xid was being decoded as hex. Make this clearer by changing variable name from Dxid to Hxid, and printing a "0x" in front of the value. * DHCPvendorclassIdentifier (option 52): if the value is not well-defined value, print an error. * name for option 60 (DHCPvendorclassIdentifier) was abbreviated; spell it out. Mar 10 1996 Irwin Tillman (irwin at princeton dot edu) * change output layout Feb 29 00:38:18 1996 Irwin Tillman (irwin at princeton dot edu) * initial version from Chris Tengi.