Script vtam-enum

Script types: portrule
Categories: intrusive, brute

Script Summary

Many mainframes use VTAM screens to connect to various applications (CICS, IMS, TSO, and many more).

This script attempts to brute force those VTAM application IDs.

This script is based on mainframe_brute by Dominic White ( However, this script doesn't rely on any third party libraries or tools and instead uses the NSE TN3270 library which emulates a TN3270 screen in lua.

Application IDs only allows for 8 byte IDs, that is the only specific rule found for application IDs.

Script Arguments


Folder used to store valid transaction id 'screenshots' Defaults to None and doesn't store anything.


Path to list of application IDs to test. Defaults to nselib/data/vhosts-default.lst.


When set to true does not prepend the application ID with 'logon applid()'. Default is false.


Commands in a semi-colon separated list needed to access VTAM. Defaults to nothing.

brute.credfile, brute.delay, brute.emptypass, brute.firstonly, brute.guesses, brute.mode, brute.passonly, brute.retries, brute.start, brute.threads, brute.unique, brute.useraspass

See the documentation for the brute library.


See the documentation for the creds library.

passdb, unpwdb.passlimit, unpwdb.timelimit, unpwdb.userlimit, userdb

See the documentation for the unpwdb library.

Example Usage

nmap --script vtam-enum -p 23 <targets>

nmap --script vtam-enum --script-args idlist=defaults.txt,
vtam-enum.command="exit;logon applid(logos)",vtam-enum.macros=true
vtam-enum.path="/home/dade/screenshots/" -p 23 -sV <targets>

Script Output

23/tcp open  tn3270  IBM Telnet TN3270
| vtam-enum:
|   VTAM Application ID:
|     applid:TSO - Valid credentials
|     applid:CICSTS51 - Valid credentials
|_  Statistics: Performed 14 guesses in 5 seconds, average tps: 2



  • Philip Young aka Soldier of Fortran

License: Same as Nmap--See