27 static int g_mime_email_from_buffer_id = 0;
28 static int g_mime_email_subject_buffer_id = 0;
29 static int g_mime_email_to_buffer_id = 0;
30 static int g_mime_email_cc_buffer_id = 0;
31 static int g_mime_email_date_buffer_id = 0;
32 static int g_mime_email_message_id_buffer_id = 0;
33 static int g_mime_email_x_mailer_buffer_id = 0;
34 static int g_mime_email_url_buffer_id = 0;
35 static int g_mime_email_received_buffer_id = 0;
36 static int g_mime_email_body_md5_buffer_id = 0;
49 static bool GetMimeEmailFromData(
50 const void *txv,
const uint8_t _flow_flags,
const uint8_t **data, uint32_t *data_len)
55 return (SCDetectMimeEmailGetData(tx->
mime_state, data, data_len,
"from") == 1);
69 static bool GetMimeEmailSubjectData(
70 const void *txv,
const uint8_t _flow_flags,
const uint8_t **data, uint32_t *data_len)
75 return (SCDetectMimeEmailGetData(tx->
mime_state, data, data_len,
"subject") == 1);
89 static bool GetMimeEmailToData(
90 const void *txv,
const uint8_t _flow_flags,
const uint8_t **data, uint32_t *data_len)
95 return (SCDetectMimeEmailGetData(tx->
mime_state, data, data_len,
"to") == 1);
109 static bool GetMimeEmailCcData(
110 const void *txv,
const uint8_t _flow_flags,
const uint8_t **data, uint32_t *data_len)
115 return (SCDetectMimeEmailGetData(tx->
mime_state, data, data_len,
"cc") == 1);
129 static bool GetMimeEmailDateData(
130 const void *txv,
const uint8_t _flow_flags,
const uint8_t **data, uint32_t *data_len)
135 return (SCDetectMimeEmailGetData(tx->
mime_state, data, data_len,
"date") == 1);
149 static bool GetMimeEmailMessageIdData(
150 const void *txv,
const uint8_t _flow_flags,
const uint8_t **data, uint32_t *data_len)
155 return (SCDetectMimeEmailGetData(tx->
mime_state, data, data_len,
"message-id") == 1);
169 static bool GetMimeEmailXMailerData(
170 const void *txv,
const uint8_t _flow_flags,
const uint8_t **data, uint32_t *data_len)
175 return (SCDetectMimeEmailGetData(tx->
mime_state, data, data_len,
"x-mailer") == 1);
190 const uint8_t
flags, uint32_t idx,
const uint8_t **buf, uint32_t *buf_len)
197 return SCDetectMimeEmailGetUrl(tx->
mime_state, buf, buf_len, idx) == 1;
212 const uint8_t
flags, uint32_t idx,
const uint8_t **buf, uint32_t *buf_len)
220 return SCDetectMimeEmailGetDataArray(tx->
mime_state, buf, buf_len,
"received", idx) == 1;
233 if (!MimeBodyMd5IsEnabled()) {
235 SCMimeSmtpConfigBodyMd5(
true);
241 static bool GetMimeEmailBodyMd5Data(
242 const void *txv,
const uint8_t _flow_flags,
const uint8_t **data, uint32_t *data_len)
248 SCDetectMimeEmailGetBodyMd5(tx->
mime_state, data, data_len);
257 kw.
name =
"email.from";
258 kw.
desc =
"'From' field from an email";
259 kw.
url =
"/rules/email-keywords.html#email.from";
260 kw.
Setup = DetectMimeEmailFromSetup;
264 "email.from",
"MIME EMAIL FROM",
ALPROTO_SMTP, STREAM_TOSERVER, GetMimeEmailFromData);
266 kw.
name =
"email.subject";
267 kw.
desc =
"'Subject' field from an email";
268 kw.
url =
"/rules/email-keywords.html#email.subject";
269 kw.
Setup = DetectMimeEmailSubjectSetup;
273 "MIME EMAIL SUBJECT",
ALPROTO_SMTP, STREAM_TOSERVER, GetMimeEmailSubjectData);
275 kw.
name =
"email.to";
276 kw.
desc =
"'To' field from an email";
277 kw.
url =
"/rules/email-keywords.html#email.to";
278 kw.
Setup = DetectMimeEmailToSetup;
282 "email.to",
"MIME EMAIL TO",
ALPROTO_SMTP, STREAM_TOSERVER, GetMimeEmailToData);
284 kw.
name =
"email.cc";
285 kw.
desc =
"'Cc' field from an email";
286 kw.
url =
"/rules/email-keywords.html#email.cc";
287 kw.
Setup = DetectMimeEmailCcSetup;
291 "email.cc",
"MIME EMAIL CC",
ALPROTO_SMTP, STREAM_TOSERVER, GetMimeEmailCcData);
293 kw.
name =
"email.date";
294 kw.
desc =
"'Date' field from an email";
295 kw.
url =
"/rules/email-keywords.html#email.date";
296 kw.
Setup = DetectMimeEmailDateSetup;
300 "email.date",
"MIME EMAIL DATE",
ALPROTO_SMTP, STREAM_TOSERVER, GetMimeEmailDateData);
302 kw.
name =
"email.message_id";
303 kw.
desc =
"'Message-Id' field from an email";
304 kw.
url =
"/rules/email-keywords.html#email.message_id";
305 kw.
Setup = DetectMimeEmailMessageIdSetup;
309 "MIME EMAIL Message-Id",
ALPROTO_SMTP, STREAM_TOSERVER, GetMimeEmailMessageIdData);
311 kw.
name =
"email.x_mailer";
312 kw.
desc =
"'X-Mailer' field from an email";
313 kw.
url =
"/rules/email-keywords.html#email.x_mailer";
314 kw.
Setup = DetectMimeEmailXMailerSetup;
318 "MIME EMAIL X-Mailer",
ALPROTO_SMTP, STREAM_TOSERVER, GetMimeEmailXMailerData);
320 kw.
name =
"email.url";
321 kw.
desc =
"'Url' extracted from an email";
322 kw.
url =
"/rules/email-keywords.html#email.url";
323 kw.
Setup = DetectMimeEmailUrlSetup;
327 "email.url",
"MIME EMAIL URL",
ALPROTO_SMTP, STREAM_TOSERVER, GetMimeEmailUrlData);
329 kw.
name =
"email.received";
330 kw.
desc =
"'Received' field from an email";
331 kw.
url =
"/rules/email-keywords.html#email.received";
332 kw.
Setup = DetectMimeEmailReceivedSetup;
336 "MIME EMAIL RECEIVED",
ALPROTO_SMTP, STREAM_TOSERVER, GetMimeEmailReceivedData);
338 if (!MimeBodyMd5IsDisabled()) {
340 kw.
name =
"email.body_md5";
341 kw.
desc =
"'md5' hash generated from an email body";
342 kw.
url =
"/rules/email-keywords.html#email.body_md5";
343 kw.
Setup = DetectMimeEmailBodyMd5Setup;
349 "MIME EMAIL BODY MD5",
ALPROTO_SMTP, STREAM_TOSERVER, GetMimeEmailBodyMd5Data);