]>
The Tcpdump Group git mirrors - tcpdump/blob - print-ssh.c
2 * Redistribution and use in source and binary forms, with or without
3 * modification, are permitted provided that: (1) source code
4 * distributions retain the above copyright notice and this paragraph
5 * in its entirety, and (2) distributions including binary code include
6 * the above copyright notice and this paragraph in its entirety in
7 * the documentation or other materials provided with the distribution.
8 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND
9 * WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
10 * LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
11 * FOR A PARTICULAR PURPOSE.
14 /* \summary: Secure Shell (SSH) printer */
20 #include "netdissect-stdinc.h"
25 #include "netdissect.h"
29 ssh_print_version(netdissect_options
*ndo
, const u_char
*pptr
, u_int len
)
34 if ( GET_U_1(pptr
+idx
) != 'S' )
37 if ( GET_U_1(pptr
+idx
) != 'S' )
40 if ( GET_U_1(pptr
+idx
) != 'H' )
43 if ( GET_U_1(pptr
+idx
) != '-' )
48 if (GET_U_1(pptr
+ idx
) == '\n') {
50 * LF without CR; end of line.
51 * Skip the LF and print the line, with the
52 * exception of the LF.
55 } else if (GET_U_1(pptr
+ idx
) == '\r') {
58 /* not in this packet */
61 if (GET_U_1(pptr
+ idx
+ 1) == '\n') {
64 * Skip the CR-LF and print the line, with
65 * the exception of the CR-LF.
71 * CR followed by something else; treat this as
72 * if it were binary data and don't print it.
75 } else if (!isascii(GET_U_1(pptr
+ idx
)) ||
76 !isprint(GET_U_1(pptr
+ idx
)) ) {
78 * Not a printable ASCII character; treat this
79 * as if it were binary data and don't print it.
89 /* Capitalize the protocol name */
90 for (pnp
= ndo
->ndo_protocol
; *pnp
!= '\0'; pnp
++)
91 ND_PRINT("%c", ND_TOUPPER((u_char
)*pnp
));
92 ND_PRINT(": %.*s", (int)idx
, pptr
);
97 ssh_print(netdissect_options
*ndo
, const u_char
*pptr
, u_int len
)
99 ndo
->ndo_protocol
= "ssh";
101 ssh_print_version(ndo
, pptr
, len
);