Nmap ventrilo-info NSE Script


This page contains detailed information about how to use the ventrilo-info NSE script. For list of all NSE scripts, visit the Nmap NSE Library.

Select:
Overview
Error Messages

Script Overview


Script source code: https://github.com/nmap/nmap/tree/master/scripts/ventrilo-info.nse
Script categories: default, discovery, safe, version
Target service / protocol: ventrilo, tcp, udp
Target network port(s): 3784
List of CVEs: -

Script Description


The ventrilo-info.nse script detects the Ventrilo voice communication server service versions 2.1.2 and above and tries to determine version and configuration information. Some of the older versions (pre 3.0.0) may not have the UDP service that this probe relies on enabled by default.

The Ventrilo server listens on a TCP (voice/control) and an UDP (ping/status) port with the same port number (fixed to 3784 in the free version, otherwise configurable). This script activates on both a TCP and UDP port version scan. In both cases probe data is sent only to the UDP port because it allows for a simple and informative status command as implemented by the ventrilo_status.exe executable which has shipped alongside the Windows server package since version 2.1.2 when the UDP status service was implemented.

When run as a version detection script (-sV), the script will report on the server version, name, uptime, authentication scheme, and OS. When run explicitly (--script ventrilo-info), the script will additionally report on the server name phonetic pronunciation string, the server comment, maximum number of clients, voice codec, voice format, channel and client counts, and details about channels and currently connected clients.

