1
0
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:
dmiller
2017-10-19 02:42:55 +00:00
parent a86d6eebc3
commit 13dd6a3480
4 changed files with 37 additions and 41 deletions

View File

@@ -76,7 +76,6 @@
-- protocols are tested. (ie. "tcp", "udp")
local bin = require "bin"
local bit = require "bit"
local datafiles = require "datafiles"
local math = require "math"
local nmap = require "nmap"
@@ -438,9 +437,9 @@ Comm = {
end
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
end
@@ -1390,43 +1389,43 @@ NFS = {
end,
AccessRead = function (self, mask, version)
return bit.band(mask, NFS.AccessBits[version].ACCESS_READ)
return (mask & NFS.AccessBits[version].ACCESS_READ)
end,
AccessLookup = function (self, mask, version)
return bit.band(mask, NFS.AccessBits[version].ACCESS_LOOKUP)
return (mask & NFS.AccessBits[version].ACCESS_LOOKUP)
end,
AccessModify = function (self, mask, version)
return bit.band(mask, NFS.AccessBits[version].ACCESS_MODIFY)
return (mask & NFS.AccessBits[version].ACCESS_MODIFY)
end,
AccessExtend = function (self, mask, version)
return bit.band(mask, NFS.AccessBits[version].ACCESS_EXTEND)
return (mask & NFS.AccessBits[version].ACCESS_EXTEND)
end,
AccessDelete = function (self, mask, version)
return bit.band(mask, NFS.AccessBits[version].ACCESS_DELETE)
return (mask & NFS.AccessBits[version].ACCESS_DELETE)
end,
AccessExecute = function (self, mask, version)
return bit.band(mask, NFS.AccessBits[version].ACCESS_EXECUTE)
return (mask & NFS.AccessBits[version].ACCESS_EXECUTE)
end,
FSinfoLink = function(self, mask, version)
return bit.band(mask, NFS.FSinfoBits[version].FSF_LINK)
return (mask & NFS.FSinfoBits[version].FSF_LINK)
end,
FSinfoSymlink = function(self, mask, version)
return bit.band(mask, NFS.FSinfoBits[version].FSF_SYMLINK)
return (mask & NFS.FSinfoBits[version].FSF_SYMLINK)
end,
FSinfoHomogeneous = function(self, mask, version)
return bit.band(mask, NFS.FSinfoBits[version].FSF_HOMOGENEOUS)
return (mask & NFS.FSinfoBits[version].FSF_HOMOGENEOUS)
end,
FSinfoCansettime = function(self, mask, version)
return bit.band(mask, NFS.FSinfoBits[version].FSF_CANSETTIME)
return (mask & NFS.FSinfoBits[version].FSF_CANSETTIME)
end,
--- Decodes the READDIR section of a NFS ReadDir response
@@ -2948,7 +2947,7 @@ Util =
-- @param mode number containing the ACL mode
-- @return char containing the file type
FtypeToChar = function(mode)
local code = bit.band(mode, Util.S_IFMT)
local code = mode & Util.S_IFMT
if Util.FileType[code] then
return Util.FileType[code].char
else
@@ -2962,7 +2961,7 @@ Util =
-- @param mode number containing the ACL mode
-- @return string containing the file type name
FtypeToString = function(mode)
local code = bit.band(mode, Util.S_IFMT)
local code = mode & Util.S_IFMT
if Util.FileType[code] then
return Util.FileType[code].str
else
@@ -2977,9 +2976,9 @@ Util =
-- @param mode number containing the ACL mode
-- @return string containing the octal ACL mode
FmodeToOctalString = function(mode)
local code = bit.band(mode, Util.S_IFMT)
local code = mode & Util.S_IFMT
if Util.FileType[code] then
code = bit.bxor(mode, code)
code = mode ~ code
else
code = mode
stdnse.debug1("FmodeToOctalString: Unknown file type, mode: %o", mode)
@@ -2997,7 +2996,7 @@ Util =
for user,_ in pairs(Util.Fperm) do
local t = Util.Fperm[user]
for i in pairs(t) do
local code = bit.band(mode, i)
local code = mode & i
if t[code] then
-- save set-ID and sticky bits
if tmpacl[t[code].idx] == "x" then

View File

@@ -23,7 +23,6 @@
local asn1 = require "asn1"
local bin = require "bin"
local bit = require "bit"
local comm = require "comm"
local ftp = require "ftp"
local ldap = require "ldap"
@@ -586,7 +585,7 @@ StartTLS = {
-- Check the status flags in the TDS packet to see if the message is
-- continued in another TDS packet.
tdsPacketAvailable = (
bit.band( messageStatus, mssql.TDSStream.MESSAGE_STATUS_FLAGS.EndOfMessage)
(messageStatus & mssql.TDSStream.MESSAGE_STATUS_FLAGS.EndOfMessage)
~= mssql.TDSStream.MESSAGE_STATUS_FLAGS.EndOfMessage)
end

View File

@@ -7,7 +7,6 @@
local stdnse = require "stdnse"
local bin = require "bin"
local bit = require "bit"
local table = require "table"
local nmap = require "nmap"
local sslcert = require "sslcert"
@@ -120,11 +119,11 @@ local function read_header(buffer, i)
local len
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
if msb then
header_length = 2
record_length = bit.band(len, 0x7fff)
record_length = len & 0x7fff
padding_length = 0
else
header_length = 3
@@ -132,8 +131,8 @@ local function read_header(buffer, i)
-- don't have enough for the message_type. Back up.
return i - SSL_MIN_HEADER, nil
end
record_length = bit.band(len, 0x3fff)
is_escape = not not bit.band(len, 0x4000)
record_length = len & 0x3fff
is_escape = not not (len & 0x4000)
i, padding_length = bin.unpack("C", buffer, i)
end
@@ -211,7 +210,7 @@ function ssl_record (payload, pad_length)
if pad_length > 0 then
return bin.pack(">SCA", length, pad_length, payload)
else
return bin.pack(">SA", bit.bor(length, 0x8000), payload)
return bin.pack(">SA", (length | 0x8000), payload)
end
end

View File

@@ -188,7 +188,6 @@
-- @copyright Same as Nmap--See https://nmap.org/book/man-legal.html
local bit = require "bit"
local ipOps = require "ipOps"
local nmap = require "nmap"
local stdnse = require "stdnse"
@@ -398,8 +397,8 @@ STATE_MSG = {
[STATE.VULN] = 'VULNERABLE',
[STATE.DoS] = 'VULNERABLE (DoS)',
[STATE.EXPLOIT] = 'VULNERABLE (Exploitable)',
[bit.bor(STATE.DoS,STATE.VULN)] = 'VULNERABLE (DoS)',
[bit.bor(STATE.EXPLOIT,STATE.VULN)] = 'VULNERABLE (Exploitable)',
[STATE.DoS | STATE.VULN] = 'VULNERABLE (DoS)',
[STATE.EXPLOIT | STATE.VULN] = 'VULNERABLE (Exploitable)',
}
-- Scripts must provide the correct risk factor string.
@@ -570,7 +569,7 @@ local normalize_vuln_info = function(vuln_table)
-- the 'VULN' state.
if vuln_table.state == STATE.DoS or
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
-- Convert the following string fields to tables.
@@ -785,7 +784,7 @@ local l_push_vuln = function(vulndb, new_vuln)
end
-- 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
vuln.risk_factor = new_vuln.risk_factor
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))
--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)
-- if vuln.exploit_results then
-- 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
-- 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.scores = nil
old_vuln.description = nil
@@ -921,7 +920,7 @@ local l_update_vuln = function(vulndb, old_vuln, new_vuln)
--end
--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 {}
-- insert(old_vuln.exploit_results,
-- string_format("Script %s exploits:", new_vuln.script_name))
@@ -1178,7 +1177,7 @@ end
-- otherwise False.
local l_filter_vuln = function(vuln_table, filter)
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
end
@@ -1338,7 +1337,7 @@ local l_make_output = function(fid_table, entries, filter)
"vulns.lua: Vulnerability '%s' (host: %s): FOUND",
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
else
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
debug(5,
"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
else
save_not_vulns(networks.not_vulns, vuln_table)
@@ -1807,7 +1806,7 @@ local format_vuln_base = function(vuln_table, showall)
return nil
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.",
vuln_table.title,
vuln_table.host and
@@ -1848,7 +1847,7 @@ local format_vuln_base = function(vuln_table, showall)
end
-- 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
local risk_str = ""
@@ -2084,7 +2083,7 @@ end
--
-- -- Save only vulnerabilities with the <code>VULNERABLE</code> state.
-- 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
-- end
-- return false
@@ -2212,7 +2211,7 @@ Report = {
vuln_table.script_name = self.script_name
vuln_table.host = self.host
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)
else
insert(self.entries.vulns, vuln_table)