mirror of
https://github.com/zeek/zeek.git
synced 2025-10-07 09:08:20 +00:00
Merge remote-tracking branch 'origin/master' into topic/vladg/smb
Conflicts: testing/btest/Baseline/scripts.base.frameworks.file-analysis.http.multipart/out testing/btest/Baseline/scripts.policy.misc.dump-events/all-events.log
This commit is contained in:
commit
98c33139c5
130 changed files with 3177 additions and 842 deletions
201
CHANGES
201
CHANGES
|
@ -1,4 +1,205 @@
|
||||||
|
|
||||||
|
2.3-278 | 2014-11-03 18:55:18 -0800
|
||||||
|
|
||||||
|
* Add new curves from draft-ietf-tls-negotiated-ff-dhe to SSL
|
||||||
|
analysis. (Johanna Amann)
|
||||||
|
|
||||||
|
2.3-274 | 2014-10-31 17:45:25 -0700
|
||||||
|
|
||||||
|
* Adding call to new binpac::init() function. (Robin Sommer)
|
||||||
|
|
||||||
|
2.3-272 | 2014-10-31 16:29:42 -0700
|
||||||
|
|
||||||
|
* Fix segfault if when statement's RHS is unitialized. Addresses
|
||||||
|
BIT-1176. (Jon Siwek)
|
||||||
|
|
||||||
|
* Fix checking vector indices via "in". Addresses BIT-1280. (Jon
|
||||||
|
Siwek)
|
||||||
|
|
||||||
|
2.3-268 | 2014-10-31 12:12:22 -0500
|
||||||
|
|
||||||
|
* BIT-1283: Fix crash when using &encrypt. (Jon Siwek)
|
||||||
|
|
||||||
|
2.3-267 | 2014-10-31 10:35:02 -0500
|
||||||
|
|
||||||
|
* BIT-1284: Allow arbitrary when statement timeout expressions
|
||||||
|
(Jon Siwek)
|
||||||
|
|
||||||
|
2.3-266 | 2014-10-31 09:21:28 -0500
|
||||||
|
|
||||||
|
* BIT-1166: Add configure options to fine tune local state dirs used
|
||||||
|
by BroControl. (Jon Siwek)
|
||||||
|
|
||||||
|
2.3-264 | 2014-10-30 13:25:57 -0500
|
||||||
|
|
||||||
|
* Fix some minor Coverity Scan complaints. (Jon Siwek)
|
||||||
|
|
||||||
|
2.3-263 | 2014-10-28 15:09:10 -0500
|
||||||
|
|
||||||
|
* Fix checking of fwrite return values (Johanna Amann)
|
||||||
|
|
||||||
|
2.3-260 | 2014-10-27 12:54:17 -0500
|
||||||
|
|
||||||
|
* Fix errors/warnings when compiling with -std=c++11 (Jon Siwek)
|
||||||
|
|
||||||
|
2.3-259 | 2014-10-27 10:04:04 -0500
|
||||||
|
|
||||||
|
* Documentation fixes. (Vicente Jimenez Aguilar and Stefano Azzalini)
|
||||||
|
|
||||||
|
2.3-256 | 2014-10-24 15:33:45 -0700
|
||||||
|
|
||||||
|
* Adding missing test baseline. (Robin Sommer)
|
||||||
|
|
||||||
|
2.3-255 | 2014-10-24 13:39:44 -0700
|
||||||
|
|
||||||
|
* Fixing unstable active-http test. (Robin Sommer)
|
||||||
|
|
||||||
|
2.3-254 | 2014-10-24 11:40:51 -0700
|
||||||
|
|
||||||
|
* Fix active-http.bro to deal reliably with empty server responses,
|
||||||
|
which will now be passed back as empty files. (Christian Struck)
|
||||||
|
|
||||||
|
2.3-248 | 2014-10-23 14:20:59 -0700
|
||||||
|
|
||||||
|
* Change order in which a plugin's scripts are loaded at startup.
|
||||||
|
(Robin Sommer)
|
||||||
|
|
||||||
|
2.3-247 | 2014-10-21 13:42:38 -0700
|
||||||
|
|
||||||
|
* Updates to the SSL analyzer. (Johanna Amann)
|
||||||
|
|
||||||
|
* Mark everything below 2048 bit as a weak key.
|
||||||
|
|
||||||
|
* Fix notice suppression.
|
||||||
|
|
||||||
|
* Add information about server-chosen protocol to ssl.log, if
|
||||||
|
provided by application_layer_next_protocol.
|
||||||
|
|
||||||
|
* Add boolean flag to ssl.log signaling if a session was
|
||||||
|
resumed. Remove the (usually not really that useful) session
|
||||||
|
ID that the client sent.
|
||||||
|
|
||||||
|
2.3-240 | 2014-10-21 13:36:33 -0700
|
||||||
|
|
||||||
|
* Fix Coverity-reported issues in DNP3 analyzer. (Seth Hall)
|
||||||
|
|
||||||
|
2.3-238 | 2014-10-16 06:51:49 -0700
|
||||||
|
|
||||||
|
* Fix multipart HTTP/MIME entity file analysis so that (1) singular
|
||||||
|
CR or LF characters in multipart body content are no longer
|
||||||
|
converted to a full CRLF (thus corrupting the file) and (2) it
|
||||||
|
also no longer considers the CRLF before the multipart boundary as
|
||||||
|
part of the content. Addresses BIT-1235. (Jon Siwek)
|
||||||
|
|
||||||
|
2.3-235 | 2014-10-15 10:20:47 -0500
|
||||||
|
|
||||||
|
* BIT-1273: Add error message for bad enum declaration syntax.
|
||||||
|
(Jon Siwek)
|
||||||
|
|
||||||
|
2.3-234 | 2014-10-14 14:42:09 -0500
|
||||||
|
|
||||||
|
* Documentation fixes. (Steve Smoot)
|
||||||
|
|
||||||
|
2.3-233 | 2014-10-09 16:00:27 -0500
|
||||||
|
|
||||||
|
* Change find-bro-logs unit test to follow symlinks. (Jon Siwek)
|
||||||
|
|
||||||
|
* Add error checks and messages to a test script (Daniel Thayer)
|
||||||
|
|
||||||
|
2.3-230 | 2014-10-08 08:15:17 -0700
|
||||||
|
|
||||||
|
* Further baseline normalization for plugin test portability. (Robin
|
||||||
|
Sommer)
|
||||||
|
|
||||||
|
2.3-229 | 2014-10-07 20:18:11 -0700
|
||||||
|
|
||||||
|
* Fix for test portability. (Robin Sommer)
|
||||||
|
|
||||||
|
2.3-228 | 2014-10-07 15:32:37 -0700
|
||||||
|
|
||||||
|
* Include plugin unit tests into the top-level btest configuration. (Robin Sommer)
|
||||||
|
|
||||||
|
* Switching the prefix separator for packet source/dumper plugins
|
||||||
|
once more, now to "::". Addresses BIT-1267. (Robin Sommer)
|
||||||
|
|
||||||
|
* Fix for allowing a packet source/dumper plugin to support multiple
|
||||||
|
prefixes with a colon. (Robin Sommer)
|
||||||
|
|
||||||
|
2.3-225 | 2014-10-07 15:13:35 -0700
|
||||||
|
|
||||||
|
* Updating plugin documentation. (Robin Sommer)
|
||||||
|
|
||||||
|
2.3-224 | 2014-10-07 14:32:17 -0700
|
||||||
|
|
||||||
|
* Improved the log file reference documentation. (Jeannette Dopheide
|
||||||
|
and Daniel Thayer)
|
||||||
|
|
||||||
|
* Improves shockwave flash file signatures. (Seth Hall)
|
||||||
|
|
||||||
|
- This moves the signatures out of the libmagic imported signatures
|
||||||
|
and into our own general.sig.
|
||||||
|
|
||||||
|
- Expand the detection to LZMA compressed flash files.
|
||||||
|
|
||||||
|
* Add new script language reference documentation on operators,
|
||||||
|
statements, and directives. Also improved the documentation on
|
||||||
|
types and attributes by splitting them into two docs, and
|
||||||
|
providing more examples and adding a chart on the top of each page
|
||||||
|
with links to each type and attribute for easier access to the
|
||||||
|
information. (Daniel Thayer)
|
||||||
|
|
||||||
|
* Split the types and attributes reference doc into two docs.
|
||||||
|
(Daniel Thayer)
|
||||||
|
|
||||||
|
2.3-208 | 2014-10-03 09:38:52 -0500
|
||||||
|
|
||||||
|
* BIT-1268: Fix uninitialized router_list argument in
|
||||||
|
dhcp_offer/dhcp_ack. (Jon Siwek)
|
||||||
|
|
||||||
|
2.3-207 | 2014-10-02 16:39:17 -0700
|
||||||
|
|
||||||
|
* Updating plugin docs. (Robin Sommer)
|
||||||
|
|
||||||
|
* Fix packet sources being treated as idle when a packet is
|
||||||
|
available. Addresses BIT-1266. (Jon Siwek)
|
||||||
|
|
||||||
|
* Fix regression causing the main loop to spin more frequently.
|
||||||
|
Addresses BIT-1266. (Jon Siwek)
|
||||||
|
|
||||||
|
2.3-203 | 2014-09-29 20:06:54 -0700
|
||||||
|
|
||||||
|
* Fix to use length parameter in DNP3 time conversion correctly now.
|
||||||
|
(Robin Sommer)
|
||||||
|
|
||||||
|
2.3-202 | 2014-09-29 17:05:18 -0700
|
||||||
|
|
||||||
|
* New SSL extension type from IANA and a few other SSL const
|
||||||
|
changes. (Johanna Amann)
|
||||||
|
|
||||||
|
* Make unexpected pipe errors fatal as precaution. Addresses
|
||||||
|
BIT-1260. (Jon Siwek)
|
||||||
|
|
||||||
|
* Adding a function for DNP3 to translate the timestamp format. (Hui
|
||||||
|
Lin)
|
||||||
|
|
||||||
|
2.3-197 | 2014-09-29 10:42:01 -0500
|
||||||
|
|
||||||
|
* Fix possible seg fault in TCP reassembler. (Jon Siwek)
|
||||||
|
|
||||||
|
2.3-196 | 2014-09-25 17:53:27 -0700
|
||||||
|
|
||||||
|
* Changing prefix for packet sources/dumper from ':' to '%'.
|
||||||
|
Addresses BIT-1249. (Robin Sommer)
|
||||||
|
|
||||||
|
* Remove timeouts from remote communication loop. The select() now
|
||||||
|
blocks until there's work to do instead of relying on a small
|
||||||
|
timeout value which can cause unproductive use of cpu cycles. (Jon
|
||||||
|
Siwek)
|
||||||
|
|
||||||
|
* Improve error message when failing to activate a plugin. Also fix
|
||||||
|
a unit test helper script that checks plugin availability. (Jon
|
||||||
|
Siwek)
|
||||||
|
|
||||||
2.3-183 | 2014-09-24 10:08:04 -0500
|
2.3-183 | 2014-09-24 10:08:04 -0500
|
||||||
|
|
||||||
* Add a "node" field to Intel::Seen struture and intel.log to
|
* Add a "node" field to Intel::Seen struture and intel.log to
|
||||||
|
|
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
||||||
2.3-183
|
2.3-278
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 3a4684801aafa0558383199e9abd711650b53af9
|
Subproject commit 77a86591dcf89d7252d3676d3f1199d6c927d073
|
|
@ -1 +1 @@
|
||||||
Subproject commit 9ea20c3905bd3fd5109849c474a2f2b4ed008357
|
Subproject commit 977654dc51ab08a2afde32241f108cdb4a581d8f
|
|
@ -1 +1 @@
|
||||||
Subproject commit 33d0ed4a54a6ecf08a0b5fe18831aa413b437066
|
Subproject commit acb8fbe8e7bc6ace5135fb73dca8e29432cdc1ca
|
|
@ -1 +1 @@
|
||||||
Subproject commit 2f808bc8541378b1a4953cca02c58c43945d154f
|
Subproject commit 39e865dec9611b9b53b609cbc8df519cebae0a1e
|
|
@ -1 +1 @@
|
||||||
Subproject commit 23055b473c689a79da12b2825d8388f71f28c709
|
Subproject commit ad600b5bdcd56a2723e323c0f2c8e1708956ca4f
|
2
cmake
2
cmake
|
@ -1 +1 @@
|
||||||
Subproject commit 03de0cc467d2334dcb851eddd843d59fef217909
|
Subproject commit 1316c07f7059647b6c4a496ea36e4b83bb5d8f0f
|
16
configure
vendored
16
configure
vendored
|
@ -24,6 +24,13 @@ Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||||
--prefix=PREFIX installation directory [/usr/local/bro]
|
--prefix=PREFIX installation directory [/usr/local/bro]
|
||||||
--scriptdir=PATH root installation directory for Bro scripts
|
--scriptdir=PATH root installation directory for Bro scripts
|
||||||
[PREFIX/share/bro]
|
[PREFIX/share/bro]
|
||||||
|
--localstatedir=PATH when using BroControl, path to store log files
|
||||||
|
and run-time data (within log/ and spool/ subdirs)
|
||||||
|
[PREFIX]
|
||||||
|
--spooldir=PATH when using BroControl, path to store run-time data
|
||||||
|
[PREFIX/spool]
|
||||||
|
--logdir=PATH when using BroControl, path to store log file
|
||||||
|
[PREFIX/logs]
|
||||||
--conf-files-dir=PATH config files installation directory [PREFIX/etc]
|
--conf-files-dir=PATH config files installation directory [PREFIX/etc]
|
||||||
|
|
||||||
Optional Features:
|
Optional Features:
|
||||||
|
@ -144,6 +151,15 @@ while [ $# -ne 0 ]; do
|
||||||
append_cache_entry BRO_ETC_INSTALL_DIR PATH $optarg
|
append_cache_entry BRO_ETC_INSTALL_DIR PATH $optarg
|
||||||
user_set_conffilesdir="true"
|
user_set_conffilesdir="true"
|
||||||
;;
|
;;
|
||||||
|
--localstatedir=*)
|
||||||
|
append_cache_entry BRO_LOCAL_STATE_DIR PATH $optarg
|
||||||
|
;;
|
||||||
|
--spooldir=*)
|
||||||
|
append_cache_entry BRO_SPOOL_DIR PATH $optarg
|
||||||
|
;;
|
||||||
|
--logdir=*)
|
||||||
|
append_cache_entry BRO_LOG_DIR PATH $optarg
|
||||||
|
;;
|
||||||
--enable-debug)
|
--enable-debug)
|
||||||
append_cache_entry ENABLE_DEBUG BOOL true
|
append_cache_entry ENABLE_DEBUG BOOL true
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -17,11 +17,11 @@ functionality to Bro:
|
||||||
|
|
||||||
- File analyzers.
|
- File analyzers.
|
||||||
|
|
||||||
- Packet sources and packet dumpers. TODO: Not yet.
|
- Packet sources and packet dumpers.
|
||||||
|
|
||||||
- Logging framework backends. TODO: Not yet.
|
- Logging framework backends.
|
||||||
|
|
||||||
- Input framework readers. TODO: Not yet.
|
- Input framework readers.
|
||||||
|
|
||||||
A plugin's functionality is available to the user just as if Bro had
|
A plugin's functionality is available to the user just as if Bro had
|
||||||
the corresponding code built-in. Indeed, internally many of Bro's
|
the corresponding code built-in. Indeed, internally many of Bro's
|
||||||
|
@ -265,23 +265,25 @@ plugins to unconditionally activate, even in bare mode.
|
||||||
activated plugins. Note that plugins compiled statically into Bro are
|
activated plugins. Note that plugins compiled statically into Bro are
|
||||||
always activated, and hence show up as such even in bare mode.
|
always activated, and hence show up as such even in bare mode.
|
||||||
|
|
||||||
Plugin Component
|
Plugin Components
|
||||||
================
|
=================
|
||||||
|
|
||||||
The following gives additional information about providing individual
|
The following subsections detail providing individual types of
|
||||||
types of functionality via plugins. Note that a single plugin can
|
functionality via plugins. Note that a single plugin can provide more
|
||||||
provide more than one type. For example, a plugin could provide
|
than one component type. For example, a plugin could provide multiple
|
||||||
multiple protocol analyzers at once; or both a logging backend and
|
protocol analyzers at once; or both a logging backend and input reader
|
||||||
input reader at the same time.
|
at the same time.
|
||||||
|
|
||||||
We now walk briefly through the specifics of providing a specific type
|
.. todo::
|
||||||
of functionality (a *component*) through a plugin. We'll focus on
|
|
||||||
their interfaces to the plugin system, rather than specifics on
|
These subsections are mostly missing right now, as much of their
|
||||||
writing the corresponding logic (usually the best way to get going on
|
content isn't actually plugin-specific, but concerns generally
|
||||||
that is to start with an existing plugin providing a corresponding
|
writing such functionality for Bro. The best way to get started
|
||||||
component and adapt that). We'll also point out how the CMake
|
right now is to look at existing code implementing similar
|
||||||
infrastructure put in place by the ``init-plugin`` helper script ties
|
functionality, either as a plugin or inside Bro proper. Also, for
|
||||||
the various pieces together.
|
each component type there's a unit test in
|
||||||
|
``testing/btest/plugins`` creating a basic plugin skeleton with a
|
||||||
|
corresponding component.
|
||||||
|
|
||||||
Bro Scripts
|
Bro Scripts
|
||||||
-----------
|
-----------
|
||||||
|
@ -315,22 +317,22 @@ TODO.
|
||||||
Logging Writer
|
Logging Writer
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
Not yet available as plugins.
|
TODO.
|
||||||
|
|
||||||
Input Reader
|
Input Reader
|
||||||
------------
|
------------
|
||||||
|
|
||||||
Not yet available as plugins.
|
TODO.
|
||||||
|
|
||||||
Packet Sources
|
Packet Sources
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
Not yet available as plugins.
|
TODO.
|
||||||
|
|
||||||
Packet Dumpers
|
Packet Dumpers
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
Not yet available as plugins.
|
TODO.
|
||||||
|
|
||||||
Hooks
|
Hooks
|
||||||
=====
|
=====
|
||||||
|
@ -412,25 +414,32 @@ Run the test-suite::
|
||||||
Debugging Plugins
|
Debugging Plugins
|
||||||
=================
|
=================
|
||||||
|
|
||||||
Plugins can use Bro's standard debug logger by using the
|
If your plugin isn't loading as expected, Bro's debugging facilities
|
||||||
``PLUGIN_DBG_LOG(<plugin>, <args>)`` macro (defined in
|
can help to illuminate what's going on. To enable, recompile Bro
|
||||||
``DebugLogger.h``), where ``<plugin>`` is the ``Plugin`` instance and
|
with debugging support (``./configure --enable-debug``), and
|
||||||
``<args>`` are printf-style arguments, just as with Bro's standard
|
afterwards rebuild your plugin as well. If you then run Bro with ``-B
|
||||||
debuggging macros.
|
plugins``, it will produce a file ``debug.log`` that records details
|
||||||
|
about the process for searching, loading, and activating plugins.
|
||||||
|
|
||||||
At runtime, one then activates a plugin's debugging output with ``-B
|
To generate your own debugging output from inside your plugin, you can
|
||||||
plugin-<name>``, where ``<name>`` is the name of the plugin as
|
add a custom debug stream by using the ``PLUGIN_DBG_LOG(<plugin>,
|
||||||
returned by its ``Configure()`` method, yet with the
|
<args>)`` macro (defined in ``DebugLogger.h``), where ``<plugin>`` is
|
||||||
namespace-separator ``::`` replaced with a simple dash. Example: If
|
the ``Plugin`` instance and ``<args>`` are printf-style arguments,
|
||||||
the plugin is called ``Bro::Demo``, use ``-B plugin-Bro-Demo``. As
|
just as with Bro's standard debugging macros (grep for ``DBG_LOG`` in
|
||||||
usual, the debugging output will be recorded to ``debug.log`` if Bro's
|
Bro's ``src/`` to see examples). At runtime, you can then activate
|
||||||
compiled in debug mode.
|
your plugin's debugging output with ``-B plugin-<name>``, where
|
||||||
|
``<name>`` is the name of the plugin as returned by its
|
||||||
|
``Configure()`` method, yet with the namespace-separator ``::``
|
||||||
|
replaced with a simple dash. Example: If the plugin is called
|
||||||
|
``Bro::Demo``, use ``-B plugin-Bro-Demo``. As usual, the debugging
|
||||||
|
output will be recorded to ``debug.log`` if Bro's compiled in debug
|
||||||
|
mode.
|
||||||
|
|
||||||
|
|
||||||
Documenting Plugins
|
Documenting Plugins
|
||||||
===================
|
===================
|
||||||
|
|
||||||
..todo::
|
.. todo::
|
||||||
|
|
||||||
Integrate all this with Broxygen.
|
Integrate all this with Broxygen.
|
||||||
|
|
||||||
|
|
|
@ -176,6 +176,10 @@ class BroIdentifier(BroGeneric):
|
||||||
def get_index_text(self, objectname, name):
|
def get_index_text(self, objectname, name):
|
||||||
return name
|
return name
|
||||||
|
|
||||||
|
class BroKeyword(BroGeneric):
|
||||||
|
def get_index_text(self, objectname, name):
|
||||||
|
return name
|
||||||
|
|
||||||
class BroAttribute(BroGeneric):
|
class BroAttribute(BroGeneric):
|
||||||
def get_index_text(self, objectname, name):
|
def get_index_text(self, objectname, name):
|
||||||
return _('%s (attribute)') % (name)
|
return _('%s (attribute)') % (name)
|
||||||
|
@ -213,6 +217,7 @@ class BroDomain(Domain):
|
||||||
'type': ObjType(l_('type'), 'type'),
|
'type': ObjType(l_('type'), 'type'),
|
||||||
'namespace': ObjType(l_('namespace'), 'namespace'),
|
'namespace': ObjType(l_('namespace'), 'namespace'),
|
||||||
'id': ObjType(l_('id'), 'id'),
|
'id': ObjType(l_('id'), 'id'),
|
||||||
|
'keyword': ObjType(l_('keyword'), 'keyword'),
|
||||||
'enum': ObjType(l_('enum'), 'enum'),
|
'enum': ObjType(l_('enum'), 'enum'),
|
||||||
'attr': ObjType(l_('attr'), 'attr'),
|
'attr': ObjType(l_('attr'), 'attr'),
|
||||||
}
|
}
|
||||||
|
@ -221,6 +226,7 @@ class BroDomain(Domain):
|
||||||
'type': BroGeneric,
|
'type': BroGeneric,
|
||||||
'namespace': BroNamespace,
|
'namespace': BroNamespace,
|
||||||
'id': BroIdentifier,
|
'id': BroIdentifier,
|
||||||
|
'keyword': BroKeyword,
|
||||||
'enum': BroEnum,
|
'enum': BroEnum,
|
||||||
'attr': BroAttribute,
|
'attr': BroAttribute,
|
||||||
}
|
}
|
||||||
|
@ -229,6 +235,7 @@ class BroDomain(Domain):
|
||||||
'type': XRefRole(),
|
'type': XRefRole(),
|
||||||
'namespace': XRefRole(),
|
'namespace': XRefRole(),
|
||||||
'id': XRefRole(),
|
'id': XRefRole(),
|
||||||
|
'keyword': XRefRole(),
|
||||||
'enum': XRefRole(),
|
'enum': XRefRole(),
|
||||||
'attr': XRefRole(),
|
'attr': XRefRole(),
|
||||||
'see': XRefRole(),
|
'see': XRefRole(),
|
||||||
|
|
|
@ -45,7 +45,13 @@ Reference Section
|
||||||
script-reference/index.rst
|
script-reference/index.rst
|
||||||
components/index.rst
|
components/index.rst
|
||||||
|
|
||||||
..
|
Development
|
||||||
|
===========
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
|
||||||
|
devel/plugins.rst
|
||||||
|
|
||||||
* :ref:`General Index <genindex>`
|
* :ref:`General Index <genindex>`
|
||||||
* :ref:`search`
|
* :ref:`search`
|
||||||
|
|
|
@ -112,6 +112,8 @@ default, including:
|
||||||
|
|
||||||
As you can see, some log files are specific to a particular protocol,
|
As you can see, some log files are specific to a particular protocol,
|
||||||
while others aggregate information across different types of activity.
|
while others aggregate information across different types of activity.
|
||||||
|
For a complete list of log files and a description of its purpose,
|
||||||
|
see :doc:`List of Log Files <../script-reference/list-of-log-files>`.
|
||||||
|
|
||||||
.. _bro-cut:
|
.. _bro-cut:
|
||||||
|
|
||||||
|
@ -250,44 +252,3 @@ protocol, it can have multiple ``GET``/``POST``/etc requests in a
|
||||||
stream and Bro is able to extract and track that information for you,
|
stream and Bro is able to extract and track that information for you,
|
||||||
giving you an in-depth and structured view into HTTP traffic on your
|
giving you an in-depth and structured view into HTTP traffic on your
|
||||||
network.
|
network.
|
||||||
|
|
||||||
-----------------------
|
|
||||||
Common Log Files
|
|
||||||
-----------------------
|
|
||||||
As a monitoring tool, Bro records a detailed view of the traffic inspected
|
|
||||||
and the events generated in a series of relevant log files. These files can
|
|
||||||
later be reviewed for monitoring, auditing and troubleshooting purposes.
|
|
||||||
|
|
||||||
In this section we present a brief explanation of the most commonly used log
|
|
||||||
files generated by Bro including links to descriptions of some of the fields
|
|
||||||
for each log type.
|
|
||||||
|
|
||||||
+-----------------+---------------------------------------+------------------------------+
|
|
||||||
| Log File | Description | Field Descriptions |
|
|
||||||
+=================+=======================================+==============================+
|
|
||||||
| http.log | Shows all HTTP requests and replies | :bro:type:`HTTP::Info` |
|
|
||||||
+-----------------+---------------------------------------+------------------------------+
|
|
||||||
| ftp.log | Records FTP activity | :bro:type:`FTP::Info` |
|
|
||||||
+-----------------+---------------------------------------+------------------------------+
|
|
||||||
| ssl.log | Records SSL sessions including | :bro:type:`SSL::Info` |
|
|
||||||
| | certificates used | |
|
|
||||||
+-----------------+---------------------------------------+------------------------------+
|
|
||||||
| known_certs.log | Includes SSL certificates used | :bro:type:`Known::CertsInfo` |
|
|
||||||
+-----------------+---------------------------------------+------------------------------+
|
|
||||||
| smtp.log | Summarizes SMTP traffic on a network | :bro:type:`SMTP::Info` |
|
|
||||||
+-----------------+---------------------------------------+------------------------------+
|
|
||||||
| dns.log | Shows all DNS activity on a network | :bro:type:`DNS::Info` |
|
|
||||||
+-----------------+---------------------------------------+------------------------------+
|
|
||||||
| conn.log | Records all connections seen by Bro | :bro:type:`Conn::Info` |
|
|
||||||
+-----------------+---------------------------------------+------------------------------+
|
|
||||||
| dpd.log | Shows network activity on | :bro:type:`DPD::Info` |
|
|
||||||
| | non-standard ports | |
|
|
||||||
+-----------------+---------------------------------------+------------------------------+
|
|
||||||
| files.log | Records information about all files | :bro:type:`Files::Info` |
|
|
||||||
| | transmitted over the network | |
|
|
||||||
+-----------------+---------------------------------------+------------------------------+
|
|
||||||
| weird.log | Records unexpected protocol-level | :bro:type:`Weird::Info` |
|
|
||||||
| | activity | |
|
|
||||||
+-----------------+---------------------------------------+------------------------------+
|
|
||||||
|
|
||||||
|
|
||||||
|
|
232
doc/script-reference/attributes.rst
Normal file
232
doc/script-reference/attributes.rst
Normal file
|
@ -0,0 +1,232 @@
|
||||||
|
Attributes
|
||||||
|
==========
|
||||||
|
|
||||||
|
The Bro scripting language supports the following attributes.
|
||||||
|
|
||||||
|
+-----------------------------+-----------------------------------------------+
|
||||||
|
| Name | Description |
|
||||||
|
+=============================+===============================================+
|
||||||
|
| :bro:attr:`&redef` |Redefine a global constant or extend a type. |
|
||||||
|
+-----------------------------+-----------------------------------------------+
|
||||||
|
| :bro:attr:`&priority` |Specify priority for event handler or hook. |
|
||||||
|
+-----------------------------+-----------------------------------------------+
|
||||||
|
| :bro:attr:`&log` |Mark a record field as to be written to a log. |
|
||||||
|
+-----------------------------+-----------------------------------------------+
|
||||||
|
| :bro:attr:`&optional` |Allow a record field value to be missing. |
|
||||||
|
+-----------------------------+-----------------------------------------------+
|
||||||
|
| :bro:attr:`&default` |Specify a default value. |
|
||||||
|
+-----------------------------+-----------------------------------------------+
|
||||||
|
| :bro:attr:`&add_func` |Specify a function to call for each "redef +=".|
|
||||||
|
+-----------------------------+-----------------------------------------------+
|
||||||
|
| :bro:attr:`&delete_func` |Same as "&add_func", except for "redef -=". |
|
||||||
|
+-----------------------------+-----------------------------------------------+
|
||||||
|
| :bro:attr:`&expire_func` |Specify a function to call when container |
|
||||||
|
| |element expires. |
|
||||||
|
+-----------------------------+-----------------------------------------------+
|
||||||
|
| :bro:attr:`&read_expire` |Specify a read timeout interval. |
|
||||||
|
+-----------------------------+-----------------------------------------------+
|
||||||
|
| :bro:attr:`&write_expire` |Specify a write timeout interval. |
|
||||||
|
+-----------------------------+-----------------------------------------------+
|
||||||
|
| :bro:attr:`&create_expire` |Specify a creation timeout interval. |
|
||||||
|
+-----------------------------+-----------------------------------------------+
|
||||||
|
| :bro:attr:`&synchronized` |Synchronize a variable across nodes. |
|
||||||
|
+-----------------------------+-----------------------------------------------+
|
||||||
|
| :bro:attr:`&persistent` |Make a variable persistent (written to disk). |
|
||||||
|
+-----------------------------+-----------------------------------------------+
|
||||||
|
| :bro:attr:`&rotate_interval`|Rotate a file after specified interval. |
|
||||||
|
+-----------------------------+-----------------------------------------------+
|
||||||
|
| :bro:attr:`&rotate_size` |Rotate a file after specified file size. |
|
||||||
|
+-----------------------------+-----------------------------------------------+
|
||||||
|
| :bro:attr:`&encrypt` |Encrypt a file when writing to disk. |
|
||||||
|
+-----------------------------+-----------------------------------------------+
|
||||||
|
| :bro:attr:`&raw_output` |Open file in raw mode (chars. are not escaped).|
|
||||||
|
+-----------------------------+-----------------------------------------------+
|
||||||
|
| :bro:attr:`&mergeable` |Prefer set union for synchronized state. |
|
||||||
|
+-----------------------------+-----------------------------------------------+
|
||||||
|
| :bro:attr:`&group` |Group event handlers to activate/deactivate. |
|
||||||
|
+-----------------------------+-----------------------------------------------+
|
||||||
|
| :bro:attr:`&error_handler` |Used internally for reporter framework events. |
|
||||||
|
+-----------------------------+-----------------------------------------------+
|
||||||
|
| :bro:attr:`&type_column` |Used by input framework for "port" type. |
|
||||||
|
+-----------------------------+-----------------------------------------------+
|
||||||
|
|
||||||
|
Here is a more detailed explanation of each attribute:
|
||||||
|
|
||||||
|
.. bro:attr:: &redef
|
||||||
|
|
||||||
|
Allows for redefinition of initial values of global objects declared as
|
||||||
|
constant.
|
||||||
|
|
||||||
|
In this example, the constant (assuming it is global) can be redefined
|
||||||
|
with a :bro:keyword:`redef` at some later point::
|
||||||
|
|
||||||
|
const clever = T &redef;
|
||||||
|
|
||||||
|
.. bro:attr:: &priority
|
||||||
|
|
||||||
|
Specifies the execution priority (as a signed integer) of a hook or
|
||||||
|
event handler. Higher values are executed before lower ones. The
|
||||||
|
default value is 0. Example::
|
||||||
|
|
||||||
|
event bro_init() &priority=10
|
||||||
|
{
|
||||||
|
print "high priority";
|
||||||
|
}
|
||||||
|
|
||||||
|
.. bro:attr:: &log
|
||||||
|
|
||||||
|
Writes a :bro:type:`record` field to the associated log stream.
|
||||||
|
|
||||||
|
.. bro:attr:: &optional
|
||||||
|
|
||||||
|
Allows a record field value to be missing (i.e., neither initialized nor
|
||||||
|
ever assigned a value).
|
||||||
|
|
||||||
|
In this example, the record could be instantiated with either
|
||||||
|
"myrec($a=127.0.0.1)" or "myrec($a=127.0.0.1, $b=80/tcp)"::
|
||||||
|
|
||||||
|
type myrec: record { a: addr; b: port &optional; };
|
||||||
|
|
||||||
|
The ``?$`` operator can be used to check if a record field has a value or
|
||||||
|
not (it returns a ``bool`` value of ``T`` if the field has a value,
|
||||||
|
and ``F`` if not).
|
||||||
|
|
||||||
|
.. bro:attr:: &default
|
||||||
|
|
||||||
|
Specifies a default value for a record field, container element, or a
|
||||||
|
function/hook/event parameter.
|
||||||
|
|
||||||
|
In this example, the record could be instantiated with either
|
||||||
|
"myrec($a=5, $c=3.14)" or "myrec($a=5, $b=53/udp, $c=3.14)"::
|
||||||
|
|
||||||
|
type myrec: record { a: count; b: port &default=80/tcp; c: double; };
|
||||||
|
|
||||||
|
In this example, the table will return the string ``"foo"`` for any
|
||||||
|
attempted access to a non-existing index::
|
||||||
|
|
||||||
|
global mytable: table[count] of string &default="foo";
|
||||||
|
|
||||||
|
When used with function/hook/event parameters, all of the parameters
|
||||||
|
with the "&default" attribute must come after all other parameters.
|
||||||
|
For example, the following function could be called either as "myfunc(5)"
|
||||||
|
or as "myfunc(5, 53/udp)"::
|
||||||
|
|
||||||
|
function myfunc(a: count, b: port &default=80/tcp)
|
||||||
|
{
|
||||||
|
print a, b;
|
||||||
|
}
|
||||||
|
|
||||||
|
.. bro:attr:: &add_func
|
||||||
|
|
||||||
|
Can be applied to an identifier with &redef to specify a function to
|
||||||
|
be called any time a "redef <id> += ..." declaration is parsed. The
|
||||||
|
function takes two arguments of the same type as the identifier, the first
|
||||||
|
being the old value of the variable and the second being the new
|
||||||
|
value given after the "+=" operator in the "redef" declaration. The
|
||||||
|
return value of the function will be the actual new value of the
|
||||||
|
variable after the "redef" declaration is parsed.
|
||||||
|
|
||||||
|
.. bro:attr:: &delete_func
|
||||||
|
|
||||||
|
Same as :bro:attr:`&add_func`, except for :bro:keyword:`redef` declarations
|
||||||
|
that use the "-=" operator.
|
||||||
|
|
||||||
|
.. bro:attr:: &expire_func
|
||||||
|
|
||||||
|
Called right before a container element expires. The function's
|
||||||
|
first parameter is of the same type of the container and the second
|
||||||
|
parameter the same type of the container's index. The return
|
||||||
|
value is an :bro:type:`interval` indicating the amount of additional
|
||||||
|
time to wait before expiring the container element at the given
|
||||||
|
index (which will trigger another execution of this function).
|
||||||
|
|
||||||
|
.. bro:attr:: &read_expire
|
||||||
|
|
||||||
|
Specifies a read expiration timeout for container elements. That is,
|
||||||
|
the element expires after the given amount of time since the last
|
||||||
|
time it has been read. Note that a write also counts as a read.
|
||||||
|
|
||||||
|
.. bro:attr:: &write_expire
|
||||||
|
|
||||||
|
Specifies a write expiration timeout for container elements. That
|
||||||
|
is, the element expires after the given amount of time since the
|
||||||
|
last time it has been written.
|
||||||
|
|
||||||
|
.. bro:attr:: &create_expire
|
||||||
|
|
||||||
|
Specifies a creation expiration timeout for container elements. That
|
||||||
|
is, the element expires after the given amount of time since it has
|
||||||
|
been inserted into the container, regardless of any reads or writes.
|
||||||
|
|
||||||
|
.. bro:attr:: &synchronized
|
||||||
|
|
||||||
|
Synchronizes variable accesses across nodes. The value of a
|
||||||
|
``&synchronized`` variable is automatically propagated to all peers
|
||||||
|
when it changes.
|
||||||
|
|
||||||
|
.. bro:attr:: &persistent
|
||||||
|
|
||||||
|
Makes a variable persistent, i.e., its value is written to disk (per
|
||||||
|
default at shutdown time).
|
||||||
|
|
||||||
|
.. bro:attr:: &rotate_interval
|
||||||
|
|
||||||
|
Rotates a file after a specified interval.
|
||||||
|
|
||||||
|
.. bro:attr:: &rotate_size
|
||||||
|
|
||||||
|
Rotates a file after it has reached a given size in bytes.
|
||||||
|
|
||||||
|
.. bro:attr:: &encrypt
|
||||||
|
|
||||||
|
Encrypts files right before writing them to disk.
|
||||||
|
|
||||||
|
.. bro:attr:: &raw_output
|
||||||
|
|
||||||
|
Opens a file in raw mode, i.e., non-ASCII characters are not
|
||||||
|
escaped.
|
||||||
|
|
||||||
|
.. bro:attr:: &mergeable
|
||||||
|
|
||||||
|
Prefers merging sets on assignment for synchronized state. This
|
||||||
|
attribute is used in conjunction with :bro:attr:`&synchronized`
|
||||||
|
container types: when the same container is updated at two peers
|
||||||
|
with different values, the propagation of the state causes a race
|
||||||
|
condition, where the last update succeeds. This can cause
|
||||||
|
inconsistencies and can be avoided by unifying the two sets, rather
|
||||||
|
than merely overwriting the old value.
|
||||||
|
|
||||||
|
.. bro:attr:: &group
|
||||||
|
|
||||||
|
Groups event handlers such that those in the same group can be
|
||||||
|
jointly activated or deactivated.
|
||||||
|
|
||||||
|
.. bro:attr:: &error_handler
|
||||||
|
|
||||||
|
Internally set on the events that are associated with the reporter
|
||||||
|
framework: :bro:id:`reporter_info`, :bro:id:`reporter_warning`, and
|
||||||
|
:bro:id:`reporter_error`. It prevents any handlers of those events
|
||||||
|
from being able to generate reporter messages that go through any of
|
||||||
|
those events (i.e., it prevents an infinite event recursion). Instead,
|
||||||
|
such nested reporter messages are output to stderr.
|
||||||
|
|
||||||
|
.. bro:attr:: &type_column
|
||||||
|
|
||||||
|
Used by the input framework. It can be used on columns of type
|
||||||
|
:bro:type:`port` (such a column only contains the port number) and
|
||||||
|
specifies the name of an additional column in
|
||||||
|
the input file which specifies the protocol of the port (tcp/udp/icmp).
|
||||||
|
|
||||||
|
In the following example, the input file would contain four columns
|
||||||
|
named "ip", "srcp", "proto", and "msg"::
|
||||||
|
|
||||||
|
type Idx: record {
|
||||||
|
ip: addr;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
type Val: record {
|
||||||
|
srcp: port &type_column = "proto";
|
||||||
|
msg: string;
|
||||||
|
};
|
||||||
|
|
173
doc/script-reference/directives.rst
Normal file
173
doc/script-reference/directives.rst
Normal file
|
@ -0,0 +1,173 @@
|
||||||
|
Directives
|
||||||
|
==========
|
||||||
|
|
||||||
|
The Bro scripting language supports a number of directives that can
|
||||||
|
affect which scripts will be loaded or which lines in a script will be
|
||||||
|
executed. Directives are evaluated before script execution begins.
|
||||||
|
|
||||||
|
.. bro:keyword:: @DEBUG
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|
||||||
|
|
||||||
|
.. bro:keyword:: @DIR
|
||||||
|
|
||||||
|
Expands to the directory pathname where the current script is located.
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
print "Directory:", @DIR;
|
||||||
|
|
||||||
|
|
||||||
|
.. bro:keyword:: @FILENAME
|
||||||
|
|
||||||
|
Expands to the filename of the current script.
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
print "File:", @FILENAME;
|
||||||
|
|
||||||
|
.. bro:keyword:: @load
|
||||||
|
|
||||||
|
Loads the specified Bro script, specified as the relative pathname
|
||||||
|
of the file (relative to one of the directories in Bro's file search path).
|
||||||
|
If the Bro script filename ends with ".bro", then you don't need to
|
||||||
|
specify the file extension. The filename cannot contain any whitespace.
|
||||||
|
|
||||||
|
In this example, Bro will try to load a script
|
||||||
|
"policy/misc/capture-loss.bro" by looking in each directory in the file
|
||||||
|
search path (the file search path can be changed by setting the BROPATH
|
||||||
|
environment variable)::
|
||||||
|
|
||||||
|
@load policy/misc/capture-loss
|
||||||
|
|
||||||
|
If you specify the name of a directory instead of a filename, then
|
||||||
|
Bro will try to load a file in that directory called "__load__.bro"
|
||||||
|
(presumably that file will contain additional "@load" directives).
|
||||||
|
|
||||||
|
In this example, Bro will try to load a file "tuning/defaults/__load__.bro"
|
||||||
|
by looking in each directory in the file search path::
|
||||||
|
|
||||||
|
@load tuning/defaults
|
||||||
|
|
||||||
|
The purpose of this directive is to ensure that all script dependencies
|
||||||
|
are satisfied, and to avoid having to list every needed Bro script
|
||||||
|
on the command-line. Bro keeps track of which scripts have been
|
||||||
|
loaded, so it is not an error to load a script more than once (once
|
||||||
|
a script has been loaded, any subsequent "@load" directives
|
||||||
|
for that script are ignored).
|
||||||
|
|
||||||
|
|
||||||
|
.. bro:keyword:: @load-sigs
|
||||||
|
|
||||||
|
This works similarly to "@load", except that in this case the filename
|
||||||
|
represents a signature file (not a Bro script). If the signature filename
|
||||||
|
ends with ".sig", then you don't need to specify the file extension
|
||||||
|
in the "@load-sigs" directive. The filename cannot contain any
|
||||||
|
whitespace.
|
||||||
|
|
||||||
|
In this example, Bro will try to load a signature file
|
||||||
|
"base/protocols/ssl/dpd.sig"::
|
||||||
|
|
||||||
|
@load-sigs base/protocols/ssl/dpd
|
||||||
|
|
||||||
|
The format for a signature file is explained in the documentation for the
|
||||||
|
`Signature Framework <../frameworks/signatures.html>`_.
|
||||||
|
|
||||||
|
|
||||||
|
.. bro:keyword:: @unload
|
||||||
|
|
||||||
|
This specifies a Bro script that we don't want to load (so a subsequent
|
||||||
|
attempt to load the specified script will be skipped). However,
|
||||||
|
if the specified script has already been loaded, then this directive
|
||||||
|
has no affect.
|
||||||
|
|
||||||
|
In the following example, if the "policy/misc/capture-loss.bro" script
|
||||||
|
has not been loaded yet, then Bro will not load it::
|
||||||
|
|
||||||
|
@unload policy/misc/capture-loss
|
||||||
|
|
||||||
|
|
||||||
|
.. bro:keyword:: @prefixes
|
||||||
|
|
||||||
|
Specifies a filename prefix to use when looking for script files
|
||||||
|
to load automatically. The prefix cannot contain any whitespace.
|
||||||
|
|
||||||
|
In the following example, the prefix "cluster" is used and all prefixes
|
||||||
|
that were previously specified are not used::
|
||||||
|
|
||||||
|
@prefixes = cluster
|
||||||
|
|
||||||
|
In the following example, the prefix "cluster-manager" is used in
|
||||||
|
addition to any previously-specified prefixes::
|
||||||
|
|
||||||
|
@prefixes += cluster-manager
|
||||||
|
|
||||||
|
The way this works is that after Bro parses all script files, then for each
|
||||||
|
loaded script Bro will take the absolute path of the script and then
|
||||||
|
it removes the portion of the directory path that is in Bro's file
|
||||||
|
search path. Then it replaces each "/" character with a period "."
|
||||||
|
and then prepends the prefix (specified in the "@prefixes" directive)
|
||||||
|
followed by a period. The resulting filename is searched for in each
|
||||||
|
directory in Bro's file search path. If a matching file is found, then
|
||||||
|
the file is automatically loaded.
|
||||||
|
|
||||||
|
For example, if a script called "local.bro" has been loaded, and a prefix
|
||||||
|
of "test" was specified, then Bro will look for a file named
|
||||||
|
"test.local.bro" in each directory of Bro's file search path.
|
||||||
|
|
||||||
|
An alternative way to specify prefixes is to use the "-p" Bro
|
||||||
|
command-line option.
|
||||||
|
|
||||||
|
.. bro:keyword:: @if
|
||||||
|
|
||||||
|
The specified expression must evaluate to type :bro:type:`bool`. If the
|
||||||
|
value is true, then the following script lines (up to the next "@else"
|
||||||
|
or "@endif") are available to be executed.
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
@if ( ver == 2 )
|
||||||
|
print "version 2 detected";
|
||||||
|
@endif
|
||||||
|
|
||||||
|
.. bro:keyword:: @ifdef
|
||||||
|
|
||||||
|
This works like "@if", except that the result is true if the specified
|
||||||
|
identifier is defined.
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
@ifdef ( pi )
|
||||||
|
print "pi is defined";
|
||||||
|
@endif
|
||||||
|
|
||||||
|
.. bro:keyword:: @ifndef
|
||||||
|
|
||||||
|
This works exactly like "@ifdef", except that the result is true if the
|
||||||
|
specified identifier is not defined.
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
@ifndef ( pi )
|
||||||
|
print "pi is not defined";
|
||||||
|
@endif
|
||||||
|
|
||||||
|
.. bro:keyword:: @else
|
||||||
|
|
||||||
|
This directive is optional after an "@if", "@ifdef", or
|
||||||
|
"@ifndef". If present, it provides an else clause.
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
@ifdef ( pi )
|
||||||
|
print "pi is defined";
|
||||||
|
@else
|
||||||
|
print "pi is not defined";
|
||||||
|
@endif
|
||||||
|
|
||||||
|
.. bro:keyword:: @endif
|
||||||
|
|
||||||
|
This directive is required to terminate each "@if", "@ifdef", or
|
||||||
|
"@ifndef".
|
||||||
|
|
|
@ -5,10 +5,17 @@ Script Reference
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
|
||||||
|
operators
|
||||||
|
types
|
||||||
|
attributes
|
||||||
|
statements
|
||||||
|
directives
|
||||||
|
log-files
|
||||||
notices
|
notices
|
||||||
proto-analyzers
|
proto-analyzers
|
||||||
file-analyzers
|
file-analyzers
|
||||||
builtins
|
|
||||||
packages
|
packages
|
||||||
scripts
|
scripts
|
||||||
Broxygen Example Script </scripts/broxygen/example.bro>
|
Broxygen Example Script </scripts/broxygen/example.bro>
|
||||||
|
|
||||||
|
|
||||||
|
|
148
doc/script-reference/log-files.rst
Normal file
148
doc/script-reference/log-files.rst
Normal file
|
@ -0,0 +1,148 @@
|
||||||
|
=========
|
||||||
|
Log Files
|
||||||
|
=========
|
||||||
|
|
||||||
|
Listed below are the log files generated by Bro, including a brief description
|
||||||
|
of the log file and links to descriptions of the fields for each log
|
||||||
|
type.
|
||||||
|
|
||||||
|
Network Protocols
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| Log File | Description | Field Descriptions |
|
||||||
|
+============================+=======================================+=================================+
|
||||||
|
| conn.log | TCP/UDP/ICMP connections | :bro:type:`Conn::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| dhcp.log | DHCP leases | :bro:type:`DHCP::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| dnp3.log | DNP3 requests and replies | :bro:type:`DNP3::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| dns.log | DNS activity | :bro:type:`DNS::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| ftp.log | FTP activity | :bro:type:`FTP::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| http.log | HTTP requests and replies | :bro:type:`HTTP::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| irc.log | IRC commands and responses | :bro:type:`IRC::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| modbus.log | Modbus commands and responses | :bro:type:`Modbus::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| modbus_register_change.log | Tracks changes to Modbus holding | :bro:type:`Modbus::MemmapInfo` |
|
||||||
|
| | registers | |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| radius.log | RADIUS authentication attempts | :bro:type:`RADIUS::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| smtp.log | SMTP transactions | :bro:type:`SMTP::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| snmp.log | SNMP messages | :bro:type:`SNMP::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| socks.log | SOCKS proxy requests | :bro:type:`SOCKS::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| ssh.log | SSH connections | :bro:type:`SSH::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| ssl.log | SSL/TLS handshake info | :bro:type:`SSL::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| syslog.log | Syslog messages | :bro:type:`Syslog::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| tunnel.log | Tunneling protocol events | :bro:type:`Tunnel::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
|
||||||
|
Files
|
||||||
|
-----
|
||||||
|
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| Log File | Description | Field Descriptions |
|
||||||
|
+============================+=======================================+=================================+
|
||||||
|
| files.log | File analysis results | :bro:type:`Files::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| x509.log | X.509 certificate info | :bro:type:`X509::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
|
||||||
|
Detection
|
||||||
|
---------
|
||||||
|
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| Log File | Description | Field Descriptions |
|
||||||
|
+============================+=======================================+=================================+
|
||||||
|
| intel.log | Intelligence data matches | :bro:type:`Intel::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| notice.log | Bro notices | :bro:type:`Notice::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| notice_alarm.log | The alarm stream | :bro:enum:`Notice::ACTION_ALARM`|
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| signatures.log | Signature matches | :bro:type:`Signatures::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| traceroute.log | Traceroute detection | :bro:type:`Traceroute::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
Network Observations
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| Log File | Description | Field Descriptions |
|
||||||
|
+============================+=======================================+=================================+
|
||||||
|
| app_stats.log | Web app usage statistics | :bro:type:`AppStats::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| known_certs.log | SSL certificates | :bro:type:`Known::CertsInfo` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| known_devices.log | MAC addresses of devices on the | :bro:type:`Known::DevicesInfo` |
|
||||||
|
| | network | |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| known_hosts.log | Hosts that have completed TCP | :bro:type:`Known::HostsInfo` |
|
||||||
|
| | handshakes | |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| known_modbus.log | Modbus masters and slaves | :bro:type:`Known::ModbusInfo` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| known_services.log | Services running on hosts | :bro:type:`Known::ServicesInfo` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| software.log | Software being used on the network | :bro:type:`Software::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
|
||||||
|
Miscellaneous
|
||||||
|
-------------
|
||||||
|
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| Log File | Description | Field Descriptions |
|
||||||
|
+============================+=======================================+=================================+
|
||||||
|
| barnyard2.log | Alerts received from Barnyard2 | :bro:type:`Barnyard2::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| dpd.log | Dynamic protocol detection failures | :bro:type:`DPD::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| unified2.log | Interprets Snort's unified output | :bro:type:`Unified2::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| weird.log | Unexpected network-level activity | :bro:type:`Weird::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
|
||||||
|
Bro Diagnostics
|
||||||
|
---------------
|
||||||
|
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| Log File | Description | Field Descriptions |
|
||||||
|
+============================+=======================================+=================================+
|
||||||
|
| capture_loss.log | Packet loss rate | :bro:type:`CaptureLoss::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| cluster.log | Bro cluster messages | :bro:type:`Cluster::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| communication.log | Communication events between Bro or | :bro:type:`Communication::Info` |
|
||||||
|
| | Broccoli instances | |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| loaded_scripts.log | Shows all scripts loaded by Bro | :bro:type:`LoadedScripts::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| packet_filter.log | List packet filters that were applied | :bro:type:`PacketFilter::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| prof.log | Profiling statistics (to create this | N/A |
|
||||||
|
| | log, load policy/misc/profiling.bro) | |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| reporter.log | Internal error/warning/info messages | :bro:type:`Reporter::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| stats.log | Memory/event/packet/lag statistics | :bro:type:`Stats::Info` |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| stderr.log | Captures standard error when Bro is | N/A |
|
||||||
|
| | started from BroControl | |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
| stdout.log | Captures standard output when Bro is | N/A |
|
||||||
|
| | started from BroControl | |
|
||||||
|
+----------------------------+---------------------------------------+---------------------------------+
|
||||||
|
|
191
doc/script-reference/operators.rst
Normal file
191
doc/script-reference/operators.rst
Normal file
|
@ -0,0 +1,191 @@
|
||||||
|
Operators
|
||||||
|
=========
|
||||||
|
|
||||||
|
The Bro scripting language supports the following operators. Note that
|
||||||
|
each data type only supports a subset of these operators. For more
|
||||||
|
details, see the documentation about the `data types <types.html>`_.
|
||||||
|
|
||||||
|
Relational operators
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
The relational operators evaluate to type :bro:type:`bool`.
|
||||||
|
|
||||||
|
+------------------------------+--------------+
|
||||||
|
| Name | Syntax |
|
||||||
|
+==============================+==============+
|
||||||
|
| Equality | *a* == *b* |
|
||||||
|
+------------------------------+--------------+
|
||||||
|
| Inequality | *a* != *b* |
|
||||||
|
+------------------------------+--------------+
|
||||||
|
| Less than | *a* < *b* |
|
||||||
|
+------------------------------+--------------+
|
||||||
|
| Less than or equal | *a* <= *b* |
|
||||||
|
+------------------------------+--------------+
|
||||||
|
| Greater than | *a* > *b* |
|
||||||
|
+------------------------------+--------------+
|
||||||
|
| Greater than or equal | *a* >= *b* |
|
||||||
|
+------------------------------+--------------+
|
||||||
|
|
||||||
|
|
||||||
|
Logical operators
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
The logical operators require operands of type :bro:type:`bool`, and
|
||||||
|
evaluate to type :bro:type:`bool`.
|
||||||
|
|
||||||
|
+------------------------------+--------------+
|
||||||
|
| Name | Syntax |
|
||||||
|
+==============================+==============+
|
||||||
|
| Logical AND | *a* && *b* |
|
||||||
|
+------------------------------+--------------+
|
||||||
|
| Logical OR | *a* \|\| *b* |
|
||||||
|
+------------------------------+--------------+
|
||||||
|
| Logical NOT | ! *a* |
|
||||||
|
+------------------------------+--------------+
|
||||||
|
|
||||||
|
|
||||||
|
Arithmetic operators
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
+------------------------------+-------------+-------------------------------+
|
||||||
|
| Name | Syntax | Notes |
|
||||||
|
+==============================+=============+===============================+
|
||||||
|
| Addition | *a* + *b* | For :bro:type:`string` |
|
||||||
|
| | | operands, this performs |
|
||||||
|
| | | string concatenation. |
|
||||||
|
+------------------------------+-------------+-------------------------------+
|
||||||
|
| Subtraction | *a* - *b* | |
|
||||||
|
+------------------------------+-------------+-------------------------------+
|
||||||
|
| Multiplication | *a* \* *b* | |
|
||||||
|
+------------------------------+-------------+-------------------------------+
|
||||||
|
| Division | *a* / *b* | For :bro:type:`int` or |
|
||||||
|
| | | :bro:type:`count` operands, |
|
||||||
|
| | | the fractional part of the |
|
||||||
|
| | | result is dropped. |
|
||||||
|
+------------------------------+-------------+-------------------------------+
|
||||||
|
| Modulo | *a* % *b* | Operand types cannot be |
|
||||||
|
| | | "double". |
|
||||||
|
+------------------------------+-------------+-------------------------------+
|
||||||
|
| Unary plus | \+ *a* | |
|
||||||
|
+------------------------------+-------------+-------------------------------+
|
||||||
|
| Unary minus | \- *a* | |
|
||||||
|
+------------------------------+-------------+-------------------------------+
|
||||||
|
| Pre-increment | ++ *a* | Operand type cannot be |
|
||||||
|
| | | "double". |
|
||||||
|
+------------------------------+-------------+-------------------------------+
|
||||||
|
| Pre-decrement | ``--`` *a* | Operand type cannot be |
|
||||||
|
| | | "double". |
|
||||||
|
+------------------------------+-------------+-------------------------------+
|
||||||
|
| Absolute value | \| *a* \| | If operand is |
|
||||||
|
| | | :bro:type:`string`, |
|
||||||
|
| | | :bro:type:`set`, |
|
||||||
|
| | | :bro:type:`table`, or |
|
||||||
|
| | | :bro:type:`vector`, this |
|
||||||
|
| | | evaluates to number |
|
||||||
|
| | | of elements. |
|
||||||
|
+------------------------------+-------------+-------------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
Assignment operators
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
The assignment operators evaluate to the result of the assignment.
|
||||||
|
|
||||||
|
+------------------------------+-------------+
|
||||||
|
| Name | Syntax |
|
||||||
|
+==============================+=============+
|
||||||
|
| Assignment | *a* = *b* |
|
||||||
|
+------------------------------+-------------+
|
||||||
|
| Addition assignment | *a* += *b* |
|
||||||
|
+------------------------------+-------------+
|
||||||
|
| Subtraction assignment | *a* -= *b* |
|
||||||
|
+------------------------------+-------------+
|
||||||
|
|
||||||
|
|
||||||
|
Record field operators
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
The record field operators take a :bro:type:`record` as the first operand,
|
||||||
|
and a field name as the second operand. For both operators, the specified
|
||||||
|
field name must be in the declaration of the record type.
|
||||||
|
|
||||||
|
+------------------------------+-------------+-------------------------------+
|
||||||
|
| Name | Syntax | Notes |
|
||||||
|
+==============================+=============+===============================+
|
||||||
|
| Field access | *a* $ *b* | |
|
||||||
|
+------------------------------+-------------+-------------------------------+
|
||||||
|
| Field value existence test | *a* ?$ *b* | Evaluates to type |
|
||||||
|
| | | :bro:type:`bool`. |
|
||||||
|
| | | True if the specified field |
|
||||||
|
| | | has been assigned a value, or |
|
||||||
|
| | | false if not. |
|
||||||
|
+------------------------------+-------------+-------------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
Other operators
|
||||||
|
---------------
|
||||||
|
|
||||||
|
+--------------------------------+-------------------+------------------------+
|
||||||
|
| Name | Syntax | Notes |
|
||||||
|
+================================+===================+========================+
|
||||||
|
| Membership test | *a* in *b* |Evaluates to type |
|
||||||
|
| | |:bro:type:`bool`. Do not|
|
||||||
|
| | |confuse this use of "in"|
|
||||||
|
| | |with that used in a |
|
||||||
|
| | |:bro:keyword:`for` |
|
||||||
|
| | |statement. |
|
||||||
|
+--------------------------------+-------------------+------------------------+
|
||||||
|
| Non-membership test | *a* !in *b* |This is the logical NOT |
|
||||||
|
| | |of the "in" operator. |
|
||||||
|
| | |For example: "a !in b" |
|
||||||
|
| | |is equivalent to |
|
||||||
|
| | |"!(a in b)". |
|
||||||
|
+--------------------------------+-------------------+------------------------+
|
||||||
|
| Table or vector element access | *a* [ *b* ] |This operator can also |
|
||||||
|
| | |be used with a |
|
||||||
|
| | |:bro:type:`set`, but |
|
||||||
|
| | |only with the |
|
||||||
|
| | |:bro:keyword:`add` or |
|
||||||
|
| | |:bro:keyword:`delete` |
|
||||||
|
| | |statement. |
|
||||||
|
+--------------------------------+-------------------+------------------------+
|
||||||
|
| Substring extraction | *a* [ *b* : *c* ] |See the |
|
||||||
|
| | |:bro:type:`string` type |
|
||||||
|
| | |for more details. |
|
||||||
|
+--------------------------------+-------------------+------------------------+
|
||||||
|
| Create a deep copy | copy ( *a* ) |This is relevant only |
|
||||||
|
| | |for data types that are |
|
||||||
|
| | |assigned by reference, |
|
||||||
|
| | |such as |
|
||||||
|
| | |:bro:type:`vector`, |
|
||||||
|
| | |:bro:type:`set`, |
|
||||||
|
| | |:bro:type:`table`, |
|
||||||
|
| | |and :bro:type:`record`. |
|
||||||
|
+--------------------------------+-------------------+------------------------+
|
||||||
|
| Module namespace access | *a* \:\: *b* |The first operand is the|
|
||||||
|
| | |module name, and the |
|
||||||
|
| | |second operand is an |
|
||||||
|
| | |identifier that refers |
|
||||||
|
| | |to a global variable, |
|
||||||
|
| | |enumeration constant, or|
|
||||||
|
| | |user-defined type that |
|
||||||
|
| | |was exported from the |
|
||||||
|
| | |module. |
|
||||||
|
+--------------------------------+-------------------+------------------------+
|
||||||
|
| Conditional | *a* ? *b* : *c* |The first operand must |
|
||||||
|
| | |evaluate to type |
|
||||||
|
| | |:bro:type:`bool`. |
|
||||||
|
| | |If true, then the |
|
||||||
|
| | |second expression is |
|
||||||
|
| | |evaluated and is the |
|
||||||
|
| | |result of the entire |
|
||||||
|
| | |expression. Otherwise, |
|
||||||
|
| | |the third expression is |
|
||||||
|
| | |evaluated and is the |
|
||||||
|
| | |result of the entire |
|
||||||
|
| | |expression. The types of|
|
||||||
|
| | |the second and third |
|
||||||
|
| | |operands must be |
|
||||||
|
| | |compatible. |
|
||||||
|
+--------------------------------+-------------------+------------------------+
|
||||||
|
|
602
doc/script-reference/statements.rst
Normal file
602
doc/script-reference/statements.rst
Normal file
|
@ -0,0 +1,602 @@
|
||||||
|
Declarations and Statements
|
||||||
|
===========================
|
||||||
|
|
||||||
|
The Bro scripting language supports the following declarations and
|
||||||
|
statements.
|
||||||
|
|
||||||
|
|
||||||
|
Declarations
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
+----------------------------+-----------------------------+
|
||||||
|
| Name | Description |
|
||||||
|
+============================+=============================+
|
||||||
|
| :bro:keyword:`module` | Change the current module |
|
||||||
|
+----------------------------+-----------------------------+
|
||||||
|
| :bro:keyword:`export` | Export identifiers from the |
|
||||||
|
| | current module |
|
||||||
|
+----------------------------+-----------------------------+
|
||||||
|
| :bro:keyword:`global` | Declare a global variable |
|
||||||
|
+----------------------------+-----------------------------+
|
||||||
|
| :bro:keyword:`const` | Declare a constant |
|
||||||
|
+----------------------------+-----------------------------+
|
||||||
|
| :bro:keyword:`type` | Declare a user-defined type |
|
||||||
|
+----------------------------+-----------------------------+
|
||||||
|
| :bro:keyword:`redef` | Redefine a global value or |
|
||||||
|
| | extend a user-defined type |
|
||||||
|
+----------------------------+-----------------------------+
|
||||||
|
| `function/event/hook`_ | Declare a function, event |
|
||||||
|
| | handler, or hook |
|
||||||
|
+----------------------------+-----------------------------+
|
||||||
|
|
||||||
|
Statements
|
||||||
|
~~~~~~~~~~
|
||||||
|
|
||||||
|
+----------------------------+------------------------+
|
||||||
|
| Name | Description |
|
||||||
|
+============================+========================+
|
||||||
|
| :bro:keyword:`local` | Declare a local |
|
||||||
|
| | variable |
|
||||||
|
+----------------------------+------------------------+
|
||||||
|
| :bro:keyword:`add`, | Add or delete |
|
||||||
|
| :bro:keyword:`delete` | elements |
|
||||||
|
+----------------------------+------------------------+
|
||||||
|
| :bro:keyword:`print` | Print to stdout or a |
|
||||||
|
| | file |
|
||||||
|
+----------------------------+------------------------+
|
||||||
|
| :bro:keyword:`for`, | Loop over each |
|
||||||
|
| :bro:keyword:`next`, | element in a container |
|
||||||
|
| :bro:keyword:`break` | object |
|
||||||
|
+----------------------------+------------------------+
|
||||||
|
| :bro:keyword:`if` | Evaluate boolean |
|
||||||
|
| | expression and if true,|
|
||||||
|
| | execute a statement |
|
||||||
|
+----------------------------+------------------------+
|
||||||
|
| :bro:keyword:`switch`, | Evaluate expression |
|
||||||
|
| :bro:keyword:`break`, | and execute statement |
|
||||||
|
| :bro:keyword:`fallthrough` | with a matching value |
|
||||||
|
+----------------------------+------------------------+
|
||||||
|
| :bro:keyword:`when` | Asynchronous execution |
|
||||||
|
+----------------------------+------------------------+
|
||||||
|
| :bro:keyword:`event`, | Invoke or schedule |
|
||||||
|
| :bro:keyword:`schedule` | an event handler |
|
||||||
|
+----------------------------+------------------------+
|
||||||
|
| :bro:keyword:`return` | Return from function, |
|
||||||
|
| | hook, or event handler |
|
||||||
|
+----------------------------+------------------------+
|
||||||
|
|
||||||
|
Declarations
|
||||||
|
------------
|
||||||
|
|
||||||
|
The following global declarations cannot occur within a function, hook, or
|
||||||
|
event handler. Also, these declarations cannot appear after any statements
|
||||||
|
that are outside of a function, hook, or event handler.
|
||||||
|
|
||||||
|
.. bro:keyword:: module
|
||||||
|
|
||||||
|
The "module" keyword is used to change the current module. This
|
||||||
|
affects the scope of any subsequently declared global identifiers.
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
module mymodule;
|
||||||
|
|
||||||
|
If a global identifier is declared after a "module" declaration,
|
||||||
|
then its scope ends at the end of the current Bro script or at the
|
||||||
|
next "module" declaration, whichever comes first. However, if a
|
||||||
|
global identifier is declared after a "module" declaration, but inside
|
||||||
|
an :bro:keyword:`export` block, then its scope ends at the end of the
|
||||||
|
last loaded Bro script, but it must be referenced using the namespace
|
||||||
|
operator (``::``) in other modules.
|
||||||
|
|
||||||
|
There can be any number of "module" declarations in a Bro script.
|
||||||
|
The same "module" declaration can appear in any number of different
|
||||||
|
Bro scripts.
|
||||||
|
|
||||||
|
|
||||||
|
.. bro:keyword:: export
|
||||||
|
|
||||||
|
An "export" block contains one or more declarations
|
||||||
|
(no statements are allowed in an "export" block) that the current
|
||||||
|
module is exporting. This enables these global identifiers to be visible
|
||||||
|
in other modules (but not prior to their declaration) via the namespace
|
||||||
|
operator (``::``). See the :bro:keyword:`module` keyword for a more
|
||||||
|
detailed explanation.
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
export {
|
||||||
|
redef enum Log::ID += { LOG };
|
||||||
|
|
||||||
|
type Info: record {
|
||||||
|
ts: time &log;
|
||||||
|
uid: string &log;
|
||||||
|
};
|
||||||
|
|
||||||
|
const conntime = 30sec &redef;
|
||||||
|
}
|
||||||
|
|
||||||
|
Note that the braces in an "export" block are always required
|
||||||
|
(they do not indicate a compound statement). Also, no semicolon is
|
||||||
|
needed to terminate an "export" block.
|
||||||
|
|
||||||
|
.. bro:keyword:: global
|
||||||
|
|
||||||
|
Variables declared with the "global" keyword will be global.
|
||||||
|
If a type is not specified, then an initializer is required so that
|
||||||
|
the type can be inferred. Likewise, if an initializer is not supplied,
|
||||||
|
then the type must be specified. Example::
|
||||||
|
|
||||||
|
global pi = 3.14;
|
||||||
|
global hosts: set[addr];
|
||||||
|
global ciphers: table[string] of string = table();
|
||||||
|
|
||||||
|
Variable declarations outside of any function, hook, or event handler are
|
||||||
|
required to use this keyword (unless they are declared with the
|
||||||
|
:bro:keyword:`const` keyword). Definitions of functions, hooks, and
|
||||||
|
event handlers are not allowed to use the "global"
|
||||||
|
keyword (they already have global scope), except function declarations
|
||||||
|
where no function body is supplied use the "global" keyword.
|
||||||
|
|
||||||
|
The scope of a global variable begins where the declaration is located,
|
||||||
|
and extends through all remaining Bro scripts that are loaded (however,
|
||||||
|
see the :bro:keyword:`module` keyword for an explanation of how modules
|
||||||
|
change the visibility of global identifiers).
|
||||||
|
|
||||||
|
|
||||||
|
.. bro:keyword:: const
|
||||||
|
|
||||||
|
A variable declared with the "const" keyword will be constant.
|
||||||
|
Variables declared as constant are required to be initialized at the
|
||||||
|
time of declaration. Example::
|
||||||
|
|
||||||
|
const pi = 3.14;
|
||||||
|
const ssh_port: port = 22/tcp;
|
||||||
|
|
||||||
|
The value of a constant cannot be changed later (the only
|
||||||
|
exception is if the variable is global and has the :bro:attr:`&redef`
|
||||||
|
attribute, then its value can be changed only with a :bro:keyword:`redef`).
|
||||||
|
|
||||||
|
The scope of a constant is local if the declaration is in a
|
||||||
|
function, hook, or event handler, and global otherwise.
|
||||||
|
Note that the "const" keyword cannot be used with either the "local"
|
||||||
|
or "global" keywords (i.e., "const" replaces "local" and "global").
|
||||||
|
|
||||||
|
|
||||||
|
.. bro:keyword:: type
|
||||||
|
|
||||||
|
The "type" keyword is used to declare a user-defined type. The name
|
||||||
|
of this new type has global scope and can be used anywhere a built-in
|
||||||
|
type name can occur.
|
||||||
|
|
||||||
|
The "type" keyword is most commonly used when defining a
|
||||||
|
:bro:type:`record` or an :bro:type:`enum`, but is also useful when
|
||||||
|
dealing with more complex types.
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
type mytype: table[count] of table[addr, port] of string;
|
||||||
|
global myvar: mytype;
|
||||||
|
|
||||||
|
.. bro:keyword:: redef
|
||||||
|
|
||||||
|
There are three ways that "redef" can be used: to change the value of
|
||||||
|
a global variable, to extend a record type or enum type, or to specify
|
||||||
|
a new event handler body that replaces all those that were previously
|
||||||
|
defined.
|
||||||
|
|
||||||
|
If you're using "redef" to change a global variable (defined using either
|
||||||
|
:bro:keyword:`const` or :bro:keyword:`global`), then the variable that you
|
||||||
|
want to change must have the :bro:attr:`&redef` attribute. If the variable
|
||||||
|
you're changing is a table, set, or pattern, you can use ``+=`` to add
|
||||||
|
new elements, or you can use ``=`` to specify a new value (all previous
|
||||||
|
contents of the object are removed). If the variable you're changing is a
|
||||||
|
set or table, then you can use the ``-=`` operator to remove the
|
||||||
|
specified elements (nothing happens for specified elements that don't
|
||||||
|
exist). If the variable you are changing is not a table, set, or pattern,
|
||||||
|
then you must use the ``=`` operator.
|
||||||
|
|
||||||
|
Examples::
|
||||||
|
|
||||||
|
redef pi = 3.14;
|
||||||
|
|
||||||
|
If you're using "redef" to extend a record or enum, then you must
|
||||||
|
use the ``+=`` assignment operator.
|
||||||
|
For an enum, you can add more enumeration constants, and for a record
|
||||||
|
you can add more record fields (however, each record field in the "redef"
|
||||||
|
must have either the :bro:attr:`&optional` or :bro:attr:`&default`
|
||||||
|
attribute).
|
||||||
|
|
||||||
|
Examples::
|
||||||
|
|
||||||
|
redef enum color += { Blue, Red };
|
||||||
|
redef record MyRecord += { n2:int &optional; s2:string &optional; };
|
||||||
|
|
||||||
|
If you're using "redef" to specify a new event handler body that
|
||||||
|
replaces all those that were previously defined (i.e., any subsequently
|
||||||
|
defined event handler body will not be affected by this "redef"), then
|
||||||
|
the syntax is the same as a regular event handler definition except for
|
||||||
|
the presence of the "redef" keyword.
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
redef event myevent(s:string) { print "Redefined", s; }
|
||||||
|
|
||||||
|
|
||||||
|
.. _function/event/hook:
|
||||||
|
|
||||||
|
**function/event/hook**
|
||||||
|
For details on how to declare a :bro:type:`function`,
|
||||||
|
:bro:type:`event` handler, or :bro:type:`hook`,
|
||||||
|
see the documentation for those types.
|
||||||
|
|
||||||
|
|
||||||
|
Statements
|
||||||
|
----------
|
||||||
|
|
||||||
|
Each statement in a Bro script must be terminated with a semicolon (with a
|
||||||
|
few exceptions noted below). An individual statement can span multiple
|
||||||
|
lines.
|
||||||
|
|
||||||
|
All statements (except those contained within a function, hook, or event
|
||||||
|
handler) must appear after all global declarations.
|
||||||
|
|
||||||
|
Here are the statements that the Bro scripting language supports.
|
||||||
|
|
||||||
|
.. bro:keyword:: add
|
||||||
|
|
||||||
|
The "add" statement is used to add an element to a :bro:type:`set`.
|
||||||
|
Nothing happens if the specified element already exists in the set.
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
local myset: set[string];
|
||||||
|
add myset["test"];
|
||||||
|
|
||||||
|
.. bro:keyword:: break
|
||||||
|
|
||||||
|
The "break" statement is used to break out of a :bro:keyword:`switch` or
|
||||||
|
:bro:keyword:`for` statement.
|
||||||
|
|
||||||
|
|
||||||
|
.. bro:keyword:: delete
|
||||||
|
|
||||||
|
The "delete" statement is used to remove an element from a
|
||||||
|
:bro:type:`set` or :bro:type:`table`. Nothing happens if the
|
||||||
|
specified element does not exist in the set or table.
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
local myset = set("this", "test");
|
||||||
|
local mytable = table(["key1"] = 80/tcp, ["key2"] = 53/udp);
|
||||||
|
delete myset["test"];
|
||||||
|
delete mytable["key1"];
|
||||||
|
|
||||||
|
.. bro:keyword:: event
|
||||||
|
|
||||||
|
The "event" statement immediately queues invocation of an event handler.
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
event myevent("test", 5);
|
||||||
|
|
||||||
|
.. bro:keyword:: fallthrough
|
||||||
|
|
||||||
|
The "fallthrough" statement can be used as the last statement in a
|
||||||
|
"case" block to indicate that execution should continue into the
|
||||||
|
next "case" or "default" label.
|
||||||
|
|
||||||
|
For an example, see the :bro:keyword:`switch` statement.
|
||||||
|
|
||||||
|
.. bro:keyword:: for
|
||||||
|
|
||||||
|
A "for" loop iterates over each element in a string, set, vector, or
|
||||||
|
table and executes a statement for each iteration.
|
||||||
|
|
||||||
|
For each iteration of the loop, a loop variable will be assigned to an
|
||||||
|
element if the expression evaluates to a string or set, or an index if
|
||||||
|
the expression evaluates to a vector or table. Then the statement
|
||||||
|
is executed. However, the statement will not be executed if the expression
|
||||||
|
evaluates to an object with no elements.
|
||||||
|
|
||||||
|
If the expression is a table or a set with more than one index, then the
|
||||||
|
loop variable must be specified as a comma-separated list of different
|
||||||
|
loop variables (one for each index), enclosed in brackets.
|
||||||
|
|
||||||
|
A :bro:keyword:`break` statement can be used at any time to immediately
|
||||||
|
terminate the "for" loop, and a :bro:keyword:`next` statement can be
|
||||||
|
used to skip to the next loop iteration.
|
||||||
|
|
||||||
|
Note that the loop variable in a "for" statement is not allowed to be
|
||||||
|
a global variable, and it does not need to be declared prior to the "for"
|
||||||
|
statement. The type will be inferred from the elements of the
|
||||||
|
expression.
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
local myset = set(80/tcp, 81/tcp);
|
||||||
|
local mytable = table([10.0.0.1, 80/tcp]="s1", [10.0.0.2, 81/tcp]="s2");
|
||||||
|
|
||||||
|
for (p in myset)
|
||||||
|
print p;
|
||||||
|
|
||||||
|
for ([i,j] in mytable) {
|
||||||
|
if (mytable[i,j] == "done")
|
||||||
|
break;
|
||||||
|
if (mytable[i,j] == "skip")
|
||||||
|
next;
|
||||||
|
print i,j;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.. bro:keyword:: if
|
||||||
|
|
||||||
|
Evaluates a given expression, which must yield a :bro:type:`bool` value.
|
||||||
|
If true, then a specified statement is executed. If false, then
|
||||||
|
the statement is not executed. Example::
|
||||||
|
|
||||||
|
if ( x == 2 ) print "x is 2";
|
||||||
|
|
||||||
|
|
||||||
|
However, if the expression evaluates to false and if an "else" is
|
||||||
|
provided, then the statement following the "else" is executed. Example::
|
||||||
|
|
||||||
|
if ( x == 2 )
|
||||||
|
print "x is 2";
|
||||||
|
else
|
||||||
|
print "x is not 2";
|
||||||
|
|
||||||
|
.. bro:keyword:: local
|
||||||
|
|
||||||
|
A variable declared with the "local" keyword will be local. If a type
|
||||||
|
is not specified, then an initializer is required so that the type can
|
||||||
|
be inferred. Likewise, if an initializer is not supplied, then the
|
||||||
|
type must be specified.
|
||||||
|
|
||||||
|
Examples::
|
||||||
|
|
||||||
|
local x1 = 5.7;
|
||||||
|
local x2: double;
|
||||||
|
local x3: double = 5.7;
|
||||||
|
|
||||||
|
Variable declarations inside a function, hook, or event handler are
|
||||||
|
required to use this keyword (the only two exceptions are variables
|
||||||
|
declared with :bro:keyword:`const`, and variables implicitly declared in a
|
||||||
|
:bro:keyword:`for` statement).
|
||||||
|
|
||||||
|
The scope of a local variable starts at the location where it is declared
|
||||||
|
and persists to the end of the function, hook,
|
||||||
|
or event handler in which it is declared (this is true even if the
|
||||||
|
local variable was declared within a `compound statement`_ or is the loop
|
||||||
|
variable in a "for" statement).
|
||||||
|
|
||||||
|
|
||||||
|
.. bro:keyword:: next
|
||||||
|
|
||||||
|
The "next" statement can only appear within a :bro:keyword:`for` loop.
|
||||||
|
It causes execution to skip to the next iteration.
|
||||||
|
|
||||||
|
For an example, see the :bro:keyword:`for` statement.
|
||||||
|
|
||||||
|
.. bro:keyword:: print
|
||||||
|
|
||||||
|
The "print" statement takes a comma-separated list of one or more
|
||||||
|
expressions. Each expression in the list is evaluated and then converted
|
||||||
|
to a string. Then each string is printed, with each string separated by
|
||||||
|
a comma in the output.
|
||||||
|
|
||||||
|
Examples::
|
||||||
|
|
||||||
|
print 3.14;
|
||||||
|
print "Results", x, y;
|
||||||
|
|
||||||
|
By default, the "print" statement writes to the standard
|
||||||
|
output (stdout). However, if the first expression is of type
|
||||||
|
:bro:type:`file`, then "print" writes to that file.
|
||||||
|
|
||||||
|
If a string contains non-printable characters (i.e., byte values that are
|
||||||
|
not in the range 32 - 126), then the "print" statement converts each
|
||||||
|
non-printable character to an escape sequence before it is printed.
|
||||||
|
|
||||||
|
For more control over how the strings are formatted, see the :bro:id:`fmt`
|
||||||
|
function.
|
||||||
|
|
||||||
|
.. bro:keyword:: return
|
||||||
|
|
||||||
|
The "return" statement immediately exits the current function, hook, or
|
||||||
|
event handler. For a function, the specified expression (if any) is
|
||||||
|
evaluated and returned. A "return" statement in a hook or event handler
|
||||||
|
cannot return a value because event handlers and hooks do not have
|
||||||
|
return types.
|
||||||
|
|
||||||
|
Examples::
|
||||||
|
|
||||||
|
function my_func(): string
|
||||||
|
{
|
||||||
|
return "done";
|
||||||
|
}
|
||||||
|
|
||||||
|
event my_event(n: count)
|
||||||
|
{
|
||||||
|
if ( n == 0 ) return;
|
||||||
|
|
||||||
|
print n;
|
||||||
|
}
|
||||||
|
|
||||||
|
There is a special form of the "return" statement that is only allowed
|
||||||
|
in functions. Syntactically, it looks like a :bro:keyword:`when` statement
|
||||||
|
immediately preceded by the "return" keyword. This form of the "return"
|
||||||
|
statement is used to specify a function that delays its result (such a
|
||||||
|
function can only be called in the expression of a :bro:keyword:`when`
|
||||||
|
statement). The function returns at the time the "when"
|
||||||
|
statement's condition becomes true, and the function returns the value
|
||||||
|
that the "when" statement's body returns (or if the condition does
|
||||||
|
not become true within the specified timeout interval, then the function
|
||||||
|
returns the value that the "timeout" block returns).
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
global X: table[string] of count;
|
||||||
|
|
||||||
|
function a() : count
|
||||||
|
{
|
||||||
|
# This delays until condition becomes true.
|
||||||
|
return when ( "a" in X )
|
||||||
|
{
|
||||||
|
return X["a"];
|
||||||
|
}
|
||||||
|
timeout 30 sec
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
event bro_init()
|
||||||
|
{
|
||||||
|
# Installs a trigger which fires if a() returns 42.
|
||||||
|
when ( a() == 42 )
|
||||||
|
print "expected result";
|
||||||
|
|
||||||
|
print "Waiting for a() to return...";
|
||||||
|
X["a"] = 42;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.. bro:keyword:: schedule
|
||||||
|
|
||||||
|
The "schedule" statement is used to raise a specified event with
|
||||||
|
specified parameters at a later time specified as an :bro:type:`interval`.
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
schedule 30sec { myevent(x, y, z) };
|
||||||
|
|
||||||
|
Note that the braces are always required (they do not indicate a
|
||||||
|
`compound statement`_).
|
||||||
|
|
||||||
|
Note that "schedule" is actually an expression that returns a value
|
||||||
|
of type "timer", but in practice the return value is not used.
|
||||||
|
|
||||||
|
.. bro:keyword:: switch
|
||||||
|
|
||||||
|
A "switch" statement evaluates a given expression and jumps to
|
||||||
|
the first "case" label which contains a matching value (the result of the
|
||||||
|
expression must be type-compatible with all of the values in all of the
|
||||||
|
"case" labels). If there is no matching value, then execution jumps to
|
||||||
|
the "default" label instead, and if there is no "default" label then
|
||||||
|
execution jumps out of the "switch" block.
|
||||||
|
|
||||||
|
Here is an example (assuming that "get_day_of_week" is a
|
||||||
|
function that returns a string)::
|
||||||
|
|
||||||
|
switch get_day_of_week()
|
||||||
|
{
|
||||||
|
case "Sa", "Su":
|
||||||
|
print "weekend";
|
||||||
|
fallthrough;
|
||||||
|
case "Mo", "Tu", "We", "Th", "Fr":
|
||||||
|
print "valid result";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
print "invalid result";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
A "switch" block can have any number of "case" labels, and one
|
||||||
|
optional "default" label.
|
||||||
|
|
||||||
|
A "case" label can have a comma-separated list of
|
||||||
|
more than one value. A value in a "case" label can be an expression,
|
||||||
|
but it must be a constant expression (i.e., the expression can consist
|
||||||
|
only of constants).
|
||||||
|
|
||||||
|
Each "case" and the "default" block must
|
||||||
|
end with either a :bro:keyword:`break`, :bro:keyword:`fallthrough`, or
|
||||||
|
:bro:keyword:`return` statement (although "return" is allowed only
|
||||||
|
if the "switch" statement is inside a function, hook, or event handler).
|
||||||
|
If a "case" (or "default") block contain more than one statement, then
|
||||||
|
there is no need to wrap them in braces.
|
||||||
|
|
||||||
|
Note that the braces in a "switch" statement are always required (these
|
||||||
|
do not indicate the presence of a `compound statement`_), and that no
|
||||||
|
semicolon is needed at the end of a "switch" statement.
|
||||||
|
|
||||||
|
|
||||||
|
.. bro:keyword:: when
|
||||||
|
|
||||||
|
Evaluates a given expression, which must result in a value of type
|
||||||
|
:bro:type:`bool`. When the value of the expression becomes available
|
||||||
|
and if the result is true, then a specified statement is executed.
|
||||||
|
|
||||||
|
In the following example, if the expression evaluates to true, then
|
||||||
|
the "print" statement is executed::
|
||||||
|
|
||||||
|
when ( (local x = foo()) && x == 42 )
|
||||||
|
print x;
|
||||||
|
|
||||||
|
However, if a timeout is specified, and if the expression does not
|
||||||
|
evaluate to true within the specified timeout interval, then the
|
||||||
|
statement following the "timeout" keyword is executed::
|
||||||
|
|
||||||
|
when ( (local x = foo()) && x == 42 )
|
||||||
|
print x;
|
||||||
|
timeout 5sec {
|
||||||
|
print "timeout";
|
||||||
|
}
|
||||||
|
|
||||||
|
Note that when a timeout is specified the braces are
|
||||||
|
always required (these do not indicate a `compound statement`_).
|
||||||
|
|
||||||
|
The expression in a "when" statement can contain a declaration of a local
|
||||||
|
variable but only if the declaration is written in the form
|
||||||
|
"local *var* = *init*" (example: "local x = myfunction()"). This form
|
||||||
|
of a local declaration is actually an expression, the result of which
|
||||||
|
is always a boolean true value.
|
||||||
|
|
||||||
|
The expression in a "when" statement can contain an asynchronous function
|
||||||
|
call such as :bro:id:`lookup_hostname` (in fact, this is the only place
|
||||||
|
such a function can be called), but it can also contain an ordinary
|
||||||
|
function call. When an asynchronous function call is in the expression,
|
||||||
|
then Bro will continue processing statements in the script following
|
||||||
|
the "when" statement, and when the result of the function call is available
|
||||||
|
Bro will finish evaluating the expression in the "when" statement.
|
||||||
|
See the :bro:keyword:`return` statement for an explanation of how to
|
||||||
|
create an asynchronous function in a Bro script.
|
||||||
|
|
||||||
|
|
||||||
|
.. _compound statement:
|
||||||
|
|
||||||
|
**compound statement**
|
||||||
|
A compound statement is created by wrapping zero or more statements in
|
||||||
|
braces ``{ }``. Individual statements inside the braces need to be
|
||||||
|
terminated by a semicolon, but a semicolon is not needed at the end
|
||||||
|
(outside of the braces) of a compound statement.
|
||||||
|
|
||||||
|
A compound statement is required in order to execute more than one
|
||||||
|
statement in the body of a :bro:keyword:`for`, :bro:keyword:`if`, or
|
||||||
|
:bro:keyword:`when` statement.
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
if ( x == 2 ) {
|
||||||
|
print "x is 2";
|
||||||
|
++x;
|
||||||
|
}
|
||||||
|
|
||||||
|
Note that there are other places in the Bro scripting language that use
|
||||||
|
braces, but that do not indicate the presence of a compound
|
||||||
|
statement (these are noted in the documentation).
|
||||||
|
|
||||||
|
.. _null:
|
||||||
|
|
||||||
|
**null statement**
|
||||||
|
The null statement (executing it has no effect) consists of just a
|
||||||
|
semicolon. This might be useful during testing or debugging a Bro script
|
||||||
|
in places where a statement is required, but it is probably not useful
|
||||||
|
otherwise.
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
if ( x == 2 )
|
||||||
|
;
|
||||||
|
|
|
@ -1,92 +1,114 @@
|
||||||
Types and Attributes
|
|
||||||
====================
|
|
||||||
|
|
||||||
Types
|
Types
|
||||||
-----
|
=====
|
||||||
|
|
||||||
Every value in a Bro script has a type (see below for a list of all built-in
|
The Bro scripting language supports the following built-in types:
|
||||||
types). Although Bro variables have static types (meaning that their type
|
|
||||||
is fixed), their type is inferred from the value to which they are
|
|
||||||
initially assigned when the variable is declared without an explicit type
|
|
||||||
name.
|
|
||||||
|
|
||||||
Automatic conversions happen when a binary operator has operands of
|
+-----------------------+--------------------+
|
||||||
different types. Automatic conversions are limited to converting between
|
| Name | Description |
|
||||||
numeric types. The numeric types are ``int``, ``count``, and ``double``
|
+=======================+====================+
|
||||||
(``bool`` is not a numeric type).
|
| :bro:type:`bool` | Boolean |
|
||||||
When an automatic conversion occurs, values are promoted to the "highest"
|
+-----------------------+--------------------+
|
||||||
type in the expression. In general, this promotion follows a simple
|
| :bro:type:`count`, | Numeric types |
|
||||||
hierarchy: ``double`` is highest, ``int`` comes next, and ``count`` is
|
| :bro:type:`int`, | |
|
||||||
lowest.
|
| :bro:type:`double` | |
|
||||||
|
+-----------------------+--------------------+
|
||||||
|
| :bro:type:`time`, | Time types |
|
||||||
|
| :bro:type:`interval` | |
|
||||||
|
+-----------------------+--------------------+
|
||||||
|
| :bro:type:`string` | String |
|
||||||
|
+-----------------------+--------------------+
|
||||||
|
| :bro:type:`pattern` | Regular expression |
|
||||||
|
+-----------------------+--------------------+
|
||||||
|
| :bro:type:`port`, | Network types |
|
||||||
|
| :bro:type:`addr`, | |
|
||||||
|
| :bro:type:`subnet` | |
|
||||||
|
+-----------------------+--------------------+
|
||||||
|
| :bro:type:`enum` | Enumeration |
|
||||||
|
| | (user-defined type)|
|
||||||
|
+-----------------------+--------------------+
|
||||||
|
| :bro:type:`table`, | Container types |
|
||||||
|
| :bro:type:`set`, | |
|
||||||
|
| :bro:type:`vector`, | |
|
||||||
|
| :bro:type:`record` | |
|
||||||
|
+-----------------------+--------------------+
|
||||||
|
| :bro:type:`function`, | Executable types |
|
||||||
|
| :bro:type:`event`, | |
|
||||||
|
| :bro:type:`hook` | |
|
||||||
|
+-----------------------+--------------------+
|
||||||
|
| :bro:type:`file` | File type (only |
|
||||||
|
| | for writing) |
|
||||||
|
+-----------------------+--------------------+
|
||||||
|
| :bro:type:`opaque` | Opaque type (for |
|
||||||
|
| | some built-in |
|
||||||
|
| | functions) |
|
||||||
|
+-----------------------+--------------------+
|
||||||
|
| :bro:type:`any` | Any type (for |
|
||||||
|
| | functions or |
|
||||||
|
| | containers) |
|
||||||
|
+-----------------------+--------------------+
|
||||||
|
|
||||||
The Bro scripting language supports the following built-in types.
|
Here is a more detailed description of each type:
|
||||||
|
|
||||||
.. bro:type:: void
|
|
||||||
|
|
||||||
An internal Bro type (i.e., "void" is not a reserved keyword in the Bro
|
|
||||||
scripting language) representing the absence of a return type for a
|
|
||||||
function.
|
|
||||||
|
|
||||||
.. bro:type:: bool
|
.. bro:type:: bool
|
||||||
|
|
||||||
Reflects a value with one of two meanings: true or false. The two
|
Reflects a value with one of two meanings: true or false. The two
|
||||||
``bool`` constants are ``T`` and ``F``.
|
"bool" constants are ``T`` and ``F``.
|
||||||
|
|
||||||
The ``bool`` type supports the following operators: equality/inequality
|
The "bool" type supports the following operators: equality/inequality
|
||||||
(``==``, ``!=``), logical and/or (``&&``, ``||``), logical
|
(``==``, ``!=``), logical and/or (``&&``, ``||``), logical
|
||||||
negation (``!``), and absolute value (where ``|T|`` is 1, and ``|F|`` is 0).
|
negation (``!``), and absolute value (where ``|T|`` is 1, and ``|F|`` is 0,
|
||||||
|
and in both cases the result type is :bro:type:`count`).
|
||||||
|
|
||||||
.. bro:type:: int
|
.. bro:type:: int
|
||||||
|
|
||||||
A numeric type representing a 64-bit signed integer. An ``int`` constant
|
A numeric type representing a 64-bit signed integer. An "int" constant
|
||||||
is a string of digits preceded by a ``+`` or ``-`` sign, e.g.
|
is a string of digits preceded by a "+" or "-" sign, e.g.
|
||||||
``-42`` or ``+5`` (the "+" sign is optional but see note about type
|
``-42`` or ``+5`` (the "+" sign is optional but see note about type
|
||||||
inferencing below). An ``int`` constant can also be written in
|
inferencing below). An "int" constant can also be written in
|
||||||
hexadecimal notation (in which case "0x" must be between the sign and
|
hexadecimal notation (in which case "0x" must be between the sign and
|
||||||
the hex digits), e.g. ``-0xFF`` or ``+0xabc123``.
|
the hex digits), e.g. ``-0xFF`` or ``+0xabc123``.
|
||||||
|
|
||||||
The ``int`` type supports the following operators: arithmetic
|
The "int" type supports the following operators: arithmetic
|
||||||
operators (``+``, ``-``, ``*``, ``/``, ``%``), comparison operators
|
operators (``+``, ``-``, ``*``, ``/``, ``%``), comparison operators
|
||||||
(``==``, ``!=``, ``<``, ``<=``, ``>``, ``>=``), assignment operators
|
(``==``, ``!=``, ``<``, ``<=``, ``>``, ``>=``), assignment operators
|
||||||
(``=``, ``+=``, ``-=``), pre-increment (``++``), pre-decrement
|
(``=``, ``+=``, ``-=``), pre-increment (``++``), pre-decrement
|
||||||
(``--``), and absolute value (e.g., ``|-3|`` is 3).
|
(``--``), unary plus and minus (``+``, ``-``), and absolute value
|
||||||
|
(e.g., ``|-3|`` is 3, but the result type is :bro:type:`count`).
|
||||||
|
|
||||||
When using type inferencing use care so that the
|
When using type inferencing use care so that the
|
||||||
intended type is inferred, e.g. ``local size_difference = 0`` will
|
intended type is inferred, e.g. "local size_difference = 0" will
|
||||||
infer :bro:type:`count`, while ``local size_difference = +0``
|
infer ":bro:type:`count`", while "local size_difference = +0"
|
||||||
will infer :bro:type:`int`.
|
will infer "int".
|
||||||
|
|
||||||
.. bro:type:: count
|
.. bro:type:: count
|
||||||
|
|
||||||
A numeric type representing a 64-bit unsigned integer. A ``count``
|
A numeric type representing a 64-bit unsigned integer. A "count"
|
||||||
constant is a string of digits, e.g. ``1234`` or ``0``. A ``count``
|
constant is a string of digits, e.g. ``1234`` or ``0``. A "count"
|
||||||
can also be written in hexadecimal notation (in which case "0x" must
|
can also be written in hexadecimal notation (in which case "0x" must
|
||||||
precede the hex digits), e.g. ``0xff`` or ``0xABC123``.
|
precede the hex digits), e.g. ``0xff`` or ``0xABC123``.
|
||||||
|
|
||||||
The ``count`` type supports the same operators as the :bro:type:`int`
|
The "count" type supports the same operators as the ":bro:type:`int`"
|
||||||
type. A unary plus or minus applied to a ``count`` results in an ``int``.
|
type, but a unary plus or minus applied to a "count" results in an
|
||||||
|
"int".
|
||||||
.. bro:type:: counter
|
|
||||||
|
|
||||||
An alias to :bro:type:`count`.
|
|
||||||
|
|
||||||
.. bro:type:: double
|
.. bro:type:: double
|
||||||
|
|
||||||
A numeric type representing a double-precision floating-point
|
A numeric type representing a double-precision floating-point
|
||||||
number. Floating-point constants are written as a string of digits
|
number. Floating-point constants are written as a string of digits
|
||||||
with an optional decimal point, optional scale-factor in scientific
|
with an optional decimal point, optional scale-factor in scientific
|
||||||
notation, and optional ``+`` or ``-`` sign. Examples are ``-1234``,
|
notation, and optional "+" or "-" sign. Examples are ``-1234``,
|
||||||
``-1234e0``, ``3.14159``, and ``.003E-23``.
|
``-1234e0``, ``3.14159``, and ``.003E-23``.
|
||||||
|
|
||||||
The ``double`` type supports the following operators: arithmetic
|
The "double" type supports the following operators: arithmetic
|
||||||
operators (``+``, ``-``, ``*``, ``/``), comparison operators
|
operators (``+``, ``-``, ``*``, ``/``), comparison operators
|
||||||
(``==``, ``!=``, ``<``, ``<=``, ``>``, ``>=``), assignment operators
|
(``==``, ``!=``, ``<``, ``<=``, ``>``, ``>=``), assignment operators
|
||||||
(``=``, ``+=``, ``-=``), and absolute value (e.g., ``|-3.14|`` is 3.14).
|
(``=``, ``+=``, ``-=``), unary plus and minus (``+``, ``-``), and
|
||||||
|
absolute value (e.g., ``|-3.14|`` is 3.14).
|
||||||
|
|
||||||
When using type inferencing use care so that the
|
When using type inferencing use care so that the
|
||||||
intended type is inferred, e.g. ``local size_difference = 5`` will
|
intended type is inferred, e.g. "local size_difference = 5" will
|
||||||
infer :bro:type:`count`, while ``local size_difference = 5.0``
|
infer ":bro:type:`count`", while "local size_difference = 5.0"
|
||||||
will infer :bro:type:`double`.
|
will infer "double".
|
||||||
|
|
||||||
.. bro:type:: time
|
.. bro:type:: time
|
||||||
|
|
||||||
|
@ -97,10 +119,10 @@ The Bro scripting language supports the following built-in types.
|
||||||
|
|
||||||
Time values support the comparison operators (``==``, ``!=``, ``<``,
|
Time values support the comparison operators (``==``, ``!=``, ``<``,
|
||||||
``<=``, ``>``, ``>=``). A ``time`` value can be subtracted from
|
``<=``, ``>``, ``>=``). A ``time`` value can be subtracted from
|
||||||
another ``time`` value to produce an ``interval`` value. An ``interval``
|
another ``time`` value to produce an :bro:type:`interval` value. An
|
||||||
value can be added to, or subtracted from, a ``time`` value to produce a
|
``interval`` value can be added to, or subtracted from, a ``time`` value
|
||||||
``time`` value. The absolute value of a ``time`` value is a ``double``
|
to produce a ``time`` value. The absolute value of a ``time`` value is
|
||||||
with the same numeric value.
|
a :bro:type:`double` with the same numeric value.
|
||||||
|
|
||||||
.. bro:type:: interval
|
.. bro:type:: interval
|
||||||
|
|
||||||
|
@ -115,52 +137,58 @@ The Bro scripting language supports the following built-in types.
|
||||||
``3.5mins``. An ``interval`` can also be negated, for example
|
``3.5mins``. An ``interval`` can also be negated, for example
|
||||||
``-12 hr`` represents "twelve hours in the past".
|
``-12 hr`` represents "twelve hours in the past".
|
||||||
|
|
||||||
Intervals support addition and subtraction. Intervals also support
|
Intervals support addition and subtraction, the comparison operators
|
||||||
division (in which case the result is a ``double`` value), the
|
(``==``, ``!=``, ``<``, ``<=``, ``>``, ``>=``), the assignment
|
||||||
comparison operators (``==``, ``!=``, ``<``, ``<=``, ``>``, ``>=``),
|
operators (``=``, ``+=``, ``-=``), and unary plus and minus (``+``, ``-``).
|
||||||
and the assignment operators (``=``, ``+=``, ``-=``). Also, an
|
|
||||||
``interval`` can be multiplied or divided by an arithmetic type
|
Intervals also support division (in which case the result is a
|
||||||
(``count``, ``int``, or ``double``) to produce an ``interval`` value.
|
:bro:type:`double` value). An ``interval`` can be multiplied or divided
|
||||||
The absolute value of an ``interval`` is a ``double`` value equal to the
|
by an arithmetic type (``count``, ``int``, or ``double``) to produce
|
||||||
number of seconds in the ``interval`` (e.g., ``|-1 min|`` is 60).
|
an ``interval`` value. The absolute value of an ``interval`` is a
|
||||||
|
``double`` value equal to the number of seconds in the ``interval``
|
||||||
|
(e.g., ``|-1 min|`` is 60.0).
|
||||||
|
|
||||||
.. bro:type:: string
|
.. bro:type:: string
|
||||||
|
|
||||||
A type used to hold character-string values which represent text.
|
A type used to hold character-string values which represent text, although
|
||||||
String constants are created by enclosing text in double quotes (")
|
strings in a Bro script can actually contain any arbitrary binary data.
|
||||||
and the backslash character (\\) introduces escape sequences (all of
|
|
||||||
the C-style escape sequences are supported).
|
String constants are created by enclosing text within a pair of double
|
||||||
|
quotes ("). A string constant cannot span multiple lines in a Bro script.
|
||||||
|
The backslash character (\\) introduces escape sequences. The
|
||||||
|
following escape sequences are recognized: ``\n``, ``\t``, ``\v``, ``\b``,
|
||||||
|
``\r``, ``\f``, ``\a``, ``\ooo`` (where each 'o' is an octal digit),
|
||||||
|
``\xhh`` (where each 'h' is a hexadecimal digit). For escape sequences
|
||||||
|
that don't match any of these, Bro will just remove the backslash (so
|
||||||
|
to represent a literal backslash in a string constant, you just use
|
||||||
|
two consecutive backslashes).
|
||||||
|
|
||||||
Strings support concatenation (``+``), and assignment (``=``, ``+=``).
|
Strings support concatenation (``+``), and assignment (``=``, ``+=``).
|
||||||
Strings also support the comparison operators (``==``, ``!=``, ``<``,
|
Strings also support the comparison operators (``==``, ``!=``, ``<``,
|
||||||
``<=``, ``>``, ``>=``). The number of characters in a string can be
|
``<=``, ``>``, ``>=``). The number of characters in a string can be
|
||||||
found by enclosing the string within pipe characters (e.g., ``|"abc"|``
|
found by enclosing the string within pipe characters (e.g., ``|"abc"|``
|
||||||
is 3).
|
is 3). Substring searching can be performed using the "in" or "!in"
|
||||||
|
|
||||||
The subscript operator can extract an individual character or a substring
|
|
||||||
of a string (string indexing is zero-based, but an index of
|
|
||||||
-1 refers to the last character in the string, and -2 refers to the
|
|
||||||
second-to-last character, etc.). When extracting a substring, the
|
|
||||||
starting and ending index values are separated by a colon. For example::
|
|
||||||
|
|
||||||
local orig = "0123456789";
|
|
||||||
local third_char = orig[2];
|
|
||||||
local last_char = orig[-1];
|
|
||||||
local first_three_chars = orig[0:2];
|
|
||||||
|
|
||||||
Substring searching can be performed using the "in" or "!in"
|
|
||||||
operators (e.g., "bar" in "foobar" yields true).
|
operators (e.g., "bar" in "foobar" yields true).
|
||||||
|
|
||||||
Note that Bro represents strings internally as a count and vector of
|
The subscript operator can extract a substring of a string. To do this,
|
||||||
bytes rather than a NUL-terminated byte string (although string
|
specify the starting index to extract (if the starting index is omitted,
|
||||||
constants are also automatically NUL-terminated). This is because
|
then zero is assumed), followed by a colon and index
|
||||||
network traffic can easily introduce NULs into strings either by
|
one past the last character to extract (if the last index is omitted,
|
||||||
nature of an application, inadvertently, or maliciously. And while
|
then the extracted substring will go to the end of the original string).
|
||||||
NULs are allowed in Bro strings, when present in strings passed as
|
However, if both the colon and last index are omitted, then a string of
|
||||||
arguments to many functions, a run-time error can occur as their
|
length one is extracted. String indexing is zero-based, but an index
|
||||||
presence likely indicates a sort of problem. In that case, the
|
of -1 refers to the last character in the string, and -2 refers to the
|
||||||
string will also only be represented to the user as the literal
|
second-to-last character, etc. Here are a few examples::
|
||||||
"<string-with-NUL>" string.
|
|
||||||
|
local orig = "0123456789";
|
||||||
|
local second_char = orig[1];
|
||||||
|
local last_char = orig[-1];
|
||||||
|
local first_two_chars = orig[:2];
|
||||||
|
local last_two_chars = orig[8:];
|
||||||
|
local no_first_and_last = orig[1:9];
|
||||||
|
|
||||||
|
Note that the subscript operator cannot be used to modify a string (i.e.,
|
||||||
|
it cannot be on the left side of an assignment operator).
|
||||||
|
|
||||||
.. bro:type:: pattern
|
.. bro:type:: pattern
|
||||||
|
|
||||||
|
@ -174,7 +202,7 @@ The Bro scripting language supports the following built-in types.
|
||||||
and embedded.
|
and embedded.
|
||||||
|
|
||||||
In exact matching the ``==`` equality relational operator is used
|
In exact matching the ``==`` equality relational operator is used
|
||||||
with one :bro:type:`pattern` operand and one :bro:type:`string`
|
with one "pattern" operand and one ":bro:type:`string`"
|
||||||
operand (order of operands does not matter) to check whether the full
|
operand (order of operands does not matter) to check whether the full
|
||||||
string exactly matches the pattern. In exact matching, the ``^``
|
string exactly matches the pattern. In exact matching, the ``^``
|
||||||
beginning-of-line and ``$`` end-of-line anchors are redundant since
|
beginning-of-line and ``$`` end-of-line anchors are redundant since
|
||||||
|
@ -190,8 +218,8 @@ The Bro scripting language supports the following built-in types.
|
||||||
yields false. The ``!=`` operator would yield the negation of ``==``.
|
yields false. The ``!=`` operator would yield the negation of ``==``.
|
||||||
|
|
||||||
In embedded matching the ``in`` operator is used with one
|
In embedded matching the ``in`` operator is used with one
|
||||||
:bro:type:`pattern` operand (which must be on the left-hand side) and
|
"pattern" operand (which must be on the left-hand side) and
|
||||||
one :bro:type:`string` operand, but tests whether the pattern
|
one ":bro:type:`string`" operand, but tests whether the pattern
|
||||||
appears anywhere within the given string. For example::
|
appears anywhere within the given string. For example::
|
||||||
|
|
||||||
/foo|bar/ in "foobar"
|
/foo|bar/ in "foobar"
|
||||||
|
@ -203,27 +231,12 @@ The Bro scripting language supports the following built-in types.
|
||||||
is false since "oob" does not appear at the start of "foobar". The
|
is false since "oob" does not appear at the start of "foobar". The
|
||||||
``!in`` operator would yield the negation of ``in``.
|
``!in`` operator would yield the negation of ``in``.
|
||||||
|
|
||||||
.. bro:type:: enum
|
|
||||||
|
|
||||||
A type allowing the specification of a set of related values that
|
|
||||||
have no further structure. An example declaration:
|
|
||||||
|
|
||||||
.. code:: bro
|
|
||||||
|
|
||||||
type color: enum { Red, White, Blue, };
|
|
||||||
|
|
||||||
The last comma after ``Blue`` is optional.
|
|
||||||
|
|
||||||
The only operations allowed on enumerations are equality comparisons
|
|
||||||
(``==``, ``!=``) and assignment (``=``).
|
|
||||||
Enumerations do not have associated values or ordering.
|
|
||||||
|
|
||||||
.. bro:type:: port
|
.. bro:type:: port
|
||||||
|
|
||||||
A type representing transport-level port numbers. Besides TCP and
|
A type representing transport-level port numbers (besides TCP and
|
||||||
UDP ports, there is a concept of an ICMP "port" where the source
|
UDP ports, there is a concept of an ICMP "port" where the source
|
||||||
port is the ICMP message type and the destination port the ICMP
|
port is the ICMP message type and the destination port the ICMP
|
||||||
message code. A ``port`` constant is written as an unsigned integer
|
message code). A ``port`` constant is written as an unsigned integer
|
||||||
followed by one of ``/tcp``, ``/udp``, ``/icmp``, or ``/unknown``.
|
followed by one of ``/tcp``, ``/udp``, ``/icmp``, or ``/unknown``.
|
||||||
|
|
||||||
Ports support the comparison operators (``==``, ``!=``, ``<``, ``<=``,
|
Ports support the comparison operators (``==``, ``!=``, ``<``, ``<=``,
|
||||||
|
@ -255,14 +268,6 @@ The Bro scripting language supports the following built-in types.
|
||||||
address) are treated internally as IPv4 addresses (for example,
|
address) are treated internally as IPv4 addresses (for example,
|
||||||
``[::ffff:192.168.1.100]`` is equal to ``192.168.1.100``).
|
``[::ffff:192.168.1.100]`` is equal to ``192.168.1.100``).
|
||||||
|
|
||||||
Hostname constants can also be used, but since a hostname can
|
|
||||||
correspond to multiple IP addresses, the type of such a variable is a
|
|
||||||
:bro:type:`set` of :bro:type:`addr` elements. For example:
|
|
||||||
|
|
||||||
.. code:: bro
|
|
||||||
|
|
||||||
local a = www.google.com;
|
|
||||||
|
|
||||||
Addresses can be compared for equality (``==``, ``!=``),
|
Addresses can be compared for equality (``==``, ``!=``),
|
||||||
and also for ordering (``<``, ``<=``, ``>``, ``>=``). The absolute value
|
and also for ordering (``<``, ``<=``, ``>``, ``>=``). The absolute value
|
||||||
of an address gives the size in bits (32 for IPv4, and 128 for IPv6).
|
of an address gives the size in bits (32 for IPv4, and 128 for IPv6).
|
||||||
|
@ -285,9 +290,17 @@ The Bro scripting language supports the following built-in types.
|
||||||
if ( a in s )
|
if ( a in s )
|
||||||
print "true";
|
print "true";
|
||||||
|
|
||||||
Note that you can check if a given ``addr`` is IPv4 or IPv6 using
|
You can check if a given ``addr`` is IPv4 or IPv6 using
|
||||||
the :bro:id:`is_v4_addr` and :bro:id:`is_v6_addr` built-in functions.
|
the :bro:id:`is_v4_addr` and :bro:id:`is_v6_addr` built-in functions.
|
||||||
|
|
||||||
|
Note that hostname constants can also be used, but since a hostname can
|
||||||
|
correspond to multiple IP addresses, the type of such a variable is
|
||||||
|
"set[addr]". For example:
|
||||||
|
|
||||||
|
.. code:: bro
|
||||||
|
|
||||||
|
local a = www.google.com;
|
||||||
|
|
||||||
.. bro:type:: subnet
|
.. bro:type:: subnet
|
||||||
|
|
||||||
A type representing a block of IP addresses in CIDR notation. A
|
A type representing a block of IP addresses in CIDR notation. A
|
||||||
|
@ -296,13 +309,24 @@ The Bro scripting language supports the following built-in types.
|
||||||
number. For example, ``192.168.0.0/16`` or ``[fe80::]/64``.
|
number. For example, ``192.168.0.0/16`` or ``[fe80::]/64``.
|
||||||
|
|
||||||
Subnets can be compared for equality (``==``, ``!=``). An
|
Subnets can be compared for equality (``==``, ``!=``). An
|
||||||
:bro:type:`addr` can be checked for inclusion in a subnet using
|
"addr" can be checked for inclusion in a subnet using
|
||||||
the "in" or "!in" operators.
|
the ``in`` or ``!in`` operators.
|
||||||
|
|
||||||
.. bro:type:: any
|
.. bro:type:: enum
|
||||||
|
|
||||||
Used to bypass strong typing. For example, a function can take an
|
A type allowing the specification of a set of related values that
|
||||||
argument of type ``any`` when it may be of different types.
|
have no further structure. An example declaration:
|
||||||
|
|
||||||
|
.. code:: bro
|
||||||
|
|
||||||
|
type color: enum { Red, White, Blue, };
|
||||||
|
|
||||||
|
The last comma after ``Blue`` is optional. Both the type name ``color``
|
||||||
|
and the individual values (``Red``, etc.) have global scope.
|
||||||
|
|
||||||
|
Enumerations do not have associated values or ordering.
|
||||||
|
The only operations allowed on enumerations are equality comparisons
|
||||||
|
(``==``, ``!=``) and assignment (``=``).
|
||||||
|
|
||||||
.. bro:type:: table
|
.. bro:type:: table
|
||||||
|
|
||||||
|
@ -316,24 +340,25 @@ The Bro scripting language supports the following built-in types.
|
||||||
|
|
||||||
table [ type^+ ] of type
|
table [ type^+ ] of type
|
||||||
|
|
||||||
where *type^+* is one or more types, separated by commas. For example:
|
where *type^+* is one or more types, separated by commas.
|
||||||
|
For example:
|
||||||
|
|
||||||
.. code:: bro
|
.. code:: bro
|
||||||
|
|
||||||
global a: table[count] of string;
|
global a: table[count] of string;
|
||||||
|
|
||||||
declares a table indexed by :bro:type:`count` values and yielding
|
declares a table indexed by "count" values and yielding
|
||||||
:bro:type:`string` values. The yield type can also be more complex:
|
"string" values. The yield type can also be more complex:
|
||||||
|
|
||||||
.. code:: bro
|
.. code:: bro
|
||||||
|
|
||||||
global a: table[count] of table[addr, port] of string;
|
global a: table[count] of table[addr, port] of string;
|
||||||
|
|
||||||
which declares a table indexed by :bro:type:`count` and yielding
|
which declares a table indexed by "count" and yielding
|
||||||
another :bro:type:`table` which is indexed by an :bro:type:`addr`
|
another "table" which is indexed by an "addr"
|
||||||
and :bro:type:`port` to yield a :bro:type:`string`.
|
and "port" to yield a "string".
|
||||||
|
|
||||||
Initialization of tables occurs by enclosing a set of initializers within
|
One way to initialize a table is by enclosing a set of initializers within
|
||||||
braces, for example:
|
braces, for example:
|
||||||
|
|
||||||
.. code:: bro
|
.. code:: bro
|
||||||
|
@ -343,18 +368,17 @@ The Bro scripting language supports the following built-in types.
|
||||||
[5] = "five",
|
[5] = "five",
|
||||||
};
|
};
|
||||||
|
|
||||||
A table constructor (equivalent to above example) can also be used
|
A table constructor can also be used to create a table:
|
||||||
to create a table:
|
|
||||||
|
|
||||||
.. code:: bro
|
.. code:: bro
|
||||||
|
|
||||||
global t2: table[count] of string = table(
|
global t2 = table(
|
||||||
[11] = "eleven",
|
[192.168.0.2, 22/tcp] = "ssh",
|
||||||
[5] = "five"
|
[192.168.0.3, 80/tcp] = "http"
|
||||||
);
|
);
|
||||||
|
|
||||||
Table constructors can also be explicitly named by a type, which is
|
Table constructors can also be explicitly named by a type, which is
|
||||||
useful for when a more complex index type could otherwise be
|
useful when a more complex index type could otherwise be
|
||||||
ambiguous:
|
ambiguous:
|
||||||
|
|
||||||
.. code:: bro
|
.. code:: bro
|
||||||
|
@ -381,17 +405,7 @@ The Bro scripting language supports the following built-in types.
|
||||||
|
|
||||||
if ( 13 in t )
|
if ( 13 in t )
|
||||||
...
|
...
|
||||||
|
if ( [192.168.0.2, 22/tcp] in t2 )
|
||||||
Iterate over tables with a ``for`` loop:
|
|
||||||
|
|
||||||
.. code:: bro
|
|
||||||
|
|
||||||
local t: table[count] of string;
|
|
||||||
for ( n in t )
|
|
||||||
...
|
|
||||||
|
|
||||||
local services: table[addr, port] of string;
|
|
||||||
for ( [a, p] in services )
|
|
||||||
...
|
...
|
||||||
|
|
||||||
Add or overwrite individual table elements by assignment:
|
Add or overwrite individual table elements by assignment:
|
||||||
|
@ -400,7 +414,7 @@ The Bro scripting language supports the following built-in types.
|
||||||
|
|
||||||
t[13] = "thirteen";
|
t[13] = "thirteen";
|
||||||
|
|
||||||
Remove individual table elements with ``delete``:
|
Remove individual table elements with :bro:keyword:`delete`:
|
||||||
|
|
||||||
.. code:: bro
|
.. code:: bro
|
||||||
|
|
||||||
|
@ -416,6 +430,9 @@ The Bro scripting language supports the following built-in types.
|
||||||
|
|
||||||
|t|
|
|t|
|
||||||
|
|
||||||
|
See the :bro:keyword:`for` statement for info on how to iterate over
|
||||||
|
the elements in a table.
|
||||||
|
|
||||||
.. bro:type:: set
|
.. bro:type:: set
|
||||||
|
|
||||||
A set is like a :bro:type:`table`, but it is a collection of indices
|
A set is like a :bro:type:`table`, but it is a collection of indices
|
||||||
|
@ -426,25 +443,22 @@ The Bro scripting language supports the following built-in types.
|
||||||
|
|
||||||
where *type^+* is one or more types separated by commas.
|
where *type^+* is one or more types separated by commas.
|
||||||
|
|
||||||
Sets are initialized by listing elements enclosed by curly braces:
|
Sets can be initialized by listing elements enclosed by curly braces:
|
||||||
|
|
||||||
.. code:: bro
|
.. code:: bro
|
||||||
|
|
||||||
global s: set[port] = { 21/tcp, 23/tcp, 80/tcp, 443/tcp };
|
global s: set[port] = { 21/tcp, 23/tcp, 80/tcp, 443/tcp };
|
||||||
global s2: set[port, string] = { [21/tcp, "ftp"], [23/tcp, "telnet"] };
|
global s2: set[port, string] = { [21/tcp, "ftp"], [23/tcp, "telnet"] };
|
||||||
|
|
||||||
The types are explicitly shown in the example above, but they could
|
|
||||||
have been left to type inference.
|
|
||||||
|
|
||||||
A set constructor (equivalent to above example) can also be used to
|
A set constructor (equivalent to above example) can also be used to
|
||||||
create a set:
|
create a set:
|
||||||
|
|
||||||
.. code:: bro
|
.. code:: bro
|
||||||
|
|
||||||
global s3: set[port] = set(21/tcp, 23/tcp, 80/tcp, 443/tcp);
|
global s3 = set(21/tcp, 23/tcp, 80/tcp, 443/tcp);
|
||||||
|
|
||||||
Set constructors can also be explicitly named by a type, which is
|
Set constructors can also be explicitly named by a type, which is
|
||||||
useful for when a more complex index type could otherwise be
|
useful when a more complex index type could otherwise be
|
||||||
ambiguous:
|
ambiguous:
|
||||||
|
|
||||||
.. code:: bro
|
.. code:: bro
|
||||||
|
@ -465,18 +479,10 @@ The Bro scripting language supports the following built-in types.
|
||||||
if ( 21/tcp in s )
|
if ( 21/tcp in s )
|
||||||
...
|
...
|
||||||
|
|
||||||
if ( 21/tcp !in s )
|
if ( [21/tcp, "ftp"] !in s2 )
|
||||||
...
|
...
|
||||||
|
|
||||||
Iterate over a set with a ``for`` loop:
|
Elements are added with :bro:keyword:`add`:
|
||||||
|
|
||||||
.. code:: bro
|
|
||||||
|
|
||||||
local s: set[port];
|
|
||||||
for ( p in s )
|
|
||||||
...
|
|
||||||
|
|
||||||
Elements are added with ``add``:
|
|
||||||
|
|
||||||
.. code:: bro
|
.. code:: bro
|
||||||
|
|
||||||
|
@ -485,7 +491,7 @@ The Bro scripting language supports the following built-in types.
|
||||||
Nothing happens if the element with value ``22/tcp`` was already present in
|
Nothing happens if the element with value ``22/tcp`` was already present in
|
||||||
the set.
|
the set.
|
||||||
|
|
||||||
And removed with ``delete``:
|
And removed with :bro:keyword:`delete`:
|
||||||
|
|
||||||
.. code:: bro
|
.. code:: bro
|
||||||
|
|
||||||
|
@ -501,6 +507,9 @@ The Bro scripting language supports the following built-in types.
|
||||||
|
|
||||||
|s|
|
|s|
|
||||||
|
|
||||||
|
See the :bro:keyword:`for` statement for info on how to iterate over
|
||||||
|
the elements in a set.
|
||||||
|
|
||||||
.. bro:type:: vector
|
.. bro:type:: vector
|
||||||
|
|
||||||
A vector is like a :bro:type:`table`, except it's always indexed by a
|
A vector is like a :bro:type:`table`, except it's always indexed by a
|
||||||
|
@ -515,7 +524,7 @@ The Bro scripting language supports the following built-in types.
|
||||||
|
|
||||||
.. code:: bro
|
.. code:: bro
|
||||||
|
|
||||||
global v: vector of string = vector("one", "two", "three");
|
local v = vector("one", "two", "three");
|
||||||
|
|
||||||
Vector constructors can also be explicitly named by a type, which
|
Vector constructors can also be explicitly named by a type, which
|
||||||
is useful for when a more complex yield type could otherwise be
|
is useful for when a more complex yield type could otherwise be
|
||||||
|
@ -539,14 +548,6 @@ The Bro scripting language supports the following built-in types.
|
||||||
|
|
||||||
print v[2];
|
print v[2];
|
||||||
|
|
||||||
Iterate over a vector with a ``for`` loop:
|
|
||||||
|
|
||||||
.. code:: bro
|
|
||||||
|
|
||||||
local v: vector of string;
|
|
||||||
for ( n in v )
|
|
||||||
...
|
|
||||||
|
|
||||||
An element can be added to a vector by assigning the value (a value
|
An element can be added to a vector by assigning the value (a value
|
||||||
that already exists at that index will be overwritten):
|
that already exists at that index will be overwritten):
|
||||||
|
|
||||||
|
@ -577,11 +578,17 @@ The Bro scripting language supports the following built-in types.
|
||||||
The resulting vector of bool is the logical "and" (or logical "or") of
|
The resulting vector of bool is the logical "and" (or logical "or") of
|
||||||
each element of the operand vectors.
|
each element of the operand vectors.
|
||||||
|
|
||||||
|
See the :bro:keyword:`for` statement for info on how to iterate over
|
||||||
|
the elements in a vector.
|
||||||
|
|
||||||
.. bro:type:: record
|
.. bro:type:: record
|
||||||
|
|
||||||
A ``record`` is a collection of values. Each value has a field name
|
A "record" is a collection of values. Each value has a field name
|
||||||
and a type. Values do not need to have the same type and the types
|
and a type. Values do not need to have the same type and the types
|
||||||
have no restrictions. An example record type definition:
|
have no restrictions. Field names must follow the same syntax as
|
||||||
|
regular variable names (except that field names are allowed to be the
|
||||||
|
same as local or global variables). An example record type
|
||||||
|
definition:
|
||||||
|
|
||||||
.. code:: bro
|
.. code:: bro
|
||||||
|
|
||||||
|
@ -590,85 +597,44 @@ The Bro scripting language supports the following built-in types.
|
||||||
s: string &optional;
|
s: string &optional;
|
||||||
};
|
};
|
||||||
|
|
||||||
Access to a record field uses the dollar sign (``$``) operator:
|
Records can be initialized or assigned as a whole in three different ways.
|
||||||
|
|
||||||
.. code:: bro
|
|
||||||
|
|
||||||
global r: MyRecordType;
|
|
||||||
r$c = 13;
|
|
||||||
|
|
||||||
Record assignment can be done field by field or as a whole like:
|
|
||||||
|
|
||||||
.. code:: bro
|
|
||||||
|
|
||||||
r = [$c = 13, $s = "thirteen"];
|
|
||||||
|
|
||||||
When assigning a whole record value, all fields that are not
|
When assigning a whole record value, all fields that are not
|
||||||
:bro:attr:`&optional` or have a :bro:attr:`&default` attribute must
|
:bro:attr:`&optional` or have a :bro:attr:`&default` attribute must
|
||||||
be specified.
|
be specified. First, there's a constructor syntax:
|
||||||
|
|
||||||
To test for existence of a field that is :bro:attr:`&optional`, use the
|
|
||||||
``?$`` operator:
|
|
||||||
|
|
||||||
.. code:: bro
|
.. code:: bro
|
||||||
|
|
||||||
if ( r?$s )
|
local r: MyRecordType = record($c = 7);
|
||||||
...
|
|
||||||
|
|
||||||
Records can also be created using a constructor syntax:
|
|
||||||
|
|
||||||
.. code:: bro
|
|
||||||
|
|
||||||
global r2: MyRecordType = record($c = 7);
|
|
||||||
|
|
||||||
And the constructor can be explicitly named by type, too, which
|
And the constructor can be explicitly named by type, too, which
|
||||||
is arguably more readable code:
|
is arguably more readable:
|
||||||
|
|
||||||
.. code:: bro
|
.. code:: bro
|
||||||
|
|
||||||
global r3 = MyRecordType($c = 42);
|
local r = MyRecordType($c = 42);
|
||||||
|
|
||||||
.. bro:type:: opaque
|
And the third way is like this:
|
||||||
|
|
||||||
A data type whose actual representation/implementation is
|
|
||||||
intentionally hidden, but whose values may be passed to certain
|
|
||||||
functions that can actually access the internal/hidden resources.
|
|
||||||
Opaque types are differentiated from each other by qualifying them
|
|
||||||
like ``opaque of md5`` or ``opaque of sha1``. Any valid identifier
|
|
||||||
can be used as the type qualifier.
|
|
||||||
|
|
||||||
An example use of this type is the set of built-in functions which
|
|
||||||
perform hashing:
|
|
||||||
|
|
||||||
.. code:: bro
|
.. code:: bro
|
||||||
|
|
||||||
local handle: opaque of md5 = md5_hash_init();
|
local r: MyRecordType = [$c = 13, $s = "thirteen"];
|
||||||
md5_hash_update(handle, "test");
|
|
||||||
md5_hash_update(handle, "testing");
|
|
||||||
print md5_hash_finish(handle);
|
|
||||||
|
|
||||||
Here the opaque type is used to provide a handle to a particular
|
Access to a record field uses the dollar sign (``$``) operator, and
|
||||||
resource which is calculating an MD5 checksum incrementally over
|
record fields can be assigned with this:
|
||||||
time, but the details of that resource aren't relevant, it's only
|
|
||||||
necessary to have a handle as a way of identifying it and
|
|
||||||
distinguishing it from other such resources.
|
|
||||||
|
|
||||||
.. bro:type:: file
|
|
||||||
|
|
||||||
Bro supports writing to files, but not reading from them. Files
|
|
||||||
can be opened using either the :bro:id:`open` or :bro:id:`open_for_append`
|
|
||||||
built-in functions, and closed using the :bro:id:`close` built-in
|
|
||||||
function. For example, declare, open, and write to a file
|
|
||||||
and finally close it like:
|
|
||||||
|
|
||||||
.. code:: bro
|
.. code:: bro
|
||||||
|
|
||||||
global f: file = open("myfile");
|
local r: MyRecordType;
|
||||||
print f, "hello, world";
|
r$c = 13;
|
||||||
close(f);
|
|
||||||
|
|
||||||
Writing to files like this for logging usually isn't recommended, for better
|
To test if a field that is :bro:attr:`&optional` has been assigned a
|
||||||
logging support see :doc:`/frameworks/logging`.
|
value, use the ``?$`` operator (it returns a :bro:type:`bool` value of
|
||||||
|
``T`` if the field has been assigned a value, or ``F`` if not):
|
||||||
|
|
||||||
|
.. code:: bro
|
||||||
|
|
||||||
|
if ( r ?$ s )
|
||||||
|
...
|
||||||
|
|
||||||
.. bro:type:: function
|
.. bro:type:: function
|
||||||
|
|
||||||
|
@ -700,6 +666,16 @@ The Bro scripting language supports the following built-in types.
|
||||||
type, but when it is, the return type and argument list (including the
|
type, but when it is, the return type and argument list (including the
|
||||||
name of each argument) must match exactly.
|
name of each argument) must match exactly.
|
||||||
|
|
||||||
|
Here is an example function that takes no parameters and does not
|
||||||
|
return a value:
|
||||||
|
|
||||||
|
.. code:: bro
|
||||||
|
|
||||||
|
function my_func()
|
||||||
|
{
|
||||||
|
print "my_func";
|
||||||
|
}
|
||||||
|
|
||||||
Function types don't need to have a name and can be assigned anonymously:
|
Function types don't need to have a name and can be assigned anonymously:
|
||||||
|
|
||||||
.. code:: bro
|
.. code:: bro
|
||||||
|
@ -742,9 +718,20 @@ The Bro scripting language supports the following built-in types.
|
||||||
Event handlers are nearly identical in both syntax and semantics to
|
Event handlers are nearly identical in both syntax and semantics to
|
||||||
a :bro:type:`function`, with the two differences being that event
|
a :bro:type:`function`, with the two differences being that event
|
||||||
handlers have no return type since they never return a value, and
|
handlers have no return type since they never return a value, and
|
||||||
you cannot call an event handler. Instead of directly calling an
|
you cannot call an event handler.
|
||||||
event handler from a script, event handler bodies are executed when
|
|
||||||
they are invoked by one of three different methods:
|
Example:
|
||||||
|
|
||||||
|
.. code:: bro
|
||||||
|
|
||||||
|
event my_event(r: bool, s: string)
|
||||||
|
{
|
||||||
|
print "my_event", r, s;
|
||||||
|
}
|
||||||
|
|
||||||
|
Instead of directly calling an event handler from a script, event
|
||||||
|
handler bodies are executed when they are invoked by one of three
|
||||||
|
different methods:
|
||||||
|
|
||||||
- From the event engine
|
- From the event engine
|
||||||
|
|
||||||
|
@ -765,7 +752,7 @@ The Bro scripting language supports the following built-in types.
|
||||||
This assumes that ``password_exposed`` was previously declared
|
This assumes that ``password_exposed`` was previously declared
|
||||||
as an event handler type with compatible arguments.
|
as an event handler type with compatible arguments.
|
||||||
|
|
||||||
- Via the ``schedule`` expression in a script
|
- Via the :bro:keyword:`schedule` expression in a script
|
||||||
|
|
||||||
This delays the invocation of event handlers until some time in
|
This delays the invocation of event handlers until some time in
|
||||||
the future. For example:
|
the future. For example:
|
||||||
|
@ -789,8 +776,8 @@ The Bro scripting language supports the following built-in types.
|
||||||
immediate and they do not get scheduled through an event queue.
|
immediate and they do not get scheduled through an event queue.
|
||||||
Also, a unique feature of a hook is that a given hook handler body
|
Also, a unique feature of a hook is that a given hook handler body
|
||||||
can short-circuit the execution of remaining hook handlers simply by
|
can short-circuit the execution of remaining hook handlers simply by
|
||||||
exiting from the body as a result of a ``break`` statement (as
|
exiting from the body as a result of a :bro:keyword:`break` statement (as
|
||||||
opposed to a ``return`` or just reaching the end of the body).
|
opposed to a :bro:keyword:`return` or just reaching the end of the body).
|
||||||
|
|
||||||
A hook type is declared like::
|
A hook type is declared like::
|
||||||
|
|
||||||
|
@ -859,142 +846,60 @@ The Bro scripting language supports the following built-in types.
|
||||||
executed due to one handler body exiting as a result of a ``break``
|
executed due to one handler body exiting as a result of a ``break``
|
||||||
statement.
|
statement.
|
||||||
|
|
||||||
Attributes
|
.. bro:type:: file
|
||||||
----------
|
|
||||||
|
|
||||||
Attributes occur at the end of type/event declarations and change their
|
Bro supports writing to files, but not reading from them (to read from
|
||||||
behavior. The syntax is ``&key`` or ``&key=val``, e.g., ``type T:
|
files see the :doc:`/frameworks/input`). Files
|
||||||
set[count] &read_expire=5min`` or ``event foo() &priority=-3``. The Bro
|
can be opened using either the :bro:id:`open` or :bro:id:`open_for_append`
|
||||||
scripting language supports the following built-in attributes.
|
built-in functions, and closed using the :bro:id:`close` built-in
|
||||||
|
function. For example, declare, open, and write to a file and finally
|
||||||
|
close it like:
|
||||||
|
|
||||||
.. bro:attr:: &optional
|
.. code:: bro
|
||||||
|
|
||||||
Allows a record field to be missing. For example the type ``record {
|
local f = open("myfile");
|
||||||
a: addr; b: port &optional; }`` could be instantiated both as
|
print f, "hello, world";
|
||||||
singleton ``[$a=127.0.0.1]`` or pair ``[$a=127.0.0.1, $b=80/tcp]``.
|
close(f);
|
||||||
|
|
||||||
.. bro:attr:: &default
|
Writing to files like this for logging usually isn't recommended, for better
|
||||||
|
logging support see :doc:`/frameworks/logging`.
|
||||||
|
|
||||||
Uses a default value for a record field, a function/hook/event
|
.. bro:type:: opaque
|
||||||
parameter, or container elements. For example, ``table[int] of
|
|
||||||
string &default="foo"`` would create a table that returns the
|
|
||||||
:bro:type:`string` ``"foo"`` for any non-existing index.
|
|
||||||
|
|
||||||
.. bro:attr:: &redef
|
A data type whose actual representation/implementation is
|
||||||
|
intentionally hidden, but whose values may be passed to certain
|
||||||
|
built-in functions that can actually access the internal/hidden resources.
|
||||||
|
Opaque types are differentiated from each other by qualifying them
|
||||||
|
like "opaque of md5" or "opaque of sha1".
|
||||||
|
|
||||||
Allows for redefinition of initial object values. This is typically
|
An example use of this type is the set of built-in functions which
|
||||||
used with constants, for example, ``const clever = T &redef;`` would
|
perform hashing:
|
||||||
allow the constant to be redefined at some later point during script
|
|
||||||
execution.
|
|
||||||
|
|
||||||
.. bro:attr:: &rotate_interval
|
.. code:: bro
|
||||||
|
|
||||||
Rotates a file after a specified interval.
|
local handle = md5_hash_init();
|
||||||
|
md5_hash_update(handle, "test");
|
||||||
|
md5_hash_update(handle, "testing");
|
||||||
|
print md5_hash_finish(handle);
|
||||||
|
|
||||||
.. bro:attr:: &rotate_size
|
Here the opaque type is used to provide a handle to a particular
|
||||||
|
resource which is calculating an MD5 hash incrementally over
|
||||||
|
time, but the details of that resource aren't relevant, it's only
|
||||||
|
necessary to have a handle as a way of identifying it and
|
||||||
|
distinguishing it from other such resources.
|
||||||
|
|
||||||
Rotates a file after it has reached a given size in bytes.
|
.. bro:type:: any
|
||||||
|
|
||||||
.. bro:attr:: &add_func
|
Used to bypass strong typing. For example, a function can take an
|
||||||
|
argument of type ``any`` when it may be of different types.
|
||||||
|
The only operation allowed on a variable of type ``any`` is assignment.
|
||||||
|
|
||||||
Can be applied to an identifier with &redef to specify a function to
|
Note that users aren't expected to use this type. It's provided mainly
|
||||||
be called any time a "redef <id> += ..." declaration is parsed. The
|
for use by some built-in functions and scripts included with Bro.
|
||||||
function takes two arguments of the same type as the identifier, the first
|
|
||||||
being the old value of the variable and the second being the new
|
|
||||||
value given after the "+=" operator in the "redef" declaration. The
|
|
||||||
return value of the function will be the actual new value of the
|
|
||||||
variable after the "redef" declaration is parsed.
|
|
||||||
|
|
||||||
.. bro:attr:: &delete_func
|
.. bro:type:: void
|
||||||
|
|
||||||
Same as &add_func, except for "redef" declarations that use the "-="
|
An internal Bro type (i.e., "void" is not a reserved keyword in the Bro
|
||||||
operator.
|
scripting language) representing the absence of a return type for a
|
||||||
|
function.
|
||||||
|
|
||||||
.. bro:attr:: &expire_func
|
|
||||||
|
|
||||||
Called right before a container element expires. The function's
|
|
||||||
first parameter is of the same type of the container and the second
|
|
||||||
parameter the same type of the container's index. The return
|
|
||||||
value is an :bro:type:`interval` indicating the amount of additional
|
|
||||||
time to wait before expiring the container element at the given
|
|
||||||
index (which will trigger another execution of this function).
|
|
||||||
|
|
||||||
.. bro:attr:: &read_expire
|
|
||||||
|
|
||||||
Specifies a read expiration timeout for container elements. That is,
|
|
||||||
the element expires after the given amount of time since the last
|
|
||||||
time it has been read. Note that a write also counts as a read.
|
|
||||||
|
|
||||||
.. bro:attr:: &write_expire
|
|
||||||
|
|
||||||
Specifies a write expiration timeout for container elements. That
|
|
||||||
is, the element expires after the given amount of time since the
|
|
||||||
last time it has been written.
|
|
||||||
|
|
||||||
.. bro:attr:: &create_expire
|
|
||||||
|
|
||||||
Specifies a creation expiration timeout for container elements. That
|
|
||||||
is, the element expires after the given amount of time since it has
|
|
||||||
been inserted into the container, regardless of any reads or writes.
|
|
||||||
|
|
||||||
.. bro:attr:: &persistent
|
|
||||||
|
|
||||||
Makes a variable persistent, i.e., its value is written to disk (per
|
|
||||||
default at shutdown time).
|
|
||||||
|
|
||||||
.. bro:attr:: &synchronized
|
|
||||||
|
|
||||||
Synchronizes variable accesses across nodes. The value of a
|
|
||||||
``&synchronized`` variable is automatically propagated to all peers
|
|
||||||
when it changes.
|
|
||||||
|
|
||||||
.. bro:attr:: &encrypt
|
|
||||||
|
|
||||||
Encrypts files right before writing them to disk.
|
|
||||||
|
|
||||||
.. TODO: needs to be documented in more detail.
|
|
||||||
|
|
||||||
.. bro:attr:: &raw_output
|
|
||||||
|
|
||||||
Opens a file in raw mode, i.e., non-ASCII characters are not
|
|
||||||
escaped.
|
|
||||||
|
|
||||||
.. bro:attr:: &mergeable
|
|
||||||
|
|
||||||
Prefers set union to assignment for synchronized state. This
|
|
||||||
attribute is used in conjunction with :bro:attr:`&synchronized`
|
|
||||||
container types: when the same container is updated at two peers
|
|
||||||
with different value, the propagation of the state causes a race
|
|
||||||
condition, where the last update succeeds. This can cause
|
|
||||||
inconsistencies and can be avoided by unifying the two sets, rather
|
|
||||||
than merely overwriting the old value.
|
|
||||||
|
|
||||||
.. bro:attr:: &priority
|
|
||||||
|
|
||||||
Specifies the execution priority (as a signed integer) of a hook or
|
|
||||||
event handler. Higher values are executed before lower ones. The
|
|
||||||
default value is 0.
|
|
||||||
|
|
||||||
.. bro:attr:: &group
|
|
||||||
|
|
||||||
Groups event handlers such that those in the same group can be
|
|
||||||
jointly activated or deactivated.
|
|
||||||
|
|
||||||
.. bro:attr:: &log
|
|
||||||
|
|
||||||
Writes a record field to the associated log stream.
|
|
||||||
|
|
||||||
.. bro:attr:: &error_handler
|
|
||||||
|
|
||||||
Internally set on the events that are associated with the reporter
|
|
||||||
framework: :bro:id:`reporter_info`, :bro:id:`reporter_warning`, and
|
|
||||||
:bro:id:`reporter_error`. It prevents any handlers of those events
|
|
||||||
from being able to generate reporter messages that go through any of
|
|
||||||
those events (i.e., it prevents an infinite event recursion). Instead,
|
|
||||||
such nested reporter messages are output to stderr.
|
|
||||||
|
|
||||||
.. bro:attr:: &type_column
|
|
||||||
|
|
||||||
Used by the input framework. It can be used on columns of type
|
|
||||||
:bro:type:`port` and specifies the name of an additional column in
|
|
||||||
the input file which specifies the protocol of the port (tcp/udp/icmp).
|
|
|
@ -10,6 +10,6 @@ event bro_init()
|
||||||
|
|
||||||
print fmt("contents of v1: %s", v1);
|
print fmt("contents of v1: %s", v1);
|
||||||
print fmt("length of v1: %d", |v1|);
|
print fmt("length of v1: %d", |v1|);
|
||||||
print fmt("contents of v1: %s", v2);
|
print fmt("contents of v2: %s", v2);
|
||||||
print fmt("length of v2: %d", |v2|);
|
print fmt("length of v2: %d", |v2|);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
event bro_init()
|
event bro_init()
|
||||||
{
|
{
|
||||||
local test_string = "The quick brown fox jumped over the lazy dog.";
|
local test_string = "The quick brown fox jumps over the lazy dog.";
|
||||||
local test_pattern = /quick|lazy/;
|
local test_pattern = /quick|lazy/;
|
||||||
|
|
||||||
if ( test_pattern in test_string )
|
if ( test_pattern in test_string )
|
||||||
|
|
|
@ -260,7 +260,7 @@ originating host is referenced by ``c$id$orig_h`` which if given a
|
||||||
narrative relates to ``orig_h`` which is a member of ``id`` which is
|
narrative relates to ``orig_h`` which is a member of ``id`` which is
|
||||||
a member of the data structure referred to as ``c`` that was passed
|
a member of the data structure referred to as ``c`` that was passed
|
||||||
into the event handler. Given that the responder port
|
into the event handler. Given that the responder port
|
||||||
``c$id$resp_p`` is ``53/tcp``, it's likely that Bro's base HTTP scripts
|
``c$id$resp_p`` is ``80/tcp``, it's likely that Bro's base HTTP scripts
|
||||||
can further populate the connection record. Let's load the
|
can further populate the connection record. Let's load the
|
||||||
``base/protocols/http`` scripts and check the output of our script.
|
``base/protocols/http`` scripts and check the output of our script.
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@ the 'dpkg-dev' package, please install it first.
|
||||||
}
|
}
|
||||||
|
|
||||||
prefix=/opt/bro
|
prefix=/opt/bro
|
||||||
|
localstatedir=/var/opt/bro
|
||||||
|
|
||||||
# During the packaging process, `dpkg-shlibs` will fail if used on a library
|
# During the packaging process, `dpkg-shlibs` will fail if used on a library
|
||||||
# that links to other internal/project libraries unless an RPATH is used or
|
# that links to other internal/project libraries unless an RPATH is used or
|
||||||
|
@ -31,7 +32,7 @@ cd ..
|
||||||
( cd build && make package )
|
( cd build && make package )
|
||||||
|
|
||||||
# Full Bro package
|
# Full Bro package
|
||||||
./configure --prefix=${prefix} --pkg-name-prefix=Bro --binary-package
|
./configure --prefix=${prefix} --localstatedir=${localstatedir} --pkg-name-prefix=Bro --binary-package
|
||||||
( cd build && make package )
|
( cd build && make package )
|
||||||
|
|
||||||
# Broccoli
|
# Broccoli
|
||||||
|
@ -42,6 +43,6 @@ cd ../..
|
||||||
|
|
||||||
# Broctl
|
# Broctl
|
||||||
cd aux/broctl
|
cd aux/broctl
|
||||||
./configure --prefix=${prefix} --binary-package
|
./configure --prefix=${prefix} --localstatedir=${localstatedir} --binary-package
|
||||||
( cd build && make package && mv *.deb ../../../build/ )
|
( cd build && make package && mv *.deb ../../../build/ )
|
||||||
cd ../..
|
cd ../..
|
||||||
|
|
|
@ -15,6 +15,7 @@ the 'rpm-build' package, please install it first.
|
||||||
}
|
}
|
||||||
|
|
||||||
prefix=/opt/bro
|
prefix=/opt/bro
|
||||||
|
localstatedir=/var/opt/bro
|
||||||
|
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
|
@ -24,7 +25,7 @@ cd ..
|
||||||
( cd build && make package )
|
( cd build && make package )
|
||||||
|
|
||||||
# Full Bro package
|
# Full Bro package
|
||||||
./configure --prefix=${prefix} --pkg-name-prefix=Bro --binary-package
|
./configure --prefix=${prefix} --localstatedir=${localstatedir} --pkg-name-prefix=Bro --binary-package
|
||||||
( cd build && make package )
|
( cd build && make package )
|
||||||
|
|
||||||
# Broccoli
|
# Broccoli
|
||||||
|
@ -35,6 +36,6 @@ cd ../..
|
||||||
|
|
||||||
# Broctl
|
# Broctl
|
||||||
cd aux/broctl
|
cd aux/broctl
|
||||||
./configure --prefix=${prefix} --binary-package
|
./configure --prefix=${prefix} --localstatedir=${localstatedir} --binary-package
|
||||||
( cd build && make package && mv *.rpm ../../../build/ )
|
( cd build && make package && mv *.rpm ../../../build/ )
|
||||||
cd ../..
|
cd ../..
|
||||||
|
|
|
@ -9,3 +9,8 @@ signature file-tar {
|
||||||
file-magic /([[:print:]\x00]){100}(([[:digit:]\x00\x20]){8}){3}/
|
file-magic /([[:print:]\x00]){100}(([[:digit:]\x00\x20]){8}){3}/
|
||||||
file-mime "application/x-tar", 150
|
file-mime "application/x-tar", 150
|
||||||
}
|
}
|
||||||
|
|
||||||
|
signature file-swf {
|
||||||
|
file-magic /(F|C|Z)WS/
|
||||||
|
file-mime "application/x-shockwave-flash", 60
|
||||||
|
}
|
|
@ -2769,19 +2769,6 @@ signature file-magic-auto408 {
|
||||||
file-magic /(.{512})(\xec\xa5\xc1)/
|
file-magic /(.{512})(\xec\xa5\xc1)/
|
||||||
}
|
}
|
||||||
|
|
||||||
# >0 string,=FWS (len=3), ["Macromedia Flash data,"], swap_endian=0
|
|
||||||
# >>3 byte&,x, ["version %d"], swap_endian=0
|
|
||||||
signature file-magic-auto409 {
|
|
||||||
file-mime "application/x-shockwave-flash", 1
|
|
||||||
file-magic /(FWS)(.{1})/
|
|
||||||
}
|
|
||||||
|
|
||||||
# >0 string,=CWS (len=3), ["Macromedia Flash data (compressed),"], swap_endian=0
|
|
||||||
signature file-magic-auto410 {
|
|
||||||
file-mime "application/x-shockwave-flash", 60
|
|
||||||
file-magic /(CWS)/
|
|
||||||
}
|
|
||||||
|
|
||||||
# >0 regex/20,=^\.[A-Za-z0-9][A-Za-z0-9][ \t] (len=29), ["troff or preprocessor input text"], swap_endian=0
|
# >0 regex/20,=^\.[A-Za-z0-9][A-Za-z0-9][ \t] (len=29), ["troff or preprocessor input text"], swap_endian=0
|
||||||
signature file-magic-auto411 {
|
signature file-magic-auto411 {
|
||||||
file-mime "text/troff", 59
|
file-mime "text/troff", 59
|
||||||
|
|
|
@ -30,6 +30,7 @@ export {
|
||||||
const HELLO_REQUEST = 0;
|
const HELLO_REQUEST = 0;
|
||||||
const CLIENT_HELLO = 1;
|
const CLIENT_HELLO = 1;
|
||||||
const SERVER_HELLO = 2;
|
const SERVER_HELLO = 2;
|
||||||
|
const HELLO_VERIFY_REQUEST = 3; # RFC 6347
|
||||||
const SESSION_TICKET = 4; # RFC 5077
|
const SESSION_TICKET = 4; # RFC 5077
|
||||||
const CERTIFICATE = 11;
|
const CERTIFICATE = 11;
|
||||||
const SERVER_KEY_EXCHANGE = 12;
|
const SERVER_KEY_EXCHANGE = 12;
|
||||||
|
@ -40,6 +41,7 @@ export {
|
||||||
const FINISHED = 20;
|
const FINISHED = 20;
|
||||||
const CERTIFICATE_URL = 21; # RFC 3546
|
const CERTIFICATE_URL = 21; # RFC 3546
|
||||||
const CERTIFICATE_STATUS = 22; # RFC 3546
|
const CERTIFICATE_STATUS = 22; # RFC 3546
|
||||||
|
const SUPPLEMENTAL_DATA = 23; # RFC 4680
|
||||||
|
|
||||||
## Mapping between numeric codes and human readable strings for alert
|
## Mapping between numeric codes and human readable strings for alert
|
||||||
## levels.
|
## levels.
|
||||||
|
@ -112,7 +114,8 @@ export {
|
||||||
[19] = "client_certificate_type",
|
[19] = "client_certificate_type",
|
||||||
[20] = "server_certificate_type",
|
[20] = "server_certificate_type",
|
||||||
[21] = "padding", # temporary till 2015-03-12
|
[21] = "padding", # temporary till 2015-03-12
|
||||||
[22] = "encrypt_then_mac", # temporary till 2015-06-05
|
[22] = "encrypt_then_mac",
|
||||||
|
[23] = "extended_master_secret", # temporary till 2015-09-26
|
||||||
[35] = "SessionTicket TLS",
|
[35] = "SessionTicket TLS",
|
||||||
[40] = "extended_random",
|
[40] = "extended_random",
|
||||||
[13172] = "next_protocol_negotiation",
|
[13172] = "next_protocol_negotiation",
|
||||||
|
@ -155,6 +158,12 @@ export {
|
||||||
[26] = "brainpoolP256r1",
|
[26] = "brainpoolP256r1",
|
||||||
[27] = "brainpoolP384r1",
|
[27] = "brainpoolP384r1",
|
||||||
[28] = "brainpoolP512r1",
|
[28] = "brainpoolP512r1",
|
||||||
|
# draft-ietf-tls-negotiated-ff-dhe-02
|
||||||
|
[256] = "ffdhe2432",
|
||||||
|
[257] = "ffdhe3072",
|
||||||
|
[258] = "ffdhe4096",
|
||||||
|
[259] = "ffdhe6144",
|
||||||
|
[260] = "ffdhe8192",
|
||||||
[0xFF01] = "arbitrary_explicit_prime_curves",
|
[0xFF01] = "arbitrary_explicit_prime_curves",
|
||||||
[0xFF02] = "arbitrary_explicit_char2_curves"
|
[0xFF02] = "arbitrary_explicit_char2_curves"
|
||||||
} &default=function(i: count):string { return fmt("unknown-%d", i); };
|
} &default=function(i: count):string { return fmt("unknown-%d", i); };
|
||||||
|
|
|
@ -12,7 +12,7 @@ export {
|
||||||
## Time when the SSL connection was first detected.
|
## Time when the SSL connection was first detected.
|
||||||
ts: time &log;
|
ts: time &log;
|
||||||
## Unique ID for the connection.
|
## Unique ID for the connection.
|
||||||
uid: string &log;
|
uid: string &log;
|
||||||
## The connection's 4-tuple of endpoint addresses/ports.
|
## The connection's 4-tuple of endpoint addresses/ports.
|
||||||
id: conn_id &log;
|
id: conn_id &log;
|
||||||
## SSL/TLS version that the server offered.
|
## SSL/TLS version that the server offered.
|
||||||
|
@ -25,9 +25,25 @@ export {
|
||||||
## indicates the server name that the client was requesting.
|
## indicates the server name that the client was requesting.
|
||||||
server_name: string &log &optional;
|
server_name: string &log &optional;
|
||||||
## Session ID offered by the client for session resumption.
|
## Session ID offered by the client for session resumption.
|
||||||
session_id: string &log &optional;
|
## Not used for logging.
|
||||||
|
session_id: string &optional;
|
||||||
|
## Flag to indicate if the session was resumed reusing
|
||||||
|
## the key material exchanged in an earlier connection.
|
||||||
|
resumed: bool &log &default=F;
|
||||||
|
## Flag to indicate if we saw a non-empty session ticket being
|
||||||
|
## sent by the client using an empty session ID. This value
|
||||||
|
## is used to determine if a session is being resumed. It's
|
||||||
|
## not logged.
|
||||||
|
client_ticket_empty_session_seen: bool &default=F;
|
||||||
|
## Flag to indicate if we saw a client key exchange message sent
|
||||||
|
## by the client. This value is used to determine if a session
|
||||||
|
## is being resumed. It's not logged.
|
||||||
|
client_key_exchange_seen: bool &default=F;
|
||||||
## Last alert that was seen during the connection.
|
## Last alert that was seen during the connection.
|
||||||
last_alert: string &log &optional;
|
last_alert: string &log &optional;
|
||||||
|
## Next protocol the server chose using the application layer
|
||||||
|
## next protocol extension, if present.
|
||||||
|
next_protocol: string &log &optional;
|
||||||
|
|
||||||
## The analyzer ID used for the analyzer instance attached
|
## The analyzer ID used for the analyzer instance attached
|
||||||
## to each connection. It is not used for logging since it's a
|
## to each connection. It is not used for logging since it's a
|
||||||
|
@ -36,11 +52,11 @@ export {
|
||||||
|
|
||||||
## Flag to indicate if this ssl session has been established
|
## Flag to indicate if this ssl session has been established
|
||||||
## succesfully, or if it was aborted during the handshake.
|
## succesfully, or if it was aborted during the handshake.
|
||||||
established: bool &log &default=F;
|
established: bool &log &default=F;
|
||||||
|
|
||||||
## Flag to indicate if this record already has been logged, to
|
## Flag to indicate if this record already has been logged, to
|
||||||
## prevent duplicates.
|
## prevent duplicates.
|
||||||
logged: bool &default=F;
|
logged: bool &default=F;
|
||||||
};
|
};
|
||||||
|
|
||||||
## The default root CA bundle. By default, the mozilla-ca-list.bro
|
## The default root CA bundle. By default, the mozilla-ca-list.bro
|
||||||
|
@ -149,8 +165,11 @@ event ssl_client_hello(c: connection, version: count, possible_ts: time, client_
|
||||||
set_session(c);
|
set_session(c);
|
||||||
|
|
||||||
# Save the session_id if there is one set.
|
# Save the session_id if there is one set.
|
||||||
if ( session_id != /^\x00{32}$/ )
|
if ( |session_id| > 0 && session_id != /^\x00{32}$/ )
|
||||||
|
{
|
||||||
c$ssl$session_id = bytestring_to_hexstr(session_id);
|
c$ssl$session_id = bytestring_to_hexstr(session_id);
|
||||||
|
c$ssl$client_ticket_empty_session_seen = F;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
event ssl_server_hello(c: connection, version: count, possible_ts: time, server_random: string, session_id: string, cipher: count, comp_method: count) &priority=5
|
event ssl_server_hello(c: connection, version: count, possible_ts: time, server_random: string, session_id: string, cipher: count, comp_method: count) &priority=5
|
||||||
|
@ -159,6 +178,9 @@ event ssl_server_hello(c: connection, version: count, possible_ts: time, server_
|
||||||
|
|
||||||
c$ssl$version = version_strings[version];
|
c$ssl$version = version_strings[version];
|
||||||
c$ssl$cipher = cipher_desc[cipher];
|
c$ssl$cipher = cipher_desc[cipher];
|
||||||
|
|
||||||
|
if ( c$ssl?$session_id && c$ssl$session_id == bytestring_to_hexstr(session_id) )
|
||||||
|
c$ssl$resumed = T;
|
||||||
}
|
}
|
||||||
|
|
||||||
event ssl_server_curve(c: connection, curve: count) &priority=5
|
event ssl_server_curve(c: connection, curve: count) &priority=5
|
||||||
|
@ -180,6 +202,45 @@ event ssl_extension_server_name(c: connection, is_orig: bool, names: string_vec)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
event ssl_extension_application_layer_protocol_negotiation(c: connection, is_orig: bool, protocols: string_vec)
|
||||||
|
{
|
||||||
|
set_session(c);
|
||||||
|
|
||||||
|
if ( is_orig )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ( |protocols| > 0 )
|
||||||
|
c$ssl$next_protocol = protocols[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
event ssl_handshake_message(c: connection, is_orig: bool, msg_type: count, length: count) &priority=5
|
||||||
|
{
|
||||||
|
set_session(c);
|
||||||
|
|
||||||
|
if ( is_orig && msg_type == SSL::CLIENT_KEY_EXCHANGE )
|
||||||
|
c$ssl$client_key_exchange_seen = T;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Extension event is fired _before_ the respective client or server hello.
|
||||||
|
# Important for client_ticket_empty_session_seen.
|
||||||
|
event ssl_extension(c: connection, is_orig: bool, code: count, val: string) &priority=5
|
||||||
|
{
|
||||||
|
set_session(c);
|
||||||
|
|
||||||
|
if ( is_orig && SSL::extensions[code] == "SessionTicket TLS" && |val| > 0 )
|
||||||
|
# In this case, we might have an empty ID. Set back to F in client_hello event
|
||||||
|
# if it is not empty after all.
|
||||||
|
c$ssl$client_ticket_empty_session_seen = T;
|
||||||
|
}
|
||||||
|
|
||||||
|
event ssl_change_cipher_spec(c: connection, is_orig: bool) &priority=5
|
||||||
|
{
|
||||||
|
set_session(c);
|
||||||
|
|
||||||
|
if ( is_orig && c$ssl$client_ticket_empty_session_seen && ! c$ssl$client_key_exchange_seen )
|
||||||
|
c$ssl$resumed = T;
|
||||||
|
}
|
||||||
|
|
||||||
event ssl_alert(c: connection, is_orig: bool, level: count, desc: count) &priority=5
|
event ssl_alert(c: connection, is_orig: bool, level: count, desc: count) &priority=5
|
||||||
{
|
{
|
||||||
set_session(c);
|
set_session(c);
|
||||||
|
|
|
@ -65,12 +65,14 @@ function request2curl(r: Request, bodyfile: string, headersfile: string): string
|
||||||
cmd = fmt("%s -m %.0f", cmd, r$max_time);
|
cmd = fmt("%s -m %.0f", cmd, r$max_time);
|
||||||
|
|
||||||
if ( r?$client_data )
|
if ( r?$client_data )
|
||||||
cmd = fmt("%s -d -", cmd);
|
cmd = fmt("%s -d @-", cmd);
|
||||||
|
|
||||||
if ( r?$addl_curl_args )
|
if ( r?$addl_curl_args )
|
||||||
cmd = fmt("%s %s", cmd, r$addl_curl_args);
|
cmd = fmt("%s %s", cmd, r$addl_curl_args);
|
||||||
|
|
||||||
cmd = fmt("%s \"%s\"", cmd, str_shell_escape(r$url));
|
cmd = fmt("%s \"%s\"", cmd, str_shell_escape(r$url));
|
||||||
|
# Make sure file will exist even if curl did not write one.
|
||||||
|
cmd = fmt("%s && touch %s", cmd, str_shell_escape(bodyfile));
|
||||||
return cmd;
|
return cmd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -106,6 +106,15 @@ event Input::end_of_data(name: string, source:string)
|
||||||
|
|
||||||
local track_file = parts[2];
|
local track_file = parts[2];
|
||||||
|
|
||||||
|
# If the file is empty, still add it to the result$files table. This is needed
|
||||||
|
# because it is expected that the file was read even if it was empty.
|
||||||
|
local result = results[name];
|
||||||
|
if ( ! result?$files )
|
||||||
|
result$files = table();
|
||||||
|
|
||||||
|
if ( track_file !in result$files )
|
||||||
|
result$files[track_file] = vector();
|
||||||
|
|
||||||
Input::remove(name);
|
Input::remove(name);
|
||||||
|
|
||||||
if ( name !in pending_files )
|
if ( name !in pending_files )
|
||||||
|
|
|
@ -22,7 +22,7 @@ export {
|
||||||
|
|
||||||
## The minimal key length in bits that is considered to be safe. Any shorter
|
## The minimal key length in bits that is considered to be safe. Any shorter
|
||||||
## (non-EC) key lengths will trigger the notice.
|
## (non-EC) key lengths will trigger the notice.
|
||||||
const notify_minimal_key_length = 1024 &redef;
|
const notify_minimal_key_length = 2048 &redef;
|
||||||
|
|
||||||
## Warn if the DH key length is smaller than the certificate key length. This is
|
## Warn if the DH key length is smaller than the certificate key length. This is
|
||||||
## potentially unsafe because it gives a wrong impression of safety due to the
|
## potentially unsafe because it gives a wrong impression of safety due to the
|
||||||
|
@ -56,7 +56,7 @@ event ssl_established(c: connection) &priority=3
|
||||||
NOTICE([$note=Weak_Key,
|
NOTICE([$note=Weak_Key,
|
||||||
$msg=fmt("Host uses weak certificate with %d bit key", key_length),
|
$msg=fmt("Host uses weak certificate with %d bit key", key_length),
|
||||||
$conn=c, $suppress_for=1day,
|
$conn=c, $suppress_for=1day,
|
||||||
$identifier=cat(c$id$orig_h, c$id$orig_p, key_length)
|
$identifier=cat(c$id$resp_h, c$id$resp_h, key_length)
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ event ssl_dh_server_params(c: connection, p: string, q: string, Ys: string) &pri
|
||||||
NOTICE([$note=Weak_Key,
|
NOTICE([$note=Weak_Key,
|
||||||
$msg=fmt("Host uses weak DH parameters with %d key bits", key_length),
|
$msg=fmt("Host uses weak DH parameters with %d key bits", key_length),
|
||||||
$conn=c, $suppress_for=1day,
|
$conn=c, $suppress_for=1day,
|
||||||
$identifier=cat(c$id$orig_h, c$id$orig_p, key_length)
|
$identifier=cat(c$id$resp_h, c$id$resp_p, key_length)
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if ( notify_dh_length_shorter_cert_length &&
|
if ( notify_dh_length_shorter_cert_length &&
|
||||||
|
@ -86,7 +86,7 @@ event ssl_dh_server_params(c: connection, p: string, q: string, Ys: string) &pri
|
||||||
$msg=fmt("DH key length of %d bits is smaller certificate key length of %d bits",
|
$msg=fmt("DH key length of %d bits is smaller certificate key length of %d bits",
|
||||||
key_length, c$ssl$cert_chain[0]$x509$certificate$key_length),
|
key_length, c$ssl$cert_chain[0]$x509$certificate$key_length),
|
||||||
$conn=c, $suppress_for=1day,
|
$conn=c, $suppress_for=1day,
|
||||||
$identifier=cat(c$id$orig_h, c$id$orig_p)
|
$identifier=cat(c$id$resp_h, c$id$resp_p)
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -96,7 +96,7 @@ bool Brofiler::WriteStats()
|
||||||
map<pair<string, string>, uint64 >::const_iterator it;
|
map<pair<string, string>, uint64 >::const_iterator it;
|
||||||
for ( it = usage_map.begin(); it != usage_map.end(); ++it )
|
for ( it = usage_map.begin(); it != usage_map.end(); ++it )
|
||||||
{
|
{
|
||||||
fprintf(f, "%"PRIu64"%c%s%c%s\n", it->second, delim,
|
fprintf(f, "%" PRIu64"%c%s%c%s\n", it->second, delim,
|
||||||
it->first.first.c_str(), delim, it->first.second.c_str());
|
it->first.first.c_str(), delim, it->first.second.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -279,6 +279,7 @@ set(bro_SRCS
|
||||||
EventRegistry.cc
|
EventRegistry.cc
|
||||||
Expr.cc
|
Expr.cc
|
||||||
File.cc
|
File.cc
|
||||||
|
Flare.cc
|
||||||
Frag.cc
|
Frag.cc
|
||||||
Frame.cc
|
Frame.cc
|
||||||
Func.cc
|
Func.cc
|
||||||
|
@ -297,6 +298,7 @@ set(bro_SRCS
|
||||||
OSFinger.cc
|
OSFinger.cc
|
||||||
PacketFilter.cc
|
PacketFilter.cc
|
||||||
PersistenceSerializer.cc
|
PersistenceSerializer.cc
|
||||||
|
Pipe.cc
|
||||||
PolicyFile.cc
|
PolicyFile.cc
|
||||||
PrefixTable.cc
|
PrefixTable.cc
|
||||||
PriorityQueue.cc
|
PriorityQueue.cc
|
||||||
|
|
|
@ -210,6 +210,7 @@ bool ChunkedIOFd::WriteChunk(Chunk* chunk, bool partial)
|
||||||
else
|
else
|
||||||
pending_head = pending_tail = q;
|
pending_head = pending_tail = q;
|
||||||
|
|
||||||
|
write_flare.Fire();
|
||||||
return Flush();
|
return Flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -232,6 +233,7 @@ bool ChunkedIOFd::PutIntoWriteBuffer(Chunk* chunk)
|
||||||
write_len += len;
|
write_len += len;
|
||||||
|
|
||||||
delete chunk;
|
delete chunk;
|
||||||
|
write_flare.Fire();
|
||||||
|
|
||||||
if ( network_time - last_flush > 0.005 )
|
if ( network_time - last_flush > 0.005 )
|
||||||
FlushWriteBuffer();
|
FlushWriteBuffer();
|
||||||
|
@ -269,6 +271,10 @@ bool ChunkedIOFd::FlushWriteBuffer()
|
||||||
if ( unsigned(written) == len )
|
if ( unsigned(written) == len )
|
||||||
{
|
{
|
||||||
write_pos = write_len = 0;
|
write_pos = write_len = 0;
|
||||||
|
|
||||||
|
if ( ! pending_head )
|
||||||
|
write_flare.Extinguish();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -318,7 +324,12 @@ bool ChunkedIOFd::Flush()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return FlushWriteBuffer();
|
bool rval = FlushWriteBuffer();
|
||||||
|
|
||||||
|
if ( ! pending_head && write_len == 0 )
|
||||||
|
write_flare.Extinguish();
|
||||||
|
|
||||||
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32 ChunkedIOFd::ChunkAvailable()
|
uint32 ChunkedIOFd::ChunkAvailable()
|
||||||
|
@ -394,6 +405,9 @@ bool ChunkedIOFd::Read(Chunk** chunk, bool may_block)
|
||||||
#ifdef DEBUG_COMMUNICATION
|
#ifdef DEBUG_COMMUNICATION
|
||||||
AddToBuffer("<false:read-chunk>", true);
|
AddToBuffer("<false:read-chunk>", true);
|
||||||
#endif
|
#endif
|
||||||
|
if ( ! ChunkAvailable() )
|
||||||
|
read_flare.Extinguish();
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -402,9 +416,15 @@ bool ChunkedIOFd::Read(Chunk** chunk, bool may_block)
|
||||||
#ifdef DEBUG_COMMUNICATION
|
#ifdef DEBUG_COMMUNICATION
|
||||||
AddToBuffer("<null:no-data>", true);
|
AddToBuffer("<null:no-data>", true);
|
||||||
#endif
|
#endif
|
||||||
|
read_flare.Extinguish();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( ChunkAvailable() )
|
||||||
|
read_flare.Fire();
|
||||||
|
else
|
||||||
|
read_flare.Extinguish();
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
if ( *chunk )
|
if ( *chunk )
|
||||||
DBG_LOG(DBG_CHUNKEDIO, "read of size %d %s[%s]",
|
DBG_LOG(DBG_CHUNKEDIO, "read of size %d %s[%s]",
|
||||||
|
@ -481,6 +501,9 @@ bool ChunkedIOFd::ReadChunk(Chunk** chunk, bool may_block)
|
||||||
read_pos = 0;
|
read_pos = 0;
|
||||||
read_len = bytes_left;
|
read_len = bytes_left;
|
||||||
|
|
||||||
|
if ( ! ChunkAvailable() )
|
||||||
|
read_flare.Extinguish();
|
||||||
|
|
||||||
// If allowed, wait a bit for something to read.
|
// If allowed, wait a bit for something to read.
|
||||||
if ( may_block )
|
if ( may_block )
|
||||||
{
|
{
|
||||||
|
@ -607,6 +630,14 @@ bool ChunkedIOFd::IsFillingUp()
|
||||||
return stats.pending > MAX_BUFFERED_CHUNKS_SOFT;
|
return stats.pending > MAX_BUFFERED_CHUNKS_SOFT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
iosource::FD_Set ChunkedIOFd::ExtraReadFDs() const
|
||||||
|
{
|
||||||
|
iosource::FD_Set rval;
|
||||||
|
rval.Insert(write_flare.FD());
|
||||||
|
rval.Insert(read_flare.FD());
|
||||||
|
return rval;
|
||||||
|
}
|
||||||
|
|
||||||
void ChunkedIOFd::Clear()
|
void ChunkedIOFd::Clear()
|
||||||
{
|
{
|
||||||
while ( pending_head )
|
while ( pending_head )
|
||||||
|
@ -618,6 +649,9 @@ void ChunkedIOFd::Clear()
|
||||||
}
|
}
|
||||||
|
|
||||||
pending_head = pending_tail = 0;
|
pending_head = pending_tail = 0;
|
||||||
|
|
||||||
|
if ( write_len == 0 )
|
||||||
|
write_flare.Extinguish();
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* ChunkedIOFd::Error()
|
const char* ChunkedIOFd::Error()
|
||||||
|
@ -830,6 +864,7 @@ bool ChunkedIOSSL::Write(Chunk* chunk)
|
||||||
else
|
else
|
||||||
write_head = write_tail = q;
|
write_head = write_tail = q;
|
||||||
|
|
||||||
|
write_flare.Fire();
|
||||||
Flush();
|
Flush();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -935,6 +970,7 @@ bool ChunkedIOSSL::Flush()
|
||||||
write_state = LEN;
|
write_state = LEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
write_flare.Extinguish();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1104,6 +1140,13 @@ bool ChunkedIOSSL::IsFillingUp()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
iosource::FD_Set ChunkedIOSSL::ExtraReadFDs() const
|
||||||
|
{
|
||||||
|
iosource::FD_Set rval;
|
||||||
|
rval.Insert(write_flare.FD());
|
||||||
|
return rval;
|
||||||
|
}
|
||||||
|
|
||||||
void ChunkedIOSSL::Clear()
|
void ChunkedIOSSL::Clear()
|
||||||
{
|
{
|
||||||
while ( write_head )
|
while ( write_head )
|
||||||
|
@ -1114,6 +1157,7 @@ void ChunkedIOSSL::Clear()
|
||||||
write_head = next;
|
write_head = next;
|
||||||
}
|
}
|
||||||
write_head = write_tail = 0;
|
write_head = write_tail = 0;
|
||||||
|
write_flare.Extinguish();
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* ChunkedIOSSL::Error()
|
const char* ChunkedIOSSL::Error()
|
||||||
|
|
|
@ -6,7 +6,8 @@
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "List.h"
|
#include "List.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
#include "Flare.h"
|
||||||
|
#include "iosource/FD_Set.h"
|
||||||
#include <list>
|
#include <list>
|
||||||
|
|
||||||
#ifdef NEED_KRB5_H
|
#ifdef NEED_KRB5_H
|
||||||
|
@ -95,6 +96,11 @@ public:
|
||||||
// Returns underlying fd if available, -1 otherwise.
|
// Returns underlying fd if available, -1 otherwise.
|
||||||
virtual int Fd() { return -1; }
|
virtual int Fd() { return -1; }
|
||||||
|
|
||||||
|
// Returns supplementary file descriptors that become read-ready in order
|
||||||
|
// to signal that there is some work that can be performed.
|
||||||
|
virtual iosource::FD_Set ExtraReadFDs() const
|
||||||
|
{ return iosource::FD_Set(); }
|
||||||
|
|
||||||
// Makes sure that no additional protocol data is written into
|
// Makes sure that no additional protocol data is written into
|
||||||
// the output stream. If this is activated, the output cannot
|
// the output stream. If this is activated, the output cannot
|
||||||
// be read again by any of these classes!
|
// be read again by any of these classes!
|
||||||
|
@ -177,6 +183,7 @@ public:
|
||||||
virtual void Clear();
|
virtual void Clear();
|
||||||
virtual bool Eof() { return eof; }
|
virtual bool Eof() { return eof; }
|
||||||
virtual int Fd() { return fd; }
|
virtual int Fd() { return fd; }
|
||||||
|
virtual iosource::FD_Set ExtraReadFDs() const;
|
||||||
virtual void Stats(char* buffer, int length);
|
virtual void Stats(char* buffer, int length);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -240,6 +247,8 @@ private:
|
||||||
ChunkQueue* pending_tail;
|
ChunkQueue* pending_tail;
|
||||||
|
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
|
bro::Flare write_flare;
|
||||||
|
bro::Flare read_flare;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Chunked I/O using an SSL connection.
|
// Chunked I/O using an SSL connection.
|
||||||
|
@ -262,6 +271,7 @@ public:
|
||||||
virtual void Clear();
|
virtual void Clear();
|
||||||
virtual bool Eof() { return eof; }
|
virtual bool Eof() { return eof; }
|
||||||
virtual int Fd() { return socket; }
|
virtual int Fd() { return socket; }
|
||||||
|
virtual iosource::FD_Set ExtraReadFDs() const;
|
||||||
virtual void Stats(char* buffer, int length);
|
virtual void Stats(char* buffer, int length);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -303,6 +313,8 @@ private:
|
||||||
|
|
||||||
// One SSL for all connections.
|
// One SSL for all connections.
|
||||||
static SSL_CTX* ctx;
|
static SSL_CTX* ctx;
|
||||||
|
|
||||||
|
bro::Flare write_flare;
|
||||||
};
|
};
|
||||||
|
|
||||||
#include <zlib.h>
|
#include <zlib.h>
|
||||||
|
@ -328,6 +340,8 @@ public:
|
||||||
|
|
||||||
virtual bool Eof() { return io->Eof(); }
|
virtual bool Eof() { return io->Eof(); }
|
||||||
virtual int Fd() { return io->Fd(); }
|
virtual int Fd() { return io->Fd(); }
|
||||||
|
virtual iosource::FD_Set ExtraReadFDs() const
|
||||||
|
{ return io->ExtraReadFDs(); }
|
||||||
virtual void Stats(char* buffer, int length);
|
virtual void Stats(char* buffer, int length);
|
||||||
|
|
||||||
void EnableCompression(int level)
|
void EnableCompression(int level)
|
||||||
|
|
|
@ -214,7 +214,7 @@ DNS_Mapping::DNS_Mapping(FILE* f)
|
||||||
char req_buf[512+1], name_buf[512+1];
|
char req_buf[512+1], name_buf[512+1];
|
||||||
int is_req_host;
|
int is_req_host;
|
||||||
|
|
||||||
if ( sscanf(buf, "%lf %d %512s %d %512s %d %d %"PRIu32, &creation_time,
|
if ( sscanf(buf, "%lf %d %512s %d %512s %d %d %" PRIu32, &creation_time,
|
||||||
&is_req_host, req_buf, &failed, name_buf, &map_type, &num_addrs,
|
&is_req_host, req_buf, &failed, name_buf, &map_type, &num_addrs,
|
||||||
&req_ttl) != 8 )
|
&req_ttl) != 8 )
|
||||||
return;
|
return;
|
||||||
|
@ -360,7 +360,7 @@ void DNS_Mapping::Clear()
|
||||||
|
|
||||||
void DNS_Mapping::Save(FILE* f) const
|
void DNS_Mapping::Save(FILE* f) const
|
||||||
{
|
{
|
||||||
fprintf(f, "%.0f %d %s %d %s %d %d %"PRIu32"\n", creation_time, req_host != 0,
|
fprintf(f, "%.0f %d %s %d %s %d %d %" PRIu32"\n", creation_time, req_host != 0,
|
||||||
req_host ? req_host : req_addr.AsString().c_str(),
|
req_host ? req_host : req_addr.AsString().c_str(),
|
||||||
failed, (names && names[0]) ? names[0] : "*",
|
failed, (names && names[0]) ? names[0] : "*",
|
||||||
map_type, num_addrs, req_ttl);
|
map_type, num_addrs, req_ttl);
|
||||||
|
@ -1216,9 +1216,10 @@ void DNS_Mgr::IssueAsyncRequests()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DNS_Mgr::GetFds(int* read, int* write, int* except)
|
void DNS_Mgr::GetFds(iosource::FD_Set* read, iosource::FD_Set* write,
|
||||||
|
iosource::FD_Set* except)
|
||||||
{
|
{
|
||||||
*read = nb_dns_fd(nb_dns);
|
read->Insert(nb_dns_fd(nb_dns));
|
||||||
}
|
}
|
||||||
|
|
||||||
double DNS_Mgr::NextTimestamp(double* network_time)
|
double DNS_Mgr::NextTimestamp(double* network_time)
|
||||||
|
|
|
@ -132,7 +132,8 @@ protected:
|
||||||
void DoProcess(bool flush);
|
void DoProcess(bool flush);
|
||||||
|
|
||||||
// IOSource interface.
|
// IOSource interface.
|
||||||
virtual void GetFds(int* read, int* write, int* except);
|
virtual void GetFds(iosource::FD_Set* read, iosource::FD_Set* write,
|
||||||
|
iosource::FD_Set* except);
|
||||||
virtual double NextTimestamp(double* network_time);
|
virtual double NextTimestamp(double* network_time);
|
||||||
virtual void Process();
|
virtual void Process();
|
||||||
virtual const char* Tag() { return "DNS_Mgr"; }
|
virtual const char* Tag() { return "DNS_Mgr"; }
|
||||||
|
|
12
src/Expr.cc
12
src/Expr.cc
|
@ -636,7 +636,7 @@ Val* BinaryExpr::Eval(Frame* f) const
|
||||||
return v_result;
|
return v_result;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( is_vec1 || is_vec2 )
|
if ( IsVector(Type()->Tag()) && (is_vec1 || is_vec2) )
|
||||||
{ // fold vector against scalar
|
{ // fold vector against scalar
|
||||||
VectorVal* vv = (is_vec1 ? v1 : v2)->AsVectorVal();
|
VectorVal* vv = (is_vec1 ? v1 : v2)->AsVectorVal();
|
||||||
VectorVal* v_result = new VectorVal(Type()->AsVectorType());
|
VectorVal* v_result = new VectorVal(Type()->AsVectorType());
|
||||||
|
@ -4703,8 +4703,14 @@ Val* InExpr::Fold(Val* v1, Val* v2) const
|
||||||
v2->Type()->Tag() == TYPE_SUBNET )
|
v2->Type()->Tag() == TYPE_SUBNET )
|
||||||
return new Val(v2->AsSubNetVal()->Contains(v1->AsAddr()), TYPE_BOOL);
|
return new Val(v2->AsSubNetVal()->Contains(v1->AsAddr()), TYPE_BOOL);
|
||||||
|
|
||||||
TableVal* vt = v2->AsTableVal();
|
Val* res;
|
||||||
if ( vt->Lookup(v1, false) )
|
|
||||||
|
if ( is_vector(v2) )
|
||||||
|
res = v2->AsVectorVal()->Lookup(v1);
|
||||||
|
else
|
||||||
|
res = v2->AsTableVal()->Lookup(v1, false);
|
||||||
|
|
||||||
|
if ( res )
|
||||||
return new Val(1, TYPE_BOOL);
|
return new Val(1, TYPE_BOOL);
|
||||||
else
|
else
|
||||||
return new Val(0, TYPE_BOOL);
|
return new Val(0, TYPE_BOOL);
|
||||||
|
|
17
src/File.cc
17
src/File.cc
|
@ -527,7 +527,7 @@ void BroFile::SetAttrs(Attributes* arg_attrs)
|
||||||
if ( ef->AttrExpr() )
|
if ( ef->AttrExpr() )
|
||||||
InitEncrypt(ef->AttrExpr()->ExprVal()->AsString()->CheckString());
|
InitEncrypt(ef->AttrExpr()->ExprVal()->AsString()->CheckString());
|
||||||
else
|
else
|
||||||
InitEncrypt(log_encryption_key->AsString()->CheckString());
|
InitEncrypt(opt_internal_string("log_encryption_key")->CheckString());
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( attrs->FindAttr(ATTR_RAW_OUTPUT) )
|
if ( attrs->FindAttr(ATTR_RAW_OUTPUT) )
|
||||||
|
@ -708,10 +708,10 @@ void BroFile::InitEncrypt(const char* keyfile)
|
||||||
|
|
||||||
secret_len = htonl(secret_len);
|
secret_len = htonl(secret_len);
|
||||||
|
|
||||||
if ( ! (fwrite("BROENC1", 7, 1, f) &&
|
if ( fwrite("BROENC1", 7, 1, f) < 1 ||
|
||||||
fwrite(&secret_len, sizeof(secret_len), 1, f) &&
|
fwrite(&secret_len, sizeof(secret_len), 1, f) < 1 ||
|
||||||
fwrite(secret, ntohl(secret_len), 1, f) &&
|
fwrite(secret, ntohl(secret_len), 1, f) < 1 ||
|
||||||
fwrite(iv, iv_len, 1, f)) )
|
fwrite(iv, iv_len, 1, f) < 1 )
|
||||||
{
|
{
|
||||||
reporter->Error("can't write header to log file %s: %s",
|
reporter->Error("can't write header to log file %s: %s",
|
||||||
name, strerror(errno));
|
name, strerror(errno));
|
||||||
|
@ -736,7 +736,7 @@ void BroFile::FinishEncrypt()
|
||||||
int outl;
|
int outl;
|
||||||
EVP_SealFinal(cipher_ctx, cipher_buffer, &outl);
|
EVP_SealFinal(cipher_ctx, cipher_buffer, &outl);
|
||||||
|
|
||||||
if ( outl && ! fwrite(cipher_buffer, outl, 1, f) )
|
if ( outl && fwrite(cipher_buffer, outl, 1, f) < 1 )
|
||||||
{
|
{
|
||||||
reporter->Error("write error for %s: %s",
|
reporter->Error("write error for %s: %s",
|
||||||
name, strerror(errno));
|
name, strerror(errno));
|
||||||
|
@ -777,7 +777,7 @@ int BroFile::Write(const char* data, int len)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( outl && ! fwrite(cipher_buffer, outl, 1, f) )
|
if ( outl && fwrite(cipher_buffer, outl, 1, f) < 1 )
|
||||||
{
|
{
|
||||||
reporter->Error("write error for %s: %s",
|
reporter->Error("write error for %s: %s",
|
||||||
name, strerror(errno));
|
name, strerror(errno));
|
||||||
|
@ -792,8 +792,7 @@ int BroFile::Write(const char* data, int len)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
len = fwrite(data, 1, len, f);
|
if ( fwrite(data, len, 1, f) < 1 )
|
||||||
if ( len <= 0 )
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ( rotate_size && current_size < rotate_size && current_size + len >= rotate_size )
|
if ( rotate_size && current_size < rotate_size && current_size + len >= rotate_size )
|
||||||
|
|
74
src/Flare.cc
Normal file
74
src/Flare.cc
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
// See the file "COPYING" in the main distribution directory for copyright.
|
||||||
|
|
||||||
|
#include "Flare.h"
|
||||||
|
#include "Reporter.h"
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
using namespace bro;
|
||||||
|
|
||||||
|
Flare::Flare()
|
||||||
|
: pipe(FD_CLOEXEC, FD_CLOEXEC, O_NONBLOCK, O_NONBLOCK)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static void bad_pipe_op(const char* which)
|
||||||
|
{
|
||||||
|
char buf[256];
|
||||||
|
strerror_r(errno, buf, sizeof(buf));
|
||||||
|
reporter->FatalErrorWithCore("unexpected pipe %s failure: %s", which, buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Flare::Fire()
|
||||||
|
{
|
||||||
|
char tmp = 0;
|
||||||
|
|
||||||
|
for ( ; ; )
|
||||||
|
{
|
||||||
|
int n = write(pipe.WriteFD(), &tmp, 1);
|
||||||
|
|
||||||
|
if ( n > 0 )
|
||||||
|
// Success -- wrote a byte to pipe.
|
||||||
|
break;
|
||||||
|
|
||||||
|
if ( n < 0 )
|
||||||
|
{
|
||||||
|
if ( errno == EAGAIN )
|
||||||
|
// Success: pipe is full and just need at least one byte in it.
|
||||||
|
break;
|
||||||
|
|
||||||
|
if ( errno == EINTR )
|
||||||
|
// Interrupted: try again.
|
||||||
|
continue;
|
||||||
|
|
||||||
|
bad_pipe_op("write");
|
||||||
|
}
|
||||||
|
|
||||||
|
// No error, but didn't write a byte: try again.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Flare::Extinguish()
|
||||||
|
{
|
||||||
|
char tmp[256];
|
||||||
|
|
||||||
|
for ( ; ; )
|
||||||
|
{
|
||||||
|
int n = read(pipe.ReadFD(), &tmp, sizeof(tmp));
|
||||||
|
|
||||||
|
if ( n >= 0 )
|
||||||
|
// Pipe may not be empty yet: try again.
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if ( errno == EAGAIN )
|
||||||
|
// Success: pipe is now empty.
|
||||||
|
break;
|
||||||
|
|
||||||
|
if ( errno == EINTR )
|
||||||
|
// Interrupted: try again.
|
||||||
|
continue;
|
||||||
|
|
||||||
|
bad_pipe_op("read");
|
||||||
|
}
|
||||||
|
}
|
44
src/Flare.h
Normal file
44
src/Flare.h
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
// See the file "COPYING" in the main distribution directory for copyright.
|
||||||
|
|
||||||
|
#ifndef BRO_FLARE_H
|
||||||
|
#define BRO_FLARE_H
|
||||||
|
|
||||||
|
#include "Pipe.h"
|
||||||
|
|
||||||
|
namespace bro {
|
||||||
|
|
||||||
|
class Flare {
|
||||||
|
public:
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a flare object that can be used to signal a "ready" status via
|
||||||
|
* a file descriptor that may be integrated with select(), poll(), etc.
|
||||||
|
* Not thread-safe, but that should only require Fire()/Extinguish() calls
|
||||||
|
* to be made mutually exclusive (across all copies of a Flare).
|
||||||
|
*/
|
||||||
|
Flare();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a file descriptor that will become ready if the flare has been
|
||||||
|
* Fire()'d and not yet Extinguished()'d.
|
||||||
|
*/
|
||||||
|
int FD() const
|
||||||
|
{ return pipe.ReadFD(); }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Put the object in the "ready" state.
|
||||||
|
*/
|
||||||
|
void Fire();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Take the object out of the "ready" state.
|
||||||
|
*/
|
||||||
|
void Extinguish();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Pipe pipe;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace bro
|
||||||
|
|
||||||
|
#endif // BRO_FLARE_H
|
2
src/H3.h
2
src/H3.h
|
@ -110,7 +110,7 @@ public:
|
||||||
T result = 0;
|
T result = 0;
|
||||||
|
|
||||||
// loop optmized with Duff's Device
|
// loop optmized with Duff's Device
|
||||||
register unsigned n = (size + 7) / 8;
|
unsigned n = (size + 7) / 8;
|
||||||
switch ( size % 8 ) {
|
switch ( size % 8 ) {
|
||||||
case 0: do { result ^= byte_lookup[offset++][*p++];
|
case 0: do { result ^= byte_lookup[offset++][*p++];
|
||||||
case 7: result ^= byte_lookup[offset++][*p++];
|
case 7: result ^= byte_lookup[offset++][*p++];
|
||||||
|
|
83
src/Pipe.cc
Normal file
83
src/Pipe.cc
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
// See the file "COPYING" in the main distribution directory for copyright.
|
||||||
|
|
||||||
|
#include "Pipe.h"
|
||||||
|
#include "Reporter.h"
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <cstdio>
|
||||||
|
|
||||||
|
using namespace bro;
|
||||||
|
|
||||||
|
static void pipe_fail(int eno)
|
||||||
|
{
|
||||||
|
char tmp[256];
|
||||||
|
strerror_r(eno, tmp, sizeof(tmp));
|
||||||
|
reporter->FatalError("Pipe failure: %s", tmp);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void set_flags(int fd, int flags)
|
||||||
|
{
|
||||||
|
if ( flags )
|
||||||
|
fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void set_status_flags(int fd, int flags)
|
||||||
|
{
|
||||||
|
if ( flags )
|
||||||
|
fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int dup_or_fail(int fd, int flags)
|
||||||
|
{
|
||||||
|
int rval = dup(fd);
|
||||||
|
|
||||||
|
if ( rval < 0 )
|
||||||
|
pipe_fail(errno);
|
||||||
|
|
||||||
|
set_flags(fd, flags);
|
||||||
|
return rval;
|
||||||
|
}
|
||||||
|
|
||||||
|
Pipe::Pipe(int flags0, int flags1, int status_flags0, int status_flags1)
|
||||||
|
{
|
||||||
|
// pipe2 can set flags atomically, but not yet available everywhere.
|
||||||
|
if ( ::pipe(fds) )
|
||||||
|
pipe_fail(errno);
|
||||||
|
|
||||||
|
flags[0] = flags0;
|
||||||
|
flags[1] = flags1;
|
||||||
|
|
||||||
|
set_flags(fds[0], flags[0]);
|
||||||
|
set_flags(fds[1], flags[1]);
|
||||||
|
set_status_flags(fds[0], status_flags0);
|
||||||
|
set_status_flags(fds[1], status_flags1);
|
||||||
|
}
|
||||||
|
|
||||||
|
Pipe::~Pipe()
|
||||||
|
{
|
||||||
|
close(fds[0]);
|
||||||
|
close(fds[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
Pipe::Pipe(const Pipe& other)
|
||||||
|
{
|
||||||
|
fds[0] = dup_or_fail(other.fds[0], other.flags[0]);
|
||||||
|
fds[1] = dup_or_fail(other.fds[1], other.flags[1]);
|
||||||
|
flags[0] = other.flags[0];
|
||||||
|
flags[1] = other.flags[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
Pipe& Pipe::operator=(const Pipe& other)
|
||||||
|
{
|
||||||
|
if ( this == &other )
|
||||||
|
return *this;
|
||||||
|
|
||||||
|
close(fds[0]);
|
||||||
|
close(fds[1]);
|
||||||
|
fds[0] = dup_or_fail(other.fds[0], other.flags[0]);
|
||||||
|
fds[1] = dup_or_fail(other.fds[1], other.flags[1]);
|
||||||
|
flags[0] = other.flags[0];
|
||||||
|
flags[1] = other.flags[1];
|
||||||
|
return *this;
|
||||||
|
}
|
56
src/Pipe.h
Normal file
56
src/Pipe.h
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
// See the file "COPYING" in the main distribution directory for copyright.
|
||||||
|
|
||||||
|
#ifndef BRO_PIPE_H
|
||||||
|
#define BRO_PIPE_H
|
||||||
|
|
||||||
|
namespace bro {
|
||||||
|
|
||||||
|
class Pipe {
|
||||||
|
public:
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a pair of file descriptors via pipe(), or aborts if it cannot.
|
||||||
|
* @param flags0 file descriptor flags to set on read end of pipe.
|
||||||
|
* @param flags1 file descriptor flags to set on write end of pipe.
|
||||||
|
* @param status_flags0 descriptor status flags to set on read end of pipe.
|
||||||
|
* @param status_flags1 descriptor status flags to set on write end of pipe.
|
||||||
|
*/
|
||||||
|
Pipe(int flags0 = 0, int flags1 = 0, int status_flags0 = 0,
|
||||||
|
int status_flags1 = 0);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Close the pair of file descriptors owned by the object.
|
||||||
|
*/
|
||||||
|
~Pipe();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Make a copy of another Pipe object (file descriptors are dup'd).
|
||||||
|
*/
|
||||||
|
Pipe(const Pipe& other);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Assign a Pipe object by closing file descriptors and duping those of
|
||||||
|
* the other.
|
||||||
|
*/
|
||||||
|
Pipe& operator=(const Pipe& other);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the file descriptor associated with the read-end of the pipe.
|
||||||
|
*/
|
||||||
|
int ReadFD() const
|
||||||
|
{ return fds[0]; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the file descriptor associated with the write-end of the pipe.
|
||||||
|
*/
|
||||||
|
int WriteFD() const
|
||||||
|
{ return fds[1]; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
int fds[2];
|
||||||
|
int flags[2];
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace bro
|
||||||
|
|
||||||
|
#endif // BRO_PIPE_H
|
|
@ -182,7 +182,7 @@ DataBlock* Reassembler::AddAndCheck(DataBlock* b, uint64 seq, uint64 upper,
|
||||||
{
|
{
|
||||||
if ( DEBUG_reassem )
|
if ( DEBUG_reassem )
|
||||||
{
|
{
|
||||||
DEBUG_MSG("%.6f Reassembler::AddAndCheck seq=%"PRIu64", upper=%"PRIu64"\n",
|
DEBUG_MSG("%.6f Reassembler::AddAndCheck seq=%" PRIu64", upper=%" PRIu64"\n",
|
||||||
network_time, seq, upper);
|
network_time, seq, upper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -707,7 +707,7 @@ RemoteSerializer::PeerID RemoteSerializer::Connect(const IPAddr& ip,
|
||||||
const size_t BUFSIZE = 1024;
|
const size_t BUFSIZE = 1024;
|
||||||
char* data = new char[BUFSIZE];
|
char* data = new char[BUFSIZE];
|
||||||
snprintf(data, BUFSIZE,
|
snprintf(data, BUFSIZE,
|
||||||
"%"PRI_PTR_COMPAT_UINT",%s,%s,%"PRIu16",%"PRIu32",%d", p->id,
|
"%" PRI_PTR_COMPAT_UINT",%s,%s,%" PRIu16",%" PRIu32",%d", p->id,
|
||||||
ip.AsString().c_str(), zone_id.c_str(), port, uint32(retry),
|
ip.AsString().c_str(), zone_id.c_str(), port, uint32(retry),
|
||||||
use_ssl);
|
use_ssl);
|
||||||
|
|
||||||
|
@ -1267,7 +1267,7 @@ bool RemoteSerializer::Listen(const IPAddr& ip, uint16 port, bool expect_ssl,
|
||||||
|
|
||||||
const size_t BUFSIZE = 1024;
|
const size_t BUFSIZE = 1024;
|
||||||
char* data = new char[BUFSIZE];
|
char* data = new char[BUFSIZE];
|
||||||
snprintf(data, BUFSIZE, "%s,%"PRIu16",%d,%d,%s,%"PRIu32,
|
snprintf(data, BUFSIZE, "%s,%" PRIu16",%d,%d,%s,%" PRIu32,
|
||||||
ip.AsString().c_str(), port, expect_ssl, ipv6, zone_id.c_str(),
|
ip.AsString().c_str(), port, expect_ssl, ipv6, zone_id.c_str(),
|
||||||
(uint32) retry);
|
(uint32) retry);
|
||||||
|
|
||||||
|
@ -1367,12 +1367,14 @@ void RemoteSerializer::Unregister(ID* id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoteSerializer::GetFds(int* read, int* write, int* except)
|
void RemoteSerializer::GetFds(iosource::FD_Set* read, iosource::FD_Set* write,
|
||||||
|
iosource::FD_Set* except)
|
||||||
{
|
{
|
||||||
*read = io->Fd();
|
read->Insert(io->Fd());
|
||||||
|
read->Insert(io->ExtraReadFDs());
|
||||||
|
|
||||||
if ( io->CanWrite() )
|
if ( io->CanWrite() )
|
||||||
*write = io->Fd();
|
write->Insert(io->Fd());
|
||||||
}
|
}
|
||||||
|
|
||||||
double RemoteSerializer::NextTimestamp(double* local_network_time)
|
double RemoteSerializer::NextTimestamp(double* local_network_time)
|
||||||
|
@ -3355,6 +3357,15 @@ SocketComm::~SocketComm()
|
||||||
|
|
||||||
static unsigned int first_rtime = 0;
|
static unsigned int first_rtime = 0;
|
||||||
|
|
||||||
|
static void fd_vector_set(const std::vector<int>& fds, fd_set* set, int* max)
|
||||||
|
{
|
||||||
|
for ( size_t i = 0; i < fds.size(); ++i )
|
||||||
|
{
|
||||||
|
FD_SET(fds[i], set);
|
||||||
|
*max = ::max(fds[i], *max);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void SocketComm::Run()
|
void SocketComm::Run()
|
||||||
{
|
{
|
||||||
first_rtime = (unsigned int) current_time(true);
|
first_rtime = (unsigned int) current_time(true);
|
||||||
|
@ -3376,10 +3387,9 @@ void SocketComm::Run()
|
||||||
FD_ZERO(&fd_write);
|
FD_ZERO(&fd_write);
|
||||||
FD_ZERO(&fd_except);
|
FD_ZERO(&fd_except);
|
||||||
|
|
||||||
int max_fd = 0;
|
int max_fd = io->Fd();
|
||||||
|
|
||||||
FD_SET(io->Fd(), &fd_read);
|
FD_SET(io->Fd(), &fd_read);
|
||||||
max_fd = io->Fd();
|
max_fd = std::max(max_fd, io->ExtraReadFDs().Set(&fd_read));
|
||||||
|
|
||||||
loop_over_list(peers, i)
|
loop_over_list(peers, i)
|
||||||
{
|
{
|
||||||
|
@ -3388,6 +3398,8 @@ void SocketComm::Run()
|
||||||
FD_SET(peers[i]->io->Fd(), &fd_read);
|
FD_SET(peers[i]->io->Fd(), &fd_read);
|
||||||
if ( peers[i]->io->Fd() > max_fd )
|
if ( peers[i]->io->Fd() > max_fd )
|
||||||
max_fd = peers[i]->io->Fd();
|
max_fd = peers[i]->io->Fd();
|
||||||
|
max_fd = std::max(max_fd,
|
||||||
|
peers[i]->io->ExtraReadFDs().Set(&fd_read));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -3438,38 +3450,17 @@ void SocketComm::Run()
|
||||||
if ( ! io->IsFillingUp() && shutting_conns_down )
|
if ( ! io->IsFillingUp() && shutting_conns_down )
|
||||||
shutting_conns_down = false;
|
shutting_conns_down = false;
|
||||||
|
|
||||||
// We cannot rely solely on select() as the there may
|
|
||||||
// be some data left in our input/output queues. So, we use
|
|
||||||
// a small timeout for select and check for data
|
|
||||||
// manually afterwards.
|
|
||||||
|
|
||||||
static long selects = 0;
|
static long selects = 0;
|
||||||
static long canwrites = 0;
|
static long canwrites = 0;
|
||||||
static long timeouts = 0;
|
|
||||||
|
|
||||||
++selects;
|
++selects;
|
||||||
if ( io->CanWrite() )
|
if ( io->CanWrite() )
|
||||||
++canwrites;
|
++canwrites;
|
||||||
|
|
||||||
// FIXME: Fine-tune this (timeouts, flush, etc.)
|
int a = select(max_fd + 1, &fd_read, &fd_write, &fd_except, 0);
|
||||||
struct timeval small_timeout;
|
|
||||||
small_timeout.tv_sec = 0;
|
|
||||||
small_timeout.tv_usec =
|
|
||||||
io->CanWrite() || io->CanRead() ? 1 : 10;
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
if ( ! io->CanWrite() )
|
|
||||||
usleep(10);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int a = select(max_fd + 1, &fd_read, &fd_write, &fd_except,
|
|
||||||
&small_timeout);
|
|
||||||
|
|
||||||
if ( a == 0 )
|
|
||||||
++timeouts;
|
|
||||||
|
|
||||||
if ( selects % 100000 == 0 )
|
if ( selects % 100000 == 0 )
|
||||||
Log(fmt("selects=%ld canwrites=%ld timeouts=%ld", selects, canwrites, timeouts));
|
Log(fmt("selects=%ld canwrites=%ld", selects, canwrites));
|
||||||
|
|
||||||
if ( a < 0 )
|
if ( a < 0 )
|
||||||
// Ignore errors for now.
|
// Ignore errors for now.
|
||||||
|
@ -4084,7 +4075,7 @@ bool SocketComm::Connect(Peer* peer)
|
||||||
|
|
||||||
const size_t BUFSIZE = 1024;
|
const size_t BUFSIZE = 1024;
|
||||||
char* data = new char[BUFSIZE];
|
char* data = new char[BUFSIZE];
|
||||||
snprintf(data, BUFSIZE, "%s,%"PRIu32, peer->ip.AsString().c_str(),
|
snprintf(data, BUFSIZE, "%s,%" PRIu32, peer->ip.AsString().c_str(),
|
||||||
peer->port);
|
peer->port);
|
||||||
|
|
||||||
if ( ! SendToParent(MSG_CONNECTED, peer, data) )
|
if ( ! SendToParent(MSG_CONNECTED, peer, data) )
|
||||||
|
@ -4199,7 +4190,7 @@ bool SocketComm::Listen()
|
||||||
setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof(on)) < 0 )
|
setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof(on)) < 0 )
|
||||||
Error(fmt("can't set IPV6_V6ONLY, %s", strerror(errno)));
|
Error(fmt("can't set IPV6_V6ONLY, %s", strerror(errno)));
|
||||||
|
|
||||||
if ( bind(fd, res->ai_addr, res->ai_addrlen) < 0 )
|
if ( ::bind(fd, res->ai_addr, res->ai_addrlen) < 0 )
|
||||||
{
|
{
|
||||||
Error(fmt("can't bind to %s:%s, %s", l_addr_str.c_str(),
|
Error(fmt("can't bind to %s:%s, %s", l_addr_str.c_str(),
|
||||||
port_str, strerror(errno)));
|
port_str, strerror(errno)));
|
||||||
|
@ -4296,7 +4287,7 @@ bool SocketComm::AcceptConnection(int fd)
|
||||||
|
|
||||||
const size_t BUFSIZE = 1024;
|
const size_t BUFSIZE = 1024;
|
||||||
char* data = new char[BUFSIZE];
|
char* data = new char[BUFSIZE];
|
||||||
snprintf(data, BUFSIZE, "%s,%"PRIu32, peer->ip.AsString().c_str(),
|
snprintf(data, BUFSIZE, "%s,%" PRIu32, peer->ip.AsString().c_str(),
|
||||||
peer->port);
|
peer->port);
|
||||||
|
|
||||||
if ( ! SendToParent(MSG_CONNECTED, peer, data) )
|
if ( ! SendToParent(MSG_CONNECTED, peer, data) )
|
||||||
|
|
|
@ -140,7 +140,8 @@ public:
|
||||||
void Finish();
|
void Finish();
|
||||||
|
|
||||||
// Overidden from IOSource:
|
// Overidden from IOSource:
|
||||||
virtual void GetFds(int* read, int* write, int* except);
|
virtual void GetFds(iosource::FD_Set* read, iosource::FD_Set* write,
|
||||||
|
iosource::FD_Set* except);
|
||||||
virtual double NextTimestamp(double* local_network_time);
|
virtual double NextTimestamp(double* local_network_time);
|
||||||
virtual void Process();
|
virtual void Process();
|
||||||
virtual TimerMgr::Tag* GetCurrentTag();
|
virtual TimerMgr::Tag* GetCurrentTag();
|
||||||
|
|
|
@ -541,19 +541,19 @@ bool XMLSerializationFormat::Write(uint16 v, const char* tag)
|
||||||
|
|
||||||
bool XMLSerializationFormat::Write(uint32 v, const char* tag)
|
bool XMLSerializationFormat::Write(uint32 v, const char* tag)
|
||||||
{
|
{
|
||||||
const char* tmp = fmt("%"PRIu32, v);
|
const char* tmp = fmt("%" PRIu32, v);
|
||||||
return WriteElem(tag, "uint32", tmp, strlen(tmp));
|
return WriteElem(tag, "uint32", tmp, strlen(tmp));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool XMLSerializationFormat::Write(uint64 v, const char* tag)
|
bool XMLSerializationFormat::Write(uint64 v, const char* tag)
|
||||||
{
|
{
|
||||||
const char* tmp = fmt("%"PRIu64, v);
|
const char* tmp = fmt("%" PRIu64, v);
|
||||||
return WriteElem(tag, "uint64", tmp, strlen(tmp));
|
return WriteElem(tag, "uint64", tmp, strlen(tmp));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool XMLSerializationFormat::Write(int64 v, const char* tag)
|
bool XMLSerializationFormat::Write(int64 v, const char* tag)
|
||||||
{
|
{
|
||||||
const char* tmp = fmt("%"PRId64, v);
|
const char* tmp = fmt("%" PRId64, v);
|
||||||
return WriteElem(tag, "int64", tmp, strlen(tmp));
|
return WriteElem(tag, "int64", tmp, strlen(tmp));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1068,9 +1068,10 @@ void EventPlayer::GotFunctionCall(const char* name, double time,
|
||||||
// We don't replay function calls.
|
// We don't replay function calls.
|
||||||
}
|
}
|
||||||
|
|
||||||
void EventPlayer::GetFds(int* read, int* write, int* except)
|
void EventPlayer::GetFds(iosource::FD_Set* read, iosource::FD_Set* write,
|
||||||
|
iosource::FD_Set* except)
|
||||||
{
|
{
|
||||||
*read = fd;
|
read->Insert(fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
double EventPlayer::NextTimestamp(double* local_network_time)
|
double EventPlayer::NextTimestamp(double* local_network_time)
|
||||||
|
|
|
@ -355,7 +355,8 @@ public:
|
||||||
EventPlayer(const char* file);
|
EventPlayer(const char* file);
|
||||||
virtual ~EventPlayer();
|
virtual ~EventPlayer();
|
||||||
|
|
||||||
virtual void GetFds(int* read, int* write, int* except);
|
virtual void GetFds(iosource::FD_Set* read, iosource::FD_Set* write,
|
||||||
|
iosource::FD_Set* except);
|
||||||
virtual double NextTimestamp(double* local_network_time);
|
virtual double NextTimestamp(double* local_network_time);
|
||||||
virtual void Process();
|
virtual void Process();
|
||||||
virtual const char* Tag() { return "EventPlayer"; }
|
virtual const char* Tag() { return "EventPlayer"; }
|
||||||
|
|
|
@ -544,7 +544,7 @@ void NetSessions::DoNextPacket(double t, const struct pcap_pkthdr* hdr,
|
||||||
if ( proto_typ != 0x0800 && proto_typ != 0x86dd )
|
if ( proto_typ != 0x0800 && proto_typ != 0x86dd )
|
||||||
{
|
{
|
||||||
// Not IPv4/IPv6 payload.
|
// Not IPv4/IPv6 payload.
|
||||||
Weird(fmt("unknown_gre_protocol_%"PRIu16, proto_typ), ip_hdr,
|
Weird(fmt("unknown_gre_protocol_%" PRIu16, proto_typ), ip_hdr,
|
||||||
encapsulation);
|
encapsulation);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -160,7 +160,7 @@ void ProfileLogger::Log()
|
||||||
file->Write(fmt("%.06f Connections expired due to inactivity: %d\n",
|
file->Write(fmt("%.06f Connections expired due to inactivity: %d\n",
|
||||||
network_time, killed_by_inactivity));
|
network_time, killed_by_inactivity));
|
||||||
|
|
||||||
file->Write(fmt("%.06f Total reassembler data: %"PRIu64"K\n", network_time,
|
file->Write(fmt("%.06f Total reassembler data: %" PRIu64"K\n", network_time,
|
||||||
Reassembler::TotalMemoryAllocation() / 1024));
|
Reassembler::TotalMemoryAllocation() / 1024));
|
||||||
|
|
||||||
// Signature engine.
|
// Signature engine.
|
||||||
|
|
|
@ -131,18 +131,19 @@ Trigger::Trigger(Expr* arg_cond, Stmt* arg_body, Stmt* arg_timeout_stmts,
|
||||||
arg_frame->SetDelayed();
|
arg_frame->SetDelayed();
|
||||||
}
|
}
|
||||||
|
|
||||||
Val* timeout = arg_timeout ? arg_timeout->ExprVal() : 0;
|
Val* timeout_val = arg_timeout ? arg_timeout->Eval(arg_frame) : 0;
|
||||||
|
|
||||||
// Make sure we don't get deleted if somebody calls a method like
|
// Make sure we don't get deleted if somebody calls a method like
|
||||||
// Timeout() while evaluating the trigger.
|
// Timeout() while evaluating the trigger.
|
||||||
Ref(this);
|
Ref(this);
|
||||||
|
|
||||||
if ( ! Eval() && timeout )
|
if ( ! Eval() && timeout_val )
|
||||||
{
|
{
|
||||||
timer = new TriggerTimer(timeout->AsInterval(), this);
|
timer = new TriggerTimer(timeout_val->AsInterval(), this);
|
||||||
timer_mgr->Add(timer);
|
timer_mgr->Add(timer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Unref(timeout_val);
|
||||||
Unref(this);
|
Unref(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -206,7 +207,7 @@ bool Trigger::Eval()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( v->IsZero() )
|
if ( ! v || v->IsZero() )
|
||||||
{
|
{
|
||||||
// Not true. Perhaps next time...
|
// Not true. Perhaps next time...
|
||||||
DBG_LOG(DBG_NOTIFIERS, "%s: trigger condition is false", Name());
|
DBG_LOG(DBG_NOTIFIERS, "%s: trigger condition is false", Name());
|
||||||
|
|
|
@ -598,7 +598,7 @@ SupportAnalyzer* Analyzer::FirstSupportAnalyzer(bool orig)
|
||||||
void Analyzer::DeliverPacket(int len, const u_char* data, bool is_orig,
|
void Analyzer::DeliverPacket(int len, const u_char* data, bool is_orig,
|
||||||
uint64 seq, const IP_Hdr* ip, int caplen)
|
uint64 seq, const IP_Hdr* ip, int caplen)
|
||||||
{
|
{
|
||||||
DBG_LOG(DBG_ANALYZER, "%s DeliverPacket(%d, %s, %"PRIu64", %p, %d) [%s%s]",
|
DBG_LOG(DBG_ANALYZER, "%s DeliverPacket(%d, %s, %" PRIu64", %p, %d) [%s%s]",
|
||||||
fmt_analyzer(this).c_str(), len, is_orig ? "T" : "F", seq, ip, caplen,
|
fmt_analyzer(this).c_str(), len, is_orig ? "T" : "F", seq, ip, caplen,
|
||||||
fmt_bytes((const char*) data, min(40, len)), len > 40 ? "..." : "");
|
fmt_bytes((const char*) data, min(40, len)), len > 40 ? "..." : "");
|
||||||
}
|
}
|
||||||
|
@ -612,7 +612,7 @@ void Analyzer::DeliverStream(int len, const u_char* data, bool is_orig)
|
||||||
|
|
||||||
void Analyzer::Undelivered(uint64 seq, int len, bool is_orig)
|
void Analyzer::Undelivered(uint64 seq, int len, bool is_orig)
|
||||||
{
|
{
|
||||||
DBG_LOG(DBG_ANALYZER, "%s Undelivered(%"PRIu64", %d, %s)",
|
DBG_LOG(DBG_ANALYZER, "%s Undelivered(%" PRIu64", %d, %s)",
|
||||||
fmt_analyzer(this).c_str(), seq, len, is_orig ? "T" : "F");
|
fmt_analyzer(this).c_str(), seq, len, is_orig ? "T" : "F");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -188,6 +188,9 @@ flow DHCP_Flow(is_orig: bool) {
|
||||||
switch ( type )
|
switch ( type )
|
||||||
{
|
{
|
||||||
case DHCPOFFER:
|
case DHCPOFFER:
|
||||||
|
if ( ! router_list )
|
||||||
|
router_list = new TableVal(dhcp_router_list);
|
||||||
|
|
||||||
BifEvent::generate_dhcp_offer(connection()->bro_analyzer(),
|
BifEvent::generate_dhcp_offer(connection()->bro_analyzer(),
|
||||||
connection()->bro_analyzer()->Conn(),
|
connection()->bro_analyzer()->Conn(),
|
||||||
dhcp_msg_val_->Ref(), new AddrVal(subnet_mask),
|
dhcp_msg_val_->Ref(), new AddrVal(subnet_mask),
|
||||||
|
@ -195,6 +198,9 @@ flow DHCP_Flow(is_orig: bool) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DHCPACK:
|
case DHCPACK:
|
||||||
|
if ( ! router_list )
|
||||||
|
router_list = new TableVal(dhcp_router_list);
|
||||||
|
|
||||||
BifEvent::generate_dhcp_ack(connection()->bro_analyzer(),
|
BifEvent::generate_dhcp_ack(connection()->bro_analyzer(),
|
||||||
connection()->bro_analyzer()->Conn(),
|
connection()->bro_analyzer()->Conn(),
|
||||||
dhcp_msg_val_->Ref(), new AddrVal(subnet_mask),
|
dhcp_msg_val_->Ref(), new AddrVal(subnet_mask),
|
||||||
|
@ -202,12 +208,14 @@ flow DHCP_Flow(is_orig: bool) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DHCPNAK:
|
case DHCPNAK:
|
||||||
|
Unref(router_list);
|
||||||
BifEvent::generate_dhcp_nak(connection()->bro_analyzer(),
|
BifEvent::generate_dhcp_nak(connection()->bro_analyzer(),
|
||||||
connection()->bro_analyzer()->Conn(),
|
connection()->bro_analyzer()->Conn(),
|
||||||
dhcp_msg_val_->Ref(), host_name);
|
dhcp_msg_val_->Ref(), host_name);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
Unref(router_list);
|
||||||
Unref(host_name);
|
Unref(host_name);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,24 @@ connection DNP3_Conn(bro_analyzer: BroAnalyzer) {
|
||||||
downflow = DNP3_Flow(false);
|
downflow = DNP3_Flow(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
%header{
|
||||||
|
uint64 bytestring_to_time(const_bytestring time48);
|
||||||
|
%}
|
||||||
|
|
||||||
|
%code{
|
||||||
|
uint64 bytestring_to_time(const_bytestring time48)
|
||||||
|
{
|
||||||
|
/* In DNP3, a timestamp is represented by 6 bytes since epoch
|
||||||
|
in milliseconds. The 6 bytes are stored in big endian format. */
|
||||||
|
uint64 epochTime = 0;
|
||||||
|
|
||||||
|
for ( int i = time48.length() - 1; i >= 0; i-- )
|
||||||
|
epochTime = time48[i] + epochTime * 256;
|
||||||
|
|
||||||
|
return epochTime;
|
||||||
|
}
|
||||||
|
%}
|
||||||
|
|
||||||
flow DNP3_Flow(is_orig: bool) {
|
flow DNP3_Flow(is_orig: bool) {
|
||||||
flowunit = DNP3_PDU(is_orig) withcontext (connection, this);
|
flowunit = DNP3_PDU(is_orig) withcontext (connection, this);
|
||||||
|
|
||||||
|
@ -222,7 +240,7 @@ flow DNP3_Flow(is_orig: bool) {
|
||||||
BifEvent::generate_dnp3_frozen_counter_32wFlagTime(
|
BifEvent::generate_dnp3_frozen_counter_32wFlagTime(
|
||||||
connection()->bro_analyzer(),
|
connection()->bro_analyzer(),
|
||||||
connection()->bro_analyzer()->Conn(),
|
connection()->bro_analyzer()->Conn(),
|
||||||
is_orig(), flag, count_value, bytestring_to_val(time48));
|
is_orig(), flag, count_value, bytestring_to_time(time48));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -236,7 +254,7 @@ flow DNP3_Flow(is_orig: bool) {
|
||||||
BifEvent::generate_dnp3_frozen_counter_16wFlagTime(
|
BifEvent::generate_dnp3_frozen_counter_16wFlagTime(
|
||||||
connection()->bro_analyzer(),
|
connection()->bro_analyzer(),
|
||||||
connection()->bro_analyzer()->Conn(),
|
connection()->bro_analyzer()->Conn(),
|
||||||
is_orig(), flag, count_value, bytestring_to_val(time48));
|
is_orig(), flag, count_value, bytestring_to_time(time48));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -390,7 +408,7 @@ flow DNP3_Flow(is_orig: bool) {
|
||||||
BifEvent::generate_dnp3_frozen_analog_input_32wTime(
|
BifEvent::generate_dnp3_frozen_analog_input_32wTime(
|
||||||
connection()->bro_analyzer(),
|
connection()->bro_analyzer(),
|
||||||
connection()->bro_analyzer()->Conn(),
|
connection()->bro_analyzer()->Conn(),
|
||||||
is_orig(), flag, frozen_value, bytestring_to_val(time48));
|
is_orig(), flag, frozen_value, bytestring_to_time(time48));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -404,7 +422,7 @@ flow DNP3_Flow(is_orig: bool) {
|
||||||
BifEvent::generate_dnp3_frozen_analog_input_16wTime(
|
BifEvent::generate_dnp3_frozen_analog_input_16wTime(
|
||||||
connection()->bro_analyzer(),
|
connection()->bro_analyzer(),
|
||||||
connection()->bro_analyzer()->Conn(),
|
connection()->bro_analyzer()->Conn(),
|
||||||
is_orig(), flag, frozen_value, bytestring_to_val(time48));
|
is_orig(), flag, frozen_value, bytestring_to_time(time48));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -502,7 +520,7 @@ flow DNP3_Flow(is_orig: bool) {
|
||||||
BifEvent::generate_dnp3_analog_input_event_32wTime(
|
BifEvent::generate_dnp3_analog_input_event_32wTime(
|
||||||
connection()->bro_analyzer(),
|
connection()->bro_analyzer(),
|
||||||
connection()->bro_analyzer()->Conn(),
|
connection()->bro_analyzer()->Conn(),
|
||||||
is_orig(), flag, value, bytestring_to_val(time48));
|
is_orig(), flag, value, bytestring_to_time(time48));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -516,7 +534,7 @@ flow DNP3_Flow(is_orig: bool) {
|
||||||
BifEvent::generate_dnp3_analog_input_event_16wTime(
|
BifEvent::generate_dnp3_analog_input_event_16wTime(
|
||||||
connection()->bro_analyzer(),
|
connection()->bro_analyzer(),
|
||||||
connection()->bro_analyzer()->Conn(),
|
connection()->bro_analyzer()->Conn(),
|
||||||
is_orig(), flag, value, bytestring_to_val(time48));
|
is_orig(), flag, value, bytestring_to_time(time48));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -558,7 +576,7 @@ flow DNP3_Flow(is_orig: bool) {
|
||||||
BifEvent::generate_dnp3_analog_input_event_SPwTime(
|
BifEvent::generate_dnp3_analog_input_event_SPwTime(
|
||||||
connection()->bro_analyzer(),
|
connection()->bro_analyzer(),
|
||||||
connection()->bro_analyzer()->Conn(),
|
connection()->bro_analyzer()->Conn(),
|
||||||
is_orig(), flag, value, bytestring_to_val(time48));
|
is_orig(), flag, value, bytestring_to_time(time48));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -572,7 +590,7 @@ flow DNP3_Flow(is_orig: bool) {
|
||||||
BifEvent::generate_dnp3_analog_input_event_DPwTime(
|
BifEvent::generate_dnp3_analog_input_event_DPwTime(
|
||||||
connection()->bro_analyzer(),
|
connection()->bro_analyzer(),
|
||||||
connection()->bro_analyzer()->Conn(),
|
connection()->bro_analyzer()->Conn(),
|
||||||
is_orig(), flag, value_low, value_high, bytestring_to_val(time48));
|
is_orig(), flag, value_low, value_high, bytestring_to_time(time48));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -614,7 +632,7 @@ flow DNP3_Flow(is_orig: bool) {
|
||||||
BifEvent::generate_dnp3_frozen_analog_input_event_32wTime(
|
BifEvent::generate_dnp3_frozen_analog_input_event_32wTime(
|
||||||
connection()->bro_analyzer(),
|
connection()->bro_analyzer(),
|
||||||
connection()->bro_analyzer()->Conn(),
|
connection()->bro_analyzer()->Conn(),
|
||||||
is_orig(), flag, frozen_value, bytestring_to_val(time48));
|
is_orig(), flag, frozen_value, bytestring_to_time(time48));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -628,7 +646,7 @@ flow DNP3_Flow(is_orig: bool) {
|
||||||
BifEvent::generate_dnp3_frozen_analog_input_event_16wTime(
|
BifEvent::generate_dnp3_frozen_analog_input_event_16wTime(
|
||||||
connection()->bro_analyzer(),
|
connection()->bro_analyzer(),
|
||||||
connection()->bro_analyzer()->Conn(),
|
connection()->bro_analyzer()->Conn(),
|
||||||
is_orig(), flag, frozen_value, bytestring_to_val(time48));
|
is_orig(), flag, frozen_value, bytestring_to_time(time48));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -670,7 +688,7 @@ flow DNP3_Flow(is_orig: bool) {
|
||||||
BifEvent::generate_dnp3_frozen_analog_input_event_SPwTime(
|
BifEvent::generate_dnp3_frozen_analog_input_event_SPwTime(
|
||||||
connection()->bro_analyzer(),
|
connection()->bro_analyzer(),
|
||||||
connection()->bro_analyzer()->Conn(),
|
connection()->bro_analyzer()->Conn(),
|
||||||
is_orig(), flag, frozen_value, bytestring_to_val(time48));
|
is_orig(), flag, frozen_value, bytestring_to_time(time48));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -684,7 +702,7 @@ flow DNP3_Flow(is_orig: bool) {
|
||||||
BifEvent::generate_dnp3_frozen_analog_input_event_DPwTime(
|
BifEvent::generate_dnp3_frozen_analog_input_event_DPwTime(
|
||||||
connection()->bro_analyzer(),
|
connection()->bro_analyzer(),
|
||||||
connection()->bro_analyzer()->Conn(),
|
connection()->bro_analyzer()->Conn(),
|
||||||
is_orig(), flag, frozen_value_low, frozen_value_high, bytestring_to_val(time48));
|
is_orig(), flag, frozen_value_low, frozen_value_high, bytestring_to_time(time48));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -130,11 +130,11 @@ event dnp3_frozen_counter_16wFlag%(c: connection, is_orig: bool, flag:count, cou
|
||||||
|
|
||||||
## Generated for DNP3 objects with the group number 21 and variation number 5
|
## Generated for DNP3 objects with the group number 21 and variation number 5
|
||||||
## frozen counter 32 bit with flag and time
|
## frozen counter 32 bit with flag and time
|
||||||
event dnp3_frozen_counter_32wFlagTime%(c: connection, is_orig: bool, flag:count, count_value: count, time48: string%);
|
event dnp3_frozen_counter_32wFlagTime%(c: connection, is_orig: bool, flag:count, count_value: count, time48: count%);
|
||||||
|
|
||||||
## Generated for DNP3 objects with the group number 21 and variation number 6
|
## Generated for DNP3 objects with the group number 21 and variation number 6
|
||||||
## frozen counter 16 bit with flag and time
|
## frozen counter 16 bit with flag and time
|
||||||
event dnp3_frozen_counter_16wFlagTime%(c: connection, is_orig: bool, flag:count, count_value: count, time48: string%);
|
event dnp3_frozen_counter_16wFlagTime%(c: connection, is_orig: bool, flag:count, count_value: count, time48: count%);
|
||||||
|
|
||||||
## Generated for DNP3 objects with the group number 21 and variation number 9
|
## Generated for DNP3 objects with the group number 21 and variation number 9
|
||||||
## frozen counter 32 bit without flag
|
## frozen counter 32 bit without flag
|
||||||
|
@ -178,11 +178,11 @@ event dnp3_frozen_analog_input_16wFlag%(c: connection, is_orig: bool, flag: coun
|
||||||
|
|
||||||
## Generated for DNP3 objects with the group number 31 and variation number 3
|
## Generated for DNP3 objects with the group number 31 and variation number 3
|
||||||
## frozen analog input 32 bit with time-of-freeze
|
## frozen analog input 32 bit with time-of-freeze
|
||||||
event dnp3_frozen_analog_input_32wTime%(c: connection, is_orig: bool, flag: count, frozen_value: count, time48: string%);
|
event dnp3_frozen_analog_input_32wTime%(c: connection, is_orig: bool, flag: count, frozen_value: count, time48: count%);
|
||||||
|
|
||||||
## Generated for DNP3 objects with the group number 31 and variation number 4
|
## Generated for DNP3 objects with the group number 31 and variation number 4
|
||||||
## frozen analog input 16 bit with time-of-freeze
|
## frozen analog input 16 bit with time-of-freeze
|
||||||
event dnp3_frozen_analog_input_16wTime%(c: connection, is_orig: bool, flag: count, frozen_value: count, time48: string%);
|
event dnp3_frozen_analog_input_16wTime%(c: connection, is_orig: bool, flag: count, frozen_value: count, time48: count%);
|
||||||
|
|
||||||
## Generated for DNP3 objects with the group number 31 and variation number 5
|
## Generated for DNP3 objects with the group number 31 and variation number 5
|
||||||
## frozen analog input 32 bit without flag
|
## frozen analog input 32 bit without flag
|
||||||
|
@ -210,11 +210,11 @@ event dnp3_analog_input_event_16woTime%(c: connection, is_orig: bool, flag: coun
|
||||||
|
|
||||||
## Generated for DNP3 objects with the group number 32 and variation number 3
|
## Generated for DNP3 objects with the group number 32 and variation number 3
|
||||||
## analog input event 32 bit with time
|
## analog input event 32 bit with time
|
||||||
event dnp3_analog_input_event_32wTime%(c: connection, is_orig: bool, flag: count, value: count, time48: string%);
|
event dnp3_analog_input_event_32wTime%(c: connection, is_orig: bool, flag: count, value: count, time48: count%);
|
||||||
|
|
||||||
## Generated for DNP3 objects with the group number 32 and variation number 4
|
## Generated for DNP3 objects with the group number 32 and variation number 4
|
||||||
## analog input event 16 bit with time
|
## analog input event 16 bit with time
|
||||||
event dnp3_analog_input_event_16wTime%(c: connection, is_orig: bool, flag: count, value: count, time48: string%);
|
event dnp3_analog_input_event_16wTime%(c: connection, is_orig: bool, flag: count, value: count, time48: count%);
|
||||||
|
|
||||||
## Generated for DNP3 objects with the group number 32 and variation number 5
|
## Generated for DNP3 objects with the group number 32 and variation number 5
|
||||||
## analog input event single-precision float point without time
|
## analog input event single-precision float point without time
|
||||||
|
@ -226,11 +226,11 @@ event dnp3_analog_input_event_DPwoTime%(c: connection, is_orig: bool, flag: coun
|
||||||
|
|
||||||
## Generated for DNP3 objects with the group number 32 and variation number 7
|
## Generated for DNP3 objects with the group number 32 and variation number 7
|
||||||
## analog input event single-precision float point with time
|
## analog input event single-precision float point with time
|
||||||
event dnp3_analog_input_event_SPwTime%(c: connection, is_orig: bool, flag: count, value: count, time48: string%);
|
event dnp3_analog_input_event_SPwTime%(c: connection, is_orig: bool, flag: count, value: count, time48: count%);
|
||||||
|
|
||||||
## Generated for DNP3 objects with the group number 32 and variation number 8
|
## Generated for DNP3 objects with the group number 32 and variation number 8
|
||||||
## analog input event double-precisiion float point with time
|
## analog input event double-precisiion float point with time
|
||||||
event dnp3_analog_input_event_DPwTime%(c: connection, is_orig: bool, flag: count, value_low: count, value_high: count, time48: string%);
|
event dnp3_analog_input_event_DPwTime%(c: connection, is_orig: bool, flag: count, value_low: count, value_high: count, time48: count%);
|
||||||
|
|
||||||
## Generated for DNP3 objects with the group number 33 and variation number 1
|
## Generated for DNP3 objects with the group number 33 and variation number 1
|
||||||
## frozen analog input event 32 bit without time
|
## frozen analog input event 32 bit without time
|
||||||
|
@ -242,11 +242,11 @@ event dnp3_frozen_analog_input_event_16woTime%(c: connection, is_orig: bool, fla
|
||||||
|
|
||||||
## Generated for DNP3 objects with the group number 33 and variation number 3
|
## Generated for DNP3 objects with the group number 33 and variation number 3
|
||||||
## frozen analog input event 32 bit with time
|
## frozen analog input event 32 bit with time
|
||||||
event dnp3_frozen_analog_input_event_32wTime%(c: connection, is_orig: bool, flag: count, frozen_value: count, time48: string%);
|
event dnp3_frozen_analog_input_event_32wTime%(c: connection, is_orig: bool, flag: count, frozen_value: count, time48: count%);
|
||||||
|
|
||||||
## Generated for DNP3 objects with the group number 33 and variation number 4
|
## Generated for DNP3 objects with the group number 33 and variation number 4
|
||||||
## frozen analog input event 16 bit with time
|
## frozen analog input event 16 bit with time
|
||||||
event dnp3_frozen_analog_input_event_16wTime%(c: connection, is_orig: bool, flag: count, frozen_value: count, time48: string%);
|
event dnp3_frozen_analog_input_event_16wTime%(c: connection, is_orig: bool, flag: count, frozen_value: count, time48: count%);
|
||||||
|
|
||||||
## Generated for DNP3 objects with the group number 33 and variation number 5
|
## Generated for DNP3 objects with the group number 33 and variation number 5
|
||||||
## frozen analog input event single-precision float point without time
|
## frozen analog input event single-precision float point without time
|
||||||
|
@ -258,11 +258,11 @@ event dnp3_frozen_analog_input_event_DPwoTime%(c: connection, is_orig: bool, fla
|
||||||
|
|
||||||
## Generated for DNP3 objects with the group number 33 and variation number 7
|
## Generated for DNP3 objects with the group number 33 and variation number 7
|
||||||
## frozen analog input event single-precision float point with time
|
## frozen analog input event single-precision float point with time
|
||||||
event dnp3_frozen_analog_input_event_SPwTime%(c: connection, is_orig: bool, flag: count, frozen_value: count, time48: string%);
|
event dnp3_frozen_analog_input_event_SPwTime%(c: connection, is_orig: bool, flag: count, frozen_value: count, time48: count%);
|
||||||
|
|
||||||
## Generated for DNP3 objects with the group number 34 and variation number 8
|
## Generated for DNP3 objects with the group number 34 and variation number 8
|
||||||
## frozen analog input event double-precision float point with time
|
## frozen analog input event double-precision float point with time
|
||||||
event dnp3_frozen_analog_input_event_DPwTime%(c: connection, is_orig: bool, flag: count, frozen_value_low: count, frozen_value_high: count, time48: string%);
|
event dnp3_frozen_analog_input_event_DPwTime%(c: connection, is_orig: bool, flag: count, frozen_value_low: count, frozen_value_high: count, time48: count%);
|
||||||
|
|
||||||
## g70
|
## g70
|
||||||
event dnp3_file_transport%(c: connection, is_orig: bool, file_handle: count, block_num: count, file_data: string%);
|
event dnp3_file_transport%(c: connection, is_orig: bool, file_handle: count, block_num: count, file_data: string%);
|
||||||
|
|
|
@ -416,7 +416,7 @@ void HTTP_Entity::SubmitHeader(mime::MIME_Header* h)
|
||||||
int64_t len = l - f + 1;
|
int64_t len = l - f + 1;
|
||||||
|
|
||||||
if ( DEBUG_http )
|
if ( DEBUG_http )
|
||||||
DEBUG_MSG("Content-Range length = %"PRId64"\n", len);
|
DEBUG_MSG("Content-Range length = %" PRId64"\n", len);
|
||||||
|
|
||||||
if ( len > 0 )
|
if ( len > 0 )
|
||||||
{
|
{
|
||||||
|
@ -466,6 +466,20 @@ void HTTP_Entity::SubmitAllHeaders()
|
||||||
if ( DEBUG_http )
|
if ( DEBUG_http )
|
||||||
DEBUG_MSG("%.6f end of headers\n", network_time);
|
DEBUG_MSG("%.6f end of headers\n", network_time);
|
||||||
|
|
||||||
|
if ( Parent() &&
|
||||||
|
Parent()->MIMEContentType() == mime::CONTENT_TYPE_MULTIPART )
|
||||||
|
{
|
||||||
|
// Don't treat single \r or \n characters in the multipart body content
|
||||||
|
// as lines because the MIME_Entity code will implicitly add back a
|
||||||
|
// \r\n for each line it receives. We do this instead of setting
|
||||||
|
// plain delivery mode for the content line analyzer because
|
||||||
|
// the size of the content to deliver "plainly" may be unknown
|
||||||
|
// and just leaving it in that mode indefinitely screws up the
|
||||||
|
// detection of multipart boundaries.
|
||||||
|
http_message->content_line->SupressWeirds(true);
|
||||||
|
http_message->content_line->SetCRLFAsEOL(0);
|
||||||
|
}
|
||||||
|
|
||||||
// The presence of a message-body in a request is signaled by
|
// The presence of a message-body in a request is signaled by
|
||||||
// the inclusion of a Content-Length or Transfer-Encoding
|
// the inclusion of a Content-Length or Transfer-Encoding
|
||||||
// header field in the request's message-headers.
|
// header field in the request's message-headers.
|
||||||
|
@ -655,6 +669,13 @@ void HTTP_Message::EndEntity(mime::MIME_Entity* entity)
|
||||||
|
|
||||||
current_entity = (HTTP_Entity*) entity->Parent();
|
current_entity = (HTTP_Entity*) entity->Parent();
|
||||||
|
|
||||||
|
if ( entity->Parent() &&
|
||||||
|
entity->Parent()->MIMEContentType() == mime::CONTENT_TYPE_MULTIPART )
|
||||||
|
{
|
||||||
|
content_line->SupressWeirds(false);
|
||||||
|
content_line->SetCRLFAsEOL();
|
||||||
|
}
|
||||||
|
|
||||||
// It is necessary to call Done when EndEntity is triggered by
|
// It is necessary to call Done when EndEntity is triggered by
|
||||||
// SubmitAllHeaders (through EndOfData).
|
// SubmitAllHeaders (through EndOfData).
|
||||||
if ( entity == top_level )
|
if ( entity == top_level )
|
||||||
|
@ -1039,7 +1060,7 @@ void HTTP_Analyzer::Undelivered(uint64 seq, int len, bool is_orig)
|
||||||
{
|
{
|
||||||
if ( msg )
|
if ( msg )
|
||||||
msg->SubmitEvent(mime::MIME_EVENT_CONTENT_GAP,
|
msg->SubmitEvent(mime::MIME_EVENT_CONTENT_GAP,
|
||||||
fmt("seq=%"PRIu64", len=%d", seq, len));
|
fmt("seq=%" PRIu64", len=%d", seq, len));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if the content gap falls completely within a message body
|
// Check if the content gap falls completely within a message body
|
||||||
|
|
|
@ -99,6 +99,8 @@ enum {
|
||||||
// HTTP_MessageDone -> {Request,Reply}Made
|
// HTTP_MessageDone -> {Request,Reply}Made
|
||||||
|
|
||||||
class HTTP_Message : public mime::MIME_Message {
|
class HTTP_Message : public mime::MIME_Message {
|
||||||
|
friend class HTTP_Entity;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
HTTP_Message(HTTP_Analyzer* analyzer, tcp::ContentLine_Analyzer* cl,
|
HTTP_Message(HTTP_Analyzer* analyzer, tcp::ContentLine_Analyzer* cl,
|
||||||
bool is_orig, int expect_body, int64_t init_header_length);
|
bool is_orig, int expect_body, int64_t init_header_length);
|
||||||
|
|
|
@ -553,6 +553,7 @@ void MIME_Entity::init()
|
||||||
data_buf_offset = -1;
|
data_buf_offset = -1;
|
||||||
|
|
||||||
message = 0;
|
message = 0;
|
||||||
|
delay_adding_implicit_CRLF = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
MIME_Entity::~MIME_Entity()
|
MIME_Entity::~MIME_Entity()
|
||||||
|
@ -1003,12 +1004,33 @@ void MIME_Entity::DecodeDataLine(int len, const char* data, int trailing_CRLF)
|
||||||
|
|
||||||
void MIME_Entity::DecodeBinary(int len, const char* data, int trailing_CRLF)
|
void MIME_Entity::DecodeBinary(int len, const char* data, int trailing_CRLF)
|
||||||
{
|
{
|
||||||
|
if ( delay_adding_implicit_CRLF )
|
||||||
|
{
|
||||||
|
delay_adding_implicit_CRLF = false;
|
||||||
|
DataOctet(CR);
|
||||||
|
DataOctet(LF);
|
||||||
|
}
|
||||||
|
|
||||||
DataOctets(len, data);
|
DataOctets(len, data);
|
||||||
|
|
||||||
if ( trailing_CRLF )
|
if ( trailing_CRLF )
|
||||||
{
|
{
|
||||||
DataOctet(CR);
|
if ( Parent() &&
|
||||||
DataOctet(LF);
|
Parent()->MIMEContentType() == mime::CONTENT_TYPE_MULTIPART )
|
||||||
|
{
|
||||||
|
// For multipart body content, we want to keep all implicit CRLFs
|
||||||
|
// except for the last because that one belongs to the multipart
|
||||||
|
// boundary delimiter, not the content. Simply delaying the
|
||||||
|
// addition of implicit CRLFs until another chunk of content
|
||||||
|
// data comes in is a way to prevent the CRLF before the final
|
||||||
|
// message boundary from being accidentally added to the content.
|
||||||
|
delay_adding_implicit_CRLF = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DataOctet(CR);
|
||||||
|
DataOctet(LF);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -173,6 +173,7 @@ protected:
|
||||||
int data_buf_offset;
|
int data_buf_offset;
|
||||||
|
|
||||||
MIME_Message* message;
|
MIME_Message* message;
|
||||||
|
bool delay_adding_implicit_CRLF;
|
||||||
};
|
};
|
||||||
|
|
||||||
// The reason I separate MIME_Message as an abstract class is to
|
// The reason I separate MIME_Message as an abstract class is to
|
||||||
|
|
|
@ -21,7 +21,9 @@ static const char* smtp_cmd_word[] = {
|
||||||
#include "SMTP_cmd.def"
|
#include "SMTP_cmd.def"
|
||||||
};
|
};
|
||||||
|
|
||||||
#define SMTP_CMD_WORD(code) ((code >= 0) ? smtp_cmd_word[code] : "(UNKNOWN)")
|
static const char* unknown_cmd = "(UNKNOWN)";
|
||||||
|
|
||||||
|
#define SMTP_CMD_WORD(code) ((code >= 0) ? smtp_cmd_word[code] : unknown_cmd)
|
||||||
|
|
||||||
|
|
||||||
SMTP_Analyzer::SMTP_Analyzer(Connection* conn)
|
SMTP_Analyzer::SMTP_Analyzer(Connection* conn)
|
||||||
|
@ -83,7 +85,7 @@ void SMTP_Analyzer::Undelivered(uint64 seq, int len, bool is_orig)
|
||||||
if ( len <= 0 )
|
if ( len <= 0 )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
const char* buf = fmt("seq = %"PRIu64", len = %d", seq, len);
|
const char* buf = fmt("seq = %" PRIu64", len = %d", seq, len);
|
||||||
int buf_len = strlen(buf);
|
int buf_len = strlen(buf);
|
||||||
|
|
||||||
Unexpected(is_orig, "content gap", buf_len, buf);
|
Unexpected(is_orig, "content gap", buf_len, buf);
|
||||||
|
@ -422,7 +424,6 @@ void SMTP_Analyzer::NewReply(const int reply_code)
|
||||||
if ( state == SMTP_AFTER_GAP && reply_code > 0 )
|
if ( state == SMTP_AFTER_GAP && reply_code > 0 )
|
||||||
{
|
{
|
||||||
state = SMTP_GAP_RECOVERY;
|
state = SMTP_GAP_RECOVERY;
|
||||||
const char* unknown_cmd = SMTP_CMD_WORD(-1);
|
|
||||||
RequestEvent(strlen(unknown_cmd), unknown_cmd, 0, "");
|
RequestEvent(strlen(unknown_cmd), unknown_cmd, 0, "");
|
||||||
/*
|
/*
|
||||||
if ( line_after_gap )
|
if ( line_after_gap )
|
||||||
|
|
|
@ -84,7 +84,7 @@ StringVal* asn1_oid_to_val(const ASN1Encoding* oid)
|
||||||
if ( i > 0 )
|
if ( i > 0 )
|
||||||
{
|
{
|
||||||
rval += ".";
|
rval += ".";
|
||||||
snprintf(tmp, sizeof(tmp), "%"PRIu64, subidentifier_values[i]);
|
snprintf(tmp, sizeof(tmp), "%" PRIu64, subidentifier_values[i]);
|
||||||
rval += tmp;
|
rval += tmp;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -32,6 +32,7 @@ void ContentLine_Analyzer::InitState()
|
||||||
seq_to_skip = 0;
|
seq_to_skip = 0;
|
||||||
plain_delivery_length = 0;
|
plain_delivery_length = 0;
|
||||||
is_plain = 0;
|
is_plain = 0;
|
||||||
|
suppress_weirds = false;
|
||||||
|
|
||||||
InitBuffer(0);
|
InitBuffer(0);
|
||||||
}
|
}
|
||||||
|
@ -258,7 +259,7 @@ int ContentLine_Analyzer::DoDeliverOnce(int len, const u_char* data)
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( Conn()->FlagEvent(SINGULAR_LF) )
|
if ( ! suppress_weirds && Conn()->FlagEvent(SINGULAR_LF) )
|
||||||
Conn()->Weird("line_terminated_with_single_LF");
|
Conn()->Weird("line_terminated_with_single_LF");
|
||||||
buf[offset++] = c;
|
buf[offset++] = c;
|
||||||
}
|
}
|
||||||
|
@ -277,7 +278,7 @@ int ContentLine_Analyzer::DoDeliverOnce(int len, const u_char* data)
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( last_char == '\r' )
|
if ( last_char == '\r' )
|
||||||
if ( Conn()->FlagEvent(SINGULAR_CR) )
|
if ( ! suppress_weirds && Conn()->FlagEvent(SINGULAR_CR) )
|
||||||
Conn()->Weird("line_terminated_with_single_CR");
|
Conn()->Weird("line_terminated_with_single_CR");
|
||||||
|
|
||||||
last_char = c;
|
last_char = c;
|
||||||
|
@ -307,7 +308,7 @@ void ContentLine_Analyzer::CheckNUL()
|
||||||
; // Ignore it.
|
; // Ignore it.
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( Conn()->FlagEvent(NUL_IN_LINE) )
|
if ( ! suppress_weirds && Conn()->FlagEvent(NUL_IN_LINE) )
|
||||||
Conn()->Weird("NUL_in_line");
|
Conn()->Weird("NUL_in_line");
|
||||||
flag_NULs = 0;
|
flag_NULs = 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,9 @@ public:
|
||||||
ContentLine_Analyzer(Connection* conn, bool orig);
|
ContentLine_Analyzer(Connection* conn, bool orig);
|
||||||
~ContentLine_Analyzer();
|
~ContentLine_Analyzer();
|
||||||
|
|
||||||
|
void SupressWeirds(bool enable)
|
||||||
|
{ suppress_weirds = enable; }
|
||||||
|
|
||||||
// If enabled, flag (first) line with embedded NUL. Default off.
|
// If enabled, flag (first) line with embedded NUL. Default off.
|
||||||
void SetIsNULSensitive(bool enable)
|
void SetIsNULSensitive(bool enable)
|
||||||
{ flag_NULs = enable; }
|
{ flag_NULs = enable; }
|
||||||
|
@ -96,6 +99,8 @@ protected:
|
||||||
// Don't deliver further data.
|
// Don't deliver further data.
|
||||||
int skip_deliveries;
|
int skip_deliveries;
|
||||||
|
|
||||||
|
bool suppress_weirds;
|
||||||
|
|
||||||
// If true, flag (first) line with embedded NUL.
|
// If true, flag (first) line with embedded NUL.
|
||||||
unsigned int flag_NULs:1;
|
unsigned int flag_NULs:1;
|
||||||
|
|
||||||
|
|
|
@ -1901,7 +1901,7 @@ void TCP_ApplicationAnalyzer::DeliverPacket(int len, const u_char* data,
|
||||||
const IP_Hdr* ip, int caplen)
|
const IP_Hdr* ip, int caplen)
|
||||||
{
|
{
|
||||||
Analyzer::DeliverPacket(len, data, is_orig, seq, ip, caplen);
|
Analyzer::DeliverPacket(len, data, is_orig, seq, ip, caplen);
|
||||||
DBG_LOG(DBG_ANALYZER, "TCP_ApplicationAnalyzer ignoring DeliverPacket(%d, %s, %"PRIu64", %p, %d) [%s%s]",
|
DBG_LOG(DBG_ANALYZER, "TCP_ApplicationAnalyzer ignoring DeliverPacket(%d, %s, %" PRIu64", %p, %d) [%s%s]",
|
||||||
len, is_orig ? "T" : "F", seq, ip, caplen,
|
len, is_orig ? "T" : "F", seq, ip, caplen,
|
||||||
fmt_bytes((const char*) data, min(40, len)), len > 40 ? "..." : "");
|
fmt_bytes((const char*) data, min(40, len)), len > 40 ? "..." : "");
|
||||||
}
|
}
|
||||||
|
@ -2053,7 +2053,7 @@ int TCPStats_Endpoint::DataSent(double /* t */, uint64 seq, int len, int caplen,
|
||||||
num_rxmit_bytes += len;
|
num_rxmit_bytes += len;
|
||||||
}
|
}
|
||||||
|
|
||||||
DEBUG_MSG("%.6f rexmit %"PRIu64" + %d <= %"PRIu64" data_in_flight = %d\n",
|
DEBUG_MSG("%.6f rexmit %" PRIu64" + %d <= %" PRIu64" data_in_flight = %d\n",
|
||||||
network_time, seq, len, max_top_seq, data_in_flight);
|
network_time, seq, len, max_top_seq, data_in_flight);
|
||||||
|
|
||||||
if ( tcp_rexmit )
|
if ( tcp_rexmit )
|
||||||
|
|
|
@ -188,7 +188,7 @@ void TCP_Reassembler::Undelivered(uint64 up_to_seq)
|
||||||
|
|
||||||
if ( DEBUG_tcp_contents )
|
if ( DEBUG_tcp_contents )
|
||||||
{
|
{
|
||||||
DEBUG_MSG("%.6f Undelivered: IsOrig()=%d up_to_seq=%"PRIu64", last_reassm=%"PRIu64", "
|
DEBUG_MSG("%.6f Undelivered: IsOrig()=%d up_to_seq=%" PRIu64", last_reassm=%" PRIu64", "
|
||||||
"endp: FIN_cnt=%d, RST_cnt=%d, "
|
"endp: FIN_cnt=%d, RST_cnt=%d, "
|
||||||
"peer: FIN_cnt=%d, RST_cnt=%d\n",
|
"peer: FIN_cnt=%d, RST_cnt=%d\n",
|
||||||
network_time, IsOrig(), up_to_seq, last_reassem_seq,
|
network_time, IsOrig(), up_to_seq, last_reassem_seq,
|
||||||
|
@ -219,7 +219,7 @@ void TCP_Reassembler::Undelivered(uint64 up_to_seq)
|
||||||
{
|
{
|
||||||
if ( DEBUG_tcp_contents )
|
if ( DEBUG_tcp_contents )
|
||||||
{
|
{
|
||||||
DEBUG_MSG("%.6f Undelivered: IsOrig()=%d, seq=%"PRIu64", len=%"PRIu64", "
|
DEBUG_MSG("%.6f Undelivered: IsOrig()=%d, seq=%" PRIu64", len=%" PRIu64", "
|
||||||
"skip_deliveries=%d\n",
|
"skip_deliveries=%d\n",
|
||||||
network_time, IsOrig(), last_reassem_seq,
|
network_time, IsOrig(), last_reassem_seq,
|
||||||
up_to_seq - last_reassem_seq,
|
up_to_seq - last_reassem_seq,
|
||||||
|
@ -249,7 +249,9 @@ void TCP_Reassembler::Undelivered(uint64 up_to_seq)
|
||||||
Gap(gap_at_seq, gap_len);
|
Gap(gap_at_seq, gap_len);
|
||||||
last_reassem_seq += gap_len;
|
last_reassem_seq += gap_len;
|
||||||
BlockInserted(b);
|
BlockInserted(b);
|
||||||
b = b->next;
|
// Inserting a block may cause trimming of what's buffered,
|
||||||
|
// so have to assume 'b' is invalid, hence re-assign to start.
|
||||||
|
b = blocks;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( up_to_seq > last_reassem_seq )
|
if ( up_to_seq > last_reassem_seq )
|
||||||
|
@ -348,7 +350,7 @@ void TCP_Reassembler::RecordBlock(DataBlock* b, BroFile* f)
|
||||||
|
|
||||||
void TCP_Reassembler::RecordGap(uint64 start_seq, uint64 upper_seq, BroFile* f)
|
void TCP_Reassembler::RecordGap(uint64 start_seq, uint64 upper_seq, BroFile* f)
|
||||||
{
|
{
|
||||||
if ( f->Write(fmt("\n<<gap %"PRIu64">>\n", upper_seq - start_seq)) )
|
if ( f->Write(fmt("\n<<gap %" PRIu64">>\n", upper_seq - start_seq)) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
reporter->Error("TCP_Reassembler contents gap write failed");
|
reporter->Error("TCP_Reassembler contents gap write failed");
|
||||||
|
@ -418,7 +420,7 @@ void TCP_Reassembler::BlockInserted(DataBlock* start_block)
|
||||||
void TCP_Reassembler::Overlap(const u_char* b1, const u_char* b2, uint64 n)
|
void TCP_Reassembler::Overlap(const u_char* b1, const u_char* b2, uint64 n)
|
||||||
{
|
{
|
||||||
if ( DEBUG_tcp_contents )
|
if ( DEBUG_tcp_contents )
|
||||||
DEBUG_MSG("%.6f TCP contents overlap: %"PRIu64" IsOrig()=%d\n", network_time, n, IsOrig());
|
DEBUG_MSG("%.6f TCP contents overlap: %" PRIu64" IsOrig()=%d\n", network_time, n, IsOrig());
|
||||||
|
|
||||||
if ( rexmit_inconsistency &&
|
if ( rexmit_inconsistency &&
|
||||||
memcmp((const void*) b1, (const void*) b2, n) &&
|
memcmp((const void*) b1, (const void*) b2, n) &&
|
||||||
|
@ -463,7 +465,7 @@ int TCP_Reassembler::DataSent(double t, uint64 seq, int len,
|
||||||
|
|
||||||
if ( DEBUG_tcp_contents )
|
if ( DEBUG_tcp_contents )
|
||||||
{
|
{
|
||||||
DEBUG_MSG("%.6f DataSent: IsOrig()=%d seq=%"PRIu64" upper=%"PRIu64" ack=%"PRIu64"\n",
|
DEBUG_MSG("%.6f DataSent: IsOrig()=%d seq=%" PRIu64" upper=%" PRIu64" ack=%" PRIu64"\n",
|
||||||
network_time, IsOrig(), seq, upper_seq, ack);
|
network_time, IsOrig(), seq, upper_seq, ack);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
4
src/cq.c
4
src/cq.c
|
@ -357,7 +357,7 @@ cq_remove(register struct cq_handle *hp, register double pri,
|
||||||
|
|
||||||
/* The priority must be positive and the cookie non-null */
|
/* The priority must be positive and the cookie non-null */
|
||||||
if (pri <= 0.0 || cookie == NULL)
|
if (pri <= 0.0 || cookie == NULL)
|
||||||
return (-0);
|
return (0);
|
||||||
|
|
||||||
bp = hp->buckets + PRI2BUCKET(hp, pri);
|
bp = hp->buckets + PRI2BUCKET(hp, pri);
|
||||||
if (! BUCKETINUSE(bp))
|
if (! BUCKETINUSE(bp))
|
||||||
|
@ -370,7 +370,7 @@ cq_remove(register struct cq_handle *hp, register double pri,
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ! bp )
|
if ( ! bp )
|
||||||
return (-0);
|
return (0);
|
||||||
|
|
||||||
/* Unlink entry */
|
/* Unlink entry */
|
||||||
if ( ! bp2 ) {
|
if ( ! bp2 ) {
|
||||||
|
|
104
src/iosource/FD_Set.h
Normal file
104
src/iosource/FD_Set.h
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
#ifndef BRO_FD_SET_H
|
||||||
|
#define BRO_FD_SET_H
|
||||||
|
|
||||||
|
#include <set>
|
||||||
|
#include <sys/select.h>
|
||||||
|
|
||||||
|
namespace iosource {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A container holding a set of file descriptors.
|
||||||
|
*/
|
||||||
|
class FD_Set {
|
||||||
|
public:
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor. The set is initially empty.
|
||||||
|
*/
|
||||||
|
FD_Set() : max(-1), fds()
|
||||||
|
{ }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Insert a file descriptor in to the set.
|
||||||
|
* @param fd the fd to insert in the set.
|
||||||
|
* @return false if fd was already in the set, else true.
|
||||||
|
*/
|
||||||
|
bool Insert(int fd)
|
||||||
|
{
|
||||||
|
if ( max < fd )
|
||||||
|
max = fd;
|
||||||
|
|
||||||
|
return fds.insert(fd).second;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inserts all the file descriptors from another set in to this one.
|
||||||
|
* @param other a file descriptor set to merge in to this one.
|
||||||
|
*/
|
||||||
|
void Insert(const FD_Set& other)
|
||||||
|
{
|
||||||
|
for ( std::set<int>::const_iterator it = other.fds.begin();
|
||||||
|
it != other.fds.end(); ++it )
|
||||||
|
Insert(*it);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Empties the set.
|
||||||
|
*/
|
||||||
|
void Clear()
|
||||||
|
{ max = -1; fds.clear(); }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Insert file descriptors in to a fd_set for use with select().
|
||||||
|
* @return the greatest file descriptor inserted.
|
||||||
|
*/
|
||||||
|
int Set(fd_set* set) const
|
||||||
|
{
|
||||||
|
for ( std::set<int>::const_iterator it = fds.begin(); it != fds.end();
|
||||||
|
++it )
|
||||||
|
FD_SET(*it, set);
|
||||||
|
|
||||||
|
return max;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Whether a file descriptor belonging to this set is within the
|
||||||
|
* fd_set arugment.
|
||||||
|
*/
|
||||||
|
bool Ready(fd_set* set) const
|
||||||
|
{
|
||||||
|
for ( std::set<int>::const_iterator it = fds.begin(); it != fds.end();
|
||||||
|
++it )
|
||||||
|
{
|
||||||
|
if ( FD_ISSET(*it, set) )
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return whether any file descriptors have been added to the set.
|
||||||
|
*/
|
||||||
|
bool Empty() const
|
||||||
|
{
|
||||||
|
return fds.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the greatest file descriptor of all that have been added to the
|
||||||
|
* set, or -1 if the set is empty.
|
||||||
|
*/
|
||||||
|
int Max() const
|
||||||
|
{
|
||||||
|
return max;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
int max;
|
||||||
|
std::set<int> fds;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace bro
|
||||||
|
|
||||||
|
#endif // BRO_FD_SET_H
|
|
@ -8,7 +8,7 @@ extern "C" {
|
||||||
}
|
}
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include "FD_Set.h"
|
||||||
#include "Timer.h"
|
#include "Timer.h"
|
||||||
|
|
||||||
namespace iosource {
|
namespace iosource {
|
||||||
|
@ -55,13 +55,13 @@ public:
|
||||||
* Returns select'able file descriptors for this source. Leaves the
|
* Returns select'able file descriptors for this source. Leaves the
|
||||||
* passed values untouched if not available.
|
* passed values untouched if not available.
|
||||||
*
|
*
|
||||||
* @param read Pointer to where to store a read descriptor.
|
* @param read Pointer to container where to insert a read descriptor.
|
||||||
*
|
*
|
||||||
* @param write Pointer to where to store a write descriptor.
|
* @param write Pointer to container where to insert a write descriptor.
|
||||||
*
|
*
|
||||||
* @param except Pointer to where to store a except descriptor.
|
* @param except Pointer to container where to insert a except descriptor.
|
||||||
*/
|
*/
|
||||||
virtual void GetFds(int* read, int* write, int* except) = 0;
|
virtual void GetFds(FD_Set* read, FD_Set* write, FD_Set* except) = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the timestamp (in \a global network time) associated with
|
* Returns the timestamp (in \a global network time) associated with
|
||||||
|
|
|
@ -115,16 +115,12 @@ IOSource* Manager::FindSoonest(double* ts)
|
||||||
// be ready.
|
// be ready.
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
src->fd_read = src->fd_write = src->fd_except = 0;
|
src->Clear();
|
||||||
src->src->GetFds(&src->fd_read, &src->fd_write, &src->fd_except);
|
src->src->GetFds(&src->fd_read, &src->fd_write, &src->fd_except);
|
||||||
|
if ( src->fd_read.Empty() ) src->fd_read.Insert(0);
|
||||||
FD_SET(src->fd_read, &fd_read);
|
if ( src->fd_write.Empty() ) src->fd_write.Insert(0);
|
||||||
FD_SET(src->fd_write, &fd_write);
|
if ( src->fd_except.Empty() ) src->fd_except.Insert(0);
|
||||||
FD_SET(src->fd_except, &fd_except);
|
src->SetFds(&fd_read, &fd_write, &fd_except, &maxx);
|
||||||
|
|
||||||
maxx = std::max(src->fd_read, maxx);
|
|
||||||
maxx = std::max(src->fd_write, maxx);
|
|
||||||
maxx = std::max(src->fd_except, maxx);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// We can't block indefinitely even when all sources are dry:
|
// We can't block indefinitely even when all sources are dry:
|
||||||
|
@ -164,9 +160,7 @@ IOSource* Manager::FindSoonest(double* ts)
|
||||||
if ( ! src->src->IsIdle() )
|
if ( ! src->src->IsIdle() )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( FD_ISSET(src->fd_read, &fd_read) ||
|
if ( src->Ready(&fd_read, &fd_write, &fd_except) )
|
||||||
FD_ISSET(src->fd_write, &fd_write) ||
|
|
||||||
FD_ISSET(src->fd_except, &fd_except) )
|
|
||||||
{
|
{
|
||||||
double local_network_time = 0;
|
double local_network_time = 0;
|
||||||
double ts = src->src->NextTimestamp(&local_network_time);
|
double ts = src->src->NextTimestamp(&local_network_time);
|
||||||
|
@ -210,11 +204,11 @@ static std::pair<std::string, std::string> split_prefix(std::string path)
|
||||||
// PktSrc to use. If not, choose default.
|
// PktSrc to use. If not, choose default.
|
||||||
std::string prefix;
|
std::string prefix;
|
||||||
|
|
||||||
std::string::size_type i = path.find(":");
|
std::string::size_type i = path.find("::");
|
||||||
if ( i != std::string::npos )
|
if ( i != std::string::npos )
|
||||||
{
|
{
|
||||||
prefix = path.substr(0, i);
|
prefix = path.substr(0, i);
|
||||||
path = path.substr(++i, std::string::npos);
|
path = path.substr(i + 2, std::string::npos);
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
|
@ -310,3 +304,11 @@ PktDumper* Manager::OpenPktDumper(const string& path, bool append)
|
||||||
|
|
||||||
return pd;
|
return pd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Manager::Source::SetFds(fd_set* read, fd_set* write, fd_set* except,
|
||||||
|
int* maxx) const
|
||||||
|
{
|
||||||
|
*maxx = std::max(*maxx, fd_read.Set(read));
|
||||||
|
*maxx = std::max(*maxx, fd_write.Set(write));
|
||||||
|
*maxx = std::max(*maxx, fd_except.Set(except));
|
||||||
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
#include "iosource/FD_Set.h"
|
||||||
|
|
||||||
namespace iosource {
|
namespace iosource {
|
||||||
|
|
||||||
|
@ -113,9 +114,19 @@ private:
|
||||||
|
|
||||||
struct Source {
|
struct Source {
|
||||||
IOSource* src;
|
IOSource* src;
|
||||||
int fd_read;
|
FD_Set fd_read;
|
||||||
int fd_write;
|
FD_Set fd_write;
|
||||||
int fd_except;
|
FD_Set fd_except;
|
||||||
|
|
||||||
|
bool Ready(fd_set* read, fd_set* write, fd_set* except) const
|
||||||
|
{ return fd_read.Ready(read) || fd_write.Ready(write) ||
|
||||||
|
fd_except.Ready(except); }
|
||||||
|
|
||||||
|
void SetFds(fd_set* read, fd_set* write, fd_set* except,
|
||||||
|
int* maxx) const;
|
||||||
|
|
||||||
|
void Clear()
|
||||||
|
{ fd_read.Clear(); fd_write.Clear(); fd_except.Clear(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef std::list<Source*> SourceList;
|
typedef std::list<Source*> SourceList;
|
||||||
|
|
|
@ -218,7 +218,8 @@ void PktSrc::Done()
|
||||||
Close();
|
Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PktSrc::GetFds(int* read, int* write, int* except)
|
void PktSrc::GetFds(iosource::FD_Set* read, iosource::FD_Set* write,
|
||||||
|
iosource::FD_Set* except)
|
||||||
{
|
{
|
||||||
if ( pseudo_realtime )
|
if ( pseudo_realtime )
|
||||||
{
|
{
|
||||||
|
@ -229,7 +230,7 @@ void PktSrc::GetFds(int* read, int* write, int* except)
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( IsOpen() && props.selectable_fd >= 0 )
|
if ( IsOpen() && props.selectable_fd >= 0 )
|
||||||
*read = props.selectable_fd;
|
read->Insert(props.selectable_fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
double PktSrc::NextTimestamp(double* local_network_time)
|
double PktSrc::NextTimestamp(double* local_network_time)
|
||||||
|
@ -433,6 +434,7 @@ bool PktSrc::ExtractNextPacketInternal()
|
||||||
if ( ! first_timestamp )
|
if ( ! first_timestamp )
|
||||||
first_timestamp = current_packet.ts;
|
first_timestamp = current_packet.ts;
|
||||||
|
|
||||||
|
SetIdle(false);
|
||||||
have_packet = true;
|
have_packet = true;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -504,6 +506,7 @@ bool PktSrc::ApplyBPFFilter(int index, const struct pcap_pkthdr *hdr, const u_ch
|
||||||
{
|
{
|
||||||
Error(fmt("BPF filter %d not compiled", index));
|
Error(fmt("BPF filter %d not compiled", index));
|
||||||
Close();
|
Close();
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( code->MatchesAnything() )
|
if ( code->MatchesAnything() )
|
||||||
|
|
|
@ -266,7 +266,11 @@ protected:
|
||||||
|
|
||||||
Properties()
|
Properties()
|
||||||
{
|
{
|
||||||
|
selectable_fd = -1;
|
||||||
|
link_type = -1;
|
||||||
|
hdr_size = -1;
|
||||||
netmask = PCAP_NETMASK_UNKNOWN;
|
netmask = PCAP_NETMASK_UNKNOWN;
|
||||||
|
is_live = false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -388,7 +392,8 @@ private:
|
||||||
// IOSource interface implementation.
|
// IOSource interface implementation.
|
||||||
virtual void Init();
|
virtual void Init();
|
||||||
virtual void Done();
|
virtual void Done();
|
||||||
virtual void GetFds(int* read, int* write, int* except);
|
virtual void GetFds(iosource::FD_Set* read, iosource::FD_Set* write,
|
||||||
|
iosource::FD_Set* except);
|
||||||
virtual double NextTimestamp(double* local_network_time);
|
virtual double NextTimestamp(double* local_network_time);
|
||||||
virtual void Process();
|
virtual void Process();
|
||||||
virtual const char* Tag();
|
virtual const char* Tag();
|
||||||
|
|
|
@ -21,6 +21,9 @@ PcapSource::PcapSource(const std::string& path, bool is_live)
|
||||||
{
|
{
|
||||||
props.path = path;
|
props.path = path;
|
||||||
props.is_live = is_live;
|
props.is_live = is_live;
|
||||||
|
pd = 0;
|
||||||
|
memset(¤t_hdr, 0, sizeof(current_hdr));
|
||||||
|
memset(&last_hdr, 0, sizeof(last_hdr));
|
||||||
last_data = 0;
|
last_data = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
13
src/main.cc
13
src/main.cc
|
@ -775,6 +775,9 @@ int main(int argc, char** argv)
|
||||||
// DEBUG_MSG("HMAC key: %s\n", md5_digest_print(shared_hmac_md5_key));
|
// DEBUG_MSG("HMAC key: %s\n", md5_digest_print(shared_hmac_md5_key));
|
||||||
init_hash_function();
|
init_hash_function();
|
||||||
|
|
||||||
|
// Must come after hash initialization.
|
||||||
|
binpac::init();
|
||||||
|
|
||||||
ERR_load_crypto_strings();
|
ERR_load_crypto_strings();
|
||||||
OPENSSL_add_all_algorithms_conf();
|
OPENSSL_add_all_algorithms_conf();
|
||||||
SSL_library_init();
|
SSL_library_init();
|
||||||
|
@ -853,9 +856,17 @@ int main(int argc, char** argv)
|
||||||
file_mgr->InitPreScript();
|
file_mgr->InitPreScript();
|
||||||
broxygen_mgr->InitPreScript();
|
broxygen_mgr->InitPreScript();
|
||||||
|
|
||||||
|
bool missing_plugin = false;
|
||||||
|
|
||||||
for ( set<string>::const_iterator i = requested_plugins.begin();
|
for ( set<string>::const_iterator i = requested_plugins.begin();
|
||||||
i != requested_plugins.end(); i++ )
|
i != requested_plugins.end(); i++ )
|
||||||
plugin_mgr->ActivateDynamicPlugin(*i);
|
{
|
||||||
|
if ( ! plugin_mgr->ActivateDynamicPlugin(*i) )
|
||||||
|
missing_plugin = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( missing_plugin )
|
||||||
|
reporter->FatalError("Failed to activate requested dynamic plugin(s).");
|
||||||
|
|
||||||
plugin_mgr->ActivateDynamicPlugins(! bare_mode);
|
plugin_mgr->ActivateDynamicPlugins(! bare_mode);
|
||||||
|
|
||||||
|
|
|
@ -127,7 +127,11 @@ static void parser_new_enum (void)
|
||||||
{
|
{
|
||||||
/* Starting a new enum definition. */
|
/* Starting a new enum definition. */
|
||||||
assert(cur_enum_type == NULL);
|
assert(cur_enum_type == NULL);
|
||||||
cur_enum_type = new EnumType(cur_decl_type_id->Name());
|
|
||||||
|
if ( cur_decl_type_id )
|
||||||
|
cur_enum_type = new EnumType(cur_decl_type_id->Name());
|
||||||
|
else
|
||||||
|
reporter->FatalError("incorrect syntax for enum type declaration");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void parser_redef_enum (ID *id)
|
static void parser_redef_enum (ID *id)
|
||||||
|
|
|
@ -172,7 +172,7 @@ bool Manager::ActivateDynamicPluginInternal(const std::string& name, bool ok_if_
|
||||||
|
|
||||||
// Load {bif,scripts}/__load__.bro automatically.
|
// Load {bif,scripts}/__load__.bro automatically.
|
||||||
|
|
||||||
string init = dir + "lib/bif/__load__.bro";
|
string init = dir + "scripts/__load__.bro";
|
||||||
|
|
||||||
if ( is_file(init) )
|
if ( is_file(init) )
|
||||||
{
|
{
|
||||||
|
@ -180,7 +180,7 @@ bool Manager::ActivateDynamicPluginInternal(const std::string& name, bool ok_if_
|
||||||
scripts_to_load.push_back(init);
|
scripts_to_load.push_back(init);
|
||||||
}
|
}
|
||||||
|
|
||||||
init = dir + "scripts/__load__.bro";
|
init = dir + "lib/bif/__load__.bro";
|
||||||
|
|
||||||
if ( is_file(init) )
|
if ( is_file(init) )
|
||||||
{
|
{
|
||||||
|
|
|
@ -65,7 +65,8 @@ void Manager::AddMsgThread(MsgThread* thread)
|
||||||
msg_threads.push_back(thread);
|
msg_threads.push_back(thread);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Manager::GetFds(int* read, int* write, int* except)
|
void Manager::GetFds(iosource::FD_Set* read, iosource::FD_Set* write,
|
||||||
|
iosource::FD_Set* except)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -103,7 +103,8 @@ protected:
|
||||||
/**
|
/**
|
||||||
* Part of the IOSource interface.
|
* Part of the IOSource interface.
|
||||||
*/
|
*/
|
||||||
virtual void GetFds(int* read, int* write, int* except);
|
virtual void GetFds(iosource::FD_Set* read, iosource::FD_Set* write,
|
||||||
|
iosource::FD_Set* except);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Part of the IOSource interface.
|
* Part of the IOSource interface.
|
||||||
|
|
42
testing/btest/Baseline/coverage.find-bro-logs/out
Normal file
42
testing/btest/Baseline/coverage.find-bro-logs/out
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
app_stats
|
||||||
|
barnyard2
|
||||||
|
capture_loss
|
||||||
|
cluster
|
||||||
|
communication
|
||||||
|
conn
|
||||||
|
dhcp
|
||||||
|
dnp3
|
||||||
|
dns
|
||||||
|
dpd
|
||||||
|
files
|
||||||
|
ftp
|
||||||
|
http
|
||||||
|
intel
|
||||||
|
irc
|
||||||
|
known_certs
|
||||||
|
known_devices
|
||||||
|
known_hosts
|
||||||
|
known_modbus
|
||||||
|
known_services
|
||||||
|
loaded_scripts
|
||||||
|
modbus
|
||||||
|
modbus_register_change
|
||||||
|
notice
|
||||||
|
notice_alarm
|
||||||
|
packet_filter
|
||||||
|
radius
|
||||||
|
reporter
|
||||||
|
signatures
|
||||||
|
smtp
|
||||||
|
snmp
|
||||||
|
socks
|
||||||
|
software
|
||||||
|
ssh
|
||||||
|
ssl
|
||||||
|
stats
|
||||||
|
syslog
|
||||||
|
traceroute
|
||||||
|
tunnel
|
||||||
|
unified2
|
||||||
|
weird
|
||||||
|
x509
|
|
@ -7,6 +7,6 @@
|
||||||
# bro data_struct_vector_declaration.bro
|
# bro data_struct_vector_declaration.bro
|
||||||
contents of v1: [1, 2, 3, 4]
|
contents of v1: [1, 2, 3, 4]
|
||||||
length of v1: 4
|
length of v1: 4
|
||||||
contents of v1: [1, 2, 3, 4]
|
contents of v2: [1, 2, 3, 4]
|
||||||
length of v2: 4
|
length of v2: 4
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,6 @@
|
||||||
|
|
||||||
# bro data_type_pattern_01.bro
|
# bro data_type_pattern_01.bro
|
||||||
The
|
The
|
||||||
brown fox jumped over the
|
brown fox jumps over the
|
||||||
dog.
|
dog.
|
||||||
|
|
||||||
|
|
11
testing/btest/Baseline/language.vector-in-operator/out
Normal file
11
testing/btest/Baseline/language.vector-in-operator/out
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
[zero, one, , , , five, , seven]
|
||||||
|
vec[0] = zero.exe
|
||||||
|
vec[1] = one.exe
|
||||||
|
vec[2] = <not set>
|
||||||
|
vec[3] = <not set>
|
||||||
|
vec[4] = <not set>
|
||||||
|
vec[5] = five.exe
|
||||||
|
vec[6] = <not set>
|
||||||
|
vec[7] = seven.exe
|
||||||
|
vec[8] = <not set>
|
||||||
|
vec[9] = <not set>
|
38
testing/btest/Baseline/language.when-unitialized-rhs/out
Normal file
38
testing/btest/Baseline/language.when-unitialized-rhs/out
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
error in /Users/jsiwek/Projects/bro/bro/testing/btest/.tmp/language.when-unitialized-rhs/when-unitialized-rhs.bro, line 9: value used but not set (crashMe)
|
||||||
|
error in /Users/jsiwek/Projects/bro/bro/testing/btest/.tmp/language.when-unitialized-rhs/when-unitialized-rhs.bro, line 14: value used but not set (x)
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
8
|
||||||
|
9
|
||||||
|
10
|
||||||
|
2nd when stmt executing, 999
|
||||||
|
1st when stmt executing, not anymore you don't
|
||||||
|
11
|
||||||
|
12
|
||||||
|
13
|
||||||
|
14
|
||||||
|
15
|
||||||
|
16
|
||||||
|
17
|
||||||
|
18
|
||||||
|
19
|
||||||
|
20
|
||||||
|
21
|
||||||
|
22
|
||||||
|
23
|
||||||
|
24
|
||||||
|
25
|
||||||
|
26
|
||||||
|
27
|
||||||
|
28
|
||||||
|
29
|
||||||
|
30
|
||||||
|
31
|
||||||
|
32
|
||||||
|
33
|
||||||
|
34
|
|
@ -1 +1 @@
|
||||||
fatal error in /home/robin/bro/master/scripts/base/init-bare.bro, line 1: plugin's API version does not match Bro (expected 2, got 42 in /home/robin/bro/master/testing/btest/.tmp/plugins.api-version-mismatch//lib/Demo-Foo.linux-x86_64.so)
|
fatal error in /home/robin/bro/master/scripts/base/init-bare.bro, line 1: plugin's API version does not match Bro (expected 2, got 42 in /home/robin/bro/master/testing/btest/.tmp/plugins.api-version-mismatch//lib/XXX)
|
||||||
|
|
|
@ -3,5 +3,5 @@ Demo::Foo - <Insert description> (dynamic, version 1.0)
|
||||||
[Event] plugin_event
|
[Event] plugin_event
|
||||||
|
|
||||||
plugin: automatically loaded at startup
|
plugin: automatically loaded at startup
|
||||||
calling bif, Hello from the plugin!
|
|
||||||
plugin: manually loaded
|
plugin: manually loaded
|
||||||
|
calling bif, Hello from the plugin!
|
||||||
|
|
|
@ -4,21 +4,19 @@ Demo::Foo - <Insert description> (dynamic, version 1.0)
|
||||||
|
|
||||||
===
|
===
|
||||||
plugin: automatically loaded at startup
|
plugin: automatically loaded at startup
|
||||||
calling bif, Hello from the plugin!
|
|
||||||
===
|
===
|
||||||
plugin: automatically loaded at startup
|
plugin: automatically loaded at startup
|
||||||
calling bif, Hello from the plugin!
|
|
||||||
plugin: manually loaded
|
plugin: manually loaded
|
||||||
|
calling bif, Hello from the plugin!
|
||||||
=-=
|
=-=
|
||||||
=-=
|
=-=
|
||||||
===
|
===
|
||||||
plugin: automatically loaded at startup
|
plugin: automatically loaded at startup
|
||||||
|
===
|
||||||
|
plugin: automatically loaded at startup
|
||||||
|
plugin: manually loaded
|
||||||
calling bif, Hello from the plugin!
|
calling bif, Hello from the plugin!
|
||||||
===
|
===
|
||||||
plugin: automatically loaded at startup
|
plugin: automatically loaded at startup
|
||||||
calling bif, Hello from the plugin!
|
|
||||||
plugin: manually loaded
|
plugin: manually loaded
|
||||||
===
|
|
||||||
plugin: automatically loaded at startup
|
|
||||||
calling bif, Hello from the plugin!
|
calling bif, Hello from the plugin!
|
||||||
plugin: manually loaded
|
|
||||||
|
|
|
@ -182,7 +182,7 @@
|
||||||
0.000000 MetaHookPost CallFunction(Log::__create_stream, (Unified2::LOG, [columns=<no value description>, ev=Unified2::log_unified2])) -> <null>
|
0.000000 MetaHookPost CallFunction(Log::__create_stream, (Unified2::LOG, [columns=<no value description>, ev=Unified2::log_unified2])) -> <null>
|
||||||
0.000000 MetaHookPost CallFunction(Log::__create_stream, (Weird::LOG, [columns=<no value description>, ev=Weird::log_weird])) -> <null>
|
0.000000 MetaHookPost CallFunction(Log::__create_stream, (Weird::LOG, [columns=<no value description>, ev=Weird::log_weird])) -> <null>
|
||||||
0.000000 MetaHookPost CallFunction(Log::__create_stream, (X509::LOG, [columns=<no value description>, ev=X509::log_x509])) -> <null>
|
0.000000 MetaHookPost CallFunction(Log::__create_stream, (X509::LOG, [columns=<no value description>, ev=X509::log_x509])) -> <null>
|
||||||
0.000000 MetaHookPost CallFunction(Log::__write, (PacketFilter::LOG, [ts=1409853900.737227, node=bro, filter=ip or not ip, init=T, success=T])) -> <null>
|
0.000000 MetaHookPost CallFunction(Log::__write, (PacketFilter::LOG, [ts=1412721129.083128, node=bro, filter=ip or not ip, init=T, success=T])) -> <null>
|
||||||
0.000000 MetaHookPost CallFunction(Log::add_default_filter, (Cluster::LOG)) -> <null>
|
0.000000 MetaHookPost CallFunction(Log::add_default_filter, (Cluster::LOG)) -> <null>
|
||||||
0.000000 MetaHookPost CallFunction(Log::add_default_filter, (Communication::LOG)) -> <null>
|
0.000000 MetaHookPost CallFunction(Log::add_default_filter, (Communication::LOG)) -> <null>
|
||||||
0.000000 MetaHookPost CallFunction(Log::add_default_filter, (Conn::LOG)) -> <null>
|
0.000000 MetaHookPost CallFunction(Log::add_default_filter, (Conn::LOG)) -> <null>
|
||||||
|
@ -273,8 +273,8 @@
|
||||||
0.000000 MetaHookPost CallFunction(Log::create_stream, (Unified2::LOG, [columns=<no value description>, ev=Unified2::log_unified2])) -> <null>
|
0.000000 MetaHookPost CallFunction(Log::create_stream, (Unified2::LOG, [columns=<no value description>, ev=Unified2::log_unified2])) -> <null>
|
||||||
0.000000 MetaHookPost CallFunction(Log::create_stream, (Weird::LOG, [columns=<no value description>, ev=Weird::log_weird])) -> <null>
|
0.000000 MetaHookPost CallFunction(Log::create_stream, (Weird::LOG, [columns=<no value description>, ev=Weird::log_weird])) -> <null>
|
||||||
0.000000 MetaHookPost CallFunction(Log::create_stream, (X509::LOG, [columns=<no value description>, ev=X509::log_x509])) -> <null>
|
0.000000 MetaHookPost CallFunction(Log::create_stream, (X509::LOG, [columns=<no value description>, ev=X509::log_x509])) -> <null>
|
||||||
0.000000 MetaHookPost CallFunction(Log::default_path_func, (PacketFilter::LOG, , [ts=1409853900.737227, node=bro, filter=ip or not ip, init=T, success=T])) -> <null>
|
0.000000 MetaHookPost CallFunction(Log::default_path_func, (PacketFilter::LOG, , [ts=1412721129.083128, node=bro, filter=ip or not ip, init=T, success=T])) -> <null>
|
||||||
0.000000 MetaHookPost CallFunction(Log::write, (PacketFilter::LOG, [ts=1409853900.737227, node=bro, filter=ip or not ip, init=T, success=T])) -> <null>
|
0.000000 MetaHookPost CallFunction(Log::write, (PacketFilter::LOG, [ts=1412721129.083128, node=bro, filter=ip or not ip, init=T, success=T])) -> <null>
|
||||||
0.000000 MetaHookPost CallFunction(Notice::want_pp, ()) -> <null>
|
0.000000 MetaHookPost CallFunction(Notice::want_pp, ()) -> <null>
|
||||||
0.000000 MetaHookPost CallFunction(PacketFilter::build, ()) -> <null>
|
0.000000 MetaHookPost CallFunction(PacketFilter::build, ()) -> <null>
|
||||||
0.000000 MetaHookPost CallFunction(PacketFilter::combine_filters, (ip or not ip, and, )) -> <null>
|
0.000000 MetaHookPost CallFunction(PacketFilter::combine_filters, (ip or not ip, and, )) -> <null>
|
||||||
|
@ -705,7 +705,7 @@
|
||||||
0.000000 MetaHookPre CallFunction(Log::__create_stream, (Unified2::LOG, [columns=<no value description>, ev=Unified2::log_unified2]))
|
0.000000 MetaHookPre CallFunction(Log::__create_stream, (Unified2::LOG, [columns=<no value description>, ev=Unified2::log_unified2]))
|
||||||
0.000000 MetaHookPre CallFunction(Log::__create_stream, (Weird::LOG, [columns=<no value description>, ev=Weird::log_weird]))
|
0.000000 MetaHookPre CallFunction(Log::__create_stream, (Weird::LOG, [columns=<no value description>, ev=Weird::log_weird]))
|
||||||
0.000000 MetaHookPre CallFunction(Log::__create_stream, (X509::LOG, [columns=<no value description>, ev=X509::log_x509]))
|
0.000000 MetaHookPre CallFunction(Log::__create_stream, (X509::LOG, [columns=<no value description>, ev=X509::log_x509]))
|
||||||
0.000000 MetaHookPre CallFunction(Log::__write, (PacketFilter::LOG, [ts=1409853900.737227, node=bro, filter=ip or not ip, init=T, success=T]))
|
0.000000 MetaHookPre CallFunction(Log::__write, (PacketFilter::LOG, [ts=1412721129.083128, node=bro, filter=ip or not ip, init=T, success=T]))
|
||||||
0.000000 MetaHookPre CallFunction(Log::add_default_filter, (Cluster::LOG))
|
0.000000 MetaHookPre CallFunction(Log::add_default_filter, (Cluster::LOG))
|
||||||
0.000000 MetaHookPre CallFunction(Log::add_default_filter, (Communication::LOG))
|
0.000000 MetaHookPre CallFunction(Log::add_default_filter, (Communication::LOG))
|
||||||
0.000000 MetaHookPre CallFunction(Log::add_default_filter, (Conn::LOG))
|
0.000000 MetaHookPre CallFunction(Log::add_default_filter, (Conn::LOG))
|
||||||
|
@ -796,8 +796,8 @@
|
||||||
0.000000 MetaHookPre CallFunction(Log::create_stream, (Unified2::LOG, [columns=<no value description>, ev=Unified2::log_unified2]))
|
0.000000 MetaHookPre CallFunction(Log::create_stream, (Unified2::LOG, [columns=<no value description>, ev=Unified2::log_unified2]))
|
||||||
0.000000 MetaHookPre CallFunction(Log::create_stream, (Weird::LOG, [columns=<no value description>, ev=Weird::log_weird]))
|
0.000000 MetaHookPre CallFunction(Log::create_stream, (Weird::LOG, [columns=<no value description>, ev=Weird::log_weird]))
|
||||||
0.000000 MetaHookPre CallFunction(Log::create_stream, (X509::LOG, [columns=<no value description>, ev=X509::log_x509]))
|
0.000000 MetaHookPre CallFunction(Log::create_stream, (X509::LOG, [columns=<no value description>, ev=X509::log_x509]))
|
||||||
0.000000 MetaHookPre CallFunction(Log::default_path_func, (PacketFilter::LOG, , [ts=1409853900.737227, node=bro, filter=ip or not ip, init=T, success=T]))
|
0.000000 MetaHookPre CallFunction(Log::default_path_func, (PacketFilter::LOG, , [ts=1412721129.083128, node=bro, filter=ip or not ip, init=T, success=T]))
|
||||||
0.000000 MetaHookPre CallFunction(Log::write, (PacketFilter::LOG, [ts=1409853900.737227, node=bro, filter=ip or not ip, init=T, success=T]))
|
0.000000 MetaHookPre CallFunction(Log::write, (PacketFilter::LOG, [ts=1412721129.083128, node=bro, filter=ip or not ip, init=T, success=T]))
|
||||||
0.000000 MetaHookPre CallFunction(Notice::want_pp, ())
|
0.000000 MetaHookPre CallFunction(Notice::want_pp, ())
|
||||||
0.000000 MetaHookPre CallFunction(PacketFilter::build, ())
|
0.000000 MetaHookPre CallFunction(PacketFilter::build, ())
|
||||||
0.000000 MetaHookPre CallFunction(PacketFilter::combine_filters, (ip or not ip, and, ))
|
0.000000 MetaHookPre CallFunction(PacketFilter::combine_filters, (ip or not ip, and, ))
|
||||||
|
@ -1228,7 +1228,7 @@
|
||||||
0.000000 | HookCallFunction Log::__create_stream(Unified2::LOG, [columns=<no value description>, ev=Unified2::log_unified2])
|
0.000000 | HookCallFunction Log::__create_stream(Unified2::LOG, [columns=<no value description>, ev=Unified2::log_unified2])
|
||||||
0.000000 | HookCallFunction Log::__create_stream(Weird::LOG, [columns=<no value description>, ev=Weird::log_weird])
|
0.000000 | HookCallFunction Log::__create_stream(Weird::LOG, [columns=<no value description>, ev=Weird::log_weird])
|
||||||
0.000000 | HookCallFunction Log::__create_stream(X509::LOG, [columns=<no value description>, ev=X509::log_x509])
|
0.000000 | HookCallFunction Log::__create_stream(X509::LOG, [columns=<no value description>, ev=X509::log_x509])
|
||||||
0.000000 | HookCallFunction Log::__write(PacketFilter::LOG, [ts=1409853900.737227, node=bro, filter=ip or not ip, init=T, success=T])
|
0.000000 | HookCallFunction Log::__write(PacketFilter::LOG, [ts=1412721129.083128, node=bro, filter=ip or not ip, init=T, success=T])
|
||||||
0.000000 | HookCallFunction Log::add_default_filter(Cluster::LOG)
|
0.000000 | HookCallFunction Log::add_default_filter(Cluster::LOG)
|
||||||
0.000000 | HookCallFunction Log::add_default_filter(Communication::LOG)
|
0.000000 | HookCallFunction Log::add_default_filter(Communication::LOG)
|
||||||
0.000000 | HookCallFunction Log::add_default_filter(Conn::LOG)
|
0.000000 | HookCallFunction Log::add_default_filter(Conn::LOG)
|
||||||
|
@ -1319,8 +1319,8 @@
|
||||||
0.000000 | HookCallFunction Log::create_stream(Unified2::LOG, [columns=<no value description>, ev=Unified2::log_unified2])
|
0.000000 | HookCallFunction Log::create_stream(Unified2::LOG, [columns=<no value description>, ev=Unified2::log_unified2])
|
||||||
0.000000 | HookCallFunction Log::create_stream(Weird::LOG, [columns=<no value description>, ev=Weird::log_weird])
|
0.000000 | HookCallFunction Log::create_stream(Weird::LOG, [columns=<no value description>, ev=Weird::log_weird])
|
||||||
0.000000 | HookCallFunction Log::create_stream(X509::LOG, [columns=<no value description>, ev=X509::log_x509])
|
0.000000 | HookCallFunction Log::create_stream(X509::LOG, [columns=<no value description>, ev=X509::log_x509])
|
||||||
0.000000 | HookCallFunction Log::default_path_func(PacketFilter::LOG, , [ts=1409853900.737227, node=bro, filter=ip or not ip, init=T, success=T])
|
0.000000 | HookCallFunction Log::default_path_func(PacketFilter::LOG, , [ts=1412721129.083128, node=bro, filter=ip or not ip, init=T, success=T])
|
||||||
0.000000 | HookCallFunction Log::write(PacketFilter::LOG, [ts=1409853900.737227, node=bro, filter=ip or not ip, init=T, success=T])
|
0.000000 | HookCallFunction Log::write(PacketFilter::LOG, [ts=1412721129.083128, node=bro, filter=ip or not ip, init=T, success=T])
|
||||||
0.000000 | HookCallFunction Notice::want_pp()
|
0.000000 | HookCallFunction Notice::want_pp()
|
||||||
0.000000 | HookCallFunction PacketFilter::build()
|
0.000000 | HookCallFunction PacketFilter::build()
|
||||||
0.000000 | HookCallFunction PacketFilter::combine_filters(ip or not ip, and, )
|
0.000000 | HookCallFunction PacketFilter::combine_filters(ip or not ip, and, )
|
||||||
|
@ -1532,10 +1532,20 @@
|
||||||
1362692527.008509 MetaHookPre UpdateNetworkTime(1362692527.008509)
|
1362692527.008509 MetaHookPre UpdateNetworkTime(1362692527.008509)
|
||||||
1362692527.008509 | HookUpdateNetworkTime 1362692527.008509
|
1362692527.008509 | HookUpdateNetworkTime 1362692527.008509
|
||||||
1362692527.008509 | HookDrainEvents
|
1362692527.008509 | HookDrainEvents
|
||||||
|
1362692527.009512 MetaHookPost CallFunction(Files::__add_analyzers_for_mime_type, (FakNcS1Jfe01uljb3, text/plain, [chunk_event=<uninitialized>, stream_event=<uninitialized>, extract_filename=<uninitialized>, extract_limit=0])) -> <null>
|
||||||
|
1362692527.009512 MetaHookPost CallFunction(Files::add_analyzers_for_mime_type, ([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain)) -> <null>
|
||||||
|
1362692527.009512 MetaHookPost CallFunction(Files::set_info, ([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain, filename=<uninitialized>, duration=0 secs, local_orig=<uninitialized>, is_orig=F, seen_bytes=0, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>], u2_events=<uninitialized>])) -> <null>
|
||||||
|
1362692527.009512 MetaHookPost CallFunction(Files::set_info, ([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain]], info=<uninitialized>, u2_events=<uninitialized>])) -> <null>
|
||||||
1362692527.009512 MetaHookPost CallFunction(HTTP::code_in_range, (200, 100, 199)) -> <null>
|
1362692527.009512 MetaHookPost CallFunction(HTTP::code_in_range, (200, 100, 199)) -> <null>
|
||||||
|
1362692527.009512 MetaHookPost CallFunction(HTTP::get_file_handle, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)) -> <null>
|
||||||
1362692527.009512 MetaHookPost CallFunction(HTTP::set_state, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, F)) -> <null>
|
1362692527.009512 MetaHookPost CallFunction(HTTP::set_state, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, F)) -> <null>
|
||||||
1362692527.009512 MetaHookPost CallFunction(HTTP::set_state, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, F)) -> <null>
|
1362692527.009512 MetaHookPost CallFunction(HTTP::set_state, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, F)) -> <null>
|
||||||
1362692527.009512 MetaHookPost CallFunction(HTTP::set_state, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, F)) -> <null>
|
1362692527.009512 MetaHookPost CallFunction(HTTP::set_state, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, F)) -> <null>
|
||||||
|
1362692527.009512 MetaHookPost CallFunction(cat, (Analyzer::ANALYZER_HTTP, 1362692526.869344, F, 1, 1, 141.142.228.5:59856 > 192.150.187.43:80)) -> <null>
|
||||||
|
1362692527.009512 MetaHookPost CallFunction(file_new, ([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain]], info=<uninitialized>, u2_events=<uninitialized>])) -> <null>
|
||||||
|
1362692527.009512 MetaHookPost CallFunction(file_over_new_connection, ([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)) -> <null>
|
||||||
|
1362692527.009512 MetaHookPost CallFunction(fmt, (%s:%d > %s:%d, 141.142.228.5, 59856<...>/tcp)) -> <null>
|
||||||
|
1362692527.009512 MetaHookPost CallFunction(get_file_handle, (Analyzer::ANALYZER_HTTP, [id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)) -> <null>
|
||||||
1362692527.009512 MetaHookPost CallFunction(http_begin_entity, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)) -> <null>
|
1362692527.009512 MetaHookPost CallFunction(http_begin_entity, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)) -> <null>
|
||||||
1362692527.009512 MetaHookPost CallFunction(http_header, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, ACCEPT-RANGES, bytes)) -> <null>
|
1362692527.009512 MetaHookPost CallFunction(http_header, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, ACCEPT-RANGES, bytes)) -> <null>
|
||||||
1362692527.009512 MetaHookPost CallFunction(http_header, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, CONNECTION, Keep-Alive)) -> <null>
|
1362692527.009512 MetaHookPost CallFunction(http_header, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, CONNECTION, Keep-Alive)) -> <null>
|
||||||
|
@ -1547,7 +1557,13 @@
|
||||||
1362692527.009512 MetaHookPost CallFunction(http_header, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/2.4.3 (Fedora))) -> <null>
|
1362692527.009512 MetaHookPost CallFunction(http_header, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/2.4.3 (Fedora))) -> <null>
|
||||||
1362692527.009512 MetaHookPost CallFunction(http_header, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/plain; charset=UTF-8)) -> <null>
|
1362692527.009512 MetaHookPost CallFunction(http_header, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/plain; charset=UTF-8)) -> <null>
|
||||||
1362692527.009512 MetaHookPost CallFunction(http_reply, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], 1.1, 200, OK)) -> <null>
|
1362692527.009512 MetaHookPost CallFunction(http_reply, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], 1.1, 200, OK)) -> <null>
|
||||||
|
1362692527.009512 MetaHookPost CallFunction(id_string, ([orig_h=141.142.228.5, orig_p=59856<...>/tcp])) -> <null>
|
||||||
|
1362692527.009512 MetaHookPost CallFunction(set_file_handle, (Analyzer::ANALYZER_HTTP1362692526.869344F11141.142.228.5:59856 > 192.150.187.43:80)) -> <null>
|
||||||
|
1362692527.009512 MetaHookPost CallFunction(split_all, (HTTP, <...>/)) -> <null>
|
||||||
1362692527.009512 MetaHookPost DrainEvents() -> <void>
|
1362692527.009512 MetaHookPost DrainEvents() -> <void>
|
||||||
|
1362692527.009512 MetaHookPost QueueEvent(file_new([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain]], info=<uninitialized>, u2_events=<uninitialized>])) -> false
|
||||||
|
1362692527.009512 MetaHookPost QueueEvent(file_over_new_connection([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)) -> false
|
||||||
|
1362692527.009512 MetaHookPost QueueEvent(get_file_handle(Analyzer::ANALYZER_HTTP, [id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)) -> false
|
||||||
1362692527.009512 MetaHookPost QueueEvent(http_begin_entity([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)) -> false
|
1362692527.009512 MetaHookPost QueueEvent(http_begin_entity([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)) -> false
|
||||||
1362692527.009512 MetaHookPost QueueEvent(http_header([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, ACCEPT-RANGES, bytes)) -> false
|
1362692527.009512 MetaHookPost QueueEvent(http_header([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, ACCEPT-RANGES, bytes)) -> false
|
||||||
1362692527.009512 MetaHookPost QueueEvent(http_header([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, CONNECTION, Keep-Alive)) -> false
|
1362692527.009512 MetaHookPost QueueEvent(http_header([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, CONNECTION, Keep-Alive)) -> false
|
||||||
|
@ -1560,10 +1576,20 @@
|
||||||
1362692527.009512 MetaHookPost QueueEvent(http_header([id=[orig_h=141.142.228.5, orig_p=59856<...>/plain; charset=UTF-8)) -> false
|
1362692527.009512 MetaHookPost QueueEvent(http_header([id=[orig_h=141.142.228.5, orig_p=59856<...>/plain; charset=UTF-8)) -> false
|
||||||
1362692527.009512 MetaHookPost QueueEvent(http_reply([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], 1.1, 200, OK)) -> false
|
1362692527.009512 MetaHookPost QueueEvent(http_reply([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], 1.1, 200, OK)) -> false
|
||||||
1362692527.009512 MetaHookPost UpdateNetworkTime(1362692527.009512) -> <void>
|
1362692527.009512 MetaHookPost UpdateNetworkTime(1362692527.009512) -> <void>
|
||||||
|
1362692527.009512 MetaHookPre CallFunction(Files::__add_analyzers_for_mime_type, (FakNcS1Jfe01uljb3, text/plain, [chunk_event=<uninitialized>, stream_event=<uninitialized>, extract_filename=<uninitialized>, extract_limit=0]))
|
||||||
|
1362692527.009512 MetaHookPre CallFunction(Files::add_analyzers_for_mime_type, ([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain))
|
||||||
|
1362692527.009512 MetaHookPre CallFunction(Files::set_info, ([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain, filename=<uninitialized>, duration=0 secs, local_orig=<uninitialized>, is_orig=F, seen_bytes=0, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>], u2_events=<uninitialized>]))
|
||||||
|
1362692527.009512 MetaHookPre CallFunction(Files::set_info, ([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain]], info=<uninitialized>, u2_events=<uninitialized>]))
|
||||||
1362692527.009512 MetaHookPre CallFunction(HTTP::code_in_range, (200, 100, 199))
|
1362692527.009512 MetaHookPre CallFunction(HTTP::code_in_range, (200, 100, 199))
|
||||||
|
1362692527.009512 MetaHookPre CallFunction(HTTP::get_file_handle, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F))
|
||||||
1362692527.009512 MetaHookPre CallFunction(HTTP::set_state, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, F))
|
1362692527.009512 MetaHookPre CallFunction(HTTP::set_state, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, F))
|
||||||
1362692527.009512 MetaHookPre CallFunction(HTTP::set_state, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, F))
|
1362692527.009512 MetaHookPre CallFunction(HTTP::set_state, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, F))
|
||||||
1362692527.009512 MetaHookPre CallFunction(HTTP::set_state, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, F))
|
1362692527.009512 MetaHookPre CallFunction(HTTP::set_state, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, F))
|
||||||
|
1362692527.009512 MetaHookPre CallFunction(cat, (Analyzer::ANALYZER_HTTP, 1362692526.869344, F, 1, 1, 141.142.228.5:59856 > 192.150.187.43:80))
|
||||||
|
1362692527.009512 MetaHookPre CallFunction(file_new, ([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain]], info=<uninitialized>, u2_events=<uninitialized>]))
|
||||||
|
1362692527.009512 MetaHookPre CallFunction(file_over_new_connection, ([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F))
|
||||||
|
1362692527.009512 MetaHookPre CallFunction(fmt, (%s:%d > %s:%d, 141.142.228.5, 59856<...>/tcp))
|
||||||
|
1362692527.009512 MetaHookPre CallFunction(get_file_handle, (Analyzer::ANALYZER_HTTP, [id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F))
|
||||||
1362692527.009512 MetaHookPre CallFunction(http_begin_entity, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F))
|
1362692527.009512 MetaHookPre CallFunction(http_begin_entity, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F))
|
||||||
1362692527.009512 MetaHookPre CallFunction(http_header, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, ACCEPT-RANGES, bytes))
|
1362692527.009512 MetaHookPre CallFunction(http_header, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, ACCEPT-RANGES, bytes))
|
||||||
1362692527.009512 MetaHookPre CallFunction(http_header, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, CONNECTION, Keep-Alive))
|
1362692527.009512 MetaHookPre CallFunction(http_header, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, CONNECTION, Keep-Alive))
|
||||||
|
@ -1575,7 +1601,13 @@
|
||||||
1362692527.009512 MetaHookPre CallFunction(http_header, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/2.4.3 (Fedora)))
|
1362692527.009512 MetaHookPre CallFunction(http_header, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/2.4.3 (Fedora)))
|
||||||
1362692527.009512 MetaHookPre CallFunction(http_header, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/plain; charset=UTF-8))
|
1362692527.009512 MetaHookPre CallFunction(http_header, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/plain; charset=UTF-8))
|
||||||
1362692527.009512 MetaHookPre CallFunction(http_reply, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], 1.1, 200, OK))
|
1362692527.009512 MetaHookPre CallFunction(http_reply, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], 1.1, 200, OK))
|
||||||
|
1362692527.009512 MetaHookPre CallFunction(id_string, ([orig_h=141.142.228.5, orig_p=59856<...>/tcp]))
|
||||||
|
1362692527.009512 MetaHookPre CallFunction(set_file_handle, (Analyzer::ANALYZER_HTTP1362692526.869344F11141.142.228.5:59856 > 192.150.187.43:80))
|
||||||
|
1362692527.009512 MetaHookPre CallFunction(split_all, (HTTP, <...>/))
|
||||||
1362692527.009512 MetaHookPre DrainEvents()
|
1362692527.009512 MetaHookPre DrainEvents()
|
||||||
|
1362692527.009512 MetaHookPre QueueEvent(file_new([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain]], info=<uninitialized>, u2_events=<uninitialized>]))
|
||||||
|
1362692527.009512 MetaHookPre QueueEvent(file_over_new_connection([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F))
|
||||||
|
1362692527.009512 MetaHookPre QueueEvent(get_file_handle(Analyzer::ANALYZER_HTTP, [id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F))
|
||||||
1362692527.009512 MetaHookPre QueueEvent(http_begin_entity([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F))
|
1362692527.009512 MetaHookPre QueueEvent(http_begin_entity([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F))
|
||||||
1362692527.009512 MetaHookPre QueueEvent(http_header([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, ACCEPT-RANGES, bytes))
|
1362692527.009512 MetaHookPre QueueEvent(http_header([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, ACCEPT-RANGES, bytes))
|
||||||
1362692527.009512 MetaHookPre QueueEvent(http_header([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, CONNECTION, Keep-Alive))
|
1362692527.009512 MetaHookPre QueueEvent(http_header([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, CONNECTION, Keep-Alive))
|
||||||
|
@ -1589,10 +1621,20 @@
|
||||||
1362692527.009512 MetaHookPre QueueEvent(http_reply([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], 1.1, 200, OK))
|
1362692527.009512 MetaHookPre QueueEvent(http_reply([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], 1.1, 200, OK))
|
||||||
1362692527.009512 MetaHookPre UpdateNetworkTime(1362692527.009512)
|
1362692527.009512 MetaHookPre UpdateNetworkTime(1362692527.009512)
|
||||||
1362692527.009512 | HookUpdateNetworkTime 1362692527.009512
|
1362692527.009512 | HookUpdateNetworkTime 1362692527.009512
|
||||||
|
1362692527.009512 | HookCallFunction Files::__add_analyzers_for_mime_type(FakNcS1Jfe01uljb3, text/plain, [chunk_event=<uninitialized>, stream_event=<uninitialized>, extract_filename=<uninitialized>, extract_limit=0])
|
||||||
|
1362692527.009512 | HookCallFunction Files::add_analyzers_for_mime_type([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain)
|
||||||
|
1362692527.009512 | HookCallFunction Files::set_info([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain, filename=<uninitialized>, duration=0 secs, local_orig=<uninitialized>, is_orig=F, seen_bytes=0, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>], u2_events=<uninitialized>])
|
||||||
|
1362692527.009512 | HookCallFunction Files::set_info([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain]], info=<uninitialized>, u2_events=<uninitialized>])
|
||||||
1362692527.009512 | HookCallFunction HTTP::code_in_range(200, 100, 199)
|
1362692527.009512 | HookCallFunction HTTP::code_in_range(200, 100, 199)
|
||||||
|
1362692527.009512 | HookCallFunction HTTP::get_file_handle([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)
|
||||||
1362692527.009512 | HookCallFunction HTTP::set_state([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, F)
|
1362692527.009512 | HookCallFunction HTTP::set_state([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, F)
|
||||||
1362692527.009512 | HookCallFunction HTTP::set_state([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, F)
|
1362692527.009512 | HookCallFunction HTTP::set_state([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, F)
|
||||||
1362692527.009512 | HookCallFunction HTTP::set_state([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, F)
|
1362692527.009512 | HookCallFunction HTTP::set_state([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, F)
|
||||||
|
1362692527.009512 | HookCallFunction cat(Analyzer::ANALYZER_HTTP, 1362692526.869344, F, 1, 1, 141.142.228.5:59856 > 192.150.187.43:80)
|
||||||
|
1362692527.009512 | HookCallFunction file_new([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain]], info=<uninitialized>, u2_events=<uninitialized>])
|
||||||
|
1362692527.009512 | HookCallFunction file_over_new_connection([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)
|
||||||
|
1362692527.009512 | HookCallFunction fmt(%s:%d > %s:%d, 141.142.228.5, 59856<...>/tcp)
|
||||||
|
1362692527.009512 | HookCallFunction get_file_handle(Analyzer::ANALYZER_HTTP, [id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)
|
||||||
1362692527.009512 | HookCallFunction http_begin_entity([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)
|
1362692527.009512 | HookCallFunction http_begin_entity([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)
|
||||||
1362692527.009512 | HookCallFunction http_header([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, ACCEPT-RANGES, bytes)
|
1362692527.009512 | HookCallFunction http_header([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, ACCEPT-RANGES, bytes)
|
||||||
1362692527.009512 | HookCallFunction http_header([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, CONNECTION, Keep-Alive)
|
1362692527.009512 | HookCallFunction http_header([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, CONNECTION, Keep-Alive)
|
||||||
|
@ -1604,7 +1646,13 @@
|
||||||
1362692527.009512 | HookCallFunction http_header([id=[orig_h=141.142.228.5, orig_p=59856<...>/2.4.3 (Fedora))
|
1362692527.009512 | HookCallFunction http_header([id=[orig_h=141.142.228.5, orig_p=59856<...>/2.4.3 (Fedora))
|
||||||
1362692527.009512 | HookCallFunction http_header([id=[orig_h=141.142.228.5, orig_p=59856<...>/plain; charset=UTF-8)
|
1362692527.009512 | HookCallFunction http_header([id=[orig_h=141.142.228.5, orig_p=59856<...>/plain; charset=UTF-8)
|
||||||
1362692527.009512 | HookCallFunction http_reply([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], 1.1, 200, OK)
|
1362692527.009512 | HookCallFunction http_reply([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], 1.1, 200, OK)
|
||||||
|
1362692527.009512 | HookCallFunction id_string([orig_h=141.142.228.5, orig_p=59856<...>/tcp])
|
||||||
|
1362692527.009512 | HookCallFunction set_file_handle(Analyzer::ANALYZER_HTTP1362692526.869344F11141.142.228.5:59856 > 192.150.187.43:80)
|
||||||
|
1362692527.009512 | HookCallFunction split_all(HTTP, <...>/)
|
||||||
1362692527.009512 | HookDrainEvents
|
1362692527.009512 | HookDrainEvents
|
||||||
|
1362692527.009512 | HookQueueEvent file_new([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain]], info=<uninitialized>, u2_events=<uninitialized>])
|
||||||
|
1362692527.009512 | HookQueueEvent file_over_new_connection([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)
|
||||||
|
1362692527.009512 | HookQueueEvent get_file_handle(Analyzer::ANALYZER_HTTP, [id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)
|
||||||
1362692527.009512 | HookQueueEvent http_begin_entity([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)
|
1362692527.009512 | HookQueueEvent http_begin_entity([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)
|
||||||
1362692527.009512 | HookQueueEvent http_header([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, ACCEPT-RANGES, bytes)
|
1362692527.009512 | HookQueueEvent http_header([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, ACCEPT-RANGES, bytes)
|
||||||
1362692527.009512 | HookQueueEvent http_header([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, CONNECTION, Keep-Alive)
|
1362692527.009512 | HookQueueEvent http_header([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, CONNECTION, Keep-Alive)
|
||||||
|
@ -1616,60 +1664,12 @@
|
||||||
1362692527.009512 | HookQueueEvent http_header([id=[orig_h=141.142.228.5, orig_p=59856<...>/2.4.3 (Fedora))
|
1362692527.009512 | HookQueueEvent http_header([id=[orig_h=141.142.228.5, orig_p=59856<...>/2.4.3 (Fedora))
|
||||||
1362692527.009512 | HookQueueEvent http_header([id=[orig_h=141.142.228.5, orig_p=59856<...>/plain; charset=UTF-8)
|
1362692527.009512 | HookQueueEvent http_header([id=[orig_h=141.142.228.5, orig_p=59856<...>/plain; charset=UTF-8)
|
||||||
1362692527.009512 | HookQueueEvent http_reply([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], 1.1, 200, OK)
|
1362692527.009512 | HookQueueEvent http_reply([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=<uninitialized>, status_msg=<uninitialized>, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=0]}, current_request=1, current_response=0], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], 1.1, 200, OK)
|
||||||
1362692527.009721 MetaHookPost CallFunction(Files::__add_analyzers_for_mime_type, (FakNcS1Jfe01uljb3, text/plain, [chunk_event=<uninitialized>, stream_event=<uninitialized>, extract_filename=<uninitialized>, extract_limit=0])) -> <null>
|
|
||||||
1362692527.009721 MetaHookPost CallFunction(Files::add_analyzers_for_mime_type, ([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain)) -> <null>
|
|
||||||
1362692527.009721 MetaHookPost CallFunction(Files::set_info, ([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain, filename=<uninitialized>, duration=0 secs, local_orig=<uninitialized>, is_orig=F, seen_bytes=0, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>], u2_events=<uninitialized>])) -> <null>
|
|
||||||
1362692527.009721 MetaHookPost CallFunction(Files::set_info, ([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain]], info=<uninitialized>, u2_events=<uninitialized>])) -> <null>
|
|
||||||
1362692527.009721 MetaHookPost CallFunction(HTTP::get_file_handle, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)) -> <null>
|
|
||||||
1362692527.009721 MetaHookPost CallFunction(cat, (Analyzer::ANALYZER_HTTP, 1362692526.869344, F, 1, 1, 141.142.228.5:59856 > 192.150.187.43:80)) -> <null>
|
|
||||||
1362692527.009721 MetaHookPost CallFunction(file_new, ([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain]], info=<uninitialized>, u2_events=<uninitialized>])) -> <null>
|
|
||||||
1362692527.009721 MetaHookPost CallFunction(file_over_new_connection, ([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)) -> <null>
|
|
||||||
1362692527.009721 MetaHookPost CallFunction(fmt, (%s:%d > %s:%d, 141.142.228.5, 59856<...>/tcp)) -> <null>
|
|
||||||
1362692527.009721 MetaHookPost CallFunction(get_file_handle, (Analyzer::ANALYZER_HTTP, [id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)) -> <null>
|
|
||||||
1362692527.009721 MetaHookPost CallFunction(id_string, ([orig_h=141.142.228.5, orig_p=59856<...>/tcp])) -> <null>
|
|
||||||
1362692527.009721 MetaHookPost CallFunction(set_file_handle, (Analyzer::ANALYZER_HTTP1362692526.869344F11141.142.228.5:59856 > 192.150.187.43:80)) -> <null>
|
|
||||||
1362692527.009721 MetaHookPost CallFunction(split_all, (HTTP, <...>/)) -> <null>
|
|
||||||
1362692527.009721 MetaHookPost DrainEvents() -> <void>
|
1362692527.009721 MetaHookPost DrainEvents() -> <void>
|
||||||
1362692527.009721 MetaHookPost QueueEvent(file_new([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain]], info=<uninitialized>, u2_events=<uninitialized>])) -> false
|
|
||||||
1362692527.009721 MetaHookPost QueueEvent(file_over_new_connection([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)) -> false
|
|
||||||
1362692527.009721 MetaHookPost QueueEvent(get_file_handle(Analyzer::ANALYZER_HTTP, [id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)) -> false
|
|
||||||
1362692527.009721 MetaHookPost UpdateNetworkTime(1362692527.009721) -> <void>
|
1362692527.009721 MetaHookPost UpdateNetworkTime(1362692527.009721) -> <void>
|
||||||
1362692527.009721 MetaHookPre CallFunction(Files::__add_analyzers_for_mime_type, (FakNcS1Jfe01uljb3, text/plain, [chunk_event=<uninitialized>, stream_event=<uninitialized>, extract_filename=<uninitialized>, extract_limit=0]))
|
|
||||||
1362692527.009721 MetaHookPre CallFunction(Files::add_analyzers_for_mime_type, ([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain))
|
|
||||||
1362692527.009721 MetaHookPre CallFunction(Files::set_info, ([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain, filename=<uninitialized>, duration=0 secs, local_orig=<uninitialized>, is_orig=F, seen_bytes=0, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>], u2_events=<uninitialized>]))
|
|
||||||
1362692527.009721 MetaHookPre CallFunction(Files::set_info, ([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain]], info=<uninitialized>, u2_events=<uninitialized>]))
|
|
||||||
1362692527.009721 MetaHookPre CallFunction(HTTP::get_file_handle, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F))
|
|
||||||
1362692527.009721 MetaHookPre CallFunction(cat, (Analyzer::ANALYZER_HTTP, 1362692526.869344, F, 1, 1, 141.142.228.5:59856 > 192.150.187.43:80))
|
|
||||||
1362692527.009721 MetaHookPre CallFunction(file_new, ([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain]], info=<uninitialized>, u2_events=<uninitialized>]))
|
|
||||||
1362692527.009721 MetaHookPre CallFunction(file_over_new_connection, ([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F))
|
|
||||||
1362692527.009721 MetaHookPre CallFunction(fmt, (%s:%d > %s:%d, 141.142.228.5, 59856<...>/tcp))
|
|
||||||
1362692527.009721 MetaHookPre CallFunction(get_file_handle, (Analyzer::ANALYZER_HTTP, [id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F))
|
|
||||||
1362692527.009721 MetaHookPre CallFunction(id_string, ([orig_h=141.142.228.5, orig_p=59856<...>/tcp]))
|
|
||||||
1362692527.009721 MetaHookPre CallFunction(set_file_handle, (Analyzer::ANALYZER_HTTP1362692526.869344F11141.142.228.5:59856 > 192.150.187.43:80))
|
|
||||||
1362692527.009721 MetaHookPre CallFunction(split_all, (HTTP, <...>/))
|
|
||||||
1362692527.009721 MetaHookPre DrainEvents()
|
1362692527.009721 MetaHookPre DrainEvents()
|
||||||
1362692527.009721 MetaHookPre QueueEvent(file_new([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain]], info=<uninitialized>, u2_events=<uninitialized>]))
|
|
||||||
1362692527.009721 MetaHookPre QueueEvent(file_over_new_connection([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F))
|
|
||||||
1362692527.009721 MetaHookPre QueueEvent(get_file_handle(Analyzer::ANALYZER_HTTP, [id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F))
|
|
||||||
1362692527.009721 MetaHookPre UpdateNetworkTime(1362692527.009721)
|
1362692527.009721 MetaHookPre UpdateNetworkTime(1362692527.009721)
|
||||||
1362692527.009721 | HookUpdateNetworkTime 1362692527.009721
|
1362692527.009721 | HookUpdateNetworkTime 1362692527.009721
|
||||||
1362692527.009721 | HookCallFunction Files::__add_analyzers_for_mime_type(FakNcS1Jfe01uljb3, text/plain, [chunk_event=<uninitialized>, stream_event=<uninitialized>, extract_filename=<uninitialized>, extract_limit=0])
|
|
||||||
1362692527.009721 | HookCallFunction Files::add_analyzers_for_mime_type([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain)
|
|
||||||
1362692527.009721 | HookCallFunction Files::set_info([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain, filename=<uninitialized>, duration=0 secs, local_orig=<uninitialized>, is_orig=F, seen_bytes=0, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>], u2_events=<uninitialized>])
|
|
||||||
1362692527.009721 | HookCallFunction Files::set_info([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain]], info=<uninitialized>, u2_events=<uninitialized>])
|
|
||||||
1362692527.009721 | HookCallFunction HTTP::get_file_handle([id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)
|
|
||||||
1362692527.009721 | HookCallFunction cat(Analyzer::ANALYZER_HTTP, 1362692526.869344, F, 1, 1, 141.142.228.5:59856 > 192.150.187.43:80)
|
|
||||||
1362692527.009721 | HookCallFunction file_new([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain]], info=<uninitialized>, u2_events=<uninitialized>])
|
|
||||||
1362692527.009721 | HookCallFunction file_over_new_connection([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)
|
|
||||||
1362692527.009721 | HookCallFunction fmt(%s:%d > %s:%d, 141.142.228.5, 59856<...>/tcp)
|
|
||||||
1362692527.009721 | HookCallFunction get_file_handle(Analyzer::ANALYZER_HTTP, [id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)
|
|
||||||
1362692527.009721 | HookCallFunction id_string([orig_h=141.142.228.5, orig_p=59856<...>/tcp])
|
|
||||||
1362692527.009721 | HookCallFunction set_file_handle(Analyzer::ANALYZER_HTTP1362692526.869344F11141.142.228.5:59856 > 192.150.187.43:80)
|
|
||||||
1362692527.009721 | HookCallFunction split_all(HTTP, <...>/)
|
|
||||||
1362692527.009721 | HookDrainEvents
|
1362692527.009721 | HookDrainEvents
|
||||||
1362692527.009721 | HookQueueEvent file_new([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain]], info=<uninitialized>, u2_events=<uninitialized>])
|
|
||||||
1362692527.009721 | HookQueueEvent file_over_new_connection([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)
|
|
||||||
1362692527.009721 | HookQueueEvent get_file_handle(Analyzer::ANALYZER_HTTP, [id=[orig_h=141.142.228.5, orig_p=59856<...>/1.14 (darwin12.2.0), request_body_len=0, response_body_len=0, status_code=200, status_msg=OK, info_code=<uninitialized>, info_msg=<uninitialized>, filename=<uninitialized>, tags={}, username=<uninitialized>, password=<uninitialized>, capture_password=F, proxied=<uninitialized>, range_request=F, orig_fuids=<uninitialized>, orig_mime_types=<uninitialized>, resp_fuids=<uninitialized>, resp_mime_types=<uninitialized>, current_entity=[filename=<uninitialized>], orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)
|
|
||||||
1362692527.009765 MetaHookPost DrainEvents() -> <void>
|
1362692527.009765 MetaHookPost DrainEvents() -> <void>
|
||||||
1362692527.009765 MetaHookPost UpdateNetworkTime(1362692527.009765) -> <void>
|
1362692527.009765 MetaHookPost UpdateNetworkTime(1362692527.009765) -> <void>
|
||||||
1362692527.009765 MetaHookPre DrainEvents()
|
1362692527.009765 MetaHookPre DrainEvents()
|
||||||
|
@ -1680,11 +1680,11 @@
|
||||||
1362692527.009775 MetaHookPost CallFunction(HTTP::code_in_range, (200, 100, 199)) -> <null>
|
1362692527.009775 MetaHookPost CallFunction(HTTP::code_in_range, (200, 100, 199)) -> <null>
|
||||||
1362692527.009775 MetaHookPost CallFunction(HTTP::get_file_handle, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)) -> <null>
|
1362692527.009775 MetaHookPost CallFunction(HTTP::get_file_handle, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)) -> <null>
|
||||||
1362692527.009775 MetaHookPost CallFunction(HTTP::set_state, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, F)) -> <null>
|
1362692527.009775 MetaHookPost CallFunction(HTTP::set_state, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, F)) -> <null>
|
||||||
1362692527.009775 MetaHookPost CallFunction(Log::__write, (Files::LOG, [ts=1362692527.009721, fuid=FakNcS1Jfe01uljb3, tx_hosts={192.150.187.43}, rx_hosts={141.142.228.5}, conn_uids={CXWv6p3arKYeMETxOg}, source=HTTP, depth=0, analyzers={}, mime_type=text/plain, filename=<uninitialized>, duration=53.0 usecs, local_orig=<uninitialized>, is_orig=F, seen_bytes=4705, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>])) -> <null>
|
1362692527.009775 MetaHookPost CallFunction(Log::__write, (Files::LOG, [ts=1362692527.009512, fuid=FakNcS1Jfe01uljb3, tx_hosts={192.150.187.43}, rx_hosts={141.142.228.5}, conn_uids={CXWv6p3arKYeMETxOg}, source=HTTP, depth=0, analyzers={}, mime_type=text/plain, filename=<uninitialized>, duration=262.0 usecs, local_orig=<uninitialized>, is_orig=F, seen_bytes=4705, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>])) -> <null>
|
||||||
1362692527.009775 MetaHookPost CallFunction(Log::__write, (HTTP::LOG, [ts=1362692526.939527, uid=CXWv6p3arKYeMETxOg, id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1])) -> <null>
|
1362692527.009775 MetaHookPost CallFunction(Log::__write, (HTTP::LOG, [ts=1362692526.939527, uid=CXWv6p3arKYeMETxOg, id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1])) -> <null>
|
||||||
1362692527.009775 MetaHookPost CallFunction(Log::default_path_func, (Files::LOG, , [ts=1362692527.009721, fuid=FakNcS1Jfe01uljb3, tx_hosts={192.150.187.43}, rx_hosts={141.142.228.5}, conn_uids={CXWv6p3arKYeMETxOg}, source=HTTP, depth=0, analyzers={}, mime_type=text/plain, filename=<uninitialized>, duration=53.0 usecs, local_orig=<uninitialized>, is_orig=F, seen_bytes=4705, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>])) -> <null>
|
1362692527.009775 MetaHookPost CallFunction(Log::default_path_func, (Files::LOG, , [ts=1362692527.009512, fuid=FakNcS1Jfe01uljb3, tx_hosts={192.150.187.43}, rx_hosts={141.142.228.5}, conn_uids={CXWv6p3arKYeMETxOg}, source=HTTP, depth=0, analyzers={}, mime_type=text/plain, filename=<uninitialized>, duration=262.0 usecs, local_orig=<uninitialized>, is_orig=F, seen_bytes=4705, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>])) -> <null>
|
||||||
1362692527.009775 MetaHookPost CallFunction(Log::default_path_func, (HTTP::LOG, , [ts=1362692526.939527, uid=CXWv6p3arKYeMETxOg, id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1])) -> <null>
|
1362692527.009775 MetaHookPost CallFunction(Log::default_path_func, (HTTP::LOG, , [ts=1362692526.939527, uid=CXWv6p3arKYeMETxOg, id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1])) -> <null>
|
||||||
1362692527.009775 MetaHookPost CallFunction(Log::write, (Files::LOG, [ts=1362692527.009721, fuid=FakNcS1Jfe01uljb3, tx_hosts={192.150.187.43}, rx_hosts={141.142.228.5}, conn_uids={CXWv6p3arKYeMETxOg}, source=HTTP, depth=0, analyzers={}, mime_type=text/plain, filename=<uninitialized>, duration=53.0 usecs, local_orig=<uninitialized>, is_orig=F, seen_bytes=4705, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>])) -> <null>
|
1362692527.009775 MetaHookPost CallFunction(Log::write, (Files::LOG, [ts=1362692527.009512, fuid=FakNcS1Jfe01uljb3, tx_hosts={192.150.187.43}, rx_hosts={141.142.228.5}, conn_uids={CXWv6p3arKYeMETxOg}, source=HTTP, depth=0, analyzers={}, mime_type=text/plain, filename=<uninitialized>, duration=262.0 usecs, local_orig=<uninitialized>, is_orig=F, seen_bytes=4705, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>])) -> <null>
|
||||||
1362692527.009775 MetaHookPost CallFunction(Log::write, (HTTP::LOG, [ts=1362692526.939527, uid=CXWv6p3arKYeMETxOg, id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1])) -> <null>
|
1362692527.009775 MetaHookPost CallFunction(Log::write, (HTTP::LOG, [ts=1362692526.939527, uid=CXWv6p3arKYeMETxOg, id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1])) -> <null>
|
||||||
1362692527.009775 MetaHookPost CallFunction(cat, (Analyzer::ANALYZER_HTTP, 1362692526.869344, F, 1, 1, 141.142.228.5:59856 > 192.150.187.43:80)) -> <null>
|
1362692527.009775 MetaHookPost CallFunction(cat, (Analyzer::ANALYZER_HTTP, 1362692526.869344, F, 1, 1, 141.142.228.5:59856 > 192.150.187.43:80)) -> <null>
|
||||||
1362692527.009775 MetaHookPost CallFunction(file_state_remove, ([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain, filename=<uninitialized>, duration=0 secs, local_orig=<uninitialized>, is_orig=F, seen_bytes=0, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>], u2_events=<uninitialized>])) -> <null>
|
1362692527.009775 MetaHookPost CallFunction(file_state_remove, ([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain, filename=<uninitialized>, duration=0 secs, local_orig=<uninitialized>, is_orig=F, seen_bytes=0, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>], u2_events=<uninitialized>])) -> <null>
|
||||||
|
@ -1712,11 +1712,11 @@
|
||||||
1362692527.009775 MetaHookPre CallFunction(HTTP::code_in_range, (200, 100, 199))
|
1362692527.009775 MetaHookPre CallFunction(HTTP::code_in_range, (200, 100, 199))
|
||||||
1362692527.009775 MetaHookPre CallFunction(HTTP::get_file_handle, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F))
|
1362692527.009775 MetaHookPre CallFunction(HTTP::get_file_handle, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F))
|
||||||
1362692527.009775 MetaHookPre CallFunction(HTTP::set_state, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, F))
|
1362692527.009775 MetaHookPre CallFunction(HTTP::set_state, ([id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, F))
|
||||||
1362692527.009775 MetaHookPre CallFunction(Log::__write, (Files::LOG, [ts=1362692527.009721, fuid=FakNcS1Jfe01uljb3, tx_hosts={192.150.187.43}, rx_hosts={141.142.228.5}, conn_uids={CXWv6p3arKYeMETxOg}, source=HTTP, depth=0, analyzers={}, mime_type=text/plain, filename=<uninitialized>, duration=53.0 usecs, local_orig=<uninitialized>, is_orig=F, seen_bytes=4705, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>]))
|
1362692527.009775 MetaHookPre CallFunction(Log::__write, (Files::LOG, [ts=1362692527.009512, fuid=FakNcS1Jfe01uljb3, tx_hosts={192.150.187.43}, rx_hosts={141.142.228.5}, conn_uids={CXWv6p3arKYeMETxOg}, source=HTTP, depth=0, analyzers={}, mime_type=text/plain, filename=<uninitialized>, duration=262.0 usecs, local_orig=<uninitialized>, is_orig=F, seen_bytes=4705, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>]))
|
||||||
1362692527.009775 MetaHookPre CallFunction(Log::__write, (HTTP::LOG, [ts=1362692526.939527, uid=CXWv6p3arKYeMETxOg, id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1]))
|
1362692527.009775 MetaHookPre CallFunction(Log::__write, (HTTP::LOG, [ts=1362692526.939527, uid=CXWv6p3arKYeMETxOg, id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1]))
|
||||||
1362692527.009775 MetaHookPre CallFunction(Log::default_path_func, (Files::LOG, , [ts=1362692527.009721, fuid=FakNcS1Jfe01uljb3, tx_hosts={192.150.187.43}, rx_hosts={141.142.228.5}, conn_uids={CXWv6p3arKYeMETxOg}, source=HTTP, depth=0, analyzers={}, mime_type=text/plain, filename=<uninitialized>, duration=53.0 usecs, local_orig=<uninitialized>, is_orig=F, seen_bytes=4705, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>]))
|
1362692527.009775 MetaHookPre CallFunction(Log::default_path_func, (Files::LOG, , [ts=1362692527.009512, fuid=FakNcS1Jfe01uljb3, tx_hosts={192.150.187.43}, rx_hosts={141.142.228.5}, conn_uids={CXWv6p3arKYeMETxOg}, source=HTTP, depth=0, analyzers={}, mime_type=text/plain, filename=<uninitialized>, duration=262.0 usecs, local_orig=<uninitialized>, is_orig=F, seen_bytes=4705, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>]))
|
||||||
1362692527.009775 MetaHookPre CallFunction(Log::default_path_func, (HTTP::LOG, , [ts=1362692526.939527, uid=CXWv6p3arKYeMETxOg, id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1]))
|
1362692527.009775 MetaHookPre CallFunction(Log::default_path_func, (HTTP::LOG, , [ts=1362692526.939527, uid=CXWv6p3arKYeMETxOg, id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1]))
|
||||||
1362692527.009775 MetaHookPre CallFunction(Log::write, (Files::LOG, [ts=1362692527.009721, fuid=FakNcS1Jfe01uljb3, tx_hosts={192.150.187.43}, rx_hosts={141.142.228.5}, conn_uids={CXWv6p3arKYeMETxOg}, source=HTTP, depth=0, analyzers={}, mime_type=text/plain, filename=<uninitialized>, duration=53.0 usecs, local_orig=<uninitialized>, is_orig=F, seen_bytes=4705, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>]))
|
1362692527.009775 MetaHookPre CallFunction(Log::write, (Files::LOG, [ts=1362692527.009512, fuid=FakNcS1Jfe01uljb3, tx_hosts={192.150.187.43}, rx_hosts={141.142.228.5}, conn_uids={CXWv6p3arKYeMETxOg}, source=HTTP, depth=0, analyzers={}, mime_type=text/plain, filename=<uninitialized>, duration=262.0 usecs, local_orig=<uninitialized>, is_orig=F, seen_bytes=4705, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>]))
|
||||||
1362692527.009775 MetaHookPre CallFunction(Log::write, (HTTP::LOG, [ts=1362692526.939527, uid=CXWv6p3arKYeMETxOg, id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1]))
|
1362692527.009775 MetaHookPre CallFunction(Log::write, (HTTP::LOG, [ts=1362692526.939527, uid=CXWv6p3arKYeMETxOg, id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1]))
|
||||||
1362692527.009775 MetaHookPre CallFunction(cat, (Analyzer::ANALYZER_HTTP, 1362692526.869344, F, 1, 1, 141.142.228.5:59856 > 192.150.187.43:80))
|
1362692527.009775 MetaHookPre CallFunction(cat, (Analyzer::ANALYZER_HTTP, 1362692526.869344, F, 1, 1, 141.142.228.5:59856 > 192.150.187.43:80))
|
||||||
1362692527.009775 MetaHookPre CallFunction(file_state_remove, ([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain, filename=<uninitialized>, duration=0 secs, local_orig=<uninitialized>, is_orig=F, seen_bytes=0, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>], u2_events=<uninitialized>]))
|
1362692527.009775 MetaHookPre CallFunction(file_state_remove, ([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain, filename=<uninitialized>, duration=0 secs, local_orig=<uninitialized>, is_orig=F, seen_bytes=0, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>], u2_events=<uninitialized>]))
|
||||||
|
@ -1745,11 +1745,11 @@
|
||||||
1362692527.009775 | HookCallFunction HTTP::code_in_range(200, 100, 199)
|
1362692527.009775 | HookCallFunction HTTP::code_in_range(200, 100, 199)
|
||||||
1362692527.009775 | HookCallFunction HTTP::get_file_handle([id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)
|
1362692527.009775 | HookCallFunction HTTP::get_file_handle([id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F)
|
||||||
1362692527.009775 | HookCallFunction HTTP::set_state([id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, F)
|
1362692527.009775 | HookCallFunction HTTP::set_state([id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1]}, current_request=1, current_response=1], irc=<uninitialized>, modbus=<uninitialized>, radius=<uninitialized>, snmp=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], F, F)
|
||||||
1362692527.009775 | HookCallFunction Log::__write(Files::LOG, [ts=1362692527.009721, fuid=FakNcS1Jfe01uljb3, tx_hosts={192.150.187.43}, rx_hosts={141.142.228.5}, conn_uids={CXWv6p3arKYeMETxOg}, source=HTTP, depth=0, analyzers={}, mime_type=text/plain, filename=<uninitialized>, duration=53.0 usecs, local_orig=<uninitialized>, is_orig=F, seen_bytes=4705, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>])
|
1362692527.009775 | HookCallFunction Log::__write(Files::LOG, [ts=1362692527.009512, fuid=FakNcS1Jfe01uljb3, tx_hosts={192.150.187.43}, rx_hosts={141.142.228.5}, conn_uids={CXWv6p3arKYeMETxOg}, source=HTTP, depth=0, analyzers={}, mime_type=text/plain, filename=<uninitialized>, duration=262.0 usecs, local_orig=<uninitialized>, is_orig=F, seen_bytes=4705, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>])
|
||||||
1362692527.009775 | HookCallFunction Log::__write(HTTP::LOG, [ts=1362692526.939527, uid=CXWv6p3arKYeMETxOg, id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1])
|
1362692527.009775 | HookCallFunction Log::__write(HTTP::LOG, [ts=1362692526.939527, uid=CXWv6p3arKYeMETxOg, id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1])
|
||||||
1362692527.009775 | HookCallFunction Log::default_path_func(Files::LOG, , [ts=1362692527.009721, fuid=FakNcS1Jfe01uljb3, tx_hosts={192.150.187.43}, rx_hosts={141.142.228.5}, conn_uids={CXWv6p3arKYeMETxOg}, source=HTTP, depth=0, analyzers={}, mime_type=text/plain, filename=<uninitialized>, duration=53.0 usecs, local_orig=<uninitialized>, is_orig=F, seen_bytes=4705, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>])
|
1362692527.009775 | HookCallFunction Log::default_path_func(Files::LOG, , [ts=1362692527.009512, fuid=FakNcS1Jfe01uljb3, tx_hosts={192.150.187.43}, rx_hosts={141.142.228.5}, conn_uids={CXWv6p3arKYeMETxOg}, source=HTTP, depth=0, analyzers={}, mime_type=text/plain, filename=<uninitialized>, duration=262.0 usecs, local_orig=<uninitialized>, is_orig=F, seen_bytes=4705, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>])
|
||||||
1362692527.009775 | HookCallFunction Log::default_path_func(HTTP::LOG, , [ts=1362692526.939527, uid=CXWv6p3arKYeMETxOg, id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1])
|
1362692527.009775 | HookCallFunction Log::default_path_func(HTTP::LOG, , [ts=1362692526.939527, uid=CXWv6p3arKYeMETxOg, id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1])
|
||||||
1362692527.009775 | HookCallFunction Log::write(Files::LOG, [ts=1362692527.009721, fuid=FakNcS1Jfe01uljb3, tx_hosts={192.150.187.43}, rx_hosts={141.142.228.5}, conn_uids={CXWv6p3arKYeMETxOg}, source=HTTP, depth=0, analyzers={}, mime_type=text/plain, filename=<uninitialized>, duration=53.0 usecs, local_orig=<uninitialized>, is_orig=F, seen_bytes=4705, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>])
|
1362692527.009775 | HookCallFunction Log::write(Files::LOG, [ts=1362692527.009512, fuid=FakNcS1Jfe01uljb3, tx_hosts={192.150.187.43}, rx_hosts={141.142.228.5}, conn_uids={CXWv6p3arKYeMETxOg}, source=HTTP, depth=0, analyzers={}, mime_type=text/plain, filename=<uninitialized>, duration=262.0 usecs, local_orig=<uninitialized>, is_orig=F, seen_bytes=4705, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>])
|
||||||
1362692527.009775 | HookCallFunction Log::write(HTTP::LOG, [ts=1362692526.939527, uid=CXWv6p3arKYeMETxOg, id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1])
|
1362692527.009775 | HookCallFunction Log::write(HTTP::LOG, [ts=1362692526.939527, uid=CXWv6p3arKYeMETxOg, id=[orig_h=141.142.228.5, orig_p=59856<...>/plain], current_entity=<uninitialized>, orig_mime_depth=1, resp_mime_depth=1])
|
||||||
1362692527.009775 | HookCallFunction cat(Analyzer::ANALYZER_HTTP, 1362692526.869344, F, 1, 1, 141.142.228.5:59856 > 192.150.187.43:80)
|
1362692527.009775 | HookCallFunction cat(Analyzer::ANALYZER_HTTP, 1362692526.869344, F, 1, 1, 141.142.228.5:59856 > 192.150.187.43:80)
|
||||||
1362692527.009775 | HookCallFunction file_state_remove([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain, filename=<uninitialized>, duration=0 secs, local_orig=<uninitialized>, is_orig=F, seen_bytes=0, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>], u2_events=<uninitialized>])
|
1362692527.009775 | HookCallFunction file_state_remove([id=FakNcS1Jfe01uljb3, parent_id=<uninitialized>, source=HTTP, is_orig=F, conns={[[orig_h=141.142.228.5, orig_p=59856<...>/plain, filename=<uninitialized>, duration=0 secs, local_orig=<uninitialized>, is_orig=F, seen_bytes=0, total_bytes=4705, missing_bytes=0, overflow_bytes=0, timedout=F, parent_fuid=<uninitialized>, md5=<uninitialized>, sha1=<uninitialized>, sha256=<uninitialized>, x509=<uninitialized>, extracted=<uninitialized>], u2_events=<uninitialized>])
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
Demo::Foo - A Foo packet dumper (dynamic, version 1.0)
|
Demo::Foo - A Foo packet dumper (dynamic, version 1.0)
|
||||||
[Packet Dumper] FooPktDumper (dumper prefix: foo)
|
[Packet Dumper] FooPktDumper (dumper prefix: "foo")
|
||||||
|
|
||||||
===
|
===
|
||||||
Dumping to XXX: 1373858797.646968 len 94
|
Dumping to XXX: 1373858797.646968 len 94
|
||||||
|
|
|
@ -9,7 +9,7 @@ Demo::Foo - A Foo test logging writer (dynamic, version 1.0)
|
||||||
[conn] 1340213162.160367|CRJuHdVW0XPVINV8a|10.0.0.55|53994|60.190.189.214|8124|tcp|-|-|-|-|SH|-|0|F|1|52|0|0|
|
[conn] 1340213162.160367|CRJuHdVW0XPVINV8a|10.0.0.55|53994|60.190.189.214|8124|tcp|-|-|-|-|SH|-|0|F|1|52|0|0|
|
||||||
[conn] 1340213226.561757|CPbrpk1qSsw6ESzHV4|10.0.0.55|53994|60.190.189.214|8124|tcp|-|-|-|-|SH|-|0|F|1|52|0|0|
|
[conn] 1340213226.561757|CPbrpk1qSsw6ESzHV4|10.0.0.55|53994|60.190.189.214|8124|tcp|-|-|-|-|SH|-|0|F|1|52|0|0|
|
||||||
[conn] 1340213290.981995|C6pKV8GSxOnSLghOa|10.0.0.55|53994|60.190.189.214|8124|tcp|-|-|-|-|SH|-|0|F|1|52|0|0|
|
[conn] 1340213290.981995|C6pKV8GSxOnSLghOa|10.0.0.55|53994|60.190.189.214|8124|tcp|-|-|-|-|SH|-|0|F|1|52|0|0|
|
||||||
[files] 1340213020.732581|FBtZ7y1ppK8iIeY622|60.190.189.214|10.0.0.55|CjhGID4nQcgTWjvg4c|HTTP|0||image/gif|-|0.000000|-|F|1368|1368|0|0|F|-|-|-|-|-
|
[files] 1340213020.732547|FBtZ7y1ppK8iIeY622|60.190.189.214|10.0.0.55|CjhGID4nQcgTWjvg4c|HTTP|0||image/gif|-|0.000034|-|F|1368|1368|0|0|F|-|-|-|-|-
|
||||||
[http] 1340213019.013158|CjhGID4nQcgTWjvg4c|10.0.0.55|53994|60.190.189.214|8124|1|GET|www.osnews.com|/images/printer2.gif|http://www.osnews.com/|Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:10.0.2) Gecko/20100101 Firefox/10.0.2|0|0|304|Not Modified|-|-|-||-|-|-|-|-|-|-
|
[http] 1340213019.013158|CjhGID4nQcgTWjvg4c|10.0.0.55|53994|60.190.189.214|8124|1|GET|www.osnews.com|/images/printer2.gif|http://www.osnews.com/|Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:10.0.2) Gecko/20100101 Firefox/10.0.2|0|0|304|Not Modified|-|-|-||-|-|-|-|-|-|-
|
||||||
[http] 1340213019.013426|CjhGID4nQcgTWjvg4c|10.0.0.55|53994|60.190.189.214|8124|2|GET|www.osnews.com|/img2/shorturl.jpg|http://www.osnews.com/|Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:10.0.2) Gecko/20100101 Firefox/10.0.2|0|0|304|Not Modified|-|-|-||-|-|-|-|-|-|-
|
[http] 1340213019.013426|CjhGID4nQcgTWjvg4c|10.0.0.55|53994|60.190.189.214|8124|2|GET|www.osnews.com|/img2/shorturl.jpg|http://www.osnews.com/|Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:10.0.2) Gecko/20100101 Firefox/10.0.2|0|0|304|Not Modified|-|-|-||-|-|-|-|-|-|-
|
||||||
[http] 1340213019.580162|CjhGID4nQcgTWjvg4c|10.0.0.55|53994|60.190.189.214|8124|3|GET|www.osnews.com|/images/icons/9.gif|http://www.osnews.com/|Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:10.0.2) Gecko/20100101 Firefox/10.0.2|0|0|304|Not Modified|-|-|-||-|-|-|-|-|-|-
|
[http] 1340213019.580162|CjhGID4nQcgTWjvg4c|10.0.0.55|53994|60.190.189.214|8124|3|GET|www.osnews.com|/images/icons/9.gif|http://www.osnews.com/|Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:10.0.2) Gecko/20100101 Firefox/10.0.2|0|0|304|Not Modified|-|-|-||-|-|-|-|-|-|-
|
||||||
|
@ -17,6 +17,6 @@ Demo::Foo - A Foo test logging writer (dynamic, version 1.0)
|
||||||
[http] 1340213020.732963|CjhGID4nQcgTWjvg4c|10.0.0.55|53994|60.190.189.214|8124|5|GET|www.osnews.com|/images/icons/17.gif|http://www.osnews.com/|Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:10.0.2) Gecko/20100101 Firefox/10.0.2|0|0|304|Not Modified|-|-|-||-|-|-|-|-|-|-
|
[http] 1340213020.732963|CjhGID4nQcgTWjvg4c|10.0.0.55|53994|60.190.189.214|8124|5|GET|www.osnews.com|/images/icons/17.gif|http://www.osnews.com/|Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:10.0.2) Gecko/20100101 Firefox/10.0.2|0|0|304|Not Modified|-|-|-||-|-|-|-|-|-|-
|
||||||
[http] 1340213021.300269|CjhGID4nQcgTWjvg4c|10.0.0.55|53994|60.190.189.214|8124|6|GET|www.osnews.com|/images/left.gif|http://www.osnews.com/|Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:10.0.2) Gecko/20100101 Firefox/10.0.2|0|0|304|Not Modified|-|-|-||-|-|-|-|-|-|-
|
[http] 1340213021.300269|CjhGID4nQcgTWjvg4c|10.0.0.55|53994|60.190.189.214|8124|6|GET|www.osnews.com|/images/left.gif|http://www.osnews.com/|Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:10.0.2) Gecko/20100101 Firefox/10.0.2|0|0|304|Not Modified|-|-|-||-|-|-|-|-|-|-
|
||||||
[http] 1340213021.861584|CjhGID4nQcgTWjvg4c|10.0.0.55|53994|60.190.189.214|8124|7|GET|www.osnews.com|/images/icons/32.gif|http://www.osnews.com/|Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:10.0.2) Gecko/20100101 Firefox/10.0.2|0|0|304|Not Modified|-|-|-||-|-|-|-|-|-|-
|
[http] 1340213021.861584|CjhGID4nQcgTWjvg4c|10.0.0.55|53994|60.190.189.214|8124|7|GET|www.osnews.com|/images/icons/32.gif|http://www.osnews.com/|Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:10.0.2) Gecko/20100101 Firefox/10.0.2|0|0|304|Not Modified|-|-|-||-|-|-|-|-|-|-
|
||||||
[packet_filter] 1409859343.786281|bro|ip or not ip|T|T
|
[packet_filter] 1412721099.419280|bro|ip or not ip|T|T
|
||||||
[socks] 1340213015.276495|CjhGID4nQcgTWjvg4c|10.0.0.55|53994|60.190.189.214|8124|5|-|succeeded|-|www.osnews.com|80|192.168.0.31|-|2688
|
[socks] 1340213015.276495|CjhGID4nQcgTWjvg4c|10.0.0.55|53994|60.190.189.214|8124|5|-|succeeded|-|www.osnews.com|80|192.168.0.31|-|2688
|
||||||
[tunnel] 1340213015.276495|-|10.0.0.55|0|60.190.189.214|8124|Tunnel::SOCKS|Tunnel::DISCOVER
|
[tunnel] 1340213015.276495|-|10.0.0.55|0|60.190.189.214|8124|Tunnel::SOCKS|Tunnel::DISCOVER
|
||||||
|
|
|
@ -2,38 +2,38 @@ FILE_NEW
|
||||||
file #0, 0, 0
|
file #0, 0, 0
|
||||||
FILE_OVER_NEW_CONNECTION
|
FILE_OVER_NEW_CONNECTION
|
||||||
FILE_STATE_REMOVE
|
FILE_STATE_REMOVE
|
||||||
file #0, 6, 0
|
file #0, 4, 0
|
||||||
[orig_h=141.142.228.5, orig_p=57262/tcp, resp_h=54.243.88.146, resp_p=80/tcp]
|
[orig_h=141.142.228.5, orig_p=57262/tcp, resp_h=54.243.88.146, resp_p=80/tcp]
|
||||||
FILE_BOF_BUFFER
|
FILE_BOF_BUFFER
|
||||||
test^M^J
|
test^M^J
|
||||||
source: HTTP
|
source: HTTP
|
||||||
MD5: 9f06243abcb89c70e0c331c61d871fa7
|
MD5: 098f6bcd4621d373cade4e832627b4f6
|
||||||
SHA1: fde773a18bb29f5ed65e6f0a7aa717fd1fa485d4
|
SHA1: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
|
||||||
SHA256: 837ccb607e312b170fac7383d7ccfd61fa5072793f19a25e75fbacb56539b86b
|
SHA256: 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
|
||||||
FILE_NEW
|
FILE_NEW
|
||||||
file #1, 0, 0
|
file #1, 0, 0
|
||||||
FILE_OVER_NEW_CONNECTION
|
FILE_OVER_NEW_CONNECTION
|
||||||
FILE_STATE_REMOVE
|
FILE_STATE_REMOVE
|
||||||
file #1, 7, 0
|
file #1, 5, 0
|
||||||
[orig_h=141.142.228.5, orig_p=57262/tcp, resp_h=54.243.88.146, resp_p=80/tcp]
|
[orig_h=141.142.228.5, orig_p=57262/tcp, resp_h=54.243.88.146, resp_p=80/tcp]
|
||||||
FILE_BOF_BUFFER
|
FILE_BOF_BUFFER
|
||||||
test2^M^J
|
test2^M^J
|
||||||
source: HTTP
|
source: HTTP
|
||||||
MD5: d68af81ef370b3873d50f09140068810
|
MD5: ad0234829205b9033196ba818f7a872b
|
||||||
SHA1: 51a7b6f2d91f6a87822dc04560f2972bc14fc97e
|
SHA1: 109f4b3c50d7b0df729d299bc6f8e9ef9066971f
|
||||||
SHA256: de0edd0ac4a705aff70f34734e90a1d0a1d8b76abe4bb53f3ea934bc105b3b17
|
SHA256: 60303ae22b998861bce3b28f33eec1be758a213c86c93c076dbe9f558c11c752
|
||||||
FILE_NEW
|
FILE_NEW
|
||||||
file #2, 0, 0
|
file #2, 0, 0
|
||||||
FILE_OVER_NEW_CONNECTION
|
FILE_OVER_NEW_CONNECTION
|
||||||
FILE_STATE_REMOVE
|
FILE_STATE_REMOVE
|
||||||
file #2, 7, 0
|
file #2, 5, 0
|
||||||
[orig_h=141.142.228.5, orig_p=57262/tcp, resp_h=54.243.88.146, resp_p=80/tcp]
|
[orig_h=141.142.228.5, orig_p=57262/tcp, resp_h=54.243.88.146, resp_p=80/tcp]
|
||||||
FILE_BOF_BUFFER
|
FILE_BOF_BUFFER
|
||||||
test3^M^J
|
test3^M^J
|
||||||
source: HTTP
|
source: HTTP
|
||||||
MD5: 1a3d75d44753ad246f0bd333cdaf08b0
|
MD5: 8ad8757baa8564dc136c1e07507f4a98
|
||||||
SHA1: 4f98809ab09272dfcc58266e3f23ae2393f70e76
|
SHA1: 3ebfa301dc59196f18593c45e519287a23297589
|
||||||
SHA256: 018c67a2c30ed9977e1dddfe98cac542165dac355cf9764c91a362613e752933
|
SHA256: fd61a03af4f77d870fc21e05e7e80678095c92d808cfb3b5c279ee04c74aca13
|
||||||
FILE_NEW
|
FILE_NEW
|
||||||
file #3, 0, 0
|
file #3, 0, 0
|
||||||
FILE_OVER_NEW_CONNECTION
|
FILE_OVER_NEW_CONNECTION
|
||||||
|
|
|
@ -2,16 +2,16 @@ FILE_NEW
|
||||||
file #0, 0, 0
|
file #0, 0, 0
|
||||||
FILE_OVER_NEW_CONNECTION
|
FILE_OVER_NEW_CONNECTION
|
||||||
FILE_STATE_REMOVE
|
FILE_STATE_REMOVE
|
||||||
file #0, 79, 0
|
file #0, 77, 0
|
||||||
[orig_h=10.10.1.4, orig_p=1470/tcp, resp_h=74.53.140.153, resp_p=25/tcp]
|
[orig_h=10.10.1.4, orig_p=1470/tcp, resp_h=74.53.140.153, resp_p=25/tcp]
|
||||||
FILE_BOF_BUFFER
|
FILE_BOF_BUFFER
|
||||||
Hello^M^J^M^J ^M
|
Hello^M^J^M^J ^M
|
||||||
MIME_TYPE
|
MIME_TYPE
|
||||||
text/plain
|
text/plain
|
||||||
source: SMTP
|
source: SMTP
|
||||||
MD5: 92bca2e6cdcde73647125da7dccbdd07
|
MD5: 58aff3af22807bc5f4b6357c0038256c
|
||||||
SHA1: b7e497be8a9f5e2c4b6980fceb015360f98f4a13
|
SHA1: c39dc8cd0f8d8b1f7fc8b362c41e69fdf20f668a
|
||||||
SHA256: 785a8a044d1454ec88837108f443bbb30cc4f529393ffd57118261036bfe59f5
|
SHA256: 8d057f3af311c20675eea767a9df5fa31ff3597c6d5d50fd0cdc34766c40204d
|
||||||
FILE_NEW
|
FILE_NEW
|
||||||
file #1, 0, 0
|
file #1, 0, 0
|
||||||
FILE_OVER_NEW_CONNECTION
|
FILE_OVER_NEW_CONNECTION
|
||||||
|
|
|
@ -10,4 +10,3 @@ Find the attachment
|
||||||
|
|
||||||
GPS
|
GPS
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,9 +3,9 @@
|
||||||
#empty_field (empty)
|
#empty_field (empty)
|
||||||
#unset_field -
|
#unset_field -
|
||||||
#path ssl
|
#path ssl
|
||||||
#open 2014-04-26-16-44-47
|
#open 2014-08-08-17-13-20
|
||||||
#fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p version cipher curve server_name session_id last_alert established cert_chain_fuids client_cert_chain_fuids subject issuer client_subject client_issuer
|
#fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p version cipher curve server_name resumed last_alert next_protocol established cert_chain_fuids client_cert_chain_fuids subject issuer client_subject client_issuer
|
||||||
#types time string addr port addr port string string string string string string bool vector[string] vector[string] string string string string
|
#types time string addr port addr port string string string string bool string string bool vector[string] vector[string] string string string string
|
||||||
1348168976.508038 CXWv6p3arKYeMETxOg 192.168.57.103 60108 192.168.57.101 2811 TLSv10 TLS_RSA_WITH_AES_256_CBC_SHA - - - - T FBtbj87tgpyeDSj31,F8TfgZ31c1dFu8Kt2k FVNYOh2BeQBb7MpCPe,FwjBou1e5DbpE0eOgk,FbYQmk4x4M4Bx3PZme CN=host/alpha,OU=simpleCA-alpha,OU=GlobusTest,O=Grid CN=Globus Simple CA,OU=simpleCA-alpha,OU=GlobusTest,O=Grid CN=917532944,CN=Jon Siwek,OU=local,OU=simpleCA-alpha,OU=GlobusTest,O=Grid CN=Jon Siwek,OU=local,OU=simpleCA-alpha,OU=GlobusTest,O=Grid
|
1348168976.508038 CXWv6p3arKYeMETxOg 192.168.57.103 60108 192.168.57.101 2811 TLSv10 TLS_RSA_WITH_AES_256_CBC_SHA - - F - - T FBtbj87tgpyeDSj31,F8TfgZ31c1dFu8Kt2k FVNYOh2BeQBb7MpCPe,FwjBou1e5DbpE0eOgk,FbYQmk4x4M4Bx3PZme CN=host/alpha,OU=simpleCA-alpha,OU=GlobusTest,O=Grid CN=Globus Simple CA,OU=simpleCA-alpha,OU=GlobusTest,O=Grid CN=917532944,CN=Jon Siwek,OU=local,OU=simpleCA-alpha,OU=GlobusTest,O=Grid CN=Jon Siwek,OU=local,OU=simpleCA-alpha,OU=GlobusTest,O=Grid
|
||||||
1348168976.551422 CjhGID4nQcgTWjvg4c 192.168.57.103 35391 192.168.57.101 55968 TLSv10 TLS_RSA_WITH_NULL_SHA - - - - T F4SSqN31HDIrrH5Q8h,FJHp5Pf6VLQsRQK3,FHACqa3dX9BXRV2av,FNnDVT1NURRWeoLLN3 FFWYVj4BcvQb35WIaf,Fj16G835fnJgnVlKU6,FGONoc1Nj0Ka5zlxDa CN=932373381,CN=917532944,CN=Jon Siwek,OU=local,OU=simpleCA-alpha,OU=GlobusTest,O=Grid CN=917532944,CN=Jon Siwek,OU=local,OU=simpleCA-alpha,OU=GlobusTest,O=Grid CN=917532944,CN=Jon Siwek,OU=local,OU=simpleCA-alpha,OU=GlobusTest,O=Grid CN=Jon Siwek,OU=local,OU=simpleCA-alpha,OU=GlobusTest,O=Grid
|
1348168976.551422 CjhGID4nQcgTWjvg4c 192.168.57.103 35391 192.168.57.101 55968 TLSv10 TLS_RSA_WITH_NULL_SHA - - F - - T F4SSqN31HDIrrH5Q8h,FJHp5Pf6VLQsRQK3,FHACqa3dX9BXRV2av,FNnDVT1NURRWeoLLN3 FFWYVj4BcvQb35WIaf,Fj16G835fnJgnVlKU6,FGONoc1Nj0Ka5zlxDa CN=932373381,CN=917532944,CN=Jon Siwek,OU=local,OU=simpleCA-alpha,OU=GlobusTest,O=Grid CN=917532944,CN=Jon Siwek,OU=local,OU=simpleCA-alpha,OU=GlobusTest,O=Grid CN=917532944,CN=Jon Siwek,OU=local,OU=simpleCA-alpha,OU=GlobusTest,O=Grid CN=Jon Siwek,OU=local,OU=simpleCA-alpha,OU=GlobusTest,O=Grid
|
||||||
#close 2014-04-26-16-44-47
|
#close 2014-08-08-17-13-20
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
#empty_field (empty)
|
#empty_field (empty)
|
||||||
#unset_field -
|
#unset_field -
|
||||||
#path ssl
|
#path ssl
|
||||||
#open 2014-05-15-17-23-07
|
#open 2014-08-08-17-13-27
|
||||||
#fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p version cipher curve server_name session_id last_alert established cert_chain_fuids client_cert_chain_fuids subject issuer client_subject client_issuer
|
#fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p version cipher curve server_name resumed last_alert next_protocol established cert_chain_fuids client_cert_chain_fuids subject issuer client_subject client_issuer
|
||||||
#types time string addr port addr port string string string string string string bool vector[string] vector[string] string string string string
|
#types time string addr port addr port string string string string bool string string bool vector[string] vector[string] string string string string
|
||||||
1400173552.424910 CXWv6p3arKYeMETxOg 192.168.4.149 54775 192.168.4.149 110 TLSv12 TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 - - - - T FEdAw24VSam39HNlY5 (empty) emailAddress=postmaster@lilawelt.de,CN=chimaera.lilawelt.de,OU=Servers,O=Lilawelt,L=Munich,C=DE emailAddress=postmaster@lilawelt.de,CN=Lilawelt,OU=Lilawelt CA,O=Lilawelt,L=Munich,C=DE - -
|
1400173552.424910 CXWv6p3arKYeMETxOg 192.168.4.149 54775 192.168.4.149 110 TLSv12 TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 - - F - - T FEdAw24VSam39HNlY5 (empty) emailAddress=postmaster@lilawelt.de,CN=chimaera.lilawelt.de,OU=Servers,O=Lilawelt,L=Munich,C=DE emailAddress=postmaster@lilawelt.de,CN=Lilawelt,OU=Lilawelt CA,O=Lilawelt,L=Munich,C=DE - -
|
||||||
#close 2014-05-15-17-23-07
|
#close 2014-08-08-17-13-27
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
#empty_field (empty)
|
#empty_field (empty)
|
||||||
#unset_field -
|
#unset_field -
|
||||||
#path ssl
|
#path ssl
|
||||||
#open 2014-05-15-16-56-36
|
#open 2014-08-08-17-13-38
|
||||||
#fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p version cipher curve server_name session_id last_alert established cert_chain_fuids client_cert_chain_fuids subject issuer client_subject client_issuer
|
#fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p version cipher curve server_name resumed last_alert next_protocol established cert_chain_fuids client_cert_chain_fuids subject issuer client_subject client_issuer
|
||||||
#types time string addr port addr port string string string string string string bool vector[string] vector[string] string string string string
|
#types time string addr port addr port string string string string bool string string bool vector[string] vector[string] string string string string
|
||||||
1400168397.019290 CXWv6p3arKYeMETxOg 192.168.4.149 54170 74.125.142.26 25 TLSv12 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 secp256r1 - - - T FUE0dj3SWjQASC0bk3,FbPkr51wrSMIUT5Hib,FVW1o23Jjs8yenOhzb (empty) CN=mx.google.com,O=Google Inc,L=Mountain View,ST=California,C=US CN=Google Internet Authority G2,O=Google Inc,C=US - -
|
1400168397.019290 CXWv6p3arKYeMETxOg 192.168.4.149 54170 74.125.142.26 25 TLSv12 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 secp256r1 - F - - T FUE0dj3SWjQASC0bk3,FbPkr51wrSMIUT5Hib,FVW1o23Jjs8yenOhzb (empty) CN=mx.google.com,O=Google Inc,L=Mountain View,ST=California,C=US CN=Google Internet Authority G2,O=Google Inc,C=US - -
|
||||||
#close 2014-05-15-16-56-36
|
#close 2014-08-08-17-13-38
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
#empty_field (empty)
|
#empty_field (empty)
|
||||||
#unset_field -
|
#unset_field -
|
||||||
#path ssl
|
#path ssl
|
||||||
#open 2014-04-26-16-45-01
|
#open 2014-08-08-17-13-42
|
||||||
#fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p version cipher curve server_name session_id last_alert established cert_chain_fuids client_cert_chain_fuids subject issuer client_subject client_issuer
|
#fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p version cipher curve server_name resumed last_alert next_protocol established cert_chain_fuids client_cert_chain_fuids subject issuer client_subject client_issuer
|
||||||
#types time string addr port addr port string string string string string string bool vector[string] vector[string] string string string string
|
#types time string addr port addr port string string string string bool string string bool vector[string] vector[string] string string string string
|
||||||
1335538392.319381 CXWv6p3arKYeMETxOg 192.168.1.105 62045 74.125.224.79 443 TLSv10 TLS_ECDHE_RSA_WITH_RC4_128_SHA secp256r1 ssl.gstatic.com - - T F6wfNWn8LR755SYo7,FJl60T1mOolaez9T0h (empty) CN=*.gstatic.com,O=Google Inc,L=Mountain View,ST=California,C=US CN=Google Internet Authority,O=Google Inc,C=US - -
|
1335538392.319381 CXWv6p3arKYeMETxOg 192.168.1.105 62045 74.125.224.79 443 TLSv10 TLS_ECDHE_RSA_WITH_RC4_128_SHA secp256r1 ssl.gstatic.com F - - T F6wfNWn8LR755SYo7,FJl60T1mOolaez9T0h (empty) CN=*.gstatic.com,O=Google Inc,L=Mountain View,ST=California,C=US CN=Google Internet Authority,O=Google Inc,C=US - -
|
||||||
#close 2014-04-26-16-45-01
|
#close 2014-08-08-17-13-42
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
#empty_field (empty)
|
#empty_field (empty)
|
||||||
#unset_field -
|
#unset_field -
|
||||||
#path ssl
|
#path ssl
|
||||||
#open 2014-04-27-00-52-03
|
#open 2014-08-08-17-13-45
|
||||||
#fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p version cipher curve server_name session_id last_alert established cert_chain_fuids client_cert_chain_fuids subject issuer client_subject client_issuer
|
#fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p version cipher curve server_name resumed last_alert next_protocol established cert_chain_fuids client_cert_chain_fuids subject issuer client_subject client_issuer
|
||||||
#types time string addr port addr port string string string string string string bool vector[string] vector[string] string string string string
|
#types time string addr port addr port string string string string bool string string bool vector[string] vector[string] string string string string
|
||||||
1398558136.319509 CXWv6p3arKYeMETxOg 192.168.18.50 62277 162.219.2.166 443 TLSv12 TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA - - - - T F6fLv13PBYz8MNqx68,F8cTDl1penwXxGu4K7 (empty) emailAddress=denicadmmail@arcor.de,CN=www.lilawelt.net,C=US CN=StartCom Class 1 Primary Intermediate Server CA,OU=Secure Digital Certificate Signing,O=StartCom Ltd.,C=IL - -
|
1398558136.319509 CXWv6p3arKYeMETxOg 192.168.18.50 62277 162.219.2.166 443 TLSv12 TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA - - F - - T F6fLv13PBYz8MNqx68,F8cTDl1penwXxGu4K7 (empty) emailAddress=denicadmmail@arcor.de,CN=www.lilawelt.net,C=US CN=StartCom Class 1 Primary Intermediate Server CA,OU=Secure Digital Certificate Signing,O=StartCom Ltd.,C=IL - -
|
||||||
#close 2014-04-27-00-52-03
|
#close 2014-08-08-17-13-45
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue