|
@@ -6,7 +6,153 @@ public class TELNETRenderer implements ProtocolRenderer {
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public String render(String packet) {
|
|
public String render(String packet) {
|
|
- return HelperUtils.byteToStr(HelperUtils.hexStringToByte(packet));
|
|
|
|
|
|
+ byte[] bytes = HelperUtils.hexStringToByte(packet);
|
|
|
|
+ String options = "Options:\n" + checkForOptions(bytes) + "\n";
|
|
|
|
+ String content = "Content: " + HelperUtils.byteToStr(bytes);
|
|
|
|
+ return options + content;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private String checkForOptions(byte[] bytes) {
|
|
|
|
+ StringBuffer options = new StringBuffer();
|
|
|
|
+ for(int i = 0; i < bytes.length; i++) {
|
|
|
|
+ if(bytes[i] == (byte) 0xff && i+2 < bytes.length) {
|
|
|
|
+ switch(bytes[i+1]) {
|
|
|
|
+ case (byte) 0xfb:
|
|
|
|
+ options.append(" WILL ");
|
|
|
|
+ break;
|
|
|
|
+ case (byte) 0xfc:
|
|
|
|
+ options.append(" WON'T ");
|
|
|
|
+ break;
|
|
|
|
+ case (byte) 0xfd:
|
|
|
|
+ options.append(" DO ");
|
|
|
|
+ break;
|
|
|
|
+ case (byte) 0xfe:
|
|
|
|
+ options.append(" DON'T ");
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ options.append(" unkown command ");
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ switch(bytes[i+2]) {
|
|
|
|
+ case 0x00:
|
|
|
|
+ options.append("Binary Transmission\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x01:
|
|
|
|
+ options.append("Echo\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x02:
|
|
|
|
+ options.append("Reconnection\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x03:
|
|
|
|
+ options.append("Suppress Go Ahead\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x04:
|
|
|
|
+ options.append("Approx Message Size Negotiation\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x05:
|
|
|
|
+ options.append("Status\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x06:
|
|
|
|
+ options.append("Timing Mark\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x07:
|
|
|
|
+ options.append("Remote Controlled Trans and Echo\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x08:
|
|
|
|
+ options.append("Output Line Width\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x09:
|
|
|
|
+ options.append("Output Page Size\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x0a:
|
|
|
|
+ options.append("Output Carriage-Return Disposition\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x0b:
|
|
|
|
+ options.append("Output Horizontal Tab Stops\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x0c:
|
|
|
|
+ options.append("Output Horizontal Tab Disposition\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x0d:
|
|
|
|
+ options.append("Output Formfeed Disposition\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x0e:
|
|
|
|
+ options.append("Output Vertical Tabstops\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x0f:
|
|
|
|
+ options.append("Output Vertical Tab Disposition\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x10:
|
|
|
|
+ options.append("Output Linefeed Disposition\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x11:
|
|
|
|
+ options.append("Extended ASCII\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x12:
|
|
|
|
+ options.append("Logout\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x13:
|
|
|
|
+ options.append("Byte Macro\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x14:
|
|
|
|
+ options.append("Data Entry Terminal\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x15:
|
|
|
|
+ options.append("SUPDUP\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x16:
|
|
|
|
+ options.append("SUPDUP Output\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x17:
|
|
|
|
+ options.append("Send Location\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x18:
|
|
|
|
+ options.append("Terminal Type\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x19:
|
|
|
|
+ options.append("End of Record\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x1a:
|
|
|
|
+ options.append("TACACS User Identification\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x1b:
|
|
|
|
+ options.append("Output Marking\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x1c:
|
|
|
|
+ options.append("Terminal Location Number\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x1d:
|
|
|
|
+ options.append("Telnet 3270 Regime\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x1e:
|
|
|
|
+ options.append("X.3 PAD\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x1f:
|
|
|
|
+ options.append("Negotiate About Window Size\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x20:
|
|
|
|
+ options.append("Terminal Speed\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x21:
|
|
|
|
+ options.append("Remote Flow Control\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x22:
|
|
|
|
+ options.append("Linemode\n");
|
|
|
|
+ break;
|
|
|
|
+ case 0x23:
|
|
|
|
+ options.append("X Display Location\n");
|
|
|
|
+ break;
|
|
|
|
+ case (byte) 0xff:
|
|
|
|
+ options.append("Extended-Options-List\n");
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ options.append("unknown option\n");
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return options.toString();
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|