mirror of
https://github.com/nmap/nmap.git
synced 2025-12-21 15:09:02 +00:00
Replace bit.lua functions with bitwise operators
This commit is contained in:
@@ -76,7 +76,6 @@
|
|||||||
-- protocols are tested. (ie. "tcp", "udp")
|
-- protocols are tested. (ie. "tcp", "udp")
|
||||||
|
|
||||||
local bin = require "bin"
|
local bin = require "bin"
|
||||||
local bit = require "bit"
|
|
||||||
local datafiles = require "datafiles"
|
local datafiles = require "datafiles"
|
||||||
local math = require "math"
|
local math = require "math"
|
||||||
local nmap = require "nmap"
|
local nmap = require "nmap"
|
||||||
@@ -438,9 +437,9 @@ Comm = {
|
|||||||
end
|
end
|
||||||
|
|
||||||
pos, tmp = bin.unpack(">i", data, pos )
|
pos, tmp = bin.unpack(">i", data, pos )
|
||||||
length = bit.band( tmp, 0x7FFFFFFF )
|
length = tmp & 0x7FFFFFFF
|
||||||
|
|
||||||
if ( bit.band( tmp, 0x80000000 ) == 0x80000000 ) then
|
if (tmp & 0x80000000) == 0x80000000 then
|
||||||
lastfragment = true
|
lastfragment = true
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -1390,43 +1389,43 @@ NFS = {
|
|||||||
end,
|
end,
|
||||||
|
|
||||||
AccessRead = function (self, mask, version)
|
AccessRead = function (self, mask, version)
|
||||||
return bit.band(mask, NFS.AccessBits[version].ACCESS_READ)
|
return (mask & NFS.AccessBits[version].ACCESS_READ)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
AccessLookup = function (self, mask, version)
|
AccessLookup = function (self, mask, version)
|
||||||
return bit.band(mask, NFS.AccessBits[version].ACCESS_LOOKUP)
|
return (mask & NFS.AccessBits[version].ACCESS_LOOKUP)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
AccessModify = function (self, mask, version)
|
AccessModify = function (self, mask, version)
|
||||||
return bit.band(mask, NFS.AccessBits[version].ACCESS_MODIFY)
|
return (mask & NFS.AccessBits[version].ACCESS_MODIFY)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
AccessExtend = function (self, mask, version)
|
AccessExtend = function (self, mask, version)
|
||||||
return bit.band(mask, NFS.AccessBits[version].ACCESS_EXTEND)
|
return (mask & NFS.AccessBits[version].ACCESS_EXTEND)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
AccessDelete = function (self, mask, version)
|
AccessDelete = function (self, mask, version)
|
||||||
return bit.band(mask, NFS.AccessBits[version].ACCESS_DELETE)
|
return (mask & NFS.AccessBits[version].ACCESS_DELETE)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
AccessExecute = function (self, mask, version)
|
AccessExecute = function (self, mask, version)
|
||||||
return bit.band(mask, NFS.AccessBits[version].ACCESS_EXECUTE)
|
return (mask & NFS.AccessBits[version].ACCESS_EXECUTE)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
FSinfoLink = function(self, mask, version)
|
FSinfoLink = function(self, mask, version)
|
||||||
return bit.band(mask, NFS.FSinfoBits[version].FSF_LINK)
|
return (mask & NFS.FSinfoBits[version].FSF_LINK)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
FSinfoSymlink = function(self, mask, version)
|
FSinfoSymlink = function(self, mask, version)
|
||||||
return bit.band(mask, NFS.FSinfoBits[version].FSF_SYMLINK)
|
return (mask & NFS.FSinfoBits[version].FSF_SYMLINK)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
FSinfoHomogeneous = function(self, mask, version)
|
FSinfoHomogeneous = function(self, mask, version)
|
||||||
return bit.band(mask, NFS.FSinfoBits[version].FSF_HOMOGENEOUS)
|
return (mask & NFS.FSinfoBits[version].FSF_HOMOGENEOUS)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
FSinfoCansettime = function(self, mask, version)
|
FSinfoCansettime = function(self, mask, version)
|
||||||
return bit.band(mask, NFS.FSinfoBits[version].FSF_CANSETTIME)
|
return (mask & NFS.FSinfoBits[version].FSF_CANSETTIME)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
--- Decodes the READDIR section of a NFS ReadDir response
|
--- Decodes the READDIR section of a NFS ReadDir response
|
||||||
@@ -2948,7 +2947,7 @@ Util =
|
|||||||
-- @param mode number containing the ACL mode
|
-- @param mode number containing the ACL mode
|
||||||
-- @return char containing the file type
|
-- @return char containing the file type
|
||||||
FtypeToChar = function(mode)
|
FtypeToChar = function(mode)
|
||||||
local code = bit.band(mode, Util.S_IFMT)
|
local code = mode & Util.S_IFMT
|
||||||
if Util.FileType[code] then
|
if Util.FileType[code] then
|
||||||
return Util.FileType[code].char
|
return Util.FileType[code].char
|
||||||
else
|
else
|
||||||
@@ -2962,7 +2961,7 @@ Util =
|
|||||||
-- @param mode number containing the ACL mode
|
-- @param mode number containing the ACL mode
|
||||||
-- @return string containing the file type name
|
-- @return string containing the file type name
|
||||||
FtypeToString = function(mode)
|
FtypeToString = function(mode)
|
||||||
local code = bit.band(mode, Util.S_IFMT)
|
local code = mode & Util.S_IFMT
|
||||||
if Util.FileType[code] then
|
if Util.FileType[code] then
|
||||||
return Util.FileType[code].str
|
return Util.FileType[code].str
|
||||||
else
|
else
|
||||||
@@ -2977,9 +2976,9 @@ Util =
|
|||||||
-- @param mode number containing the ACL mode
|
-- @param mode number containing the ACL mode
|
||||||
-- @return string containing the octal ACL mode
|
-- @return string containing the octal ACL mode
|
||||||
FmodeToOctalString = function(mode)
|
FmodeToOctalString = function(mode)
|
||||||
local code = bit.band(mode, Util.S_IFMT)
|
local code = mode & Util.S_IFMT
|
||||||
if Util.FileType[code] then
|
if Util.FileType[code] then
|
||||||
code = bit.bxor(mode, code)
|
code = mode ~ code
|
||||||
else
|
else
|
||||||
code = mode
|
code = mode
|
||||||
stdnse.debug1("FmodeToOctalString: Unknown file type, mode: %o", mode)
|
stdnse.debug1("FmodeToOctalString: Unknown file type, mode: %o", mode)
|
||||||
@@ -2997,7 +2996,7 @@ Util =
|
|||||||
for user,_ in pairs(Util.Fperm) do
|
for user,_ in pairs(Util.Fperm) do
|
||||||
local t = Util.Fperm[user]
|
local t = Util.Fperm[user]
|
||||||
for i in pairs(t) do
|
for i in pairs(t) do
|
||||||
local code = bit.band(mode, i)
|
local code = mode & i
|
||||||
if t[code] then
|
if t[code] then
|
||||||
-- save set-ID and sticky bits
|
-- save set-ID and sticky bits
|
||||||
if tmpacl[t[code].idx] == "x" then
|
if tmpacl[t[code].idx] == "x" then
|
||||||
|
|||||||
@@ -23,7 +23,6 @@
|
|||||||
|
|
||||||
local asn1 = require "asn1"
|
local asn1 = require "asn1"
|
||||||
local bin = require "bin"
|
local bin = require "bin"
|
||||||
local bit = require "bit"
|
|
||||||
local comm = require "comm"
|
local comm = require "comm"
|
||||||
local ftp = require "ftp"
|
local ftp = require "ftp"
|
||||||
local ldap = require "ldap"
|
local ldap = require "ldap"
|
||||||
@@ -586,7 +585,7 @@ StartTLS = {
|
|||||||
-- Check the status flags in the TDS packet to see if the message is
|
-- Check the status flags in the TDS packet to see if the message is
|
||||||
-- continued in another TDS packet.
|
-- continued in another TDS packet.
|
||||||
tdsPacketAvailable = (
|
tdsPacketAvailable = (
|
||||||
bit.band( messageStatus, mssql.TDSStream.MESSAGE_STATUS_FLAGS.EndOfMessage)
|
(messageStatus & mssql.TDSStream.MESSAGE_STATUS_FLAGS.EndOfMessage)
|
||||||
~= mssql.TDSStream.MESSAGE_STATUS_FLAGS.EndOfMessage)
|
~= mssql.TDSStream.MESSAGE_STATUS_FLAGS.EndOfMessage)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,6 @@
|
|||||||
|
|
||||||
local stdnse = require "stdnse"
|
local stdnse = require "stdnse"
|
||||||
local bin = require "bin"
|
local bin = require "bin"
|
||||||
local bit = require "bit"
|
|
||||||
local table = require "table"
|
local table = require "table"
|
||||||
local nmap = require "nmap"
|
local nmap = require "nmap"
|
||||||
local sslcert = require "sslcert"
|
local sslcert = require "sslcert"
|
||||||
@@ -120,11 +119,11 @@ local function read_header(buffer, i)
|
|||||||
|
|
||||||
local len
|
local len
|
||||||
i, len = bin.unpack(">S", buffer, i)
|
i, len = bin.unpack(">S", buffer, i)
|
||||||
local msb = bit.band(len, 0x8000) == 0x8000
|
local msb = (len & 0x8000) == 0x8000
|
||||||
local header_length, record_length, padding_length, is_escape
|
local header_length, record_length, padding_length, is_escape
|
||||||
if msb then
|
if msb then
|
||||||
header_length = 2
|
header_length = 2
|
||||||
record_length = bit.band(len, 0x7fff)
|
record_length = len & 0x7fff
|
||||||
padding_length = 0
|
padding_length = 0
|
||||||
else
|
else
|
||||||
header_length = 3
|
header_length = 3
|
||||||
@@ -132,8 +131,8 @@ local function read_header(buffer, i)
|
|||||||
-- don't have enough for the message_type. Back up.
|
-- don't have enough for the message_type. Back up.
|
||||||
return i - SSL_MIN_HEADER, nil
|
return i - SSL_MIN_HEADER, nil
|
||||||
end
|
end
|
||||||
record_length = bit.band(len, 0x3fff)
|
record_length = len & 0x3fff
|
||||||
is_escape = not not bit.band(len, 0x4000)
|
is_escape = not not (len & 0x4000)
|
||||||
i, padding_length = bin.unpack("C", buffer, i)
|
i, padding_length = bin.unpack("C", buffer, i)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -211,7 +210,7 @@ function ssl_record (payload, pad_length)
|
|||||||
if pad_length > 0 then
|
if pad_length > 0 then
|
||||||
return bin.pack(">SCA", length, pad_length, payload)
|
return bin.pack(">SCA", length, pad_length, payload)
|
||||||
else
|
else
|
||||||
return bin.pack(">SA", bit.bor(length, 0x8000), payload)
|
return bin.pack(">SA", (length | 0x8000), payload)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -188,7 +188,6 @@
|
|||||||
-- @copyright Same as Nmap--See https://nmap.org/book/man-legal.html
|
-- @copyright Same as Nmap--See https://nmap.org/book/man-legal.html
|
||||||
|
|
||||||
|
|
||||||
local bit = require "bit"
|
|
||||||
local ipOps = require "ipOps"
|
local ipOps = require "ipOps"
|
||||||
local nmap = require "nmap"
|
local nmap = require "nmap"
|
||||||
local stdnse = require "stdnse"
|
local stdnse = require "stdnse"
|
||||||
@@ -398,8 +397,8 @@ STATE_MSG = {
|
|||||||
[STATE.VULN] = 'VULNERABLE',
|
[STATE.VULN] = 'VULNERABLE',
|
||||||
[STATE.DoS] = 'VULNERABLE (DoS)',
|
[STATE.DoS] = 'VULNERABLE (DoS)',
|
||||||
[STATE.EXPLOIT] = 'VULNERABLE (Exploitable)',
|
[STATE.EXPLOIT] = 'VULNERABLE (Exploitable)',
|
||||||
[bit.bor(STATE.DoS,STATE.VULN)] = 'VULNERABLE (DoS)',
|
[STATE.DoS | STATE.VULN] = 'VULNERABLE (DoS)',
|
||||||
[bit.bor(STATE.EXPLOIT,STATE.VULN)] = 'VULNERABLE (Exploitable)',
|
[STATE.EXPLOIT | STATE.VULN] = 'VULNERABLE (Exploitable)',
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Scripts must provide the correct risk factor string.
|
-- Scripts must provide the correct risk factor string.
|
||||||
@@ -570,7 +569,7 @@ local normalize_vuln_info = function(vuln_table)
|
|||||||
-- the 'VULN' state.
|
-- the 'VULN' state.
|
||||||
if vuln_table.state == STATE.DoS or
|
if vuln_table.state == STATE.DoS or
|
||||||
vuln_table.state == STATE.EXPLOIT then
|
vuln_table.state == STATE.EXPLOIT then
|
||||||
vuln_table.state = bit.bor(vuln_table.state, STATE.VULN)
|
vuln_table.state = vuln_table.state | STATE.VULN
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Convert the following string fields to tables.
|
-- Convert the following string fields to tables.
|
||||||
@@ -785,7 +784,7 @@ local l_push_vuln = function(vulndb, new_vuln)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- Save these fields only when the state is not 'NOT VULNERABLE'
|
-- Save these fields only when the state is not 'NOT VULNERABLE'
|
||||||
if bit.band(new_vuln.state, STATE.NOT_VULN) == 0 then
|
if (new_vuln.state & STATE.NOT_VULN) == 0 then
|
||||||
if new_vuln.risk_factor then
|
if new_vuln.risk_factor then
|
||||||
vuln.risk_factor = new_vuln.risk_factor
|
vuln.risk_factor = new_vuln.risk_factor
|
||||||
vuln.scores = tcopy(new_vuln.scores)
|
vuln.scores = tcopy(new_vuln.scores)
|
||||||
@@ -801,7 +800,7 @@ local l_push_vuln = function(vulndb, new_vuln)
|
|||||||
-- string_format("Script %s checks:", new_vuln.script_name))
|
-- string_format("Script %s checks:", new_vuln.script_name))
|
||||||
--end
|
--end
|
||||||
|
|
||||||
--if bit.band(vuln.state, STATE.EXPLOIT) ~= 0 then
|
--if (vuln.state & STATE.EXPLOIT) ~= 0 then
|
||||||
-- vuln.exploit_results = tcopy(new_vuln.exploit_results)
|
-- vuln.exploit_results = tcopy(new_vuln.exploit_results)
|
||||||
-- if vuln.exploit_results then
|
-- if vuln.exploit_results then
|
||||||
-- insert(vuln.exploit_results, 1,
|
-- insert(vuln.exploit_results, 1,
|
||||||
@@ -888,7 +887,7 @@ local l_update_vuln = function(vulndb, old_vuln, new_vuln)
|
|||||||
|
|
||||||
-- Remove these fields if the state is NOT VULNERABLE
|
-- Remove these fields if the state is NOT VULNERABLE
|
||||||
-- Note: At this level the old_vuln.state was already updated.
|
-- Note: At this level the old_vuln.state was already updated.
|
||||||
if bit.band(old_vuln.state, STATE.NOT_VULN) ~= 0 then
|
if (old_vuln.state & STATE.NOT_VULN) ~= 0 then
|
||||||
old_vuln.risk_factor = nil
|
old_vuln.risk_factor = nil
|
||||||
old_vuln.scores = nil
|
old_vuln.scores = nil
|
||||||
old_vuln.description = nil
|
old_vuln.description = nil
|
||||||
@@ -921,7 +920,7 @@ local l_update_vuln = function(vulndb, old_vuln, new_vuln)
|
|||||||
--end
|
--end
|
||||||
|
|
||||||
--if new_vuln.exploit_results and
|
--if new_vuln.exploit_results and
|
||||||
--bit.band(old_vuln.state, STATE.EXPLOIT) ~= 0 then
|
--(old_vuln.state & STATE.EXPLOIT) ~= 0 then
|
||||||
-- old_vuln.exploit_results = old_vuln.exploit_results or {}
|
-- old_vuln.exploit_results = old_vuln.exploit_results or {}
|
||||||
-- insert(old_vuln.exploit_results,
|
-- insert(old_vuln.exploit_results,
|
||||||
-- string_format("Script %s exploits:", new_vuln.script_name))
|
-- string_format("Script %s exploits:", new_vuln.script_name))
|
||||||
@@ -1178,7 +1177,7 @@ end
|
|||||||
-- otherwise False.
|
-- otherwise False.
|
||||||
local l_filter_vuln = function(vuln_table, filter)
|
local l_filter_vuln = function(vuln_table, filter)
|
||||||
if filter and next(filter) then
|
if filter and next(filter) then
|
||||||
if filter.state and bit.band(vuln_table.state, filter.state) == 0 then
|
if filter.state and (vuln_table.state & filter.state) == 0 then
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -1338,7 +1337,7 @@ local l_make_output = function(fid_table, entries, filter)
|
|||||||
"vulns.lua: Vulnerability '%s' (host: %s): FOUND",
|
"vulns.lua: Vulnerability '%s' (host: %s): FOUND",
|
||||||
vuln_table.title, vuln_table.host.ip)
|
vuln_table.title, vuln_table.host.ip)
|
||||||
|
|
||||||
if bit.band(vuln_table.state, STATE.NOT_VULN) == 0 then
|
if (vuln_table.state & STATE.NOT_VULN) == 0 then
|
||||||
host_entries.vulns[#host_entries.vulns + 1] = vuln_table
|
host_entries.vulns[#host_entries.vulns + 1] = vuln_table
|
||||||
else
|
else
|
||||||
save_not_vulns(host_entries.not_vulns, vuln_table)
|
save_not_vulns(host_entries.not_vulns, vuln_table)
|
||||||
@@ -1355,7 +1354,7 @@ local l_make_output = function(fid_table, entries, filter)
|
|||||||
if check_vuln(vuln_table, fid_table, filter) then
|
if check_vuln(vuln_table, fid_table, filter) then
|
||||||
debug(5,
|
debug(5,
|
||||||
"vulns.lua: Vulnerability '%s': FOUND", vuln_table.title)
|
"vulns.lua: Vulnerability '%s': FOUND", vuln_table.title)
|
||||||
if bit.band(vuln_table.state, STATE.NOT_VULN) == 0 then
|
if (vuln_table.state & STATE.NOT_VULN) == 0 then
|
||||||
networks.vulns[#networks.vulns + 1] = vuln_table
|
networks.vulns[#networks.vulns + 1] = vuln_table
|
||||||
else
|
else
|
||||||
save_not_vulns(networks.not_vulns, vuln_table)
|
save_not_vulns(networks.not_vulns, vuln_table)
|
||||||
@@ -1807,7 +1806,7 @@ local format_vuln_base = function(vuln_table, showall)
|
|||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
if not showall and bit.band(vuln_table.state, STATE.NOT_VULN) ~= 0 then
|
if not showall and (vuln_table.state & STATE.NOT_VULN) ~= 0 then
|
||||||
debug(2, "vulns.lua: vulnerability '%s'%s: %s.",
|
debug(2, "vulns.lua: vulnerability '%s'%s: %s.",
|
||||||
vuln_table.title,
|
vuln_table.title,
|
||||||
vuln_table.host and
|
vuln_table.host and
|
||||||
@@ -1848,7 +1847,7 @@ local format_vuln_base = function(vuln_table, showall)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- Show this information only if the program is vulnerable
|
-- Show this information only if the program is vulnerable
|
||||||
if bit.band(vuln_table.state, STATE.NOT_VULN) == 0 then
|
if (vuln_table.state & STATE.NOT_VULN) == 0 then
|
||||||
if vuln_table.risk_factor then
|
if vuln_table.risk_factor then
|
||||||
local risk_str = ""
|
local risk_str = ""
|
||||||
|
|
||||||
@@ -2084,7 +2083,7 @@ end
|
|||||||
--
|
--
|
||||||
-- -- Save only vulnerabilities with the <code>VULNERABLE</code> state.
|
-- -- Save only vulnerabilities with the <code>VULNERABLE</code> state.
|
||||||
-- local function save_only_vuln(vuln_table)
|
-- local function save_only_vuln(vuln_table)
|
||||||
-- if bit.band(vuln_table.state, vulns.STATE.VULN) ~= 0 then
|
-- if (vuln_table.state & vulns.STATE.VULN) ~= 0 then
|
||||||
-- return true
|
-- return true
|
||||||
-- end
|
-- end
|
||||||
-- return false
|
-- return false
|
||||||
@@ -2212,7 +2211,7 @@ Report = {
|
|||||||
vuln_table.script_name = self.script_name
|
vuln_table.script_name = self.script_name
|
||||||
vuln_table.host = self.host
|
vuln_table.host = self.host
|
||||||
vuln_table.port = self.port
|
vuln_table.port = self.port
|
||||||
if bit.band(vuln_table.state, STATE.NOT_VULN) ~= 0 then
|
if (vuln_table.state & STATE.NOT_VULN) ~= 0 then
|
||||||
insert(self.entries.not_vulns, vuln_table)
|
insert(self.entries.not_vulns, vuln_table)
|
||||||
else
|
else
|
||||||
insert(self.entries.vulns, vuln_table)
|
insert(self.entries.vulns, vuln_table)
|
||||||
|
|||||||
Reference in New Issue
Block a user