* PacketScript: packet mangling using the Lua scripting language
@ 2010-09-20 20:04 André Graf
2010-09-20 22:13 ` Pablo Neira Ayuso
0 siblings, 1 reply; 2+ messages in thread
From: André Graf @ 2010-09-20 20:04 UTC (permalink / raw)
To: netfilter-devel
Hello
As a part of my master thesis I developed PacketScript - a Netfilter
extension, which enables to extend Netfilter with Lua scripts. The Lua
scripts are loaded with iptables and provide an easy way to deal with
network packets. Here a short example:
# iptables -A INPUT -p tcp -j LUA --script /path/to/my/script.lua
and the /path/to/my/script.lua can contain a Lua function similar to
the following: (Lua uses -- for comments)
-- called by the Netfilter callback function, gets a 'raw' packet
function process_packet(raw)
-- apply the Ethernet dissector
ethernet = raw:data(packet_ethernet)
-- apply the IP dissector
ip = ethernet:data(packet_ip)
-- dissect IP source address
src = ip:saddr()
if src:get() == "192.168.1.1" then
-- rewrite IP source address
src:set("10.0.0.123")
-- accept packet
return NF_ACCEPT
end
-- drop packet
return NF_DROP
end
PacketScript was not build with a specific network protocol or
protocol layer in mind, so it offers a simple framework to extend it
with other protocols. The current version provides rudimentary support
for Ethernet, IP, ICMP, UDP, TCP, TFTP, and HTTP. For my thesis I also
developed the possibility to access the Linux workqueue interface
using Lua.
At the moment I am cleaning up the code and write the user
documentation. But, before I put too much extra effort into it I would
really like to know your opinion. Thank you!
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: PacketScript: packet mangling using the Lua scripting language
2010-09-20 20:04 PacketScript: packet mangling using the Lua scripting language André Graf
@ 2010-09-20 22:13 ` Pablo Neira Ayuso
0 siblings, 0 replies; 2+ messages in thread
From: Pablo Neira Ayuso @ 2010-09-20 22:13 UTC (permalink / raw)
To: andre; +Cc: netfilter-devel
On 20/09/10 22:04, André Graf wrote:
> Hello
>
> As a part of my master thesis I developed PacketScript - a Netfilter
> extension, which enables to extend Netfilter with Lua scripts. The Lua
> scripts are loaded with iptables and provide an easy way to deal with
> network packets. Here a short example:
>
> # iptables -A INPUT -p tcp -j LUA --script /path/to/my/script.lua
>
> and the /path/to/my/script.lua can contain a Lua function similar to
> the following: (Lua uses -- for comments)
>
> -- called by the Netfilter callback function, gets a 'raw' packet
> function process_packet(raw)
> -- apply the Ethernet dissector
> ethernet = raw:data(packet_ethernet)
>
> -- apply the IP dissector
> ip = ethernet:data(packet_ip)
>
> -- dissect IP source address
> src = ip:saddr()
> if src:get() == "192.168.1.1" then
> -- rewrite IP source address
> src:set("10.0.0.123")
> -- accept packet
> return NF_ACCEPT
> end
> -- drop packet
> return NF_DROP
> end
>
> PacketScript was not build with a specific network protocol or
> protocol layer in mind, so it offers a simple framework to extend it
> with other protocols. The current version provides rudimentary support
> for Ethernet, IP, ICMP, UDP, TCP, TFTP, and HTTP. For my thesis I also
> developed the possibility to access the Linux workqueue interface
> using Lua.
>
> At the moment I am cleaning up the code and write the user
> documentation. But, before I put too much extra effort into it I would
> really like to know your opinion. Thank you!
Interesting approach, I'd like to see how the code looks like to know
what approach you've followed.
BTW, do you have some performance numbers in matching packets with
lua-based script?
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2010-09-20 22:13 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-09-20 20:04 PacketScript: packet mangling using the Lua scripting language André Graf
2010-09-20 22:13 ` Pablo Neira Ayuso
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).