Packet Construction and Protocol Testing...



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@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscribe@xxxxxxxxxxx"



Relevant Pages

  • Re: [Q] TRacking down asserts by NdisTest
    ... decipher NDISTest protocol header. ... the assert was triggered at ... MiniportTransferData to get the rest of the packet. ...
    (microsoft.public.development.device.drivers)
  • Re: [Q] TRacking down asserts by NdisTest
    ... decipher NDISTest protocol header. ... the assert was triggered at ... MiniportTransferData to get the rest of the packet. ...
    (microsoft.public.win32.programmer.kernel)
  • Re: Event ID 5504 - Windows 2003 DNS
    ... Use a packet sniffer to see what is in these rejected packets. ... I have seen a case where a machine was sending a query for localhost to DNS ...
    (microsoft.public.windows.server.dns)
  • Re: [Q] TRacking down asserts by NdisTest
    ... the assert was triggered at ndistest!lNdtReceivePacketCommon+0x133. ... Does Ndistest handle receive lookahead indications where the lookahead buffer size may be smaller than the totla packet size? ... > Does ndistest.sys save anything meaningful in a register before it triggers ...
    (microsoft.public.development.device.drivers)
  • Re: [Q] TRacking down asserts by NdisTest
    ... the assert was triggered at ndistest!lNdtReceivePacketCommon+0x133. ... Does Ndistest handle receive lookahead indications where the lookahead buffer size may be smaller than the totla packet size? ... > Does ndistest.sys save anything meaningful in a register before it triggers ...
    (microsoft.public.win32.programmer.kernel)