[ 
https://bro-tracker.atlassian.net/browse/BIT-1504?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=22810#comment-22810
 ] 

Aaron Eppert commented on BIT-1504:
-----------------------------------

First, thank you very much Johanna for your reply and the detailed information. 
After digging for awhile and testing a few theories, I realized it was a design 
issue and was likely around the original ascii conventions of Bro, but it is 
always very helpful to know the details from someone far more familiar with the 
code base.

I do stand by the original feature request given the complexity of protocols 
aren't decreasing and the importance of various metadata for detection of 
attacks is only increasing it becomes even more important to have more dense 
logs. Representing them in a tabular, ascii format is non-trivial I fully 
respect and understand that problem, however I would propose an exception flag 
of some form that if an underlying writer supports the extended attributes, 
they be allowed to pass, otherwise they are ignored and logged as being 
dropped. This, I would hope would meet everyone's needs mostly in the middle 
and I would assume, perhaps incorrectly, that it wouldn't be too difficult to 
architect in this manner. 

With all that said, I realize the priority on this is low, even for me overall 
at the moment. But if we're adding "nice to haves" and vision casting for 
future functionality in Bro, this would certainly be a helpful change that 
would likely be very well received.

> The facility to serialize tables to a log
> -----------------------------------------
>
>                 Key: BIT-1504
>                 URL: https://bro-tracker.atlassian.net/browse/BIT-1504
>             Project: Bro Issue Tracker
>          Issue Type: New Feature
>          Components: Bro
>    Affects Versions: 2.4
>            Reporter: Aaron Eppert
>            Priority: Low
>
> ```@load base/protocols/http/main
> @load base/protocols/http/utils
> module HTTP;
> redef record Info += {
>       cookies: table[string] of string &optional &log;
> };
> event http_header(c: connection, is_orig: bool, name: string, value: string)
> {
>       if ( is_orig && name == "COOKIE" ) {
>               if ( ! c$http?$cookies ) {
>                       c$http$cookies = table();
>               }
>               
>               local cookie_vec = split_string(value, /;[[:blank:]]*/);
>               
>               for (cookie in cookie_vec) {
>                       local kv = split_string(value, /=/);
>                       if (|kv| == 2) {
>                               c$http$cookies[kv[0]] = kv[1];
>                       }
>               }
>       }
> }
> ```
> Simple example. The ability to serialize the above to a log file, given it 
> uses simple string indices and values would seem to be straight forward per 
> looking at the Ascii and JSON writers, which appear to support TYPE_TABLE 
> natively. I spent some time looking at how to implement this at the layers 
> above, but the (!t->IsSet()) in SerialTypes.cc's Value::IsCompatibleType(...) 
> is an obvious blocker and I ran out of time to deduce the rest.
> I would assume I am not alone in this want as it would make proper downstream 
> referencing of the resulting KV pairs from the table especially easy to 
> navigate. This is, again, very much the case when using the JSON writer given 
> it should natively serialize into very easily usable KV pair notation.



--
This message was sent by Atlassian JIRA
(v7.0.0-OD-08-005#70107)
_______________________________________________
bro-dev mailing list
[email protected]
http://mailman.icsi.berkeley.edu/mailman/listinfo/bro-dev

Reply via email to