Windows dynamic libraries, calling conventions, and transmute
Making our own ping: Part 2
So, how does
ping.exeactually send a ping? It seems unrealistic that
ping.exeitself implements all the protocols involved in sending a ping. So it must be calling some sort of...
FFI-safe types in Rust, newtypes and MaybeUninit
Making our own ping: Part 3
It's time to make
sup, our own take on
ping, use the Win32 APIs to send an ICMP echo. Earlier we discovered that Windows's
IcmpSendEcho2Ex. But for our purposes, the...
Designing and implementing a safer API on top of LoadLibrary
Making our own ping: Part 4
It's refactor time!
Our complete program is now about a hundred lines, counting blank lines (see the end of part 3 for a complete listing).
While this is pretty good for a...
A simple ping library, parsing strings into IPv4 address
Making our own ping: Part 5
We've just spent a lot of time abstracting over LoadLibrary, but we still have all the gory details of the Win32 ICMP API straight in our main.rs file! That won't do.
Binding C APIs with variable-length structs and UTF-16
Making our own ping: Part 8
Okay, I lied.
I'm deciding - right this instant - that using wmic is cheating too. Oh, it was fair game when we were learning about Windows, but we're past that now.
Crafting ARP packets to find a remote host's MAC address
Making our own ping: Part 13
Alright. ALRIGHT. I know, we're all excited, but let's think about what we're doing again.
So we've managed to look at real network traffic and parse it completely. We've also...