def __init__(self, iface=None, parent=None): super(QDialog, self).__init__(parent) self.setupUi(self) self.hooked = False #-- Network info self.interface = iface self.ip = QtNetwork.QNetworkInterface.interfaceFromName( self.interface).addressEntries()[0].ip().toString( ) #A way like another to get local IP #-- Nfqueue stuff self.ip = self.ip self.qmi = None self.qmo = None self.rulei = "" self.ruleo = "" #-- Stack stuff self.ethp = EthernetProtocol(self.interface) self.ipp = IPProtocol() self.ethp.register_layer(self.ipp) arpp = ARPProtocol(self.interface) self.ethp.register_layer(arpp) self.tcpp = TCPProtoModified(self) self.ipp.register_layer(self.tcpp) self.ethp.start_listening(doreactor=False) self.session = None self.app = None #-- Signal slot stuff self.connect(self.listenbutton, SIGNAL("clicked()"), self.listenbutton_clicked) self.connect(self.inputbutton, SIGNAL("clicked()"), self.inputbutton_clicked) self.connect(self, SIGNAL("mitm_received"), self.update_textreceived) self.connect(self, SIGNAL("mitm_sent"), self.update_textsent) self.connect(self, SIGNAL("kernel_sent"), self.update_textsent) self.connect(self, SIGNAL("kernel_received"), self.update_textreceived) self.connect(self, SIGNAL("gratuitous_received"), self.update_textreceived)
Simple exemple that show how to create a stack by hand. ''' class Scream(Layer): def packet_received(self, packet): print("Scream: " + packet.payload.name) interface = "eth0" #Layer 2 eth = EthernetProtocol(interface) #Layer 3 ip = IPProtocol() eth.register_layer(ip) #Enregistre aussi eth comme defaut pour ip arp = ARPProtocol(interface) eth.register_layer(arp) #Layer 4 tcp = TCPProtocol() ip.register_layer(tcp) #Layer 5 tcpsession = TCPSession(interface) tcp.register_layer(tcpsession) #Layer 6 #Nothing for now