# $Id$
# 
# References:
#   #1 "The Story of the PING Program" http://ftp.arl.army.mil/~mike/ping.html

# Type,TTL,SeqMSBF,Id,DF,MF,Bytes,Off,PatLen,Payload,OSs
# Type = [ "Req", "Resp" ]
# TTL = [ -1=wildcard, 0..255 ]
#   NOTE: because TTL changes with every hop we round up to the nearest power of 2 as an estimate
#         of the original TTL; best we can do.
# SeqMSBF = which byte order is the sequence in? [ 0=lsbf 1=msbf -1=wildcard ]
# ICMPId = ICMP Echo Id [ -1=wildcard, 0..n ]
# IPIdZ = IP Id is zero? Y=yes N=No
# DF = is the dontfrag bit set in IP? [ 0=no 1=yes -1=wildcard ]
# PayloadBytes = length of payload [ -1=wildcard, 0..n ]
# PayloadOffset = offset of data to match (i.e. skip timestamps)
# PayloadPatLen = length of data pattern, which may be partial or repeated [ -1=auto, 1..n ]
# Payload = contents of the ICMP Echo payload
# OS = comma-separated os key (from os.csv) and weight, i.e. Win311=1.
#      weight is an integer specifying 

# WinNT-based systems
# Type,TTL,SeqMSBF,ICMPId,IPIdZ,DF,Bytes,Off,PatLen,Payload,OSs
echo,  32,       0,0x0100,    N, 0,   32,  0,    -1,"abcdefghijklmnopqrstuvw",WinNT4=15
echo,  32,       0,0x0200,    N, 0,   32,  0,    -1,"abcdefghijklmnopqrstuvw",WinNT5.1=15
echo,  32,       0,0x0200,    N, 0,   32,  0,    -1,"ABCDEFGHIJKLMNOPQRSTUVW",WinNT5.1=15
echo, 128,       0,0x0200,    N, 0,   32,  0,    -1,"abcdefghijklmnopqrstuvw",WinNT5=15
echo, 128,       0,0x0200,    N, 0,   32,  0,    -1,"ABCDEFGHIJKLMNOPQRSTUVW",WinNT5.2=15
echo,  32,       0,0x0300,    N, 0,   32,  0,    -1,"abcdefghijklmnopqrstuvw",WinNT5.1=15
echo, 128,       0,0x0300,    N, 0,   32,  0,    -1,"abcdefghijklmnopqrstuvw",WinNT5=15
echo,  32,       0,0x0400,    N, 0,   32,  0,    -1,"ABCDEFGHIJKLMNOPQRSTUVW",WinNT5.1=15
echo, 128,       0,0x0400,    N, 0,   32,  0,    -1,"abcdefghijklmnopqrstuvw",WinNT5=15
echo,  32,       0,0x0500,    N, 0,   32,  0,    -1,"ABCDEFGHIJKLMNOPQRSTUVW",WinNT5.1=15
echo, 128,       0,0x0500,    N, 0,   32,  0,    -1,"abcdefghijklmnopqrstuvw",WinNT5.1=15

# windows tracert... pretty weak indicator, but we'll take it
# 64 repeated NUL bytes
# Type,TTL,SeqMSBF,ICMPId,IPIdZ,DF,Bytes,Off,PatLen,Payload,OSs
echo,   -1,      0,0x0100,    N, 0,64,0, 1,"\x00",WinNT4=5
echo,   -1,      0,0x0200,    N, 0,64,0, 1,"\x00",WinNT5=5
echo,   -1,      0,0x0400,    N, 0,64,0, 1,"\x00",Windows=5
echo,   -1,      0,0x0500,    N, 0,64,0, 1,"\x00",WinNT5=5

