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")
|
||||
|
||||
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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user