Aren't there already tools for doing this -- libnet / libdnet that both have py wrappers?
On Thu, 20 Jul 2006, [EMAIL PROTECTED] 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 "[EMAIL PROTECTED]" : : -- [EMAIL PROTECTED] _______________________________________________ freebsd-net@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "[EMAIL PROTECTED]"