Search code examples
regexregular-languageintrusion-detection

Signature based NIDS regex matching


I am trying to build a signature based intrusion detection system but when matching regex against payloads, I encountered an expression beginning with a caret ^ which means match at the beginning of a line in regular expression.

What I wanted to be sure of is should this be at the beginning of the entire payload or simply anywhere in the payload after a newline \n.


Solution

  • By default, ^ stands for the beginning of the string.

    So assuming you're treating your whole payload (newline included) as a single string, ^ will mean at the beginning of the payload.

    If you want to change this behavior you need to turn on the multiline flag m by adding (?m) at the beginning of your regex (depending on the language you're using, there might be other ways of doing so).

    This flag will make ^ and $ match the beginning and end of a line, the beginning and end of the string becoming available with \A and \Z.