From c82a370dd1d8708d9dbca2ebbcc7e1905c25c1a7 Mon Sep 17 00:00:00 2001 From: dmiller Date: Thu, 20 Sep 2018 04:04:59 +0000 Subject: [PATCH] Fix unpacking OEM ID; had been grabbing wrong 3 bytes. Replaced bin with string unpacking --- nselib/ipmi.lua | 192 +++++++++++++++++++++++------------------------- 1 file changed, 91 insertions(+), 101 deletions(-) diff --git a/nselib/ipmi.lua b/nselib/ipmi.lua index 531da836a..3d510c0fa 100644 --- a/nselib/ipmi.lua +++ b/nselib/ipmi.lua @@ -5,7 +5,6 @@ -- @class module -- @name ipmi -- @author "Claudiu Perta " -local bin = require "bin" local stdnse = require "stdnse" local string = require "string" local rand = require "rand" @@ -94,7 +93,7 @@ session_open_request = function(console_session_id) "\x01\x00\x00\x00" -- AES Encryption ) - return bin.pack("> 6) & 0x03) - data["ipmi_user_kg"] = ((value & 0x20) ~= 0) - data["ipmi_user_disable_message_auth"] = ((value & 0x10) ~= 0) - data["ipmi_user_disable_user_auth"] = ((value & 0x08) ~= 0) - data["ipmi_user_non_null"] = ((value & 0x04) ~= 0) - data["ipmi_user_null"] = ((value & 0x02) ~= 0) - data["ipmi_user_anonymous"] = ((value & 0x01) ~= 0) + value, pos = string.unpack("B", reply, pos) + data.ipmi_user_reserved1 = ((value >> 6) & 0x03) + data.ipmi_user_kg = ((value & 0x20) ~= 0) + data.ipmi_user_disable_message_auth = ((value & 0x10) ~= 0) + data.ipmi_user_disable_user_auth = ((value & 0x08) ~= 0) + data.ipmi_user_non_null = ((value & 0x04) ~= 0) + data.ipmi_user_null = ((value & 0x02) ~= 0) + data.ipmi_user_anonymous = ((value & 0x01) ~= 0) - pos, value = bin.unpack("C", reply, pos) - data["ipmi_conn_reserved1"] = ((value >> 2) & 0x3F) - data["ipmi_conn_20"] = ((value & 0x02) ~= 0) - data["ipmi_conn_15"] = ((value & 0x01) ~= 0) + value, pos = string.unpack("B", reply, pos) + data.ipmi_conn_reserved1 = ((value >> 2) & 0x3F) + data.ipmi_conn_20 = ((value & 0x02) ~= 0) + data.ipmi_conn_15 = ((value & 0x01) ~= 0) - -- 24 bits OEMID, unpack an int and shift 1 byte to the right - pos, value = bin.unpack("> 8 - -- restore one byte position - pos = pos - 1 - pos, data["ipmi_oem_data"] = bin.unpack("A", reply, pos) + -- 24 bits OEMID + data.ipmi_oem_id, pos = string.unpack("