# some versions of Windows send an image file containing the windows logo in it over ICMP to test connection speed
# to the host controller in order to classify the connection as slow, fast, etc.
# Type,TTL,SeqMSBF,ICMPId,IPIdZ,DF,Bytes,Off,PatLen,Payload,OSs
echo,128,       0,  0x200,    N, 0,1472,0,1472,"\xff\xd8\xff\xfe\x00\x08WANG2\x02\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x00`\x00`\x00\x00\xff\xdb\x00\x43\x00\x10\x0b\x0c\x0e\x0c\x0a\x10\x0e\x0d\x0e\x12\x11\x10\x13\x18(\x1a\x18\x16\x16\x18\x31#%\x1d(:3=<9387@H\x5cN@DWE78PmQW_bghg>Mqypdx\x5c\x65gc\xff\xdb\x00\x43\x01\x11\x12\x12\x18\x15\x18/\x1a\x1a/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc\xff\xc0\x00\x11\x08\x00&\x00\x9e\x03\x01!\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1f\x00\x00\x01\x05\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\xff\xc4\x00\xb5\x10\x00\x02\x01\x03\x03\x02\x04\x03\x05\x05\x04\x04\x00\x00\x01}\x01\x02\x03\x00\x04\x11\x05\x12!1A\x06\x13Qa\x07\"q\x14\x32\x81\x91\xa1\x08#B\xb1\xc1\x15R\xd1\xf0$3br\x82\x09\x0a\x16\x17\x18\x19\x1a%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\x83\x84\x85\x86\x87\x88\x89\x8a\x92\x93\x94\x95\x96\x97\x98\x99\x9a\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xff\xc4\x00\x1f\x01\x00\x03\x01\x01\x01\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\xff\xc4\x00\xb5\x11\x00\x02\x01\x02\x04\x04\x03\x04\x07\x05\x04\x04\x00\x01\x02w\x00\x01\x02\x03\x11\x04\x05!1\x06\x12\x41Q\x07\x61q\x13\"2\x81\x08\x14\x42\x91\xa1\xb1\xc1\x09#3R\xf0\x15\x62r\xd1\x0a\x16$4\xe1%\xf1\x17\x18\x19\x1a&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x92\x93\x94\x95\x96\x97\x98\x99\x9a\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00?\x00\xed\x35mJ\x1d#M\x96\xfa\xe1\x64h\xa2\xc6\xe1\x18\x05\xb9 q\x92=j\xae\x81\xe2+/\x10G3Y\x89P\xc2@t\x95@#=\x0f\x04\x8e\xc7\xbfj\x00\xd6\xaeu\xfcg\xa6.\xb6\x34\xa5\x8e\xe5\xe6\xf3\xc4\x1b\xd5\x06\xcd\xe4\xe3\xb9\xcf\x07\x8e\x9d\xbb\xd0\x06\x86\xa7\xad\xdbiw\xb6\x16\xb3\xa4\xac\xf7\xd2yq\x94\x00\x80r\xa3\x9c\x91\xfd\xe1\xebZT\x00Q@\x05\x14\x00Q@\x05\x14\x00Q@\x0d\x92\x44\x8a\x36\x92GTD\x05\x99\x98\xe0(\x1dI5\xcc\xdb\xf8\xf3I\xb9\xd4\x62\xb3\x86+\xb6ie\x11$\x9b\x14)$\xe0\x1e[8\xfc\x33\xed@\x1b\xd6\xba\x8d\xa5\xe5\xd5\xcd\xb5\xb4\xeb$\xb6\xa4,\xca\xa0\xfc\x84\xe7\x8c\xf4=\x0fN\x98\xabT\x01\xcf\xf8\xef\xfe\x45\x0b\xef\xfbg\xff\x00\xa3\x16\xb9\x9f\x0c\x11\xa1\xf8\xa2\xc6\x1d\xca\x96\xfa\xa5\x84N\x07\x98@\x0eP\x1c\x90z\x92\xca\xc0\x0f\xf6\xf8\xf4\xa0\x0e\xf3S\xbdM7M\xb9\xbd\x93i\x10\x46_k6\xdd\xc4\x0e\x17>\xe7\x03\xf1\xaf-\xd3\xac\xda\x39\xfc;\xa8L\xdb\xe7\xbe\xd4\x19\xda\x42\xc4\xb3\x05x\xc7\x39\xef\xbby\xfch\x03\xd1\x35\xadw\xfb'Q\xd2\xed>\xcd\xe6\xfd\xbe_/v\xfd\xbb\x39Q\x9c`\xe7\xef{t\xabZ\xbe\xafi\xa2\xd9}\xaa\xf5\xd9P\x9d\xaa\x15I,\xd8$\x01\xf5\xc1\xeb\x81@\x1c\xef\xfc'\x13G\xfe\x91q\xa0_G\xa7\x9e\x45\xce\x0f*~\xe9\xc1\x00s\x91\xfc]\xfb\xd7\x45.\xa9\x07\xf6$\xba\xa5\xab-\xc4)\x03L\xbbN7m\x04\xe3\xdb\xa6=\xa8\x03\x9d\xb6\xf1\xc4\xd7\xe9\x00\xd3tI\xee\xe7o\xf5\xc8\x8ev\xc2K\x10\xa0\xb6\xdcr\x06rp\x07\xaf\x5cmx\x83\xc4\x16\x9a\x05\xa8\x92\xe7s\xcb o&%\x07\xf7\x84\x63\xbf\x41\xd4u\xfdzP\x06*\xf8\xde\xe2\xdeh\x8e\xab\xa0\xdd\xd8Z\xbb\xeci\xdfq\x0aO\xb1Q\x9f\xe7\x8c\xf5\xae\x99\xf5\x1bH\xf4\xd1\xa8\xc9:\xa5\xa1\x8cK\xe6\x30#\xe5##\x8e\xbc\xe4q\xd6\x80\x39\x9f\xf8Mo.?{\xa7\xf8n\xfa\xe6\xd5\xbe\xe4\xbc\x8d\xde\xbd\x14\x8e\xb9\x1d{V\xc7\x87<Ek\xe2\x1by\x1e\xdd$\x8aXv\x89\x63q\xf7I\x1d\x8fq\xc1\xf4<t\x14\x01\x1f\x88|Mo\xa2\x32[\xac\x32]_K\xb7\xcb\xb6@A`I\x19\xce\x0f\xa1\x18\x19\x39\xc7\x1d\xeb\x36\x0f\x1c\x18n\x92=kI\xb9\xd2\xe2\x90\x1d\xb2\xc8\x19\xb2G\xb6\xd0\x7f,\xf5\x1fZ\x00\xb9\xe3MJ\xe6\xcbJ\x92\x08\x34\xe9n\x92\xe6\x09RIS8\x80m\xc6\xe3\x80}I\xed\xd2\xb9\xbf\x0cx\x82\xff\x00M\xd0\xe1\xb7\xb4\xf0\xdd\xcd\xd2\x65\x98\xdc\x44\x18\x09\x09\x63\xcf\x08s\x8e\x07^\xd4\x01_\xc3\xfa\xf5\xfd\x96\xab\xacO\x06\x87st\xf7\x33\xef\x92$\xdd\x98\x0e\xe7;N\x14\xfa\x91\xdb\xa5zu\x00s\xfe;\xff\x00\x91\x42\xfb\xfe\xd9\xff\x00\xe8\xc5\xac\x1f\x11\xdbJ\xbe\x0e\xd0u[b\xc2k\x08\xe1`\xdc\x61\x41U\xe7\x07\xaf\xcc\x13\xf3\x34\x01k\xc6\xfa\x93_hze\xa5\x92\xc9\xbfVtdV\x0a\x32\xbc\x10\xa4\x93\xc1\xdc\xc9\xf9\x1e}[\xe2\x8b\x64\xb3\xd5|#k\x19\x62\x90N#R\xddH\x0d\x10\x19\xfc\xa8\x02o\x1a\x7f\xc8\xc3\xe1\x8f\xfa\xfb\xff\x00\xd9\xe3\xa8\xfc\x45\x0a\xea>?\xd1\xb4\xfb\x93\xba\xd5\x62\x33yx\x18'\xe6'9\x1c\x83\xb1\x41\x1e\x94","WinNT5=90,WinNT5.1=90,WinNT5.2=90"

