Library xmpp
A XMPP (Jabber) library, implementing a minimal subset of the protocol enough to do authentication brute-force.
The XML parsing of tags isn't optimal but there's no other easy way (nulls or line-feeds) to match the end of a message. The parse_tag method in the XML class was borrowed from the initial xmpp.nse script written by Vasiliy Kulikov.
The library consist of the following classes:
XML
- containing a minimal XML parser written by Vasiliy Kulikov.TagProcessor
- Contains processing code for common tagsXMPP
- containing the low-level functions used to communicate with the Jabber server.Helper
- containing the main interface for script writers
The following sample illustrates how to use the library to authenticate to a XMPP sever:
local helper = xmpp.Helper:new(host, port, options) local status, err = helper:connect() status, err = helper:login(user, pass, "DIGEST-MD5")
Author:
Copyright © Same as Nmap--See https://nmap.org/book/man-legal.html
Source: https://svn.nmap.org/nmap/nselib/xmpp.lua
Functions
- Helper.close (self)
Closes the connection to the server
- Helper.connect (self, socket)
Connects to the XMPP server and starts the initial communication
- Helper.getAuthMechs (self)
Retrieves the available authentication mechanisms
- Helper.login (self, username, password, mech)
Login to the XMPP server
- Helper.new (self, host, port, options)
Creates a new Helper instance
- XML.parse_tag (s)
Parse an XML tag
- XMPP.connect (self, socket)
Connects to the XMPP server
- XMPP.disconnect (self)
Disconnects the socket from the server
- XMPP.getAuthMechs (self)
Retrieves the available authentication mechanisms
- XMPP.login (self, username, password, mech)
Logs in to the XMPP server
- XMPP.new (self, host, port, options)
Creates a new instance of the XMPP class
- XMPP.receive_tag (self, tag, close)
Receives a XML tag from the server
- XMPP.send (self, data)
Sends data to XMPP server
Tables
- XML.tag
XML tag table
Functions
- Helper.close (self)
-
Closes the connection to the server
Parameters
- self
- Helper.connect (self, socket)
-
Connects to the XMPP server and starts the initial communication
Parameters
- self
- socket
Return values:
- status true on success, false on failure
- err string containing an error message is status is false
- Helper.getAuthMechs (self)
-
Retrieves the available authentication mechanisms
Parameters
- self
Return value:
table containing all available authentication mechanisms - Helper.login (self, username, password, mech)
-
Login to the XMPP server
Parameters
- self
- username
- string
- password
- string
- mech
- string containing a supported authentication mechanism
Return values:
- status true on success, false on failure
- err string containing error message if status is false
See also:
- Helper.new (self, host, port, options)
-
Creates a new Helper instance
Parameters
- self
- host
- table as received by the action function
- port
- table as received by the action function
- options
- table containing options, currently supported
timeout
- sets the socket timeoutservername
- sets the server name to use in communication with the server.
- XML.parse_tag (s)
-
Parse an XML tag
Parameters
- s
- String containing the XML tag
Return value:
XML tag tableSee also:
- XMPP.connect (self, socket)
-
Connects to the XMPP server
Parameters
- self
- socket
Return values:
- status true on success, false on failure
- err string containing an error message if status is false
- XMPP.disconnect (self)
-
Disconnects the socket from the server
Parameters
- self
Return values:
- status true on success, false on failure
- error message if status is false
- XMPP.getAuthMechs (self)
-
Retrieves the available authentication mechanisms
Parameters
- self
Return value:
table containing all available authentication mechanisms - XMPP.login (self, username, password, mech)
-
Logs in to the XMPP server
Parameters
- self
- username
- string
- password
- string
- mech
- string containing a supported authentication mechanism
Return values:
- status true on success, false on failure
- err string containing error message if status is false
- XMPP.new (self, host, port, options)
-
Creates a new instance of the XMPP class
Parameters
- self
- host
- table as received by the action function
- port
- table as received by the action function
- options
- table containing options, currently supported
timeout
- sets the socket timeoutservername
- sets the server name to use in communication with the server.starttls
- start TLS handshake even if it is optional.
- XMPP.receive_tag (self, tag, close)
-
Receives a XML tag from the server
Parameters
- self
- tag
- [optional] if unset, receives the next available tag if set, reads until the given tag has been found
- close
- [optional] if set, matches a closing tag
Return values:
- true on success, false on error
- The XML tag table, or error message
See also:
- XMPP.send (self, data)
-
Sends data to XMPP server
Parameters
- self
- data
- string containing data to send to server
Return values:
- status true on success false on failure
- err string containing error message
Tables
- XML.tag
XML tag table
Fields
- name
- The tag name
- attrs
- The tag attributes as a key-value table
- start
- True if this was an opening tag.
- contents
- The contents of the tag
- finish
- true if the tag was closed.