Nmap Development mailing list archives
[PATCH] SNMPsysdesr.nse Uptime Fix
From: Kris Katterjohn <katterjohn () gmail com>
Date: Fri, 04 Apr 2008 14:20:38 -0500
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hey everyone, I turned on SNMP on a newer piece of equipment I have on my LAN so I could play with it and use the SNMPsysdesr NSE script. I used the script against it, and it told me the uptime was about 5 days, which is reasonable (I don't remember when it rebooted last). However, later on, the script then told me the uptime was 130 days, so I knew something was up. It usually hovered at 5: 161/udp open snmp script-set | SNMPv1: Prestige 2302R |_ System uptime: 5 days, 20:0:47.48 (50404748 timeticks) Watching the exchange with Wireshark, I saw that the bytes holding the uptime were preceded by a byte which held that length (so the amount of bytes for the uptime can vary from 2-4 [or I guess technically 1, but that's really small so I've never seen it]). So, I've attached a patch which fixes the uptime reporting. It all works great for me. Wireshark confirms the calculated uptime that the script now prints and uses (with 2-3 byte uptimes, I haven't waited long enough for 4 because I've rebooted it several times while testing). 161/udp open snmp script-set | SNMPv1: Prestige 2302R |_ System uptime: 0 days, 0:12:25 (74500 timeticks) If you can test it and verify that this works correctly, I'd appreciate it. I'll commit it soon if there are no issues. Thanks, Kris Katterjohn -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iQIVAwUBR/Z/hP9K37xXYl36AQIDIA/+LOTYHLuboB1TtbZ8ZlXoFzdHnjRK3txN +fbtErXbv3zO08gUGbHdw8XCCDu9eib+3COar6+gIzTUEaVNvTsm+4F13NgwN8vx plzEkVnxesrPGwv0pPMfK+B8bn8DVA2IPGqgkBOxLcjCN3MZ0Kvjb8YWkiftiZOF ng32X/lfe1pSTTui/i0KlcWAYwjw5RoFFjsirHlP0emjuk8hXyPFm1aCxHRQFVFX 6Slxvkq+AgEoNyznAMYcTAA6ieLOi5zIRA6yVKZeckLjmorWh1gG2lHsLJiFd2w0 6X6Bi4e3Rg8taTd+0aJ8ldlnyCvhps8J8jgdAxATRT40ZV26xNfi7MLPasGnNodP KE8V/YzywN60GH2yvr+KS0UL4UVCeCK4JVhWwbtTMtDNDViZMUii1WjmnBcwd6U3 eNNQtd/VmeLViYyUXG2BtdT9o88X4AbkbLaQ4NKZl0v2fZBg4tcC696gCAM/qj9e 8CRyHWI9Y5VVxsOKeEk2r46q1sPbAVA+Bo0r6cz0fp8CKQZedDm46U3Mp+ILFtos 0I2UTo3UA+aG7qoIom7eT1j/smKWUzCXda63wUCsoujoD83YC46eQ1lk3QwwQpiq 43IhuXY8H5W+M1CgJrZQPuOzymSGFosiOslmkuRKs9pH96IRs9n5iRsbZob5D3lv fU+emEZPxog= =g5JB -----END PGP SIGNATURE-----
Index: scripts/SNMPsysdesr.nse =================================================================== --- scripts/SNMPsysdesr.nse (revision 7034) +++ scripts/SNMPsysdesr.nse (working copy) @@ -90,18 +90,30 @@ try(socket:close()) - if string.find(response, "\006\001\002\001\001\003") == nil then + local start, stop = response:find("\006\001\002\001\001\003\000") + + if start == nil then return result end - local length,uptime,s1,s2,s3,s4 - - length = string.len(response) - - s1,s2,s3,s4 = string.byte(response, length - 3, length) - - uptime = s1*(2^24) + s2*(2^16) + s3*(2^8) + s4 - + local uplen,uptime,s1,s2,s3,s4 + + uplen = response:byte(stop + 2) + + s1,s2,s3,s4 = response:byte(stop + 3, stop + 3 + uplen) + + if uplen == 4 then + uptime = s1*(2^24) + s2*(2^16) + s3*(2^8) + s4 + elseif uplen == 3 then + uptime = s1*(2^16) + s2*(2^8) + s3 + elseif uplen == 2 then + uptime = s1*(2^8) + s2 + elseif uplen == 1 then + uptime = s1 + else + return result + end + local days, hours, minutes, seconds, htime, mtime, stime days = math.floor(uptime / 8640000) htime = math.fmod(uptime, 8640000)
_______________________________________________ Sent through the nmap-dev mailing list http://cgi.insecure.org/mailman/listinfo/nmap-dev Archived at http://SecLists.Org
Current thread:
- [PATCH] SNMPsysdesr.nse Uptime Fix Kris Katterjohn (Apr 04)