# Linux
# msbf, Muuss and sets dontfrag
# Type,TTL,SeqMSBF,ICMPId,IPIdZ,DF,Bytes,Off,PatLen,Payload,OSs
echo, 64,        1,    -1,    Y, 1,56,8,-1,"\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37",Linux=25
#Not very helpful
#reply, 64,-1,N,0,0,-1,-1,-1,"",Linux=1

# TODO: re-check IPID for the following

# FreeBSD4
# Type,TTL,SeqMSBF,ICMPId,IPIdZ,DF,Bytes,Off,PatLen,Payload,OSs
echo,  64,       0,    -1,    N, 0,56,8,-1,"\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF\x00\x01\x02\x03\x04\x05\x06\x07",FreeBSD=15

# FreeBSD5
# switched endianness, strange
# Type,TTL,SeqMSBF,ICMPId,IPIdZ,DF,Bytes,Off,PatLen,Payload,OSs
echo,   64,      1,    -1,    N, 0,56,8,-1,"\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF\x00\x01\x02\x03\x04\x05\x06\x07",FreeBSD5=15

# some OSes with ancient Unix heritage use a TTL of 255, ts and a Muuss payload
# Type,TTL,SeqMSBF,ICMPId,IPIdZ,DF,Bytes,Off,PatLen,Payload,OSs
echo,255,        1,    -1,    N, 0,56,8,-1,"\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF\x00\x01\x02\x03\x04\x05\x06\x07",NetBSD=10,Solaris=10

