Date: Thu, 20 Jul 2006 10:48:14 -0400 (EDT) From: "Andrew R. Reiter" <arr@watson.org> To: gnn@freebsd.org Cc: freebsd-net@freebsd.org Subject: Re: Packet Construction and Protocol Testing... Message-ID: <20060720104748.R94787@fledge.watson.org> In-Reply-To: <m2bqrkr5a5.wl%gnn@neville-neil.com> References: <m2bqrkr5a5.wl%gnn@neville-neil.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Aren't there already tools for doing this -- libnet / libdnet that both have py wrappers? On Thu, 20 Jul 2006, gnn@freebsd.org wrote: :Hi, : :Sorry for the length of this email but I figured I'd get this out :early in case there was anyone else who wanted to play with this. : :I have now gotten out version 0.1 of the Packet Construction Set. :This is a set of Python libraries which make writing protocol testing :software much easier. Of course, you have to know Python, but many :people do, and I favor it strongly over other scripting choices. The :Summer of Code student I'm working with has also been using this :library, with favorable results. : :The Source Forge page is here: : :http://sourceforge.net/projects/pcs : :and the shar files submitted to get the ports created are now on: : :http://www.freebsd.org/~gnn/pcs.port.shar :http://www.freebsd.org/~gnn/py-pypcap.shar : :The point of all this is to be able to write better protocol level :tests for our network stack. Examples are in the scripts/ and tests/ :directories of the package but a quick snippet may give a good idea of :what I'm getting at: : : def test_icmpv4_ping(self): : ip = ipv4() : ip.version = 4 : ip.hlen = 5 : ip.tos = 0 : ip.length = 84 : ip.id = 1 : ip.flags = 0 : ip.offset = 0 : ip.ttl = 33 : ip.protocol = IPPROTO_ICMP : ip.src = 2130706433 : ip.dst = 2130706433 : : icmp = icmpv4() : icmp.type = 8 : icmp.code = 0 : icmp.cksum = 0 : : echo = icmpv4echo() : echo.id = 32767 : echo.seq = 1 : : lo = localhost() : lo.type = 2 : packet = Chain([lo, ip, icmp, echo]) : : input = PcapConnector("lo0") : input.setfilter("icmp") : : output = PcapConnector("lo0") : assert (ip != None) : : out = output.write(packet.bytes, 88) : assert (out == 88) : :This code sends a quick and dirty, ICMPv4 ping packet on localhost. :The point of all this is to be able to specify packets easly (see :pcs/packets/xxx.py) and then to treat the packet as an object. : :I intend to write up a paper on this stuff as well. There is :currently a simple manual (PDF and LaTeX) in the package. : :Later, :George : :_______________________________________________ :freebsd-net@freebsd.org mailing list :http://lists.freebsd.org/mailman/listinfo/freebsd-net :To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org" : : -- arr@watson.org
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060720104748.R94787>