When validating ping echo's, it seems that utilities / libraries often only check the checksum of the packet, and don't actually confirm that the payload sent out matches the payload that was returned. For instance, Wireshark's ICMP parser only checks for bad checksums, and that's all that Ruby's net-ruby checks as well.
I'm debugging a low-level network driver issue, and I need to confirm that the data isn't being mangled when received, so I want to test my driver using a low-level request such as ICMP Echo. However, my existing Ping tools are insufficient, because I fear that while the checksum may match the data contained in the echo response, the data in the echo response doesn't match the data in the echo request. So even though they both have valid checksums (there's no error in the checksum code), there's an error in the data receive portion, such that my driver isn't receiving what the host thinks it's sending out.
How might I check the echo payload to confirm that it's the same as what I sent out? If there's a standalone "paranoid ping" utility that I could use, that's fine too -- I just need to be able to vary the ping lengths and frequencies as I'm only seeing the problem when the network's flooded.
I'd prefer it in the form of a Ruby library / snippet, but any language or standalone app is acceptable, in so long as I can shoehorn it into running on Windows.
Thanks!