# Cisco IOS
# Type,TTL,SeqMSBF,ICMPId,IPIdZ,DF,Bytes,Off,PatLen,Payload,OSs
echo,255,        1,    -1,    N, 0,72,  8,    -1,"\xAB\xCD",IOS=15

# Cisco PIX
# Type,TTL,SeqMSBF,ICMPId,IPIdZ,DF,Bytes,Off,PatLen,Payload,OSs
echo,255,        1,    -1,    N, 0,16,   0,-1,"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",PIX=15
echo,255,        1,    -1,    N, 0,32,   0,-1,"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",PIX=15
reply,255,      -1,    -1,    N, 1, 0,   -1,-1,-1,"",PIX=5

# Netware
# length of 12-byte default payload is distinctive, but payload pattern not easily identifiable
# Type,TTL,SeqMSBF,ICMPId,IPIdZ,DF,Bytes,Off,PatLen,Payload,OSs
echo,128,        0,    -1,    N, 0,12,0,0,"",Netware=10

# Moxa NPort Express
# Type,TTL,SeqMSBF,ICMPId,IPIdZ,DF,Bytes,Off,PatLen,Payload,OSs
echo, 32,        1,    -1,    N, 0,56,0,-1,"\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25",NPortExpress=20

# IOLan
# Type,TTL,SeqMSBF,ICMPId,IPIdZ,DF,Bytes,Off,PatLen,Payload,OSs
echo,255,        1,    -1,    N, 0,32,0,32,"abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80",IOLAN=15

# catch alls
# give a tiny bit of weight to well-known operating systems PONGs (ICMP Resp) based on TTLs.
# many times this is the only thing we have to go on.
# Type,TTL,SeqMSBF,ICMPId,IPId,DF,Bytes,Off,PatLen,Payload,OSs
#reply,  32,     -1,    -1,  !0,-1,   -1, -1,    -1,"",Windows=1
#reply,  64,     -1,    -1,  -1,-1,   -1, -1,    -1,"","FreeBSD=1,Linux=1,OSX=1"
#reply, 128,     -1,    -1,  !0,-1,   -1, -1,    -1,"",Windows=1
#reply, 255,     -1,    -1,  -1,-1,   -1, -1,    -1,"","NetBSD=1,Solaris=1,IOS=1,PIX=1"

