34 static AppProto ImapClientProbingParser(
35 const Flow *
f, uint8_t direction,
const uint8_t *input, uint32_t
len, uint8_t *rdir)
42 for (
size_t i = 0; i <
len; i++) {
43 if (input[i] >=
'0' && input[i] <=
'9') {
47 if (input[i] ==
' ') {
65 static int IMAPRegisterPatternsForProtocolDetection(
void)
68 IPPROTO_TCP,
ALPROTO_IMAP,
"* OK ", 5, 0, STREAM_TOCLIENT) < 0) {
73 IPPROTO_TCP,
ALPROTO_IMAP,
"* NO ", 5, 0, STREAM_TOCLIENT) < 0) {
78 IPPROTO_TCP,
ALPROTO_IMAP,
"* BAD ", 6, 0, STREAM_TOCLIENT) < 0) {
83 IPPROTO_TCP,
ALPROTO_IMAP,
"* LIST ", 7, 0, STREAM_TOCLIENT) < 0) {
88 IPPROTO_TCP,
ALPROTO_IMAP,
"* ESEARCH ", 10, 0, STREAM_TOCLIENT) < 0) {
93 IPPROTO_TCP,
ALPROTO_IMAP,
"* STATUS ", 9, 0, STREAM_TOCLIENT) < 0) {
98 IPPROTO_TCP,
ALPROTO_IMAP,
"* FLAGS ", 8, 0, STREAM_TOCLIENT) < 0) {
113 17 , 0, STREAM_TOSERVER,
114 ImapClientProbingParser, 12, 17) < 0) {
123 const char *proto_name =
"imap";
126 SCLogDebug(
"IMAP protocol detection is enabled.");
128 if (IMAPRegisterPatternsForProtocolDetection() < 0)
129 SCLogError(
"Failed to register IMAP protocol detection patterns.");
131 SCLogDebug(
"Protocol detector and parser disabled for IMAP.");