Original reversing of the protocol was done by Luigi Auriemma (http://aluigi.altervista.org/papers.htm#ventrilo).

Ventrilo-info NSE Script Arguments


The ventrilo-info.nse script does not have any arguments.

Ventrilo-info NSE Script Example Usage


Here's an example of how to use the ventrilo-info.nse script:

nmap -sV <target>

nmap -Pn -sU -sV --script ventrilo-info -p <port> <target>

Ventrilo-info NSE Script Example Output


Here's a sample output from the ventrilo-info.nse script:

PORT     STATE SERVICE  VERSION
9408/tcp open  ventrilo Ventrilo 3.0.3.C (voice port; name: TypeFrag.com; uptime: 152h:56m; auth: pw)
| ventrilo-info:
| name: TypeFrag.com
| phonetic: Type Frag Dot Com
| comment: http://www.typefrag.com/
| auth: pw
| max. clients: 100
| voice codec: 3,Speex
| voice format: 32,32 KHz%2C 16 bit%2C 10 Qlty
| uptime: 152h:56m
| platform: WIN32
| version: 3.0.3.C
| channel count: 14
| channel fields: CID, PID, PROT, NAME, COMM
| client count: 6
| client fields: ADMIN, CID, PHAN, PING, SEC, NAME, COMM
| channels:
| <top level lobby> (CID: 0, PID: n/a, PROT: n/a, COMM: n/a): <empty>
| Group 1 (CID: 719, PID: 0, PROT: 0, COMM: ):
|   stabya (ADMIN: 0, PHAN: 0, PING: 47, SEC: 206304, COMM:
| Group 2 (CID: 720, PID: 0, PROT: 0, COMM: ): <empty>
| Group 3 (CID: 721, PID: 0, PROT: 0, COMM: ): <empty>
| Group 4 (CID: 722, PID: 0, PROT: 0, COMM: ): <empty>
| Group 5 (CID: 723, PID: 0, PROT: 0, COMM: ):
|   Sir Master Win (ADMIN: 0, PHAN: 0, PING: 32, SEC: 186890, COMM:
|   waterbukk (ADMIN: 0, PHAN: 0, PING: 31, SEC: 111387, COMM:
|   likez (ADMIN: 0, PHAN: 0, PING: 140, SEC: 22457, COMM:
|   Tweet (ADMIN: 0, PHAN: 0, PING: 140, SEC: 21009, COMM:
| Group 6 (CID: 724, PID: 0, PROT: 0, COMM: ): <empty>
| Raid (CID: 725, PID: 0, PROT: 0, COMM: ): <empty>
| Officers (CID: 726, PID: 0, PROT: 1, COMM: ): <empty>
| PG 13 (CID: 727, PID: 0, PROT: 0, COMM: ): <empty>
| Rated R (CID: 728, PID: 0, PROT: 0, COMM: ): <empty>
| Group 7 (CID: 729, PID: 0, PROT: 0, COMM: ): <empty>
| Group 8 (CID: 730, PID: 0, PROT: 0, COMM: ): <empty>
| Group 9 (CID: 731, PID: 0, PROT: 0, COMM: ): <empty>
| AFK - switch to this when AFK (CID: 732, PID: 0, PROT: 0, COMM: ):
|_  Eisennacher (ADMIN: 0, PHAN: 0, PING: 79, SEC: 181948, COMM:
Service Info: OS: WIN32

Ventrilo-info NSE Script Example XML Output


Here's a sample XML output from the ventrilo-info.nse script produced by providing the -oX <file> Nmap option:

 <elem key="phonetic">Type Frag Dot Com</elem>
 <elem key="comment">http://www.typefrag.com/</elem>
 <elem key="auth">1</elem>
 <elem key="maxclients">100</elem>
 <elem key="voicecodec">3,Speex</elem>
 <elem key="voiceformat">32,32 KHz%2C 16 bit%2C 10 Qlty</elem>
 <elem key="uptime">551533</elem>
 <elem key="platform">WIN32</elem>
 <elem key="version">3.0.3.C</elem>
 <elem key="channelcount">14</elem>
 <table key="channelfields">
   <elem>CID</elem>
   <elem>PID</elem>
   <elem>PROT</elem>
   <elem>NAME</elem>
   <elem>COMM</elem>
 </table>
 <table key="channels">
   <table key="0">
     <elem key="NAME">&lt;top level lobby&gt;</elem>
     <elem key="CID">0</elem>
   </table>
   <table key="363">
     <elem key="CID">363</elem>
     <elem key="PID">0</elem>
     <elem key="PROT">0</elem>
     <elem key="NAME">Group 1</elem>
     <elem key="COMM"></elem>
     <table key="clients">
       <table>
         <elem key="ADMIN">0</elem>
         <elem key="CID">363</elem>
         <elem key="PHAN">0</elem>
         <elem key="PING">47</elem>
         <elem key="SEC">207276</elem>
         <elem key="NAME">stabya</elem>
         <elem key="COMM"></elem>
       </table>
     </table>
   </table>
   <!-- Channels other than the first and last cut for brevity -->
   <table key="376">
     <elem key="CID">376</elem>
     <elem key="PID">0</elem>
     <elem key="PROT">0</elem>
     <elem key="NAME">AFK - switch to this when AFK</elem>
     <elem key="COMM"></elem>
     <table key="clients">
       <table>
         <elem key="ADMIN">0</elem>
         <elem key="CID">376</elem>
         <elem key="PHAN">0</elem>
         <elem key="PING">78</elem>
         <elem key="SEC">182920</elem>
         <elem key="NAME">Eisennacher</elem>
         <elem key="COMM"></elem>
       </table>
     </table>
   </table>
 </table>
 <elem key="clientcount">6</elem>
 <table key="clientfields">
   <elem>ADMIN</elem>
   <elem>CID</elem>
   <elem>PHAN</elem>
   <elem>PING</elem>
   <elem>SEC</elem>
   <elem>NAME</elem>
   <elem>COMM</elem>
 </table>

Author


  • Marin Mari

References


See Also


Visit Nmap NSE Library for more scripts.

The ventrilo-info.nse script may fail with the following error messages. Check for the possible causes by using the code snippets highlighted below found in the script source code. This can often times help in identifying the root cause of the problem.

Invalid response. Aborting script.


Here is a relevant code snippet related to the "Invalid response. Aborting script." error message:

579:	        head_crc_sum = crc_sum
580:	
581:	        -- check for an invalid response
582:	        if #response < 20 or pck >= totpck or
583:	          len > 492 or curlen > totlen then
584:	          stdnse.debug1("Invalid response. Aborting script.")
585:	          cleanup()
586:	          return
587:	        end
588:	
589:	        -- keep track of the length of fulldata (# isn't applicable)

Invalid state (fulldatalen =


Here is a relevant code snippet related to the "Invalid state (fulldatalen = " error message:

597:	
598:	      -- check for invalid states in communication
599:	      if (fulldatalen > totpck) or (curlen > totlen)
600:	        or (fulldatalen == totpck and curlen ~= totlen)
601:	        or (curlen == totlen and fulldatalen ~= totpck) then
602:	        stdnse.debug1("Invalid state (fulldatalen = " .. fulldatalen ..
603:	          "; totpck = " .. totpck .. "; curlen = " .. curlen ..
604:	          "; totlen = " .. totlen .. "). Aborting script.")
605:	        cleanup()
606:	        return
607:	      end

Invalid CRC sum, received = %04X, calculated = %04X


Here is a relevant code snippet related to the "Invalid CRC sum, received = %04X, calculated = %04X" error message:

626:	    local fulldata_str = table.concat(fulldata)
627:	
628:	    -- check for an invalid checksum on the response data sections (no headers)
629:	    local fulldata_crc_sum = crc(fulldata_str)
630:	    if fulldata_crc_sum ~= head_crc_sum then
631:	      stdnse.debug1("Invalid CRC sum, received = %04X, calculated = %04X", head_crc_sum, fulldata_crc_sum)
632:	      cleanup()
633:	      return
634:	    end
635:	
636:	    -- parse the received data string into an output table

Version


This page has been created based on Nmap version 7.92.

Go back to menu.