What is the advantage?<br>Besides the fact of course that you can add your own script execution, in other words<br>what is it that a Lua script gives you that you can not use a rule language  for?<br>is Lua pattern matching, better and faster than PCRE? - how much time/coding would it be needed, if so?<br>
<br><br><br><br><div class="gmail_quote">On Wed, Sep 5, 2012 at 5:50 PM, Victor Julien <span dir="ltr"><<a href="mailto:victor@inliniac.net" target="_blank">victor@inliniac.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
So Will started bugging me (again) on doing scripting from Suricata and<br>
I gave in. Just committed extremely immature, incomplete, experimental<br>
luajit scripting support.<br>
<br>
What it does is that it adds a new keyword, "luajit". There is one<br>
argument, a script name. That script is then loaded from your rules<br>
directory and ran against a packet. No flow, http or any of that right<br>
now, just packets.<br>
<br>
Example rule:<br>
alert tcp any any -> any any (msg:"LUAJIT test"; luajit:test.lua; sid:1;)<br>
<br>
This loads the script from /etc/suricata/rules/test.lua<br>
<br>
The script has a "match" function that will return either 1 or 0. 1 for<br>
match, 0 for no match.<br>
<br>
Example script:<br>
<br>
-- match string HTTP in packet payload<br>
function match(args)<br>
    for k,v in pairs(args) do<br>
       if tostring(k) == "payload" then<br>
            a = tostring(v)<br>
            if #a > 0 then<br>
                if a:find("HTTP") then<br>
                    return 1<br>
                end<br>
            end<br>
        end<br>
    end<br>
<br>
    return 0<br>
end<br>
<br>
return 0<br>
-- eof<br>
<br>
The fun thing is that it works, but the best joke is that on my box this<br>
simple script makes no performance impact at all.<br>
<br>
Currently only "payload" and "packet" keys are available. More will<br>
follow, or not. This is research stuff, and if we run into some major<br>
obstacle we'll remove it or change it completely. Until then, let me<br>
know how you feel about it :)<br>
<br>
Oh yeah, to enable add "--with-<br>
libluajit-includes=/usr/include/luajit-2.0/<br>
--with-libluajit-libraries=/usr/lib/x86_64-linux-gnu/" to your configure<br>
line. Adapt for your distro.<br>
<br>
Happy scripting!<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
---------------------------------------------<br>
Victor Julien<br>
<a href="http://www.inliniac.net/" target="_blank">http://www.inliniac.net/</a><br>
PGP: <a href="http://www.inliniac.net/victorjulien.asc" target="_blank">http://www.inliniac.net/victorjulien.asc</a><br>
---------------------------------------------<br>
<br>
_______________________________________________<br>
Oisf-devel mailing list<br>
<a href="mailto:Oisf-devel@openinfosecfoundation.org">Oisf-devel@openinfosecfoundation.org</a><br>
<a href="https://lists.openinfosecfoundation.org/mailman/listinfo/oisf-devel" target="_blank">https://lists.openinfosecfoundation.org/mailman/listinfo/oisf-devel</a><br>
</font></span></blockquote></div><br><br clear="all"><br>-- <br><div>Regards,</div>
<div>Peter Manev</div><br>