mirror of
https://github.com/nmap/nmap.git
synced 2025-12-15 04:09:01 +00:00
Add luadoc files for openssl and pcre. That finishes the modules in the section
"Lua Extensions", which is now just a stub.
This commit is contained in:
@@ -763,7 +763,7 @@ action refer to <xref linkend="nse-tutorial-action"/>.
|
||||
</sect2>
|
||||
</sect1>
|
||||
<sect1 id="nse-library">
|
||||
<indexterm class="startofrange" id="nse-library-indexterm"><primary>Nmap Scripting Engine (NSE)</primary><secondary>modules</secondary></indexterm>
|
||||
<indexterm><primary>Nmap Scripting Engine (NSE)</primary><secondary>modules</secondary></indexterm>
|
||||
<title>Lua Extensions</title>
|
||||
<para>In addition to the significant built-in capabilities of
|
||||
Lua, we have written or integrated several extensions to make
|
||||
@@ -774,458 +774,7 @@ action refer to <xref linkend="nse-tutorial-action"/>.
|
||||
<ulink url="http://www.lua.org/manual/5.1/manual.html#pdf-require">
|
||||
<literal>require</literal>
|
||||
</ulink> the default modules in order to use them.
|
||||
The default modules are described in the following sections.
|
||||
</para>
|
||||
|
||||
<sect2 id="nse-pcre">
|
||||
<indexterm class="startofrange" id="nse-pcre-indexterm"><primary><varname>pcre</varname> NSE module</primary></indexterm>
|
||||
<indexterm><primary>Perl Compatible Regular Expressions (PCRE)</primary><secondary>in NSE</secondary></indexterm>
|
||||
<indexterm><primary>regular expressions</primary><secondary>in NSE</secondary></indexterm>
|
||||
<title>Perl Compatible Regular Expressions</title>
|
||||
|
||||
<para>
|
||||
One of Lua's quirks is its string patterns. While they have
|
||||
great performance and are tightly integrated into the Lua
|
||||
interpreter, they are very different in syntax and not as
|
||||
powerful as standard regular expressions. So we have
|
||||
integrated Perl compatible regular expressions into Lua
|
||||
using PCRE and a modified version of the Lua PCRE library
|
||||
written by Reuben Thomas<indexterm><primary>Thomas, Reuben</primary></indexterm>
|
||||
and Shmuel Zeigerman.<indexterm><primary>Zeigerman, Shmuel</primary></indexterm>
|
||||
These are
|
||||
the same sort of regular expressions used by Nmap version
|
||||
detection. The main modification to their library is that
|
||||
the NSE version only supports PCRE expressions instead of both
|
||||
PCRE and POSIX patterns. In order to maintain a high script
|
||||
execution speed, the library interfacing with PCRE is
|
||||
kept very thin. It is not integrated as seamlessly as the
|
||||
Lua string pattern API. This allows script authors to decide
|
||||
when to use PCRE expressions versus Lua patterns. The use of PCRE
|
||||
involves a separate pattern compilation step, which saves
|
||||
execution time when patterns are reused. Compiled patterns
|
||||
can be cached in the NSE registry and reused by other
|
||||
scripts. The PCRE functions reside inside the <literal>pcre</literal>
|
||||
namespace.
|
||||
</para>
|
||||
|
||||
<indexterm><primary>Perl Compatible Regular Expressions (PCRE)</primary><secondary>security vulnerabilities in</secondary></indexterm>
|
||||
<warning><para>PCRE has a history of security vulnerabilities
|
||||
allowing attackers who are able to compile arbitrary regular
|
||||
expressions to execute arbitrary code. More such
|
||||
vulnerabilities may be discovered in the future. These have
|
||||
never affected Nmap because it doesn't give attackers any
|
||||
control over the regular expressions it uses. Similarly, NSE
|
||||
scripts should never build regular expressions with untrusted
|
||||
network input. Matching hardcoded regular expressions
|
||||
<emphasis>against</emphasis> the untrusted input is
|
||||
fine.</para></warning>
|
||||
|
||||
<para>The following documentation is derived from that supplied by
|
||||
the PCRE Lua lib.</para>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>pcre.new(pattern, flags, locale)</option>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Returns a compiled regular expression. The first
|
||||
argument is a string describing the pattern, such as
|
||||
<literal>^foo$</literal>. The second
|
||||
argument is a number describing which compilation
|
||||
flags are set. The compilation flags are set
|
||||
bitwise. If you want to set the 3rd (corresponding to
|
||||
the number 4) and the 1st (corresponding to 1) bit
|
||||
for example you would pass the number 5 as a second
|
||||
argument. The compilation flags accepted are those
|
||||
of the PCRE C library. These include flags for case
|
||||
insensitive matching (1), matching line beginnings (^)
|
||||
and endings ($) even in multiline strings (i.e. strings
|
||||
containing <quote>\n</quote>) (2) and a flag for matching across
|
||||
line boundaries (4). No compilation flags yield a default
|
||||
value of 0. The third (optional) argument is a string
|
||||
describing the locale which should be used to compile the
|
||||
regular expression. The variable is a string which is
|
||||
passed to the C standard library function
|
||||
<function>setlocale</function>. For more
|
||||
information on this argument refer to the
|
||||
documentation of <function>setlocale</function>. The
|
||||
resulting compiled regular expression is ready to be
|
||||
matched against strings. Compiled regular
|
||||
expressions are subject to Lua's garbage collection.
|
||||
Generally speaking, <literal>my_regex = pcre.new("<replaceable>pcre-pattern</replaceable>",0,"C")</literal>
|
||||
should do the job most of the time.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
|
||||
<varlistentry>
|
||||
<term><option>pcre.flags()</option>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Returns a table of the available PCRE option flags
|
||||
(numbers) keyed by their names (strings). Possible
|
||||
names of the available strings can be retrieved from
|
||||
the documentation of the PCRE library used to link
|
||||
against Nmap. The key is the option name in the
|
||||
manual minus the <literal>PCRE</literal>
|
||||
prefix. <literal>PCRE_CASELESS</literal> becomes
|
||||
<literal>CASELESS</literal> for example.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>pcre.version()</option>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Returns the version of the PCRE library in use as a
|
||||
string. For example <literal>6.4 05-Sep-2005</literal>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>pcre_obj:match(string, start, flags)</option>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Returns the start point and the end point of
|
||||
the first match of the compiled regular expression
|
||||
pcre_obj in the string. A third
|
||||
returned value is a table which contains
|
||||
<literal>false</literal> in the positions where the
|
||||
pattern did not match. If named sub-patterns were
|
||||
used, the table also contains substring matches keyed
|
||||
by their sub-pattern name. Should no match be found the
|
||||
function returns <literal>nil</literal>.
|
||||
The second and third arguments are optional. The second
|
||||
argument is a number specifying where the engine should
|
||||
start trying to apply the pattern. The third argument
|
||||
specifies execution flags for the pattern.
|
||||
If you want to see if a given string matches a certain expression
|
||||
you could use:</para>
|
||||
|
||||
<programlisting>
|
||||
s = pcre_obj:match("string to be searched", 0,0);
|
||||
if(s) code_to_be_done_on_match end
|
||||
</programlisting>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>pcre_obj:exec(string, start, flags)</option>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
This function is like <literal>match()</literal> except that a table returned as
|
||||
a third result contains offsets of substring matches rather
|
||||
than substring matches themselves. That table will not
|
||||
contain string keys, even if named sub-patterns are used. For
|
||||
example, if the whole match is at offsets <literal>10, 20</literal> and substring
|
||||
matches are at offsets <literal>12, 14</literal> and <literal>16, 19</literal> then the function
|
||||
returns the following: <literal>10, 20, {12,14,16,19}</literal>
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>pcre_obj:gmatch(string, func, n, ef)</option>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Tries to match the regular expression <replaceable>pcre_obj</replaceable> against <replaceable>string</replaceable>
|
||||
up to <replaceable>n</replaceable> times (or as many as possible if <replaceable>n</replaceable> is either
|
||||
not given or is not a positive number), subject to
|
||||
execution flags ef. Each time there is a match, <replaceable>func</replaceable>
|
||||
is called as <replaceable>func(m, t)</replaceable>, where <replaceable>m</replaceable> is the matched
|
||||
string and <replaceable>t</replaceable> is a table of substring matches. This
|
||||
table contains <literal>false</literal> in the
|
||||
positions where the corresponding sub-pattern did
|
||||
not match. If named sub-patterns are used then the
|
||||
table also contains substring matches keyed by their
|
||||
correspondent sub-pattern names (strings). If <replaceable>func</replaceable>
|
||||
returns a <literal>true</literal> value, then gmatch
|
||||
immediately returns; gmatch returns the number of
|
||||
matches made.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
<indexterm class="endofrange" startref="nse-pcre-indexterm"/>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="nse-openssl">
|
||||
<indexterm class="startofrange" id="nse-openssl-indexterm"><primary><varname>openssl</varname> NSE module</primary></indexterm>
|
||||
<indexterm><primary>OpenSSL</primary><seealso><varname>openssl</varname> NSE module</seealso></indexterm>
|
||||
<indexterm><primary>OpenSSL</primary><secondary>in NSE</secondary></indexterm>
|
||||
<title>OpenSSL NSE bindings</title>
|
||||
|
||||
<para>
|
||||
The <literal>openssl</literal> module is a wrapper for OpenSSL
|
||||
functions that provide encryption and decryption, hashing, and
|
||||
multiprecision integers.
|
||||
</para>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.bignum_num_bits(bignum)</option></term>
|
||||
<listitem>
|
||||
<para>Returns the size of <literal>bignum</literal> in bits.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.bignum_num_bytes(bignum)</option></term>
|
||||
<listitem>
|
||||
<para>Returns the size of <literal>bignum</literal> in bytes.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.bignum_set_bit(bignum, position)</option></term>
|
||||
<listitem>
|
||||
<para>Sets the bit at <literal>position</literal> in <literal>bignum</literal>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.bignum_clear_bit(bignum, position)</option></term>
|
||||
<listitem>
|
||||
<para>Clears the bit at <literal>position</literal> in <literal>bignum</literal>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.bignum_is_bit_set(bignum, position)</option></term>
|
||||
<listitem>
|
||||
<para>Gets the state of the bit at <literal>position</literal> in <literal>bignum</literal>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.bignum_set_negative(bignum, negative)</option></term>
|
||||
<listitem>
|
||||
<para>Sets the sign of <literal>bignum</literal>. If
|
||||
<literal>negative</literal> is <literal>true</literal>
|
||||
the sign becomes negative, otherwise it becomes positive.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.bignum_is_negative(bignum)</option></term>
|
||||
<listitem>
|
||||
<para>Returns true if <literal>bignum</literal> is
|
||||
negative, false otherwise.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.bignum_bin2bn(string)</option></term>
|
||||
<listitem>
|
||||
<para>Converts the binary-encoded <literal>string</literal> into a <literal>bignum</literal>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.bignum_dec2bn(string)</option></term>
|
||||
<listitem>
|
||||
<para>Converts the decimal-encoded <literal>string</literal> into a <literal>bignum</literal>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.bignum_hex2bn(string)</option></term>
|
||||
<listitem>
|
||||
<para>Converts the hex-encoded <literal>string</literal> into a <literal>bignum</literal>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.bignum_bn2bin(bignum)</option></term>
|
||||
<listitem>
|
||||
<para>Converts <literal>bignum</literal> into a binary-encoded string.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.bignum_bn2dec(bignum)</option></term>
|
||||
<listitem>
|
||||
<para>Converts <literal>bignum</literal> into a decimal-encoded string.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.bignum_bn2hex(bignum)</option></term>
|
||||
<listitem>
|
||||
<para>Converts <literal>bignum</literal> into a hex-encoded string.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.bignum_rand(bits)</option></term>
|
||||
<listitem>
|
||||
<para>Returns a random <literal>bignum</literal> with a
|
||||
size of <literal>bits</literal> bits.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.bignum_pseudo_rand(bits)</option></term>
|
||||
<listitem>
|
||||
<para>Returns a pseudorandom <literal>bignum</literal>
|
||||
with a size of <literal>bits</literal> bits.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.bignum_mod_exp(a, p, m)</option></term>
|
||||
<listitem>
|
||||
<para>Returns the bignum which is the result of <literal>a</literal>^<literal>p</literal> mod <literal>m</literal>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.rand_bytes(bytes)</option></term>
|
||||
<listitem>
|
||||
<para>Returns a string of length
|
||||
<literal>bytes</literal> containing random data.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.rand_pseudo_bytes(bytes)</option></term>
|
||||
<listitem>
|
||||
<para>Returns a string of length
|
||||
<literal>bytes</literal> containing pseudorandom data.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>
|
||||
<indexterm><primary>digests, cryptographic</primary></indexterm>
|
||||
<indexterm><primary>hashes, cryptographic</primary></indexterm>
|
||||
<option>openssl.md2(message)</option></term>
|
||||
<listitem>
|
||||
<para>Returns the MD2 digest of <literal>message</literal>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.md4(message)</option></term>
|
||||
<listitem>
|
||||
<para>Returns the MD4 digest of <literal>message</literal>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.md5(message)</option></term>
|
||||
<listitem>
|
||||
<para>Returns the MD5 digest of <literal>message</literal>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.sha1(message)</option></term>
|
||||
<listitem>
|
||||
<para>Returns the SHA-1 digest of <literal>message</literal>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.ripemd160(message)</option></term>
|
||||
<listitem>
|
||||
<para>Returns the RIPEMD-160 digest of <literal>message</literal>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.digest(algorithm, message)</option></term>
|
||||
<listitem>
|
||||
<para>Returns the digest of <literal>message</literal>
|
||||
using the algorithm given by the string
|
||||
<literal>algorithm</literal>. The algorithm name may be
|
||||
anything returned by the
|
||||
<function>openssl.supported_digests</function>
|
||||
function.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.hmac(algorithm, key, message)</option></term>
|
||||
<listitem>
|
||||
<para>Returns the message authentication code of
|
||||
<literal>message</literal> using the given algorithm and
|
||||
key. <literal>algorithm</literal> may be anything
|
||||
returned by the
|
||||
<function>openssl.supported_digests</function>
|
||||
function.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>
|
||||
<indexterm><primary>keys, cryptographic</primary></indexterm>
|
||||
<option>openssl.encrypt(algorithm, key, iv, data, padding = false)</option></term>
|
||||
<listitem>
|
||||
<para>Encrypt <literal>data</literal> with the given
|
||||
algorithm, key, and initialization vector.
|
||||
<literal>algorithm</literal> may be anything
|
||||
returned by the
|
||||
<function>openssl.supported_ciphers</function>
|
||||
function. If <literal>padding</literal> is true then a
|
||||
partial final block will be padded and encrypted.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.decrypt(algorithm, key, iv, data, padding = false)</option></term>
|
||||
<listitem>
|
||||
<para>Encrypt <literal>data</literal> with the given
|
||||
algorithm, key, and initialization vector.
|
||||
<literal>algorithm</literal> may be anything
|
||||
returned by the
|
||||
<function>openssl.supported_ciphers</function>
|
||||
function. If <literal>padding</literal> is true then the
|
||||
final block must be padded correctly.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.supported_ciphers()</option></term>
|
||||
<listitem>
|
||||
<para>Returns a table with the names of the supported cipher algorithms.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.supported_digests()</option></term>
|
||||
<listitem>
|
||||
<para>Returns a table with the names of the supported digest algorithms.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>openssl.DES_string_to_key(string data)</option></term>
|
||||
<listitem>
|
||||
<para>Converts <literal>data</literal>, which must be a
|
||||
7-byte string, into an 8-byte DES key and sets the
|
||||
parity.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
<indexterm class="endofrange" startref="nse-openssl-indexterm"/>
|
||||
</sect2>
|
||||
|
||||
<indexterm class="endofrange" startref="nse-library-indexterm"/>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="nse-api">
|
||||
|
||||
108
nselib/openssl.luadoc
Normal file
108
nselib/openssl.luadoc
Normal file
@@ -0,0 +1,108 @@
|
||||
--- OpenSSL bindings.
|
||||
-- \n\n
|
||||
-- This module is a wrapper for OpenSSL functions that provide encryption and
|
||||
-- decryption, hashing, and multiprecision integers.
|
||||
-- @author Sven Klemm <sven@c3d2.de>
|
||||
-- @copyright See nmaps COPYING for licence
|
||||
|
||||
module "openssl"
|
||||
|
||||
--- Returns the size of bignum in bits.
|
||||
function openssl.bignum_num_bits(bignum)
|
||||
|
||||
--- Returns the size of bignum in bytes.
|
||||
function openssl.bignum_num_bytes(bignum)
|
||||
|
||||
--- Sets the bit at position in bignum.
|
||||
function openssl.bignum_set_bit(bignum, position)
|
||||
|
||||
--- Clears the bit at position in bignum.
|
||||
function openssl.bignum_clear_bit(bignum, position)
|
||||
|
||||
--- Gets the state of the bit at position in bignum.
|
||||
function openssl.bignum_is_bit_set(bignum, position)
|
||||
|
||||
--- Sets the sign of bignum. If negative is true the sign becomes negative,
|
||||
-- otherwise it becomes positive.
|
||||
function openssl.bignum_set_negative(bignum, negative)
|
||||
|
||||
--- Returns true if bignum is negative, false otherwise.
|
||||
function openssl.bignum_is_negative(bignum)
|
||||
|
||||
--- Converts the binary-encoded string into a bignum.
|
||||
function openssl.bignum_bin2bn(string)
|
||||
|
||||
--- Converts the decimal-encoded string into a bignum.
|
||||
function openssl.bignum_dec2bn(string)
|
||||
|
||||
--- Converts the hex-encoded string into a bignum.
|
||||
function openssl.bignum_hex2bn(string)
|
||||
|
||||
--- Converts bignum into a binary-encoded string.
|
||||
function openssl.bignum_bn2bin(bignum)
|
||||
|
||||
--- Converts bignum into a decimal-encoded string.
|
||||
function openssl.bignum_bn2dec(bignum)
|
||||
|
||||
--- Converts bignum into a hex-encoded string.
|
||||
function openssl.bignum_bn2hex(bignum)
|
||||
|
||||
--- Returns a random bignum with a
|
||||
function openssl.bignum_rand(bits)
|
||||
|
||||
--- Returns a pseudorandom bignum with a the given size in bits.
|
||||
function openssl.bignum_pseudo_rand(bits)
|
||||
|
||||
--- Returns the bignum which is the result of a^p mod m.
|
||||
function openssl.bignum_mod_exp(a, p, m)
|
||||
|
||||
--- Returns a string of length bytes containing random data.
|
||||
function openssl.rand_bytes(bytes)
|
||||
|
||||
--- Returns a string of length bytes containing pseudorandom data.
|
||||
function openssl.rand_pseudo_bytes(bytes)
|
||||
|
||||
--- Returns the MD2 digest of message.
|
||||
function openssl.md2(message)
|
||||
|
||||
--- Returns the MD4 digest of message.
|
||||
function openssl.md4(message)
|
||||
|
||||
--- Returns the MD5 digest of message.
|
||||
function openssl.md5(message)
|
||||
|
||||
--- Returns the SHA-1 digest of message.
|
||||
function openssl.sha1(message)
|
||||
|
||||
--- Returns the RIPEMD-160 digest of message.
|
||||
function openssl.ripemd160(message)
|
||||
|
||||
--- Returns the digest of message using the algorithm given by the string
|
||||
-- algorithm. The algorithm name may be anything returned by the
|
||||
-- openssl.supported_digests function.
|
||||
function openssl.digest(algorithm, message)
|
||||
|
||||
--- Returns the message authentication code of message using the given algorithm
|
||||
-- and key. algorithm may be anything returned by the openssl.supported_digests
|
||||
-- function.
|
||||
function openssl.hmac(algorithm, key, message)
|
||||
|
||||
--- Encrypt data with the given algorithm, key, and initialization vector.
|
||||
-- algorithm may be anything returned by the openssl.supported_ciphers function.
|
||||
-- If padding is true then a partial final block will be padded and encrypted.
|
||||
function openssl.encrypt(algorithm, key, iv, data, padding = false)
|
||||
|
||||
--- Encrypt data with the given algorithm, key, and initialization vector.
|
||||
-- algorithm may be anything returned by the openssl.supported_ciphers function.
|
||||
-- If padding is true then the final block must be padded correctly.
|
||||
function openssl.decrypt(algorithm, key, iv, data, padding = false)
|
||||
|
||||
--- Returns a table with the names of the supported cipher algorithms.
|
||||
function openssl.supported_ciphers()
|
||||
|
||||
--- Returns a table with the names of the supported digest algorithms.
|
||||
function openssl.supported_digests()
|
||||
|
||||
--- Converts data, which must be a 7-byte string, into an 8-byte DES key and
|
||||
-- sets the parity.
|
||||
function openssl.DES_string_to_key(string data)
|
||||
119
nselib/pcre.luadoc
Normal file
119
nselib/pcre.luadoc
Normal file
@@ -0,0 +1,119 @@
|
||||
--- Perl Compatible Regular Expressions
|
||||
-- \n\n
|
||||
-- One of Lua's quirks is its string patterns. While they have great performance
|
||||
-- and are tightly integrated into the Lua interpreter, they are very different
|
||||
-- in syntax and not as powerful as standard regular expressions. So we have
|
||||
-- integrated Perl compatible regular expressions into Lua using PCRE and a
|
||||
-- modified version of the Lua PCRE library written by Reuben Thomas and Shmuel
|
||||
-- Zeigerman. These are the same sort of regular expressions used by Nmap
|
||||
-- version detection. The main modification to their library is that the NSE
|
||||
-- version only supports PCRE expressions instead of both PCRE and POSIX
|
||||
-- patterns. In order to maintain a high script execution speed, the library
|
||||
-- interfacing with PCRE is kept very thin. It is not integrated as seamlessly
|
||||
-- as the Lua string pattern API. This allows script authors to decide when to
|
||||
-- use PCRE expressions versus Lua patterns. The use of PCRE involves a
|
||||
-- separate pattern compilation step, which saves execution time when patterns
|
||||
-- are reused. Compiled patterns can be cached in the NSE registry and reused
|
||||
-- by other scripts.
|
||||
-- \n\n
|
||||
-- The documentation for this module is derived from that supplied by the PCRE
|
||||
-- Lua lib.
|
||||
-- \n\n
|
||||
-- Warning: PCRE has a history of security vulnerabilities allowing attackers
|
||||
-- who are able to compile arbitrary regular expressions to execute arbitrary
|
||||
-- code. More such vulnerabilities may be discovered in the future. These have
|
||||
-- never affected Nmap because it doesn't give attackers any control over the
|
||||
-- regular expressions it uses. Similarly, NSE scripts should never build
|
||||
-- regular expressions with untrusted network input. Matching hardcoded regular
|
||||
-- expressions against the untrusted input is fine.
|
||||
-- @author Reuben Thomas
|
||||
-- @author Shmuel Zeigerman
|
||||
|
||||
module "pcre"
|
||||
|
||||
--- Returns a compiled regular expression.
|
||||
-- \n\n
|
||||
-- The resulting compiled regular expression is ready to be matched against
|
||||
-- strings. Compiled regular expressions are subject to Lua's garbage
|
||||
-- collection.
|
||||
-- \n\n
|
||||
-- The compilation flags are set bitwise. If you want to set the 3rd
|
||||
-- (corresponding to the number 4) and the 1st (corresponding to 1) bit for
|
||||
-- example you would pass the number 5 as a second argument. The compilation
|
||||
-- flags accepted are those of the PCRE C library. These include flags for case
|
||||
-- insensitive matching (1), matching line beginnings (^) and endings ($) even
|
||||
-- in multiline strings (i.e. strings containing newlines) (2) and a flag for
|
||||
-- matching across line boundaries (4). No compilation flags yield a default
|
||||
-- value of 0.
|
||||
-- @param pattern a string describing the pattern, such as "^foo$".
|
||||
-- @param flags a number describing which compilation flags are set.
|
||||
-- @param locale a string describing the locale which should be used to compile
|
||||
-- the regular expression (optional). The value is a string which is passed to
|
||||
-- the C standard library function setlocale. For more information on this
|
||||
-- argument refer to the documentation of setlocale.
|
||||
-- @usage my_regex = pcre.new("pcre-pattern",0,"C")
|
||||
function pcre.new(pattern, flags, locale)
|
||||
|
||||
--- Returns a table of the available PCRE option flags (numbers) keyed by their
|
||||
-- names (strings).
|
||||
-- \n\n
|
||||
-- Possible names of the available strings can be retrieved from the
|
||||
-- documentation of the PCRE library used to link against Nmap. The key is the
|
||||
-- option name in the manual minus the PCRE prefix. PCRE_CASELESS becomes
|
||||
-- CASELESS for example.
|
||||
function pcre.flags()
|
||||
|
||||
--- Returns the version of the PCRE library in use as a string.
|
||||
-- \n\n
|
||||
-- For example "6.4 05-Sep-2005".
|
||||
function pcre.version()
|
||||
|
||||
--- Matches a string against a compiled regular expression.
|
||||
-- \n\n
|
||||
-- Returns the start point and the end point of the first match of the compiled
|
||||
-- regular expression pcre_obj in the string.
|
||||
-- @param string the string to match against.
|
||||
-- @param start where to start the match in the string (optional).
|
||||
-- @param flags execution flags (optional).
|
||||
-- @return nil if no match, otherwise the start point of the first match.
|
||||
-- @return the end point of the first match.
|
||||
-- @return a table which contains false in the positions where the pattern did
|
||||
-- not match. If named sub-patterns were used, the table also contains substring
|
||||
-- matches keyed by their sub-pattern name.
|
||||
-- @usage
|
||||
-- s = pcre_obj:match("string to be searched", 0,0);\n
|
||||
-- if(s) code_to_be_done_on_match end
|
||||
function pcre_obj:match(string, start, flags)
|
||||
|
||||
--- Matches a string against a compiled regular expression, returning positions
|
||||
-- of substring matches.
|
||||
-- \n\n
|
||||
-- This function is like match() except that a table returned as a third result
|
||||
-- contains offsets of substring matches rather than substring matches
|
||||
-- themselves. That table will not contain string keys, even if named
|
||||
-- sub-patterns are used. For example, if the whole match is at offsets 10, 20
|
||||
-- and substring matches are at offsets 12, 14 and 16, 19 then the function
|
||||
-- returns the following: 10, 20, {12,14,16,19}
|
||||
-- @param string the string to match against.
|
||||
-- @param start where to start the match in the string (optional).
|
||||
-- @param flags execution flags (optional).
|
||||
-- @return a table which contains a list of substring match start and end
|
||||
-- positions.
|
||||
function pcre_obj:exec(string, start, flags)
|
||||
|
||||
--- Matches a string against a regular expression multiple times.
|
||||
-- \n\n
|
||||
-- Tries to match the regular expression pcre_obj against string up to n times
|
||||
-- (or as many as possible if n is either not given or is not a positive
|
||||
-- number), subject to the execution flags ef. Each time there is a match, func
|
||||
-- is called as func(m, t), where m is the matched string and t is a table of
|
||||
-- substring matches. This table contains false in the positions where the
|
||||
-- corresponding sub-pattern did not match. If named sub-patterns are used then
|
||||
-- the table also contains substring matches keyed by their correspondent
|
||||
-- sub-pattern names (strings). If func returns a true value, then gmatch
|
||||
-- immediately returns; gmatch returns the number of matches made.
|
||||
-- @param string the string to match against.
|
||||
-- @param n the maximum number of matches to do (optional).
|
||||
-- @param ef execution flags (optional).
|
||||
-- @return the number of matches made.
|
||||
function pcre_obj:gmatch(string, func, n, ef)
|
||||
Reference in New Issue
Block a user