pylibnet

A python wrapper for the libnet packet injection library
Download

pylibnet Ranking & Summary

Advertisement

  • Rating:
  • License:
  • GPL v3
  • Price:
  • FREE
  • Publisher Name:
  • Nadeem Douba
  • Publisher web site:

pylibnet Tags


pylibnet Description

A python wrapper for the libnet packet injection library pylibnet is a Python module for the libnet packet injection library that was originally developed by David Margrave at the time of libnet 0.9.8a.The project has since been revived and is now under active maintenance by Nadeem Douba. The project now features support for libnet 1.1.x and has all of the packet building functionality that is provided by libnet.Sample scriptBefore we begin you can always see the documentation for this module by using pydoc or help(libnet) within the Python interpretter.The script below shows how easy it is to make an ARP request packet with pylibnet.Code for TCP-SYN request:#!/usr/bin/pythonimport sysimport libnetfrom libnet.constants import * # injection types can be LINK, LINK_ADV, RAW4, RAW4_ADV, RAW6, or RAW6_ADV## LINK* injection types will offer you the added control of injecting the packet into# the desired interface. However, you will have to build the link layer everytime## RAW* injection types do not guarantee the packet will exit the desired interface.# Instead, the kernel will route your packet accordingly. The link layer is automatically# built.l = libnet.context( RAW4, # The injection type 'eth0' # Device name )# We just need to get our destination IP since the RAW4 context and autobuild/build functions # will take care of the restdst_ip = l.name2addr4( 'www.google.com', # Let's get the network byte ordered representation of this IP RESOLVE )# Build the packet from the highest layer and work your way to the lowest# i.e tcp->ipv4->ethernet. Order matters!# Here we're going to start with the TCP header. Notice how we no longer # have to fill in all the other fields if we don't want to. They will be# filled in automagically!tcp_tag = l.build_tcp( dp=80, # destination port control=TH_SYN, # control flags ) print 'TCP header:'print l.getpacket(tcp_tag) # What does this header look like?# Now onto the IPv4 headeripv4_tag = l.autobuild_ipv4( len=IPV4_H + TCP_H, # IPV4 packet length prot=IPPROTO_TCP, # Protocol type dst=dst_ip )print ' IPV4 header:'print l.getpacket(ipv4_tag)# Now let's write the packet and check for an error# tcp syn google.coml.write()# Let's look at our statsprint ' Packet stats:'print l.stats()And you should hopefully get this output:TCP header:{'th_urp': 0, 'th_x2': 0, 'th_ece': 0, 'th_win': 56904, 'th_off': 5, 'th_syn': 1, 'th_cwr': 0, 'th_flags': 0, 'th_rst': 0, 'th_seq': 2078520984, 'th_dport': 80, 'th_fin': 0, 'th_sum': 0, 'th_sport': 25497, 'th_ack': 0, 'th_push': 0}IPV4 header:{'ip_sum': 0, 'ip_v': 4, 'ip_dst': 'iy-in-f99.google.com', 'ip_off': 0, 'ip_p': 6, 'ip_ttl': 64, 'ip_id': 1, 'ip_tos': 0, 'ip_len': 40, 'ip_src': 'u15367794.onlinehome-server.com', 'ip_hl': 5}Packet stats:{'bytes_written': 40, 'packets_sent': 1, 'packet_errors': 0} Requirements: · Python


pylibnet Related Software