Created
April 27, 2014 07:14
-
-
Save cslarsen/11339448 to your computer and use it in GitHub Desktop.
Revisions
-
cslarsen created this gist
Apr 27, 2014 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,30 @@ """Demonstrates how to construct and send raw Ethernet packets on the network. You probably need root privs to be able to bind to the network interface, e.g.: $ sudo python sendeth.py """ from socket import * def sendeth(src, dst, eth_type, payload, interface = "eth0"): """Send raw Ethernet packet on interface.""" assert(len(src) == len(dst) == 6) # 48-bit ethernet addresses assert(len(eth_type) == 2) # 16-bit ethernet type s = socket(AF_PACKET, SOCK_RAW) # From the docs: "For raw packet # sockets the address is a tuple (ifname, proto [,pkttype [,hatype]])" s.bind((interface, 0)) return s.send(src + dst + eth_type + payload) if __name__ == "__main__": print("Sent %d-byte Ethernet packet on eth0" % sendeth("\xFE\xED\xFA\xCE\xBE\xEF", "\xFE\xED\xFA\xCE\xBE\xEF", "\x7A\x05", "hello"))