- Add a static entry to the ARP table for x.x.x.x -> Printer MAC
Address, where x.x.x.x is the new IP address they want to set the
printer to and the Printer MAC address is the MAC address of the
printer.
- Send an ICMP ping to the printer.
- Remove the ARP entry
Yes, they set the IP address of the printer by pinging it. I'll
wait here for a bit while you cry.
Sounds ready-made for DOS attacks...
I'm going to guess that fiddling with the local ARP table is
probably not such a swell idea and that I'd be better off hand
rolling my own raw ICMP ping packet at the ethernet level to get
the job done. I think it would have to be at the ethernet level as
I need to specify the IP address and destination MAC address
myself. I know I will have to have a SUID root helper tool to do this.
Assuming that is the case, I was wondering if someone could point
me to some sample code illustrating how to build a raw ethernet
packet. I've looked in the Unix Programming Book, but it only
covers raw IPv4/6 packets, not raw ethernet packets. Most of the
sample code I've found on the net is for Linux which appears to use
different AF_ and protocol constants than BSD.
If you really want ICMP 'Echo' packets, check the source for
'ping' (or, just use 'ping' in a shell script :-}). It's on the
darwin site (<http://developer.apple.com/darwin>).
Why do you want to use "raw ethernet" if you want to send ICMP packets?
Justin
--
Justin C. Walker, Curmudgeon at Large
Institute for the Absorption of Federal Funds
-----------
My wife 'n kids 'n dogs are gone,
I can't get Jesus on the phone,
But Ol' Milwaukee's Best is my best friend.
-----------