Packet Construction and Protocol Testing...
Andrew R. Reiter
arr at watson.org
Thu Jul 20 14:48:18 UTC 2006
Aren't there already tools for doing this -- libnet / libdnet that both
have py wrappers?
On Thu, 20 Jul 2006, gnn at 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 at freebsd.org mailing list
:http://lists.freebsd.org/mailman/listinfo/freebsd-net
:To unsubscribe, send any mail to "freebsd-net-unsubscribe at freebsd.org"
:
:
--
arr at watson.org
More information about the freebsd-net
mailing list