コード例 #1
0
    def run(self):
        @self.__app.route("/WAN", methods=['GET'])
        def enviawan():
            return self.get_status()

        self.__t_lan = Thread(target=self.run_Lan, name='LAN_Thread')
        self.__t_lan.start()

        self.__packet_sniffer_wan = PacketSniffer('Test271a-WAN',
                                                  self.__queue_wan, self,
                                                  self.__config,
                                                  self.__wan_device_tr1)
        self.__packet_sniffer_wan.start()

        self.__packet_sniffer_lan = PacketSniffer('Test271a-LAN',
                                                  self.__queue_lan, self,
                                                  self.__config,
                                                  self.__lan_device)
        test_lan = self.__packet_sniffer_lan.start()

        self.set_flags()
        logging.info(self.__test_desc)
        t_test = 0
        sent_reconfigure = False
        time_over = False
        #time.sleep(11111)
        finish_wan = True
        cache_wan = []
        self.__config_setup1_1.set_pd_prefixlen(
            self.__config.get('t2.7.1a', 'pd_prefixlen'))
        while not self.__queue_wan.full():
            while self.__queue_wan.empty():
                if t_test < 60:
                    time.sleep(1)
                    t_test = t_test + 1
                else:
                    time_over = True
            pkt = self.__queue_wan.get()
            cache_wan.append(pkt)
            wrpcap("WAN-2.7.6.cap", cache_wan)
            if not self.__config_setup1_1.get_setup1_1_OK():
                logging.info('WAN: Setup 1.1 em execução')
                self.set_status('WAN: Setup 1.1 em execução')
                if not self.__config_setup1_1.get_disapproved():
                    self.__config_setup1_1.run_setup1_1(pkt)
                else:
                    logging.info(
                        'Reprovado Teste 2.7.1.a - Falha em completar o Common Setup 1.1 da RFC'
                    )
                    self.__packet_sniffer_wan.stop()
                    return False

            else:
                if not finish_wan:
                    self.__packet_sniffer_wan.stop()
                    finish_wan = True

        self.__packet_sniffer_wan.stop()
        return False
コード例 #2
0
ファイル: test161.py プロジェクト: ronyjah/tcc_ronaldo
    def run(self):
        @self.__app.route("/LAN",methods=['GET'])
        def envia_lan():

            return self.get_status_lan()

        @self.__app.route("/WAN",methods=['GET'])
        def enviawan():

            return self.get_status()

        self.__packet_sniffer_wan = PacketSniffer('test161',self.__queue,self,self.__config,self.__config.get('wan','device_wan_tr1'))
        t_test1 = 0
        t_test2 = 0

        cache_wan = []

        self.__packet_sniffer_wan.start()

        logging.info(self.__test_desc)

        logging.info(self.__queue.qsize())

        while self.__taskDone == False:

            pkt = self.__queue.get()
            cache_wan.append(pkt)
            wrpcap("wan-1.6.1.cap",cache_wan)
            

            if pkt.haslayer(ICMPv6ND_NS):
                if self.get_result() != False:
                    self.__valid = True
            elif pkt.haslayer(ICMPv6ND_RS) and self.__valid == False:
                self.set_result(False)
                self.set_task_done()
            if pkt.haslayer(ICMPv6ND_RS) and self.__valid == True:
                self.set_result(True)
                self.set_task_done()

 


        if self.get_result()== False:

            self.__packet_sniffer_wan.stop() 
            logging.info('Reprovado: Teste 1.6.1- ROTEADOR ENVIOU ICMP RS ANTES DO ENVIAR NS de seu endereço local')
            self.set_status('Reprovado: Teste 1.6.1- ROTEADOR ENVIOU ICMP RS ANTES DO ENVIAR NS de seu endereço local')
            time.sleep(2)
            self.set_status('REPROVADO') # Mensagem padrão para o frontEnd atualizar Status
            return False
        else:
            self.__packet_sniffer_wan.stop() 
            logging.info('APROVADO: Teste 1.6.1- ROTEADOR ENVIOU ICMP RS APOS TER ENVIADO NS de seu endereço local')
            self.set_status('APROVADO: Teste 1.6.1- ROTEADOR ENVIOU ICMP RS APOS TER ENVIADO NS de seu endereço local')
            time.sleep(2)
            self.set_status('APROVADO') # Mensagem padrão para o frontEnd atualizar Status
            return True
コード例 #3
0
    def run(self):
        self.__packet_sniffer_wan = PacketSniffer('test162c', self.__queue_wan,
                                                  self, self.__config,
                                                  self.__wan_device_tr1)
        self.__config_setup1_1.flags_partB()
        self.__packet_sniffer_wan.start()
        logging.info(self.__test_desc)
        t_test = 0
        time_over = False

        while not self.__queue_wan.full():
            while self.__queue_wan.empty():
                if t_test < 60:
                    time.sleep(1)
                    t_test = t_test + 1
                else:
                    time_over = True
            pkt = self.__queue_wan.get()

            if not self.__config_setup1_1.get_setup1_1_OK():

                if not self.__config_setup1_1.get_disapproved():
                    self.__config_setup1_1.run_setup1_1(pkt)
                else:
                    self.__packet_sniffer_wan.stop()
                    logging.info(
                        'Reprovado Teste 1.6.2.c - Falha em completar o Common Setup 1.1 da RFC'
                    )
                    return False

            else:
                self.send_echo_request_global()
                if pkt.haslayer(ICMPv6EchoReply):
                    mac_dst = pkt[Ether].dst
                    if mac_dst == self.__config.get('wan', 'ra_mac'):
                        self.__packet_sniffer_wan.stop()
                        logging.info(
                            'Aprovado Teste 1.6.2.c: Recebido Mensagem Echo Reply com endereço Global'
                        )
                        return True
                    else:
                        self.__packet_sniffer_wan.stop()
                        logging.info(
                            'Reprovado Teste 1.6.2.c: Recebido Mensagem Echo Reply Sem endereço Global'
                        )
                        return False
        while not self.__queue_wan.empty():
            pkt = self.__queue_wan.get()
        self.__packet_sniffer_wan.stop()
        return True
コード例 #4
0
ファイル: test162.py プロジェクト: ronyjah/tcc_ronaldo
    def run(self):
        self.__packet_sniffer_wan = PacketSniffer('test162',self.__queue_wan,self,self.__config,self.__wan_device_tr1)
        self.flags_partA()
        self.__CommonSetup1_1.set_flags_common_setup(self)


        self.__packet_sniffer_wan.start()
        logging.info('Task Desc')
        logging.info(self.__test_desc)
        logging.info('Qsize')
        logging.info(self.__queue_wan.qsize())
        while not self.__queue_wan.full():

            pkt = self.__queue_wan.get()
            if not self.__setup1_1_OK:
                logging.info('self.__queue_size')
                logging.info(self.__queue_wan.qsize())
                self.setup1_1(pkt)

            elif not self.__approved:
                self.set_ipv6_src(self.__config.get('wan','global_wan_addr'))
                self.set_ipv6_dst(self.__config.get('setup1-1_advertise','ia_na_address'))
                self.set_ether_src(self.__config.get('wan','link_local_mac'))
                self.set_ether_dst(self.get_ether_dst())
                self.__CommonSetup1_1.send_echo_request(self)
                if pkt.haslayer(ICMPv6EchoReply):
                    mac_dst = pkt[Ether].dst
                    if mac_dst == self.__config.get('wan','link_local_mac'):
                        return True
                    else:
                        return False

        while not self.__queue_wan.empty():
            print('RS1')
            pkt = self.__queue_wan.get()       
        logging.info('Passo4-t162run_sttop-theard success')
        logging.info('self.__queue_size_fim')
        logging.info(self.__queue_wan.qsize())  
        self.__packet_sniffer_wan.stop()
        return True
     
        
コード例 #5
0
    def run(self):
        @self.__app.route("/WAN",methods=['GET'])
        def enviawan():
            return self.get_status()
        self.__t_lan =  Thread(target=self.run_Lan,name='LAN_Thread')
        self.__t_lan.start()
        
        self.__packet_sniffer_wan = PacketSniffer('Test321a-WAN',self.__queue_wan,self,self.__config,self.__wan_device_tr1)
        self.__packet_sniffer_wan.start()
        
        self.__packet_sniffer_lan = PacketSniffer('Test321a-LAN',self.__queue_lan,self,self.__config,self.__lan_device)
        test_lan = self.__packet_sniffer_lan.start()
        self.__config_setup1_1.set_ra2()
        self.set_flags()
        logging.info(self.__test_desc)
        t_test = 0
        sent_reconfigure = False
        time_over = False
        cache_wan = []

        finish_wan = False
        self.__config_setup1_1.set_pd_prefixlen(self.__config.get('t3.2.1a','pd_prefixlen')) 
        self.__config_setup1_1.set_routerlifetime(self.__config.get('t3.2.1a','routerlifetime')) 
        while not self.__queue_wan.full():
            if self.__queue_wan.empty():
                if t_test <= 30:

                    time.sleep(1)
                    t_test = t_test + 1

                    if t_test % 15 ==0:
                        self.set_status('WAN: Enviando ICMP RA periódico')
                        logging.info('WAN: Enviando ICMP RA periódico')
                        self.__config_setup1_1.set_ether_src(self.__config.get('wan','ra_mac'))
                        self.__config_setup1_1.set_ether_dst(self.__config.get('multicast','all_mac_nodes'))
                        self.__config_setup1_1.set_ipv6_src(self.__config.get('wan','ra_address'))
                        self.__config_setup1_1.set_ipv6_dst(self.__config.get('multicast','all_nodes_addr'))
                        self.__sendmsgs.send_tr1_RA(self.__config_setup1_1)

                else:
                    #logging.info(' 2 Time Over')
                    time_over = True      
            else:
                pkt = self.__queue_wan.get()
                cache_wan.append(pkt)
                wrpcap("WAN-3.2.1a.cap",cache_wan)

                if pkt.haslayer(ICMPv6ND_RS):
                    if pkt[Ether].src == self.__config.get('wan','link_local_mac'):
                        #logging.info(' TEM PACOTE continue 1')
                        continue
                                    
                    if pkt[Ether].src == self.__config.get('wan','ra_mac'):
                        l#ogging.info(' TEM PACOTE continue ')
                        continue
                    #logging.info('MAC E ADDR COLETADO')   
                    #print(pkt[IPv6].src)
                    #print(pkt[Ether].src)
                    self.__config_setup1_1.set_local_addr_ceRouter(pkt[IPv6].src)
                    self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)    
                    self.__config_setup1_1.set_ND_local_OK()
                if not time_over :
                    if pkt.haslayer(ICMPv6EchoRequest):
                        self.__packet_sniffer_wan.stop()
                        self.__finish_wan = True 
                        self.__fail_test = True
                        return False
                if pkt.haslayer(DHCP6_Solicit):
                    #print(pkt[IPv6].src)
                    #print(pkt[Ether].src)
                    self.__config_setup1_1.set_local_addr_ceRouter(pkt[IPv6].src)
                    self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)
                    self.__config_setup1_1.set_ND_local_OK()   
                if time_over:
                    #logging.info('FIM DA ESPERA')
                    #time_over = True
                    pkt = self.__queue_wan.get()
                    #logging.info('FIM DA ESPERA')
                    if not self.__config_setup1_1.get_setup1_1_OK():
                        self.set_status('WAN: Setup 1.1 em execução')
                        logging.info('WAN: Setup 1.1 em execução')
                        if not self.__config_setup1_1.get_disapproved():
                            self.__config_setup1_1.run_setup1_1(pkt)
                            if pkt.haslayer(ICMPv6ND_RS):


                                if pkt[Ether].src == self.__config.get('wan','link_local_mac'):
                                    continue
                                if pkt[Ether].src == self.__config.get('wan','ra_mac'):
                                    continue
                                self.__config_setup1_1.set_ND_local_OK()
                                #if self.__local_ping_OK:
                                #print(pkt[IPv6].src)
                                self.__config_setup1_1.set_local_addr_ceRouter(pkt[IPv6].src)
                                #print(pkt[Ether].src)
                                self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src) 
                                
                                self.__config_setup1_1.set_ether_src(self.__config.get('wan','ra_mac'))
                                self.__config_setup1_1.set_ether_dst(self.__config.get('multicast','all_mac_nodes'))
                                self.__config_setup1_1.set_ipv6_src(self.__config.get('wan','ra_address'))
                                self.__config_setup1_1.set_ipv6_dst(self.__config.get('multicast','all_nodes_addr'))
                #               if not self.__active_RA_no_IA_PD:
                                #self.set_lla(self.__config.get('wan','ra_mac'))
                                #logging.info('SEND TR1 NA MAIN')
                                self.__sendmsgs.send_tr1_RA(self.__config_setup1_1)


                        else:
                            logging.info('Reprovado Teste 3.2.1a - Falha em completar o Common Setup 1.1 da RFC')
                            self.__packet_sniffer_wan.stop() 
                            return False

                    else:
                        if not self.__finish_wan:

                            if pkt.haslayer(ICMPv6EchoRequest):

                                self.__packet_sniffer_wan.stop()
                                self.__packet_sniffer_lan.stop()


                                self.set_status('Teste 3.2.1a - Recebido ICMP Request somente após IA_PD')
                                time.sleep(2)
                                self.set_status('APROVADO') # Mensagem padrão para o frontEnd atualizar Status
                                logging.info('Teste 3.2.1a - Recebido ICMP Request somente após IA_PD')

                                self.__finish_wan = True 
                                self.__fail_test = False
                                return True
                        
                            if pkt.haslayer(ICMPv6ND_NS):
                                if pkt[ICMPv6ND_NS].tgt == self.__config.get('wan','global_wan_addr'):
                                    ##print('LOOP NS')
                                    ##print(pkt[ICMPv6ND_NS].tgt)
                                    #if not send_na_lan:
                                    self.set_status('WAN: Enviando resposta ao NS com ICMP NA global')
                                    logging.info('WAN: Enviando resposta ao NS com ICMP NA global')

                                    self.__config_setup1_1.set_ipv6_src(self.__config.get('wan','global_wan_addr'))
                                    self.__config_setup1_1.set_ether_src(self.__config.get('wan','wan_mac_tr1'))
                                    self.__config_setup1_1.set_ether_dst(pkt[Ether].src)
                                    self.__config_setup1_1.set_ipv6_dst(pkt[IPv6].src)
                                    self.__config_setup1_1.set_tgt(self.__config.get('wan','global_wan_addr'))
                                    self.__config_setup1_1.set_lla(self.__config.get('wan','wan_mac_tr1'))
                                    #send_na_lan = True
                                    self.__sendmsgs.send_icmp_na(self.__config_setup1_1)




                        else:
                            self.__packet_sniffer_wan.stop()
                            if self.__fail_test:
                                return False
                            else:
                                return True
        self.__packet_sniffer_wan.stop()
        return False
     
        
コード例 #6
0
ファイル: test371a.py プロジェクト: ronyjah/rfc
    def run(self):
        self.__t_lan =  Thread(target=self.run_Lan,name='LAN_Thread')
        self.__t_lan.start()
        
        self.__packet_sniffer_wan = PacketSniffer('Test273b-WAN',self.__queue_wan,self,self.__config,self.__wan_device_tr1)
        self.__packet_sniffer_wan.start()
        
        self.__packet_sniffer_lan = PacketSniffer('Test273b-LAN',self.__queue_lan,self,self.__config,self.__lan_device)
        test_lan = self.__packet_sniffer_lan.start()
        
        self.set_flags()
        logging.info(self.__test_desc)
        t_test = 0
        sent_reconfigure = False
        time_over = False
        #time.sleep(11111)
        finish_wan = True
        self.__config_setup1_1.set_pd_prefixlen(self.__config.get('t2.7.6','pd_prefixlen')) 
        self.__config_setup1_1.set_routerlifetime(self.__config.get('t2.7.6','routerlifetime')) 
        #self.__config_setup1_1.active_DHCP_no_IA_PD()
        while not self.__queue_wan.full():
            while self.__queue_wan.empty():
                if t_test < 60:
                    time.sleep(1)
                    if t_test % 15 ==0:
                        
                        self.__config_setup1_1.set_ether_src(self.__config.get('wan','ra_mac'))
                        self.__config_setup1_1.set_ether_dst(self.__config.get('multicast','all_mac_nodes'))
                        self.__config_setup1_1.set_ipv6_src(self.__config.get('wan','ra_address'))
                        self.__config_setup1_1.set_ipv6_dst(self.__config.get('multicast','all_nodes_addr'))
                        self.__sendmsgs.send_tr1_RA(self.__config_setup1_1)
                    t_test = t_test + 1
                else:
                    time_over = True
            pkt = self.__queue_wan.get()

            if not self.__config_setup1_1.get_setup1_1_OK():

                if not self.__config_setup1_1.get_disapproved():
                    self.__config_setup1_1.run_setup1_1(pkt)
                else:
                    logging.info('Reprovado Teste 2.7.3a - Falha em completar o Common Setup 1.1 da RFC')
                    self.__packet_sniffer_wan.stop() 
                    return False

            else:
                if not self.__finish_wan: 
                    print('WAN - Concluido')
                    print('LAN RESULT')
    #                 if not sent_reconfigure:
    #                     time.sleep(25)
    #                     print('aqui7')
    #                     self.__config_setup1_1.set_ipv6_src(self.__config.get('wan','link_local_addr'))
    #                     print('aqui8')
    #                     self.__config_setup1_1.set_ipv6_dst(self.__config_setup1_1.get_local_addr_ceRouter())
    #                     print('aqui10')
    #                     self.__config_setup1_1.set_ether_src(self.__config.get('wan','link_local_mac'))
    #                     print('aqui11')
    #                     self.__config_setup1_1.set_ether_dst(self.__config_setup1_1.get_mac_ceRouter())
    #                     print('aqui12')
    #                     self.__config_setup1_1.set_dhcp_reconf_type(self.__config.get('t1.6.3','msg_type'))
    #                     print('aqui13')
    #                     self.__config_setup1_1.set_udp_sport('547')
    #                     self.__config_setup1_1.set_udp_dport('546')
    #                     self.__sendmsgs.send_dhcp_reconfigure(self.__config_setup1_1)
    #                     print('aqui14')
    #                     sent_reconfigure = True 
                        

    #                 if pkt.haslayer(DHCP6_Renew):
    #                     if not self.__dhcp_renew_done:
    # #                        if self.__active_renew_dhcp:
    #                         self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)
    #                         self.__config_setup1_1.set_local_addr_ceRouter(pkt[IPv6].src)
    #                         self.__config_setup1_1.set_xid(pkt[DHCP6_Renew].trid)
    #                         self.__config_setup1_1.set_ipv6_src(self.__config.get('wan','link_local_addr'))
    #                         self.__config_setup1_1.set_ipv6_dst(pkt[IPv6].src)
    #                         self.__config_setup1_1.set_ether_src(self.__config.get('wan','link_local_mac'))
    #                         self.__config_setup1_1.set_ether_dst(pkt[Ether].src)
    #                         self.__config_setup1_1.set_dhcp_preflft('100')
    #                         self.__config_setup1_1.set_dhcp_validlft('200')
    #                         self.__config_setup1_1.set_dhcp_plen('60')
    #                         self.__config_setup1_1.set_prefix_addr(self.__config.get('setup1-1_advertise','ia_pd_address'))
    #                         self.__sendmsgs.send_dhcp_reply_v3(self.__config_setup1_1)
    #                         #self.__dhcp_ok = True
    #                         self.__dhcp_renew_done = True
                else:
                    self.__packet_sniffer_wan.stop()
                    if self.__fail_test:
                        return False
                    else:
                        return True
        self.__packet_sniffer_wan.stop()
        return False
     
        
コード例 #7
0
    def run(self):
        self.__packet_sniffer_wan = PacketSniffer('test162a', self.__queue_wan,
                                                  self, self.__config,
                                                  self.__wan_device_tr1)
        self.__config_setup1_1.flags_partA()
        self.__packet_sniffer_wan.start()
        # logging.info('Task Desc')
        logging.info(self.__test_desc)
        t_test = 0
        time_over = False

        while not self.__queue_wan.full():
            while self.__queue_wan.empty():
                if t_test < 60:
                    time.sleep(1)
                    t_test = t_test + 1
                else:
                    time_over = True
            pkt = self.__queue_wan.get()

            if not self.__config_setup1_1.get_setup1_1_OK():

                if not self.__config_setup1_1.get_disapproved():
                    self.__config_setup1_1.run_setup1_1(pkt)
                else:
                    self.__packet_sniffer_wan.stop()
                    logging.info(
                        'Reprovado Teste 1.6.2.a - Falha em completar o Common Setup 1.1 da RFC'
                    )
                    return False

            else:
                self.send_echo_request_global()
                if time_over:
                    self.__packet_sniffer_wan.stop()
                    logging.info(
                        'Falha: Teste 1.6.2.a Por tempo finalizado: Não foi recebido Mensagem EchoReply'
                    )
                    return False
                elif pkt.haslayer(ICMPv6EchoReply):
                    mac_dst = pkt[Ether].dst
                    if mac_dst == self.__config.get('wan', 'link_local_addr'):
                        self.__packet_sniffer_wan.stop()
                        logging.info(
                            'Aprovado Teste 1.6.2.a: Recebido Mensagem Echo Reply com MAC do CeRouter em MAC destino'
                        )
                        return True
                    else:
                        self.__packet_sniffer_wan.stop()
                        logging.info(
                            'Reprovado Teste 1.6.2.a: Recebido Mensagem Echo Reply Sem MAC do CeRouter em MAC destino'
                        )
                        return False
        while not self.__queue_wan.empty():
            # print('RS1')
            pkt = self.__queue_wan.get()
        # logging.info('Passo4-t162run_sttop-theard success')
        # logging.info('self.__queue_size_fim')
        # logging.info(self.__queue_wan.qsize())
        #time.sleep(2)
        self.__packet_sniffer_wan.stop()
        #time.sleep(2)
        return True
コード例 #8
0
ファイル: test166a.py プロジェクト: ronyjah/tcc_ronaldo
    def run(self):
        @self.__app.route("/LAN",methods=['GET'])
        def envia_lan():
            return self.get_status_lan()
        @self.__app.route("/WAN",methods=['GET'])
        def enviawan():
            return self.get_status()
        self.__packet_sniffer_wan = PacketSniffer('test166a',self.__queue_wan,self,self.__config,self.__wan_device_tr1)
        self.__packet_sniffer_wan.start()

        self.set_flags()         
        logging.info(self.__test_desc)
        t_test = 0
        sent_reconfigure = False
        time_over = False
        rs_ok = False
        send_ra = False
        send_ns =False
        send_ra2 = False
        cache_wan = []
        while not self.__queue_wan.full():
            while self.__queue_wan.empty():
                if t_test < 120:
                    time.sleep(1)
                    t_test = t_test + 1
                    logging.info('WAN: Tempo limite de teste 120 seg. Tempo atual: ' +str(t_test))
                    self.set_status('WAN: Tempo limite de teste 120 seg. Tempo atual:  ' +str(t_test))
                else:
                    self.__packet_sniffer_wan.stop() 
                    logging.info('Reprovado: Teste 1.6.6a- Cerouter com transmitiou Solicit dentro do tempo de Teste')
                    self.set_status('Reprovado: Teste 1.6.6a- Cerouter com transmitiou Solicit dentro do tempo de Teste')
                    time.sleep(2)
                    self.set_status('REPROVADO') # Mensagem padrão para o frontEnd atualizar Status
                    
                    self.__packet_sniffer_wan.stop()
                    return False
            pkt = self.__queue_wan.get()
            #if not self.__ND_local_OK:
            cache_wan.append(pkt)
            wrpcap("wan-1.6.6a.cap",cache_wan)
            if pkt.haslayer(ICMPv6ND_NS):

                if pkt[ICMPv6ND_NS].tgt == '::':

                    continue
                if pkt[IPv6].src == self.__config.get('wan','link_local_addr'):
                    continue
                if pkt[IPv6].src == self.__config.get('wan','global_wan_addr'):
                    continue
                if pkt[IPv6].src == '::':
                    if pkt[ICMPv6ND_NS].tgt != '::':

                        self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)

                        self.__config_setup1_1.set_local_addr_ceRouter(pkt[ICMPv6ND_NS].tgt)

                        self.__ND_local_OK = True

                    if pkt[ICMPv6ND_NS].tgt != '::' and pkt[IPv6].src != '::':

                        pkt.show()

            if pkt.haslayer(ICMPv6ND_RS) and not self.__ND_local_OK:
                logging.info('WAN: Reprovado Teste 1.6.6a - Nao Recebeu ICMP NS antes do RS')
                self.set_status('WAN: Reprovado Teste 1.6.6a - Nao Recebeu ICMP NS antes do RS')
                time.sleep(2)
                self.set_status('REPROVADO') # Mensagem padrão para o frontEnd atualizar Status
                self.__packet_sniffer_wan.stop()
                return False  

            else:



                if not send_ns:
                    logging.info('WAN: TR1 Enviando ICMP NS')
                    self.set_status('WAN: TR1 Enviando ICMP NS')
                    self.__config_setup1_1.set_ether_src(self.__config.get('wan','link_local_mac'))
                    self.__config_setup1_1.set_ether_dst(self.__config.get('multicast','all_mac_nodes'))
                    self.__config_setup1_1.set_ipv6_src(self.__config.get('wan','global_wan_addr'))
                    self.__config_setup1_1.set_ipv6_dst(self.__config.get('multicast','all_nodes_addr'))
                    self.__config_setup1_1.set_tgt(self.__config.get('wan','link_local_addr'))
                    
                    self.__sendmsgs.send_icmp_ns(self.__config_setup1_1)
                    send_ns = True
                    continue
                if send_ns and not send_ra:   
                    logging.info('WAN: TR1 Enviando ICMP RA com Flag M para um e Flag O para zero')
                    self.set_status('WAN: TR1 Enviando ICMP RA com Flag M para um e Flag O para zero')    
                    self.__config_setup1_1.set_flag_M("1")
                    self.__config_setup1_1.set_flag_O("0")
                    self.__config_setup1_1.set_ether_src(self.__config.get('wan','ra_mac'))
                    self.__config_setup1_1.set_ether_dst(self.__config.get('multicast','all_mac_nodes'))
                    self.__config_setup1_1.set_ipv6_src(self.__config.get('wan','link_local_addr'))
                    self.__config_setup1_1.set_ipv6_dst(self.__config.get('multicast','all_nodes_addr'))
                    self.__sendmsgs.send_tr1_RA(self.__config_setup1_1)
                    send_ra = True
                    continue


                if send_ra:
                    if pkt.haslayer(DHCP6_Solicit):
                        logging.info('WAN: Recebido DHCP Solicit. Verificando se contem ICMP IA_PD')
                        self.set_status('WAN: Recebido DHCP Solicit. Verificando se contem ICMP IA_PD')
                        if pkt.haslayer(DHCP6OptIA_PD):

                            logging.info('WAN: APROVADO Teste 1.6.6a - Roteador Enviou solicit com Option IA_PD')
                            self.set_status('WAN: APROVADO Teste 1.6.6a - Roteador Enviou solicit com Option IA_PD')
                            time.sleep(2)
                            self.set_status('APROVADO') # Mensagem padrão para o frontEnd atualizar Status
                            self.__packet_sniffer_wan.stop()
                            return True
                        else:

                            logging.info('WAN: Reprovado Teste 1.6.6b - Roteador Enviou solicit sem Option IA_NA')
                            self.set_status('WAN: Reprovado Teste 1.6.6b - Falha em completar o setup LAN')
                            time.sleep(2)
                            self.set_status('REPROVADO') # Mensagem padrão para o frontEnd atualizar Status
                            self.__packet_sniffer_wan.stop()
                            return False  

   
        self.__packet_sniffer_wan.stop()
        return False
     
        
コード例 #9
0
    def run(self):
        self.__packet_sniffer_wan = PacketSniffer('test163d', self.__queue_wan,
                                                  self, self.__config,
                                                  self.__wan_device_tr1)
        self.__packet_sniffer_wan.start()
        self.set_flags()
        logging.info(self.__test_desc)
        t_test = 0
        sent_reconfigure = False
        time_over = False
        while not self.__queue_wan.full():
            #while self.__queue_wan.empty():

            pkt = self.__queue_wan.get()

            if not self.__config_setup1_1.get_setup1_1_OK():

                if not self.__config_setup1_1.get_disapproved():
                    self.__config_setup1_1.run_setup1_1(pkt)
                else:
                    logging.info(
                        'Reprovado Teste 1.6.3.c - Falha em completar o Common Setup 1.1 da RFC'
                    )
                    self.__packet_sniffer_wan.stop()
                    return False

            else:
                if t_test < 10:
                    time.sleep(1)
                    t_test = t_test + 1
                else:
                    time_over = True

                if pkt.haslayer(DHCP6_Renew):
                    logging.info(pkt.show())
                    logging.info(
                        'Reprovado Teste 1.6.3.d - Respondeu ao DHCP6 reconfigure de chave falsa'
                    )

                    self.__packet_sniffer_wan.stop()
                    return False
                elif time_over:
                    if not sent_reconfigure:
                        self.__packet_sniffer_wan.stop()
                        logging.info(
                            'Falha: Teste 1.6.3.d. Tempo finalizado mas Não Enviou DHCP Reconfigure'
                        )

                        return False
                    else:
                        self.__packet_sniffer_wan.stop()
                        logging.info(
                            'Aprovado: Teste 1.6.3.d. Tempo finalizado e não recebeu DHCP Renew em DHCP Reconf adulterado'
                        )

                        return True
                if not sent_reconfigure:

                    self.__config_setup1_1.set_ipv6_src(
                        self.__config.get('wan', 'link_local_addr'))
                    self.__config_setup1_1.set_ipv6_dst(
                        self.__config.get(
                            'multicast', 'dhcp_relay_agents_and_servers_addr'))
                    self.__config_setup1_1.set_ether_src(
                        self.__config.get('wan', 'link_local_mac'))
                    self.__config_setup1_1.set_ether_dst(
                        self.__config_setup1_1.get_ether_dst())
                    self.__config_setup1_1.set_dhcp_reconf_type(
                        self.__config.get('t1.6.3', 'msg_type'))
                    self.__sendmsgs.send_dhcp_reconfigure_wrong(
                        self.__config_setup1_1)
                    sent_reconfigure = True

                # if pkt.haslayer(DHCP6_Solicit):
                #     self.__packet_sniffer_wan.stop()
                #     while not self.__queue_wan.empty():
                #         pkt = self.__queue_wan.get()
                #     return True
        # while not pkt.haslayer(IPv6):
        #     pkt = self.__queue_wan.get()
        self.__packet_sniffer_wan.stop()
        return False
コード例 #10
0
ファイル: test163b.py プロジェクト: ronyjah/rfc
    def run(self):
        self.__packet_sniffer_wan = PacketSniffer('test163b',self.__queue_wan,self,self.__config,self.__wan_device_tr1)
        self.__config_setup1_1.flags_partA()
        self.__packet_sniffer_wan.start()
        self.set_flags()
        logging.info(self.__test_desc)
        t_test = 0
        sent_reconfigure = False

        time_over = False        
        while not self.__queue_wan.full():
            while self.__queue_wan.empty():
                if t_test < 3000:
                    time.sleep(1)
                    t_test = t_test + 1
                else:
                    time_over = True
            pkt = self.__queue_wan.get()
           
            if not self.__config_setup1_1.get_setup1_1_OK():

                if not self.__config_setup1_1.get_disapproved():
                    self.__config_setup1_1.run_setup1_1(pkt)
                    print('aqui')
                else:
                    print('aqui1')
                    self.__packet_sniffer_wan.stop() 
                    logging.info('Reprovado Teste 1.6.3.c - Falha em completar o Common Setup 1.1 da RFC')
                    return False

                #self.__config_setup1_1.run_setup1_1(pkt)
            else:
                

                # self.__config_setup1_1.set_xid()
                if pkt.haslayer(DHCP6_Renew):
                    print('aqui2')
                    logging.info(pkt.show())
                    print('aqui3')
                    self.__packet_sniffer_wan.stop()
                    print('aqui33333')
                    
                    logging.info('Aprovado: Teste 1.6.3.b.')
                    return True

                elif time_over :
                    print('aqui4')
                    if not sent_reconfigure:
                        print('aqui5')
                        pass
                        #self.__packet_sniffer_wan.stop()
                        logging.info('Falha: Teste 1.6.3.b. Tempo finalizado e Não Enviou DHCP Reconfigure')
                        return False
                    else:
                        print('aqui6')
                        self.__packet_sniffer_wan.stop()
                        logging.info('Reprovado: Teste 1.6.3.b. Tempo finalizado e Não recebeu DHCP6 Renew')

                        return False

                if not sent_reconfigure:
                    time.sleep(3)
                    print('aqui7')
                    self.__config_setup1_1.set_ipv6_src(self.__config.get('wan','link_local_addr'))
                    print('aqui8')
                    self.__config_setup1_1.set_ipv6_dst(self.__config_setup1_1.get_local_addr_ceRouter())
                    print('aqui10')
                    self.__config_setup1_1.set_ether_src(self.__config.get('wan','link_local_mac'))
                    print('aqui11')
                    self.__config_setup1_1.set_ether_dst(self.__config_setup1_1.get_mac_ceRouter())
                    print('aqui12')
                    self.__config_setup1_1.set_dhcp_reconf_type(self.__config.get('t1.6.3','msg_type'))
                    print('aqui13')
                    self.__config_setup1_1.set_udp_sport('547')
                    self.__config_setup1_1.set_udp_dport('546')
                    self.__sendmsgs.send_dhcp_reconfigure(self.__config_setup1_1)
                    print('aqui14')
                    sent_reconfigure = True                
                # if pkt.haslayer(DHCP6_Solicit):
                #     self.__packet_sniffer_wan.stop()
                #     while not self.__queue_wan.empty():
                #         pkt = self.__queue_wan.get() 
                #     return True
        # while not pkt.haslayer(IPv6):
        #     pkt = self.__queue_wan.get()      
        self.__packet_sniffer_wan.stop()
        return False
     
        
コード例 #11
0
ファイル: test162.py プロジェクト: ronyjah/rfc
    def run(self):
        self.__packet_sniffer_wan = PacketSniffer('test162', self.__queue_wan,
                                                  self, self.__config,
                                                  self.__wan_device_tr1)
        #self.__packet_sniffer.init()
        self.flags_partA()
        self.__CommonSetup1_1.set_flags_common_setup(self)
        #self.__CommonSetup1_1.send_tr1_RA()
        #self.__CommonSetup1_1.send_dhcp_advertise()
        #self.__CommonSetup1_1.send_dhcp_reply()
        #self.__CommonSetup1_1.send_echo_request()
        #self.set_ipv6_dst('ff:ff::1')
        #self.__config.set('setup1-1_advertise','ipv6_addr','ff:ff::1')
        #self.__CommonSetup1_1.ipv6()
        #self.__CommonSetup1_1.send_tr1_RA(self)
        #time.sleep(100000000)

        self.__packet_sniffer_wan.start()
        logging.info('Task Desc')
        logging.info(self.__test_desc)
        logging.info('Qsize')
        logging.info(self.__queue_wan.qsize())
        while not self.__queue_wan.full():

            pkt = self.__queue_wan.get()
            if not self.__setup1_1_OK:
                logging.info('self.__queue_size')
                logging.info(self.__queue_wan.qsize())
                self.setup1_1(pkt)

            elif not self.__approved:
                self.set_ipv6_src(self.__config.get('wan', 'global_wan_addr'))
                self.set_ipv6_dst(
                    self.__config.get('setup1-1_advertise', 'ia_na_address'))
                self.set_ether_src(self.__config.get('wan', 'link_local_mac'))
                self.set_ether_dst(self.get_ether_dst())
                self.__CommonSetup1_1.send_echo_request(self)
                if pkt.haslayer(ICMPv6EchoReply):
                    mac_dst = pkt[Ether].dst
                    if mac_dst == self.__config.get('wan', 'link_local_mac'):
                        return True
                    else:
                        return False
            #time.sleep(10000000)
            # if pkt.haslayer(ICMPv6ND_RA):
            #     self.set_ipv6_dst(pkt[IPv6].src)
            #     self.set_ether_dst(pkt[Ether].src)
            #self.__CommonSetup1_1.ipv6(self)
            #self.__ceRouter_mac_addr=pkt[Ether].src
            #self.__CommonSetup1_1.send_tr1_RA(self)
            # self.__CommonSetup1_1.send_echo_request(self)
            #self.send_icmpv6_ra(pkt)
            #time.sleep(1)
            #break
            #self.__valid = True
            #elif pkt.haslayer(ICMPv6ND_RA) and self.__valid == False:
            #print('theardoffFalse')
            #self.turn_off_thread()
            #   return False
            #else:

            #print('theardofftrue')
            #self.turn_off_thread()
            #   return True
        while not self.__queue_wan.empty():
            print('RS1')
            pkt = self.__queue_wan.get()
        logging.info('Passo4-t162run_sttop-theard success')
        logging.info('self.__queue_size_fim')
        logging.info(self.__queue_wan.qsize())
        #time.sleep(2)
        self.__packet_sniffer_wan.stop()
        #time.sleep(2)
        return True
コード例 #12
0
ファイル: test167.py プロジェクト: ronyjah/tcc_ronaldo
    def run(self):
        @self.__app.route("/LAN", methods=['GET'])
        def envia_lan():
            return self.get_status_lan()

        @self.__app.route("/WAN", methods=['GET'])
        def enviawan():
            return self.get_status()

        self.__packet_sniffer_wan = PacketSniffer('test167', self.__queue_wan,
                                                  self, self.__config,
                                                  self.__wan_device_tr1)
        self.__packet_sniffer_wan.start()
        self.set_flags()
        logging.info(self.__test_desc)
        t_test = 0
        cache_wan = []
        sent_reconfigure = False
        time_over = False
        while not self.__queue_wan.full():
            while self.__queue_wan.empty():
                if t_test < 60:
                    time.sleep(1)
                    t_test = t_test + 1
                    logging.info(
                        'LAN: Tempo  de busca por mensagens de roteamento dinamico Tempo 60 seg. Tempo atual: '
                        + str(t_test))
                    self.set_status(
                        'LAN: Tempo  de busca por mensagens de roteamento dinamico Tempo 60 seg. Tempo atual: '
                        + str(t_test))
                else:
                    self.__packet_sniffer_wan.stop()
                    logging.info(
                        'Aprovado: Teste 1.6.7-Nao houveram mensagem de roteamento dinâmico durante o período de teste'
                    )
                    self.set_status(
                        'Aprovado: Teste 1.6.7-Nao houveram mensagem de roteamento dinâmico durante o período de teste'
                    )
                    time.sleep(2)
                    self.set_status(
                        'APROVADO'
                    )  # Mensagem padrão para o frontEnd atualizar Status

                    self.__packet_sniffer_wan.stop()

                    return True
            pkt = self.__queue_wan.get()

            if not self.__config_setup1_1.get_setup1_1_OK():

                if not self.__config_setup1_1.get_disapproved():
                    self.__config_setup1_1.run_setup1_1(pkt)
                else:
                    logging.info(
                        'WAN: Reprovado Teste 1.6.7 - Falha em completar o setup LAN'
                    )
                    self.set_status(
                        'WAN: Reprovado Teste 1.6.7 - Falha em completar o setup LAN'
                    )
                    time.sleep(2)
                    self.set_status(
                        'REPROVADO'
                    )  # Mensagem padrão para o frontEnd atualizar Status
                    self.__packet_sniffer_wan.stop()
                    return False
            else:

                if pkt.haslayer(EIGRPv6ExtRoute):
                    logging.info(pkt.show())
                    logging.info('Reprovado Teste 1.6.7-EIGRPv6ExtRoute ')

                    self.set_status(
                        'WAN: Reprovado Teste 1.6.7-EIGRPv6ExtRoute')
                    time.sleep(2)
                    self.set_status(
                        'REPROVADO'
                    )  # Mensagem padrão para o frontEnd atualizar Status
                    self.__packet_sniffer_wan.stop()
                    return False

                if pkt.haslayer(EIGRPExtRoute):
                    logging.info(pkt.show())
                    logging.info('Reprovado Teste 1.6.7-EIGRPExtRoute ')

                    self.set_status('WAN: Reprovado Teste 1.6.7-EIGRPExtRoute')
                    time.sleep(2)
                    self.set_status(
                        'REPROVADO'
                    )  # Mensagem padrão para o frontEnd atualizar Status
                    self.__packet_sniffer_wan.stop()
                    return False

                if pkt.haslayer(EIGRPIntRoute):
                    logging.info(pkt.show())

                    logging.info('WAN: Reprovado Teste 1.6.7-EIGRPIntRoute')
                    self.set_status('WAN: Reprovado Teste 1.6.7-EIGRPIntRoute')
                    time.sleep(2)
                    self.set_status(
                        'REPROVADO'
                    )  # Mensagem padrão para o frontEnd atualizar Status
                    self.__packet_sniffer_wan.stop()
                    return False

                if pkt.haslayer(EIGRPv6ExtRoute):
                    logging.info(pkt.show())
                    logging.info('WAN: Reprovado Teste 1.6.7-EIGRPv6ExtRoute')
                    self.set_status(
                        'WAN: Reprovado Teste 1.6.7-EIGRPv6ExtRoute')
                    time.sleep(2)
                    self.set_status(
                        'REPROVADO'
                    )  # Mensagem padrão para o frontEnd atualizar Status
                    self.__packet_sniffer_wan.stop()
                    return False

                if pkt.haslayer(OSPF_Hdr):
                    logging.info(pkt.show())
                    logging.info('WAN: Reprovado Teste 1.6.7-OSPF_Hdr')
                    self.set_status('WAN: Reprovado Teste 1.6.7-OSPF_Hdr')
                    time.sleep(2)
                    self.set_status(
                        'REPROVADO'
                    )  # Mensagem padrão para o frontEnd atualizar Status
                    self.__packet_sniffer_wan.stop()
                    return False

                if pkt.haslayer(OSPF_Hello):
                    logging.info(pkt.show())
                    logging.info('WAN: Reprovado Teste 1.6.7-OSPF_Hello')
                    self.set_status('WAN: Reprovado Teste 1.6.7-OSPF_Hello')
                    time.sleep(2)
                    self.set_status(
                        'REPROVADO'
                    )  # Mensagem padrão para o frontEnd atualizar Status
                    self.__packet_sniffer_wan.stop()
                    return False
                if pkt.haslayer(OSPFv3_Hdr):
                    logging.info(pkt.show())
                    logging.info('WAN: Reprovado Teste 1.6.7-OSPFv3_Hdr')
                    self.set_status('WAN: Reprovado Teste 1.6.7-OSPFv3_Hdr')
                    time.sleep(2)
                    self.set_status(
                        'REPROVADO'
                    )  # Mensagem padrão para o frontEnd atualizar Status
                    self.__packet_sniffer_wan.stop()
                    return False

                if pkt.haslayer(OSPFv3_Hello):
                    logging.info(pkt.show())
                    logging.info('WAN: Reprovado Teste 1.6.7-OSPFv3_Hello')
                    self.set_status('WAN: Reprovado Teste 1.6.7-OSPFv3_Hello')
                    time.sleep(2)
                    self.set_status(
                        'REPROVADO'
                    )  # Mensagem padrão para o frontEnd atualizar Status
                    self.__packet_sniffer_wan.stop()
                    return False
                if pkt.haslayer(OSPFv3_Router_LSA):
                    logging.info(pkt.show())
                    logging.info(
                        'WAN: Reprovado Teste 1.6.7-OSPFv3_Router_LSA')
                    self.set_status(
                        'WAN: Reprovado Teste 1.6.7-OSPFv3_Router_LSA')
                    time.sleep(2)
                    self.set_status(
                        'REPROVADO'
                    )  # Mensagem padrão para o frontEnd atualizar Status
                    self.__packet_sniffer_wan.stop()
                    return False

                elif time_over:
                    self.__packet_sniffer_wan.stop()
                    logging.info(
                        'Aprovado: Teste 1.6.7-Nao houveram mensagem de roteamento dinâmico durante o período de teste'
                    )
                    self.set_status(
                        'Aprovado: Teste 1.6.7-Nao houveram mensagem de roteamento dinâmico durante o período de teste'
                    )
                    time.sleep(2)
                    self.set_status(
                        'APROVADO'
                    )  # Mensagem padrão para o frontEnd atualizar Status

                    self.__packet_sniffer_lan.stop()
                    self.__finish_wan = True
                    self.__fail_test = False
                    return True

        self.__packet_sniffer_wan.stop()
        return False
コード例 #13
0
    def run(self):
        @self.__app.route("/WAN",methods=['GET'])
        def enviawan():
            return self.get_status()
        self.__t_lan =  Thread(target=self.run_Lan,name='LAN_Thread')
        self.__t_lan.start()
        
        self.__packet_sniffer_wan = PacketSniffer('Test322a-WAN',self.__queue_wan,self,self.__config,self.__wan_device_tr1)
        self.__packet_sniffer_wan.start()
        
        self.__packet_sniffer_lan = PacketSniffer('Test322a-LAN',self.__queue_lan,self,self.__config,self.__lan_device)
        test_lan = self.__packet_sniffer_lan.start()
        self.__config_setup1_1.set_ra2()
        self.set_flags()
        logging.info(self.__test_desc)
        t_test = 0
        time1 = 0
        sent_reconfigure = False
        time_over = False
        start_time_count = False
        finish_wan = False
        cache_wan = []
        self.__config_setup1_1.set_pd_prefixlen(self.__config.get('t3.2.2a','pd_prefixlen')) 
        self.__config_setup1_1.set_routerlifetime(self.__config.get('t3.2.2a','routerlifetime')) 
        while not self.__queue_wan.full():
            if self.__queue_wan.empty():
                if t_test <= 300:
                    time.sleep(1)
                    t_test = t_test + 1
                    if t_test % 10 == 0:
                        self.rourter_advertise()
                        self.set_status('WAN: Enviando ICMP RA periódico')
                        logging.info('WAN: Enviando ICMP RA periódico')
                    if start_time_count:
                        if time1 < 40:
                            time1 = time1 + 1



                else:
                    time_over = True      
            else:
                pkt = self.__queue_wan.get()
                cache_wan.append(pkt)
                wrpcap("WAN-3.2.2a.cap",cache_wan)
                if not self.__config_setup1_1.get_ND_local_OK():

                    if pkt[Ether].src == self.__config.get('wan','link_local_mac'):
                        #print('ND_LOCAL,continue')
                        continue

                    if pkt[Ether].src == self.__config.get('wan','ra_mac'):
                        #print('ND_LOCAL-A,continue')                        
                        continue


                    if pkt.haslayer(ICMPv6ND_RS):
                  
                        if pkt[Ether].src == self.__config.get('wan','link_local_mac'):
                            #print('RS,continue')         
                            continue

                        if pkt[Ether].src == self.__config.get('wan','ra_mac'):
                            #print('RS-A,continue')                                     
                            continue
                        self.set_status('WAN: Aprendendo o MAC Roteador')
                        logging.info('WAN: Aprendendo o MAC Roteador')
                        self.__config_setup1_1.set_local_addr_ceRouter(pkt[IPv6].src)
                        self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)    
                        #self.__config_setup1_1.set_ND_local_OK()

                    if pkt.haslayer(DHCP6_Solicit):
                        if pkt[Ether].src == self.__config.get('wan','link_local_mac'):
                            #print('solicit,continue')
                            continue

                        if pkt[Ether].src == self.__config.get('wan','ra_mac'):
                            #print('solicitA,continue')
                            continue
                        self.set_status('WAN: Aprendendo o MAC Roteador')
                        logging.info('WAN: Aprendendo o MAC Roteador')
                        self.__config_setup1_1.set_local_addr_ceRouter(pkt[IPv6].src)
                        self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)
                        #self.__config_setup1_1.set_ND_local_OK()  

                if pkt.haslayer(ICMPv6ND_NS):

                    if pkt[ICMPv6ND_NS].tgt == self.__config.get('wan','global_wan_addr'):
                        self.set_status('WAN: Enviando resposta ao NS com ICMP NA global')
                        logging.info('WAN: Enviando resposta ao NS com ICMP NA global')

                        self.neighbor_advertise_global(pkt)
                        
                    if pkt[ICMPv6ND_NS].tgt == self.__config.get('wan','link_local_addr'):
                        self.set_status('WAN: Enviando resposta ao NS com ICMP NA local')
                        logging.info('WAN: Enviando resposta ao NS com ICMP NA local')

                        self.neighbor_advertise_local(pkt)



                #pkt = self.__queue_wan.get()
                if not self.__config_setup1_1.get_setup1_1_OK():
                    #print('test1')
                    self.set_status('WAN: Setup 1.1 em execução')
                    logging.info('WAN: Setup 1.1 em execução')

                    if not self.__config_setup1_1.get_disapproved():
                        #print('test2')
                        self.__config_setup1_1.run_setup1_1(pkt)
                        #print('test3')
                        if pkt.haslayer(ICMPv6ND_RS):

                            if pkt[Ether].src == self.__config.get('wan','link_local_mac'):
                                #print('RS-2,continue')         
                                continue
                            if pkt[Ether].src == self.__config.get('wan','ra_mac'):
                                #print('RS-2A,continue')
                                continue
                            #print('test4')
                            #self.__config_setup1_1.set_ND_local_OK()
                            self.__config_setup1_1.set_local_addr_ceRouter(pkt[IPv6].src)
                            self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)                                 
                            self.__config_setup1_1.set_ether_src(self.__config.get('wan','ra_mac'))
                            self.__config_setup1_1.set_ether_dst(self.__config.get('multicast','all_mac_nodes'))
                            self.__config_setup1_1.set_ipv6_src(self.__config.get('wan','ra_address'))
                            self.__config_setup1_1.set_ipv6_dst(self.__config.get('multicast','all_nodes_addr'))
                            self.__sendmsgs.send_tr1_RA2(self.__config_setup1_1)

                    else:

                        self.set_status('Reprovado Teste 3.2.2a - Falha em completar o Common Setup 1.1 da RFC')
                        time.sleep(2)
                        self.set_status('REPROVADO') # Mensagem padrão para o frontEnd atualizar Status

                        logging.info('Reprovado Teste 3.2.2a - Falha em completar o Common Setup 1.1 da RFC')
                        self.__packet_sniffer_wan.stop() 
                        return False

                else:

                    if not self.__finish_wan:
                        start_time_count = True
                        if time1 < 40:
                            #if time1 % 5 == 0: 
                                #self.ping()
                            if pkt.haslayer(ICMPv6EchoRequest):
                                self.set_status('Reprovado Teste 3.2.2a - Recebido ICMPv6EchoRequest na WAN sendo que Routerlifime anunciado é zero')
                                time.sleep(2)
                                self.set_status('REPROVADO') # Mensagem padrão para o frontEnd atualizar Status
                                logging.info('Reprovado Teste 3.2.2a - Recebido ICMPv6EchoRequest na WAN sendo que Routerlifime anunciado é zero')
                                self.__packet_sniffer_wan.stop() 

                                ##print('AQUI-2.0')
                                self.__packet_sniffer_lan.stop()
                                self.__finish_wan = True 
                                self.__fail_test = False
                                return False

                            if pkt.haslayer(ICMPv6ND_NS):
                                if pkt[ICMPv6ND_NS].tgt == self.__config.get('t3.2.2a','tn3_ip'):
                                    #print('glboal')
                                    self.neighbor_advertise_global_tn3(pkt)

                                if pkt[ICMPv6ND_NS].tgt == self.__config.get('wan','ra_address'):
                                    #print('local')
                                    self.__config_setup1_1.set_ipv6_src(self.__config.get('wan','ra_address'))
                                    self.__config_setup1_1.set_ether_src(self.__config.get('wan','ra_mac'))
                                    self.__config_setup1_1.set_ether_dst(pkt[Ether].src)
                                    self.__config_setup1_1.set_ipv6_dst(pkt[IPv6].src)
                                    self.__config_setup1_1.set_tgt(self.__config.get('wan','ra_address'))
                                    self.__config_setup1_1.set_lla(self.__config.get('wan','ra_mac'))
                                    self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)
                                    self.__sendmsgs.send_icmp_na(self.__config_setup1_1)
                            ###print('LOOP NS')
                            # ###print(pkt[ICMPv6ND_NS].tgt)
                            # self.__config_setup1_1.set_ipv6_src(self.__config.get('wan','global_wan_addr'))
                            # self.__config_setup1_1.set_ether_src(self.__config.get('wan','wan_mac_tr1'))
                            # self.__config_setup1_1.set_ether_dst(pkt[Ether].src)
                            # self.__config_setup1_1.set_ipv6_dst(pkt[IPv6].src)
                            # self.__config_setup1_1.set_tgt(self.__config.get('wan','global_wan_addr'))
                            # self.__config_setup1_1.set_lla(self.__config.get('wan','wan_mac_tr1'))
                            # self.__sendmsgs.send_icmp_na(self.__config_setup1_1)
                                    
                        else:            
                            self.__packet_sniffer_wan.stop() 
                            self.__packet_sniffer_lan.stop()

                            self.set_status('Teste 3.2.2a - APROVADO. Não passou pacotes da LAN para WAN após envio do RouterLife time zerado')
                            time.sleep(2)
                            self.set_status('APROVADO') # Mensagem padrão para o frontEnd atualizar Status
                            logging.info('Teste 3.2.2a - APROVADO. Não passou pacotes da LAN para WAN após envio do RouterLife time zerado')
                            return True        
                    else:
                        self.__packet_sniffer_wan.stop()
                        if self.__fail_test:
                            return False
                        else:
                                return True
        self.__packet_sniffer_wan.stop()
        return False
     
        
コード例 #14
0
ファイル: test321b.py プロジェクト: ronyjah/tcc_ronaldo
    def run(self):
        @self.__app.route("/WAN", methods=['GET'])
        def enviawan():
            return self.get_status()

        self.__t_lan = Thread(target=self.run_Lan, name='LAN_Thread')
        self.__t_lan.start()

        self.__packet_sniffer_wan = PacketSniffer('Test273b-WAN',
                                                  self.__queue_wan, self,
                                                  self.__config,
                                                  self.__wan_device_tr1)
        self.__packet_sniffer_wan.start()

        self.__packet_sniffer_lan = PacketSniffer('Test273b-LAN',
                                                  self.__queue_lan, self,
                                                  self.__config,
                                                  self.__lan_device)
        test_lan = self.__packet_sniffer_lan.start()
        self.__config_setup1_1.set_ra2()
        self.set_flags()
        logging.info(self.__test_desc)
        t_test = 0
        time1 = 0
        sent_reconfigure = False
        time_over = False
        cache_wan = []

        finish_wan = True
        self.__config_setup1_1.set_pd_prefixlen(
            self.__config.get('t3.2.1b', 'pd_prefixlen'))
        self.__config_setup1_1.set_routerlifetime(
            self.__config.get('t3.2.1b', 'routerlifetime'))
        while not self.__queue_wan.full():
            if self.__queue_wan.empty():
                if t_test <= 50:
                    time.sleep(1)
                    t_test = t_test + 1
                    if t_test % 10 == 0:
                        #self.rourter_advertise()
                        self.ping()
                        self.set_status('LAN: Enviando ping Para TN2')
                        logging.info('LAN: Enviando ping TN2')
                else:
                    time_over = True
            else:
                pkt = self.__queue_wan.get()
                cache_wan.append(pkt)
                wrpcap("WAN-3.2.1b.cap", cache_wan)
                if not self.__config_setup1_1.get_ND_local_OK():

                    if pkt[Ether].src == self.__config.get(
                            'wan', 'link_local_mac'):
                        continue

                    if pkt[Ether].src == self.__config.get('wan', 'ra_mac'):
                        continue

                    if pkt.haslayer(ICMPv6ND_RS):
                        if pkt[Ether].src == self.__config.get(
                                'wan', 'link_local_mac'):
                            continue

                        if pkt[Ether].src == self.__config.get(
                                'wan', 'ra_mac'):
                            continue

                        self.__config_setup1_1.set_local_addr_ceRouter(
                            pkt[IPv6].src)
                        self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)

                    if pkt.haslayer(DHCP6_Solicit):
                        if pkt[Ether].src == self.__config.get(
                                'wan', 'link_local_mac'):
                            continue

                        if pkt[Ether].src == self.__config.get(
                                'wan', 'ra_mac'):
                            continue
                        self.__config_setup1_1.set_local_addr_ceRouter(
                            pkt[IPv6].src)
                        self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)

                if pkt.haslayer(ICMPv6ND_NS):

                    if pkt[ICMPv6ND_NS].tgt == self.__config.get(
                            'wan', 'global_wan_addr'):
                        self.neighbor_advertise_global(pkt)

                    if pkt[ICMPv6ND_NS].tgt == self.__config.get(
                            'wan', 'link_local_addr'):
                        self.neighbor_advertise_local(pkt)

                if time_over:
                    if not self.__config_setup1_1.get_setup1_1_OK():
                        self.set_status('WAN: Setup 1.1 em execução')
                        logging.info('WAN: Setup 1.1 em execução')

                        if not self.__config_setup1_1.get_disapproved():
                            self.__config_setup1_1.run_setup1_1(pkt)
                            if pkt.haslayer(ICMPv6ND_RS):
                                if pkt[Ether].src == self.__config.get(
                                        'wan', 'link_local_mac'):
                                    continue
                                if pkt[Ether].src == self.__config.get(
                                        'wan', 'ra_mac'):
                                    continue

                                self.set_status('WAN: Enviando ICMP RA')
                                logging.info('WAN: Enviando ICMP RA')

                                self.__config_setup1_1.set_local_addr_ceRouter(
                                    pkt[IPv6].src)
                                self.__config_setup1_1.set_mac_ceRouter(
                                    pkt[Ether].src)
                                self.__config_setup1_1.set_ether_src(
                                    self.__config.get('wan', 'ra_mac'))
                                self.__config_setup1_1.set_ether_dst(
                                    self.__config.get('multicast',
                                                      'all_mac_nodes'))
                                self.__config_setup1_1.set_ipv6_src(
                                    self.__config.get('wan', 'ra_address'))
                                self.__config_setup1_1.set_ipv6_dst(
                                    self.__config.get('multicast',
                                                      'all_nodes_addr'))
                                self.__sendmsgs.send_tr1_RA(
                                    self.__config_setup1_1)

                        else:
                            self.set_status(
                                'Reprovado Teste 3.2.1b - Falha em completar o Common Setup 1.1 da RFC'
                            )
                            time.sleep(2)
                            self.set_status(
                                'REPROVADO'
                            )  # Mensagem padrão para o frontEnd atualizar Status

                            logging.info(
                                'Reprovado Teste 3.2.1b - Falha em completar o Common Setup 1.1 da RFC'
                            )
                            self.__packet_sniffer_wan.stop()
                            return False

                    else:
                        if not self.__finish_wan:
                            if time1 < 30:
                                time1 = time1 + 1
                                if time1 % 5 == 0:
                                    self.ping()
                                    self.set_status(
                                        'WAN: Setup 1.1 Concluido Enviando Echo Request'
                                    )
                                    logging.info(
                                        'WAN: Setup 1.1 Concluido Enviando Echo Request'
                                    )
                            if pkt.haslayer(ICMPv6ND_NS):
                                if pkt[ICMPv6ND_NS].tgt == self.__config.get(
                                        'wan', 'global_wan_addr'):
                                    self.neighbor_advertise_global(pkt)
                                if pkt[ICMPv6ND_NS].tgt == self.__config.get(
                                        'wan', 'ra_address'):
                                    self.__config_setup1_1.set_ipv6_src(
                                        self.__config.get('wan', 'ra_address'))
                                    self.__config_setup1_1.set_ether_src(
                                        self.__config.get('wan', 'ra_mac'))
                                    self.__config_setup1_1.set_ether_dst(
                                        pkt[Ether].src)
                                    self.__config_setup1_1.set_ipv6_dst(
                                        pkt[IPv6].src)
                                    self.__config_setup1_1.set_tgt(
                                        self.__config.get('wan', 'ra_address'))
                                    self.__config_setup1_1.set_lla(
                                        self.__config.get('wan', 'ra_mac'))
                                    self.__config_setup1_1.set_mac_ceRouter(
                                        pkt[Ether].src)
                                    self.__sendmsgs.send_icmp_na(
                                        self.__config_setup1_1)

                        else:
                            self.__packet_sniffer_wan.stop()
                            if self.__fail_test:
                                return False
                            else:
                                return True
        self.__packet_sniffer_wan.stop()
        return False
コード例 #15
0
ファイル: test163a.py プロジェクト: ronyjah/tcc_ronaldo
    def run(self):
        @self.__app.route("/LAN", methods=['GET'])
        def envia_lan():

            return self.get_status_lan()

        @self.__app.route("/WAN", methods=['GET'])
        def enviawan():

            return self.get_status()

        self.__packet_sniffer_wan = PacketSniffer('test163a', self.__queue_wan,
                                                  self, self.__config,
                                                  self.__wan_device_tr1)
        self.__packet_sniffer_wan.start()
        self.set_flags()
        logging.info(self.__test_desc)
        t_test = 0

        time_over = False

        t_test1 = 0
        t_test2 = 0

        cache_wan = []
        while not self.__queue_wan.full():
            while self.__queue_wan.empty():
                if t_test < 120:
                    time.sleep(1)
                    t_test = t_test + 1
                    if t_test % 20 == 0:
                        logging.info(
                            'WAN: Tempo limite de teste 120 seg. Tempo atual: '
                            + str(t_test))
                        self.set_status(
                            'WAN: Tempo limite de teste 120 seg. Tempo atual:  '
                            + str(t_test))
                else:
                    self.__packet_sniffer_wan.stop()
                    logging.info(
                        'Reprovado: Teste 1.6.3b- TImeout NAO RECEBEU DHCP SOLICIT'
                    )
                    self.set_status(
                        'Reprovado: Teste 1.6.3b TImeout NAO RECEBEU DHCP SOLICIT'
                    )
                    time.sleep(2)
                    self.set_status(
                        'REPROVADO'
                    )  # Mensagem padrão para o frontEnd atualizar Status
                    return False

            pkt = self.__queue_wan.get()
            cache_wan.append(pkt)
            wrpcap("wan-1.6.3a.cap", cache_wan)

            if not self.__config_setup1_1.get_setup1_1_OK():
                logging.info('WAN: Setup 1.1 em execução')
                self.set_status('WAN: Setup 1.1 em execução')
                if not self.__config_setup1_1.get_disapproved():
                    self.__config_setup1_1.run_setup1_1(pkt)
                else:
                    logging.info(
                        'WAN: Reprovado Teste 1.6.3a - Falha em completar o setup 1.1'
                    )
                    self.set_status(
                        'Reprovado Teste 1.6.3a - Falha em completar o setup 1.1'
                    )
                    time.sleep(2)
                    self.set_status(
                        'REPROVADO'
                    )  # Mensagem padrão para o frontEnd atualizar Status
                    self.__packet_sniffer_wan.stop()
                    return False

            if self.__config_setup1_1.get_ND_local_OK():
                if pkt.haslayer(DHCP6_Solicit):
                    self.__packet_sniffer_wan.stop()
                    logging.info(
                        'Aprovado Teste 1.6.3.a: Recebido Mensagem DHCPv6 Solicit'
                    )
                    self.set_status(
                        'Aprovado Teste 1.6.3.a: Recebido Mensagem DHCPv6 Solicit'
                    )
                    time.sleep(2)
                    self.set_status(
                        'APROVADO'
                    )  # Mensagem padrão para o frontEnd atualizar Status
                    return True

        self.__packet_sniffer_wan.stop()
        return True
コード例 #16
0
    def run(self):
        @self.__app.route("/LAN", methods=['GET'])
        def envia_lan():

            return self.get_status_lan()

        @self.__app.route("/WAN", methods=['GET'])
        def enviawan():

            return self.get_status()

        self.__packet_sniffer_wan = PacketSniffer('test161', self.__queue_wan,
                                                  self, self.__config,
                                                  self.__wan_device_tr1)

        self.__packet_sniffer_wan.start()
        # logging.info('Task Desc')
        logging.info(self.__test_desc)
        t_test = 0
        time_over = False
        t_test1 = 0
        t_test2 = 0

        cache_wan = []
        self.set_flags()
        self.__config_setup1_1.set_ra2()
        while not self.__queue_wan.full():
            while self.__queue_wan.empty():
                if t_test < 120:
                    time.sleep(1)
                    t_test = t_test + 1
                    if t_test % 20 == 0:
                        logging.info(
                            'WAN: Tempo limite de teste 120 seg. Tempo atual: '
                            + str(t_test))
                        self.set_status(
                            'WAN: Tempo limite de teste 120 seg. Tempo atual:  '
                            + str(t_test))
                    if t_test % 6 == 0 and self.__config_setup1_1.get_setup1_1_OK(
                    ):
                        self.set_status(
                            'WAN: Enviando ECHO REQUEST IP global do roteador')
                        logging.info(
                            'WAN: Enviando ECHO REQUEST IP global do roteador')
                        self.send_echo_request_global()
                else:
                    self.__packet_sniffer_wan.stop()
                    logging.info('Reprovado: Teste 1.6.2a- TImeout')
                    self.set_status('Reprovado: Teste 1.6.2a TImeout')
                    time.sleep(2)
                    self.set_status(
                        'REPROVADO'
                    )  # Mensagem padrão para o frontEnd atualizar Status
                    return False
            pkt = self.__queue_wan.get()
            cache_wan.append(pkt)
            wrpcap("wan-1.6.3a.cap", cache_wan)

            if not self.__config_setup1_1.get_setup1_1_OK():
                logging.info('WAN: Setup 1.1 em execução')
                self.set_status('WAN: Setup 1.1 em execução')
                if not self.__config_setup1_1.get_disapproved():
                    self.__config_setup1_1.run_setup1_1(pkt)
                else:
                    logging.info(
                        'WAN: Reprovado Teste 1.6.2a - Falha em completar o setup 1.1'
                    )
                    self.set_status(
                        'Reprovado Teste 1.6.2a - Falha em completar o setup 1.1'
                    )
                    time.sleep(2)
                    self.set_status(
                        'REPROVADO'
                    )  # Mensagem padrão para o frontEnd atualizar Status
                    self.__packet_sniffer_wan.stop()
                    return False
            else:
                if pkt.haslayer(ICMPv6ND_NS):
                    if pkt[ICMPv6ND_NS].tgt == self.__config.get(
                            'wan', 'global_wan_addr'):
                        ##print('LOOP NS')
                        ##print(pkt[ICMPv6ND_NS].tgt)
                        #if not send_na_lan:
                        self.set_status(
                            'WAN: Enviando resposta ao NS com ICMP NA global')
                        logging.info(
                            'WAN: Enviando resposta ao NS com ICMP NA global')

                        self.__config_setup1_1.set_ipv6_src(
                            self.__config.get('wan', 'global_wan_addr'))
                        self.__config_setup1_1.set_ether_src(
                            self.__config.get('wan', 'wan_mac_tr1'))
                        self.__config_setup1_1.set_ether_dst(pkt[Ether].src)
                        self.__config_setup1_1.set_ipv6_dst(pkt[IPv6].src)
                        self.__config_setup1_1.set_tgt(
                            self.__config.get('wan', 'global_wan_addr'))
                        self.__config_setup1_1.set_lla(
                            self.__config.get('wan', 'wan_mac_tr1'))
                        #send_na_lan = True
                        self.__sendmsgs.send_icmp_na(self.__config_setup1_1)

                if pkt.haslayer(ICMPv6EchoReply):
                    mac_dst = pkt[Ether].dst
                    if mac_dst == self.__config.get('wan', 'link_local_mac'):
                        self.__packet_sniffer_wan.stop()
                        logging.info(
                            'Aprovado Teste 1.6.2.a: Recebido Mensagem Echo Reply com MAC do CeRouter em MAC destino'
                        )
                        self.set_status(
                            'Aprovado Teste 1.6.2.a: Recebido Mensagem Echo Reply com MAC do CeRouter em MAC destino'
                        )
                        time.sleep(2)
                        self.set_status(
                            'APROVADO'
                        )  # Mensagem padrão para o frontEnd atualizar Status
                        return True
                    else:
                        self.__packet_sniffer_wan.stop()
                        logging.info(
                            'Reprovado Teste 1.6.2.a: Recebido Mensagem Echo Reply Sem MAC do CeRouter em MAC destino'
                        )
                        self.set_status(
                            'Reprovado Teste 1.6.2.a: Recebido Mensagem Echo Reply Sem MAC do CeRouter em MAC destino'
                        )
                        time.sleep(2)
                        self.set_status(
                            'REPROVADO'
                        )  # Mensagem padrão para o frontEnd atualizar Status
                        return False
        while not self.__queue_wan.empty():

            pkt = self.__queue_wan.get()

        self.__packet_sniffer_wan.stop()

        return True
コード例 #17
0
    def run(self):
        @self.__app.route("/LAN", methods=['GET'])
        def envia_lan():

            return self.get_status_lan()

        @self.__app.route("/WAN", methods=['GET'])
        def enviawan():

            return self.get_status()

        self.__packet_sniffer_wan = PacketSniffer('test163b', self.__queue_wan,
                                                  self, self.__config,
                                                  self.__wan_device_tr1)

        self.__packet_sniffer_wan.start()
        self.set_flags()
        logging.info(self.__test_desc)
        t_test = 0
        sent_reconfigure = False
        time_over = False

        t_test1 = 0
        t_test2 = 0

        cache_wan = []

        while not self.__queue_wan.full():
            while self.__queue_wan.empty():
                if sent_reconfigure:
                    if t_test2 < 3:
                        time.sleep(1)
                        t_test2 = t_test2 + 1
                    else:
                        time_over = True
                if t_test < 120:
                    time.sleep(1)
                    t_test = t_test + 1
                    if t_test % 20 == 0:
                        logging.info(
                            'WAN: Tempo limite de teste 120 seg. Tempo atual: '
                            + str(t_test))
                        self.set_status(
                            'WAN: Tempo limite de teste 120 seg. Tempo atual:  '
                            + str(t_test))
                else:
                    self.__packet_sniffer_wan.stop()
                    logging.info('Reprovado: Teste 1.6.3b- TImeout')
                    self.set_status('Reprovado: Teste 1.6.3b TImeout')
                    time.sleep(2)
                    self.set_status(
                        'REPROVADO'
                    )  # Mensagem padrão para o frontEnd atualizar Status
                    return False
            pkt = self.__queue_wan.get()
            cache_wan.append(pkt)
            wrpcap("wan-1.6.3b.cap", cache_wan)

            if not self.__config_setup1_1.get_setup1_1_OK():
                logging.info('WAN: Setup 1.1 em execução')
                self.set_status('WAN: Setup 1.1 em execução')
                if not self.__config_setup1_1.get_disapproved():
                    self.__config_setup1_1.run_setup1_1(pkt)

                else:
                    logging.info(
                        'WAN: Reprovado Teste 1.6.3b - Falha em completar o setup 1.1'
                    )
                    self.set_status(
                        'Reprovado Teste 1.6.3b - Falha em completar o setup 1.1'
                    )
                    time.sleep(2)
                    self.set_status(
                        'REPROVADO'
                    )  # Mensagem padrão para o frontEnd atualizar Status
                    self.__packet_sniffer_wan.stop()
                    return False

                #self.__config_setup1_1.run_setup1_1(pkt)
            else:

                # self.__config_setup1_1.set_xid()
                if pkt.haslayer(DHCP6_Renew):

                    logging.info(pkt.show())

                    self.__packet_sniffer_wan.stop()
                    logging.info(
                        'Aprovado: Teste 1.6.3.b. recebeu DHCP Renew apos DHCP Reconfigure'
                    )
                    self.set_status(
                        'Aprovado: Teste 1.6.3.b. recebeu DHCP Renew apos DHCP Reconfigure'
                    )
                    time.sleep(2)
                    self.set_status(
                        'APROVADO'
                    )  # Mensagem padrão para o frontEnd atualizar Status

                    return True

                elif time_over:

                    if not sent_reconfigure:
                        self.__packet_sniffer_wan.stop()
                        logging.info(
                            'Falha: Teste 1.6.3.b. Tempo finalizado mas Não Enviou DHCP Reconfigure'
                        )
                        self.set_status(
                            'Falha: Teste 1.6.3.b. Tempo finalizado mas Não Enviou DHCP Reconfigure'
                        )
                        time.sleep(2)
                        self.set_status(
                            'REPROVADO'
                        )  # Mensagem padrão para o frontEnd atualizar Status

                        return False
                    else:
                        self.__packet_sniffer_wan.stop()
                        logging.info(
                            'Falha: Teste 1.6.3.b. Tempo finalizado mas Não Recebeu Renew'
                        )
                        self.set_status(
                            'Falha: Teste 1.6.3.b. Tempo finalizado mas Não Recebeu Renew'
                        )
                        time.sleep(2)
                        self.set_status(
                            'REPROVADO'
                        )  # Mensagem padrão para o frontEnd atualizar Status

                        return False

                if not sent_reconfigure:
                    time.sleep(3)
                    logging.info('WAN: Envio de DHCP6 reconfigure')
                    self.set_status('WAN:  - Envio de DHCP6 reconfigure')
                    self.__config_setup1_1.set_ipv6_src(
                        self.__config.get('wan', 'link_local_addr'))

                    self.__config_setup1_1.set_ipv6_dst(
                        self.__config_setup1_1.get_local_addr_ceRouter())

                    self.__config_setup1_1.set_ether_src(
                        self.__config.get('wan', 'link_local_mac'))

                    self.__config_setup1_1.set_ether_dst(
                        self.__config_setup1_1.get_mac_ceRouter())

                    self.__config_setup1_1.set_dhcp_reconf_type(
                        self.__config.get('t1.6.3', 'msg_type'))

                    self.__config_setup1_1.set_udp_sport('547')
                    self.__config_setup1_1.set_udp_dport('546')
                    self.__sendmsgs.send_dhcp_reconfigure(
                        self.__config_setup1_1)

                    sent_reconfigure = True

        self.__packet_sniffer_wan.stop()
        return False
コード例 #18
0
ファイル: test323.py プロジェクト: ronyjah/tcc_ronaldo
    def run(self):
        #self.__t_lan =  Thread(target=self.run_Lan,name='LAN_Thread')
        #self.__t_lan.start()
        @self.__app.route("/WAN", methods=['GET'])
        def enviawan():
            return self.get_status()

        self.__packet_sniffer_wan = PacketSniffer('Test273b-WAN',
                                                  self.__queue_wan, self,
                                                  self.__config,
                                                  self.__wan_device_tr1)
        self.__packet_sniffer_wan.start()

        self.__packet_sniffer_lan = PacketSniffer('Test273b-LAN',
                                                  self.__queue_lan, self,
                                                  self.__config,
                                                  self.__lan_device)
        #test_lan = self.__packet_sniffer_lan.start()
        self.__config_setup1_1.set_ra2()
        self.set_flags()
        logging.info(self.__test_desc)
        t_test = 0
        time1 = 0
        sent_reconfigure = False
        time_over = False
        start_time_count = False
        finish_wan = False
        part1_OK = False
        cache_wan = []
        self.__config_setup1_1.set_pd_prefixlen(
            self.__config.get('t3.2.3a', 'pd_prefixlen'))
        self.__config_setup1_1.set_routerlifetime(
            self.__config.get('t3.2.3a', 'routerlifetime'))
        while not self.__queue_wan.full():
            if self.__queue_wan.empty():
                if t_test <= 300:
                    time.sleep(1)
                    t_test = t_test + 1
                    if t_test % 10 == 0:
                        self.rourter_advertise()
                        #self.ping()

                    if start_time_count:
                        if time1 < 600:
                            time1 = time1 + 1
                            # print('imprimindo relogio')
                            # print(time1)
                            #if time1 % 5 == 0:
                            #self.ping()

                else:
                    time_over = True
            else:
                pkt = self.__queue_wan.get()
                cache_wan.append(pkt)
                wrpcap("WAN-3.2.4.cap", cache_wan)
                if not self.__config_setup1_1.get_ND_local_OK():

                    if pkt[Ether].src == self.__config.get(
                            'wan', 'link_local_mac'):
                        print('ND_LOCAL,continue')
                        continue

                    if pkt[Ether].src == self.__config.get('wan', 'ra_mac'):
                        print('ND_LOCAL-A,continue')
                        continue

                    if pkt.haslayer(ICMPv6ND_RS):

                        if pkt[Ether].src == self.__config.get(
                                'wan', 'link_local_mac'):
                            print('RS,continue')
                            continue

                        if pkt[Ether].src == self.__config.get(
                                'wan', 'ra_mac'):
                            print('RS-A,continue')
                            continue

                        self.__config_setup1_1.set_local_addr_ceRouter(
                            pkt[IPv6].src)
                        self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)
                        #self.__config_setup1_1.set_ND_local_OK()

                    if pkt.haslayer(DHCP6_Solicit):
                        if pkt[Ether].src == self.__config.get(
                                'wan', 'link_local_mac'):
                            print('solicit,continue')
                            continue

                        if pkt[Ether].src == self.__config.get(
                                'wan', 'ra_mac'):
                            print('solicitA,continue')
                            continue
                        self.__config_setup1_1.set_local_addr_ceRouter(
                            pkt[IPv6].src)
                        self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)
                        #self.__config_setup1_1.set_ND_local_OK()

                if pkt.haslayer(ICMPv6ND_NS):

                    if pkt[ICMPv6ND_NS].tgt == self.__config.get(
                            'wan', 'global_wan_addr'):
                        self.neighbor_advertise_global(pkt)

                    if pkt[ICMPv6ND_NS].tgt == self.__config.get(
                            'wan', 'link_local_addr'):
                        self.neighbor_advertise_local(pkt)

                #pkt = self.__queue_wan.get()
                if not self.__config_setup1_1.get_setup1_1_OK():
                    print('test1')
                    if not self.__config_setup1_1.get_disapproved():
                        print('test2')
                        self.__config_setup1_1.run_setup1_1(pkt)
                        print('test3')
                        if pkt.haslayer(ICMPv6ND_RS):

                            if pkt[Ether].src == self.__config.get(
                                    'wan', 'link_local_mac'):
                                print('RS-2,continue')
                                continue
                            if pkt[Ether].src == self.__config.get(
                                    'wan', 'ra_mac'):
                                print('RS-2A,continue')
                                continue
                            print('test4')
                            #self.__config_setup1_1.set_ND_local_OK()
                            self.__config_setup1_1.set_local_addr_ceRouter(
                                pkt[IPv6].src)
                            self.__config_setup1_1.set_mac_ceRouter(
                                pkt[Ether].src)
                            self.__config_setup1_1.set_ether_src(
                                self.__config.get('wan', 'ra_mac'))
                            self.__config_setup1_1.set_ether_dst(
                                self.__config.get('multicast',
                                                  'all_mac_nodes'))
                            self.__config_setup1_1.set_ipv6_src(
                                self.__config.get('wan', 'ra_address'))
                            self.__config_setup1_1.set_ipv6_dst(
                                self.__config.get('multicast',
                                                  'all_nodes_addr'))
                            self.__sendmsgs.send_tr1_RA2(
                                self.__config_setup1_1)

                    else:
                        logging.info(
                            'Reprovado Teste 2.7.3b - Falha em completar o Common Setup 1.1 da RFC'
                        )
                        self.__packet_sniffer_wan.stop()
                        return False

                else:

                    if not self.__finish_wan:
                        start_time_count = True
                        if time1 < 50:
                            self.ping()

                            if pkt.haslayer(ICMPv6ND_NS):
                                if pkt[ICMPv6ND_NS].tgt == self.__config.get(
                                        'wan', 'global_wan_addr'):
                                    print('glboal')
                                    self.neighbor_advertise_global(pkt)

                                if pkt[ICMPv6ND_NS].tgt == self.__config.get(
                                        'wan', 'ra_address'):
                                    print('local')
                                    self.__config_setup1_1.set_ipv6_src(
                                        self.__config.get('wan', 'ra_address'))
                                    self.__config_setup1_1.set_ether_src(
                                        self.__config.get('wan', 'ra_mac'))
                                    self.__config_setup1_1.set_ether_dst(
                                        pkt[Ether].src)
                                    self.__config_setup1_1.set_ipv6_dst(
                                        pkt[IPv6].src)
                                    self.__config_setup1_1.set_tgt(
                                        self.__config.get('wan', 'ra_address'))
                                    self.__config_setup1_1.set_lla(
                                        self.__config.get('wan', 'ra_mac'))
                                    self.__config_setup1_1.set_mac_ceRouter(
                                        pkt[Ether].src)
                                    self.__sendmsgs.send_icmp_na(
                                        self.__config_setup1_1)

                            if pkt.haslayer(ICMPv6DestUnreach):
                                self.__packet_sniffer_wan.stop()
                                self.__packet_sniffer_lan.stop()
                                logging.info(
                                    'Teste 3.7.2a - APROVADO. Não passou pacotes da LAN para WAN devido ao RouterLife time estar zerado'
                                )
                                return True

                            #if time1 % 5 == 0:
                            #self.ping()
                            # if part1_OK == False:
                            #     if pkt.haslayer(ICMPv6EchoRequest):

                            #     #logging.info('Reprovado Teste 2.7.3a - Recebido ICMPv6EchoRequest na WAN sendo que Routerlifime anunciado é zero')
                            #         part1_OK = True

                            # if self.part2_lan_start:
                            #     if pkt.haslayer(ICMPv6EchoRequest):
                            #         logging.info('Reprovado Teste 2.7.3a - Recebido ICMPv6EchoRequest na WAN sendo que Routerlifime anunciado é zero')
                            #         self.__packet_sniffer_wan.stop()
                            #         self.__packet_sniffer_lan.stop()
                            #         self.__finish_wan = True
                            #         self.__fail_test = False
                            #         return False
                            # if part1_OK and not self.part2_lan_start:
                            #     print('enviado1')
                            #     self.__config_setup1_1.set_routerlifetime('0')
                            #     self.__config_setup1_1.set_reachabletime('0')
                            #     self.__config_setup1_1.set_retranstimer('0')

                            #     self.__sendmsgs.send_tr1_RA2(self.__config_setup1_1)
                            #     print('limpando')
                            #     while not self.stop_ping_OK:
                            #         time.sleep(1)
                            #         print('aguardando terminar')

                            #     time.sleep(10)
                            #     while not self.__queue_wan.empty():
                            #         self.__queue_wan.get()

                            #     print('enviando 3')
                            #     for x in range(3):
                            #         time.sleep(1)
                            #         x = x+1
                            #         self.__sendmsgs.send_tr1_RA2(self.__config_setup1_1)
                            #     self.part2_lan_start = True

                            # if pkt.haslayer(ICMPv6ND_NS):
                            #     if pkt[ICMPv6ND_NS].tgt == self.__config.get('t3.2.3a','tn3_ip'):
                            #         print('glboal')
                            #         self.neighbor_advertise_global_tn3(pkt)

                            #     if pkt[ICMPv6ND_NS].tgt == self.__config.get('wan','ra_address'):
                            #         print('local')
                            #         self.__config_setup1_1.set_ipv6_src(self.__config.get('wan','ra_address'))
                            #         self.__config_setup1_1.set_ether_src(self.__config.get('wan','ra_mac'))
                            #         self.__config_setup1_1.set_ether_dst(pkt[Ether].src)
                            #         self.__config_setup1_1.set_ipv6_dst(pkt[IPv6].src)
                            #         self.__config_setup1_1.set_tgt(self.__config.get('wan','ra_address'))
                            #         self.__config_setup1_1.set_lla(self.__config.get('wan','ra_mac'))
                            #         self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)
                            #         self.__sendmsgs.send_icmp_na(self.__config_setup1_1)

                        else:
                            self.__packet_sniffer_wan.stop()
                            self.__packet_sniffer_lan.stop()
                            logging.info(
                                'Teste 3.7.3 - Reprovado. Time out sem mensagem Unreacheable'
                            )
                            return True
                    else:
                        self.__packet_sniffer_wan.stop()
                        if self.__fail_test:
                            return False
                        else:
                            return True
        self.__packet_sniffer_wan.stop()
        return False
コード例 #19
0
ファイル: test321b.py プロジェクト: ronyjah/rfc
    def run(self):
        self.__t_lan =  Thread(target=self.run_Lan,name='LAN_Thread')
        self.__t_lan.start()
        
        self.__packet_sniffer_wan = PacketSniffer('Test273b-WAN',self.__queue_wan,self,self.__config,self.__wan_device_tr1)
        self.__packet_sniffer_wan.start()
        
        self.__packet_sniffer_lan = PacketSniffer('Test273b-LAN',self.__queue_lan,self,self.__config,self.__lan_device)
        test_lan = self.__packet_sniffer_lan.start()
        self.__config_setup1_1.set_ra2()
        self.set_flags()
        logging.info(self.__test_desc)
        t_test = 0
        time1 = 0
        sent_reconfigure = False
        time_over = False

        finish_wan = True
        self.__config_setup1_1.set_pd_prefixlen(self.__config.get('t3.2.1b','pd_prefixlen')) 
        self.__config_setup1_1.set_routerlifetime(self.__config.get('t3.2.1b','routerlifetime')) 
        while not self.__queue_wan.full():
            if self.__queue_wan.empty():
                if t_test <= 50:
                    time.sleep(1)
                    t_test = t_test + 1
                    if t_test % 10 == 0:
                        #self.rourter_advertise()
                        self.ping()
                        
                else:
                    time_over = True      
            else:
                pkt = self.__queue_wan.get()

                if not self.__config_setup1_1.get_ND_local_OK():

                    if pkt[Ether].src == self.__config.get('wan','link_local_mac'):
                        print('ND_LOCAL,continue')
                        continue

                    if pkt[Ether].src == self.__config.get('wan','ra_mac'):
                        print('ND_LOCAL-A,continue')                        
                        continue


                    if pkt.haslayer(ICMPv6ND_RS):
                  
                        if pkt[Ether].src == self.__config.get('wan','link_local_mac'):
                            print('RS,continue')         
                            continue

                        if pkt[Ether].src == self.__config.get('wan','ra_mac'):
                            print('RS-A,continue')                                     
                            continue

                        self.__config_setup1_1.set_local_addr_ceRouter(pkt[IPv6].src)
                        self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)    
                        #self.__config_setup1_1.set_ND_local_OK()

                    if pkt.haslayer(DHCP6_Solicit):
                        if pkt[Ether].src == self.__config.get('wan','link_local_mac'):
                            print('solicit,continue')
                            continue

                        if pkt[Ether].src == self.__config.get('wan','ra_mac'):
                            print('solicitA,continue')
                            continue
                        self.__config_setup1_1.set_local_addr_ceRouter(pkt[IPv6].src)
                        self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)
                        #self.__config_setup1_1.set_ND_local_OK()  

                if pkt.haslayer(ICMPv6ND_NS):

                    if pkt[ICMPv6ND_NS].tgt == self.__config.get('wan','global_wan_addr'):
                        self.neighbor_advertise_global(pkt)
                        
                    if pkt[ICMPv6ND_NS].tgt == self.__config.get('wan','link_local_addr'):
                        self.neighbor_advertise_local(pkt)

                if time_over:
                    print('time-over')
                    #pkt = self.__queue_wan.get()
                    if not self.__config_setup1_1.get_setup1_1_OK():
                        print('test1')
                        if not self.__config_setup1_1.get_disapproved():
                            print('test2')
                            self.__config_setup1_1.run_setup1_1(pkt)
                            print('test3')
                            if pkt.haslayer(ICMPv6ND_RS):

                                if pkt[Ether].src == self.__config.get('wan','link_local_mac'):
                                    print('RS-2,continue')         
                                    continue
                                if pkt[Ether].src == self.__config.get('wan','ra_mac'):
                                    print('RS-2A,continue')
                                    continue
                                print('test4')
                                #self.__config_setup1_1.set_ND_local_OK()
                                self.__config_setup1_1.set_local_addr_ceRouter(pkt[IPv6].src)
                                self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)                                 
                                self.__config_setup1_1.set_ether_src(self.__config.get('wan','ra_mac'))
                                self.__config_setup1_1.set_ether_dst(self.__config.get('multicast','all_mac_nodes'))
                                self.__config_setup1_1.set_ipv6_src(self.__config.get('wan','ra_address'))
                                self.__config_setup1_1.set_ipv6_dst(self.__config.get('multicast','all_nodes_addr'))
                                self.__sendmsgs.send_tr1_RA(self.__config_setup1_1)

                        else:
                            logging.info('Reprovado Teste 2.7.3b - Falha em completar o Common Setup 1.1 da RFC')
                            self.__packet_sniffer_wan.stop() 
                            return False

                    else:
                        if not self.__finish_wan:
                            if time1 < 30:
                                time1 = time1 + 1
                                if time1 % 5 == 0: 
                                    self.ping()
                                    

                            if pkt.haslayer(ICMPv6ND_NS):
                                if pkt[ICMPv6ND_NS].tgt == self.__config.get('wan','global_wan_addr'):
                                    print('glboal')
                                    self.neighbor_advertise_global(pkt)

                                if pkt[ICMPv6ND_NS].tgt == self.__config.get('wan','ra_address'):
                                    print('local')
                                    self.__config_setup1_1.set_ipv6_src(self.__config.get('wan','ra_address'))
                                    self.__config_setup1_1.set_ether_src(self.__config.get('wan','ra_mac'))
                                    self.__config_setup1_1.set_ether_dst(pkt[Ether].src)
                                    self.__config_setup1_1.set_ipv6_dst(pkt[IPv6].src)
                                    self.__config_setup1_1.set_tgt(self.__config.get('wan','ra_address'))
                                    self.__config_setup1_1.set_lla(self.__config.get('wan','ra_mac'))
                                    self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)
                                    self.__sendmsgs.send_icmp_na(self.__config_setup1_1)
                                    ##print('LOOP NS')
                                    # ##print(pkt[ICMPv6ND_NS].tgt)
                                    # self.__config_setup1_1.set_ipv6_src(self.__config.get('wan','global_wan_addr'))
                                    # self.__config_setup1_1.set_ether_src(self.__config.get('wan','wan_mac_tr1'))
                                    # self.__config_setup1_1.set_ether_dst(pkt[Ether].src)
                                    # self.__config_setup1_1.set_ipv6_dst(pkt[IPv6].src)
                                    # self.__config_setup1_1.set_tgt(self.__config.get('wan','global_wan_addr'))
                                    # self.__config_setup1_1.set_lla(self.__config.get('wan','wan_mac_tr1'))
                                    # self.__sendmsgs.send_icmp_na(self.__config_setup1_1)
                        else:
                            self.__packet_sniffer_wan.stop()
                            if self.__fail_test:
                                return False
                            else:
                                return True
        self.__packet_sniffer_wan.stop()
        return False
     
        
コード例 #20
0
    def run(self):
        self.__packet_sniffer_wan = PacketSniffer('test166a', self.__queue_wan,
                                                  self, self.__config,
                                                  self.__wan_device_tr1)
        self.__packet_sniffer_wan.start()

        self.set_flags()
        logging.info(self.__test_desc)
        t_test = 0
        sent_reconfigure = False
        time_over = False
        rs_ok = False
        send_ra = False
        send_ns = False
        send_ra2 = False
        while not self.__queue_wan.full():
            while self.__queue_wan.empty():
                if t_test < 60:
                    time.sleep(1)
                    t_test = t_test + 1
                else:
                    time_over = True
            pkt = self.__queue_wan.get()
            #if not self.__ND_local_OK:

            if pkt.haslayer(ICMPv6ND_NS):

                if pkt[ICMPv6ND_NS].tgt == '::':

                    pass
                if pkt[IPv6].src == self.__config.get('wan',
                                                      'link_local_addr'):
                    pass
                if pkt[IPv6].src == self.__config.get('wan',
                                                      'global_wan_addr'):
                    pass
                if pkt[IPv6].src == '::':
                    if pkt[ICMPv6ND_NS].tgt != '::':

                        self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)

                        self.__config_setup1_1.set_local_addr_ceRouter(
                            pkt[ICMPv6ND_NS].tgt)

                        self.__ND_local_OK = True

                    if pkt[ICMPv6ND_NS].tgt != '::' and pkt[IPv6].src != '::':

                        pkt.show()

                    # self.addr_ceRouter = pkt[ICMPv6ND_NS].tgt
                    #     self.mac_ceRouter = pkt[Ether].src
                    #     self.__ND_local_OK = True

            if pkt.haslayer(ICMPv6ND_RS) and not self.__ND_local_OK:
                return False
            else:
                if not send_ns:
                    #self.__sendmsgs.set_flags_common_setup(self.__config_setup1_1)
                    self.__config_setup1_1.set_ether_src(
                        self.__config.get('wan', 'link_local_mac'))
                    self.__config_setup1_1.set_ether_dst(
                        self.__config.get('multicast', 'all_mac_nodes'))
                    self.__config_setup1_1.set_ipv6_src(
                        self.__config.get('wan', 'global_wan_addr'))
                    self.__config_setup1_1.set_ipv6_dst(
                        self.__config.get('multicast', 'all_nodes_addr'))
                    self.__config_setup1_1.set_tgt(
                        self.__config.get('wan', 'link_local_addr'))

                    self.__sendmsgs.send_icmp_ns(self.__config_setup1_1)
                    send_ns = True
                    continue
                if send_ns and not send_ra:
                    self.__config_setup1_1.set_flag_M("1")
                    self.__config_setup1_1.set_flag_O("0")
                    self.__config_setup1_1.set_ether_src(
                        self.__config.get('wan', 'ra_mac'))
                    self.__config_setup1_1.set_ether_dst(
                        self.__config.get('multicast', 'all_mac_nodes'))
                    self.__config_setup1_1.set_ipv6_src(
                        self.__config.get('wan', 'link_local_addr'))
                    self.__config_setup1_1.set_ipv6_dst(
                        self.__config.get('multicast', 'all_nodes_addr'))
                    self.__sendmsgs.send_tr1_RA(self.__config_setup1_1)
                    send_ra = True
                    continue
                    #self.set_ether_dst(pkt[Ether].src)

                if send_ra:
                    if pkt.haslayer(DHCP6_Solicit):
                        if pkt.haslayer(DHCP6OptIA_NA):
                            return True
                        else:
                            return False

            #if pkt.haslayer(DHCP6_Solicit) and send_ra2:

            # print('local addr')
            # print(self.get_local_addr_ceRouter())
            # print('ether dst')
            # print(self.get_ether_dst())
            #self.__ND_local_OK = True
        # if not self.__config_setup1_1.get_setup1_1_OK():

        #   if not self.__config_setup1_1.get_disapproved():
        #       self.__config_setup1_1.run_setup1_1(pkt)
        #    else:
        #       logging.info('Reprovado Teste 1.6.3.c - Falha em completar o Common Setup 1.1 da RFC')
        #        self.__packet_sniffer_wan.stop()
        #       return False

        #else:
        #    self.__config_setup1_1.set_ipv6_src(self.__config.get('wan','link_local_addr'))
        #   self.__config_setup1_1.set_ipv6_dst(self.__config.get('multicast','dhcp_relay_agents_and_servers_addr'))
        #   self.__config_setup1_1.set_ether_src(self.__config.get('wan','link_local_mac'))
        #   self.__config_setup1_1.set_ether_dst(self.__config_setup1_1.get_ether_dst())
        #  self.__config_setup1_1.set_dhcp_reconf_type(self.__config.get('t1.6.3','msg_type'))

        # if pkt.haslayer(DHCP6_Renew):
        #     logging.info('Reprovado Teste 1.6.3.c - Respondeu ao DHCP6 reconfigure incompleto')
        #     logging.info(pkt.show())
        #     self.__packet_sniffer_wan.stop()
        #     return False
        # elif time_over :
        #     if not sent_reconfigure:
        #         self.__packet_sniffer_wan.stop()
        #         logging.info('Falha: Teste 1.6.3.c. Tempo finalizado mas Não Enviou DHCP Reconfigure')

        #         return False
        #     else:
        #         self.__packet_sniffer_wan.stop()
        #         logging.info('Aprovado: Teste 1.6.3.c. Tempo finalizado e não recebeu DHCP Renew em DHCP Reconf adulterado')

        #         return True
        # if not sent_reconfigure:
        #     self.__sendmsgs.send_dhcp_reconfigure_no_auth(self.__config_setup1_1)
        #     sent_reconfigure = True

        # if pkt.haslayer(DHCP6_Solicit):
        #     self.__packet_sniffer_wan.stop()
        #     while not self.__queue_wan.empty():
        #         pkt = self.__queue_wan.get()
        #     return True
        # while not pkt.haslayer(IPv6):
        #     pkt = self.__queue_wan.get()
        self.__packet_sniffer_wan.stop()
        return False
コード例 #21
0
    def run(self):

        @self.__app.route("/LAN",methods=['GET'])
        def envia_lan():

            return self.get_status_lan()

        @self.__app.route("/WAN",methods=['GET'])
        def enviawan():

            return self.get_status()

        self.__packet_sniffer_wan = PacketSniffer('test163d',self.__queue_wan,self,self.__config,self.__wan_device_tr1)
        self.__packet_sniffer_wan.start()
        self.set_flags()
        logging.info(self.__test_desc)
        t_test = 0
        t_test1 = 0
        t_test2 = 0
        sent_reconfigure = False
        time_over = False
        cache_wan = []
        while not self.__queue_wan.full():
            #while self.__queue_wan.empty():

            while self.__queue_wan.empty():
                if sent_reconfigure:
                    if t_test2 < 3:
                        time.sleep(1)
                        t_test2 = t_test2 + 1
                    else:
                        time_over = True
                        logging.info('WAN: Envio de DHCP6 reconfigure com chave falsa ')
                        self.set_status('WAN:  - Envio de DHCP6 reconfigure com chave falsa')
                        self.__config_setup1_1.set_ipv6_src(self.__config.get('wan','link_local_addr'))
                        self.__config_setup1_1.set_ipv6_dst(self.__config.get('multicast','dhcp_relay_agents_and_servers_addr'))
                        self.__config_setup1_1.set_ether_src(self.__config.get('wan','link_local_mac'))
                        self.__config_setup1_1.set_ether_dst(self.__config_setup1_1.get_ether_dst())
                        self.__config_setup1_1.set_dhcp_reconf_type(self.__config.get('t1.6.3','msg_type'))
                        self.__sendmsgs.send_dhcp_reconfigure_wrong(self.__config_setup1_1)
                if t_test < 300:
                    time.sleep(1)
                    t_test = t_test + 1
                    if t_test % 20 == 0:
                        logging.info('WAN: Tempo limite de teste 300 seg. Tempo atual: ' +str(t_test))
                        self.set_status('WAN: Tempo limite de teste 300 seg. Tempo atual:  ' +str(t_test))
                else:
                    self.__packet_sniffer_wan.stop() 
                    logging.info('Reprovado: Teste 1.6.3d- TImeout')
                    self.set_status('Reprovado: Teste 1.6.3d TImeout')
                    time.sleep(2)
                    self.set_status('REPROVADO') # Mensagem padrão para o frontEnd atualizar Status
                    self.__packet_sniffer_wan.stop()
                    return False
            pkt = self.__queue_wan.get()
            cache_wan.append(pkt)
            wrpcap("wan-1.6.3d.cap",cache_wan)
            if not self.__config_setup1_1.get_setup1_1_OK():
                logging.info('WAN: Setup 1.1 em execução')
                self.set_status('WAN: Setup 1.1 em execução') 
                if not self.__config_setup1_1.get_disapproved():
                    self.__config_setup1_1.run_setup1_1(pkt)
                else:
                    logging.info('WAN: Reprovado Teste 1.6.3d - Falha em completar o setup 1.1')
                    self.set_status('Reprovado Teste 1.6.3d - Falha em completar o setup 1.1')
                    time.sleep(2)
                    self.set_status('REPROVADO') # Mensagem padrão para o frontEnd atualizar Status
                    self.__packet_sniffer_wan.stop()
                    return False    
            else: 
                #=============BUG melhorar temporizador ==============
                if t_test1 < 4:
                    logging.info('WAN: Preparando para enviar de DHCP6 reconfigure com chave falsa')
                    self.set_status('WAN:  - Preparando para enviar reconfigure com chave falsa')
                    time.sleep(1)
                    t_test1 = t_test1 + 1
                    continue
                else:
                    if not sent_reconfigure:
                        logging.info('WAN: Envio de DHCP6 reconfigure com chave falsa')
                        self.set_status('WAN:  - Envio de DHCP6 reconfigure com chave falsa')
                        self.__config_setup1_1.set_ipv6_src(self.__config.get('wan','link_local_addr'))
                        self.__config_setup1_1.set_ipv6_dst(self.__config.get('multicast','dhcp_relay_agents_and_servers_addr'))
                        self.__config_setup1_1.set_ether_src(self.__config.get('wan','link_local_mac'))
                        self.__config_setup1_1.set_ether_dst(self.__config_setup1_1.get_ether_dst())
                        self.__config_setup1_1.set_dhcp_reconf_type(self.__config.get('t1.6.3','msg_type'))
                        self.__sendmsgs.send_dhcp_reconfigure_wrong(self.__config_setup1_1)
                        sent_reconfigure = True

                if sent_reconfigure:
                    if pkt.haslayer(DHCP6_Renew):
                        logging.info(pkt.show())
                        logging.info('Reprovado Teste 1.6.3.d - Respondeu ao DHCP6 reconfigure de chave falsa')
                        self.set_status('Reprovado Teste 1.6.3.d - Respondeu ao DHCP6 reconfigure de chave falsa')
                        time.sleep(2)
                        self.set_status('REPROVADO') # Mensagem padrão para o frontEnd atualizar Status
                        self.__packet_sniffer_wan.stop()
                        return False 
                
                if time_over :
                        logging.info('Aprovado: Teste 1.6.3.d. Tempo finalizado e não recebeu DHCP Renew em DHCP Reconf de DHCP server impostor')
                        self.set_status('Aprovado: Teste 1.6.3.d. Tempo finalizado e não recebeu DHCP Renew em DHCP Reconf de DHCP server impostor')
                        time.sleep(2)
                        self.set_status('APROVADO') # Mensagem padrão para o frontEnd atualizar Status
                        self.__packet_sniffer_wan.stop()
                        return True

    
        self.__packet_sniffer_wan.stop()
        return False
     
        
コード例 #22
0
    def run(self):
        @self.__app.route("/WAN", methods=['GET'])
        def enviawan():
            return self.get_status()

        self.__t_lan = Thread(target=self.run_Lan, name='LAN_Thread')
        self.__t_lan.start()

        self.__packet_sniffer_wan = PacketSniffer('Test273b-WAN',
                                                  self.__queue_wan, self,
                                                  self.__config,
                                                  self.__wan_device_tr1)
        self.__packet_sniffer_wan.start()

        self.__packet_sniffer_lan = PacketSniffer('Test273b-LAN',
                                                  self.__queue_lan, self,
                                                  self.__config,
                                                  self.__lan_device)
        test_lan = self.__packet_sniffer_lan.start()
        cache_wan = []
        self.set_flags()
        logging.info(self.__test_desc)
        t_test = 0
        sent_reconfigure = False
        time_over = False
        #time.sleep(11111)
        finish_wan = True
        test_max_time = 300
        temporizador = 0
        self.__config_setup1_1.set_pd_prefixlen(
            self.__config.get('t2.7.6', 'pd_prefixlen'))
        self.__config_setup1_1.set_routerlifetime(
            self.__config.get('t2.7.6', 'routerlifetime'))
        #self.__config_setup1_1.active_DHCP_no_IA_PD()
        while not self.__queue_wan.full():
            while self.__queue_wan.empty():
                time.sleep(1)
                if temporizador < test_max_time:
                    temporizador = temporizador + 1
                else:
                    self.set_status('WAN: Reprovado. Timeout')
                    time.sleep(2)
                    self.set_status('REPROVADO')
                    logging.info('WAN: Reprovado. Timeout')
                    #logging.info(routerlifetime)
                    self.__packet_sniffer_lan.stop()
                    self.__packet_sniffer_wan.stop()
                    return False

                if temporizador % 20 == 0:
                    logging.info('WAN: Tempo limite do teste: ' +
                                 str(test_max_time) + ' segundos. Tempo: ' +
                                 str(temporizador))
                    self.set_status('WAN: Tempo limite do teste: ' +
                                    str(test_max_time) + ' segundos. Tempo: ' +
                                    str(temporizador))

                if temporizador < test_max_time:
                    if temporizador % 15 == 0:
                        self.ra_wan()

            pkt = self.__queue_wan.get()

            cache_wan.append(pkt)
            wrpcap("WAN-2.7.6.cap", cache_wan)

            if not self.__config_setup1_1.get_setup1_1_OK():
                self.set_status('WAN: Setup 1.1 em execução')
                logging.info('WAN: Setup 1.1 em execução')
                if not self.__config_setup1_1.get_disapproved():
                    self.__config_setup1_1.run_setup1_1(pkt)
                else:
                    logging.info(
                        'LAN: Reprovado Teste 2.7.6 - Falha em completar o setup 1.1'
                    )
                    self.set_status_lan(
                        'Reprovado Teste 2.7.6 - Falha em completar o setup 1.1'
                    )
                    time.sleep(2)
                    self.set_status_lan(
                        'REPROVADO'
                    )  # Mensagem padrão para o frontEnd atualizar Status
                    self.__packet_sniffer_lan.stop()
                    self.__finish_wan = True
                    self.__fail_test = True
                    return False

            else:
                if pkt.haslayer(ICMPv6EchoRequest):
                    self.__packet_sniffer_wan.stop()

                    self.set_status(
                        'Teste 2.7.6 - REPROVADO: Pacote ICMP Request com prefixo invalido foi encaminhado pelo roteador da LAN para WAN'
                    )
                    time.sleep(2)
                    self.set_status(
                        'REPROVADO'
                    )  # Mensagem padrão para o frontEnd atualizar Status
                    logging.info(
                        'Teste 2.7.6 - REPROVADO: Pacote ICMP Request com prefixo invalido foi encaminhado pelo roteador da LAN para WAN'
                    )

                    return False
                if self.__finish_wan:
                    self.__packet_sniffer_wan.stop()
                    if self.__fail_test:
                        return False
                    else:
                        return True
        self.__packet_sniffer_wan.stop()
        return False
コード例 #23
0
ファイル: test161.py プロジェクト: ronyjah/rfc
    def run(self):
        #self.__packet_sniffer.c()
        logging.info('Passo1-create Packet sniffer')
        self.__packet_sniffer = PacketSniffer(
            'test161', self.__queue, self, self.__config,
            self.__config.get('lan', 'lan_device'))
        #logging.info('Passo2 - Init')
        #self.__packet_sniffer.init()
        logging.info('Passo3 - Start')
        self.__packet_sniffer.start()
        logging.info('Passo4-Started')
        logging.info(self.__test_desc)
        logging.info('self.__queue_size_inicio')
        logging.info(self.__queue.qsize())
        while self.__taskDone == False:
            #while not self.__queue.full():
            pkt = self.__queue.get()
            self.__queue.task_done()
            # logging.info(pkt[IPv6].src)
            if pkt.haslayer(ICMPv6ND_NS):
                if self.get_result() != False:
                    self.__valid = True
            elif pkt.haslayer(ICMPv6ND_RS) and self.__valid == False:
                self.set_result(False)
                #print('theardoffFalse')
                #self.turn_off_thread()
                # with self.__queue.mutex:
                #     self.__queue.clear()
                #self.__queue.join()
                #return False
                logging.info('self.__queue_size_emptyfail')
                logging.info(self.__queue.qsize())
                if self.__queue.empty():
                    self.set_task_done()
            else:
                logging.info('self.__queue_size_emptysucess')
                logging.info(self.__queue.qsize())
                if self.__queue.empty():
                    self.set_task_done()
                # with self.__queue.mutex:
                #     self.__queue.clear()
                #print('theardofftrue')
                #self.turn_off_thread()
                #self.__queue.join()
                #eturn True

        if self.get_result() == False:
            #time.sleep(2)
            logging.info('Passo3-t161run_sttop-theard fail')
            #time.sleep(2)
            self.__packet_sniffer.stop()
            #time.sleep(2)
            logging.info('self.__queue_size_fim')
            logging.info(self.__queue.qsize())
            #self.__packet_sniffer.join()
            #self.__queue.task_done()
            return False
        else:
            logging.info('Passo4-t161run_sttop-theard success')
            #time.sleep(2)
            self.__packet_sniffer.stop()
            #time.sleep(2)
            logging.info('self.__queue_size_fim')
            logging.info(self.__queue.qsize())

            #self.__packet_sniffer.join()
            #self.__queue.task_done()
            return True
コード例 #24
0
    def run(self):
        @self.__app.route("/WAN",methods=['GET'])
        def enviawan():
            return self.get_status()
        self.__t_lan =  Thread(target=self.run_Lan,name='LAN_Thread')
        self.__t_lan.start()
        
        self.__packet_sniffer_wan = PacketSniffer('Test322b-WAN',self.__queue_wan,self,self.__config,self.__wan_device_tr1)
        self.__packet_sniffer_wan.start()
        
        self.__packet_sniffer_lan = PacketSniffer('Test322b-LAN',self.__queue_lan,self,self.__config,self.__lan_device)
        test_lan = self.__packet_sniffer_lan.start()
        self.__config_setup1_1.set_ra2()
        self.set_flags()
        logging.info(self.__test_desc)
        t_test = 0
        time1 = 0
        sent_reconfigure = False
        time_over = False
        start_time_count = False
        finish_wan = False
        part1_OK = False
        cache_wan = []
        self.__config_setup1_1.set_pd_prefixlen(self.__config.get('t3.2.2b','pd_prefixlen')) 
        self.__config_setup1_1.set_routerlifetime(self.__config.get('t3.2.2b','routerlifetime')) 
        while not self.__queue_wan.full():
            if self.__queue_wan.empty():
                if t_test <= 300:
                    time.sleep(1)
                    t_test = t_test + 1
                    if t_test % 10 == 0:
                        self.set_status('WAN: Enviando ICMP RA periódico')
                        logging.info('WAN: Enviando ICMP RA periódico')
                        self.rourter_advertise()
                    
                    if start_time_count:
                        if time1 < 600:
                            time1 = time1 + 1

                else:
                    time_over = True      
            else:
                pkt = self.__queue_wan.get()
                cache_wan.append(pkt)
                wrpcap("WAN-3.2.2b.cap",cache_wan)
                if not self.__config_setup1_1.get_ND_local_OK():
                    if pkt[Ether].src == self.__config.get('wan','link_local_mac'):
                        continue

                    if pkt[Ether].src == self.__config.get('wan','ra_mac'):
                        continue

                    if pkt.haslayer(ICMPv6ND_RS):            
                        if pkt[Ether].src == self.__config.get('wan','link_local_mac'):       
                            continue

                        if pkt[Ether].src == self.__config.get('wan','ra_mac'):                                    
                            continue

                        self.__config_setup1_1.set_local_addr_ceRouter(pkt[IPv6].src)
                        self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)    

                    if pkt.haslayer(DHCP6_Solicit):
                        if pkt[Ether].src == self.__config.get('wan','link_local_mac'):
                            continue

                        if pkt[Ether].src == self.__config.get('wan','ra_mac'):
                            continue
                        self.__config_setup1_1.set_local_addr_ceRouter(pkt[IPv6].src)
                        self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)
 

                if pkt.haslayer(ICMPv6ND_NS):
                    if pkt[ICMPv6ND_NS].tgt == self.__config.get('wan','global_wan_addr'):
                        self.set_status('WAN: Enviando resposta ao NS com ICMP NA global')
                        logging.info('WAN: Enviando resposta ao NS com ICMP NA global')
                        self.neighbor_advertise_global(pkt)
                        
                    if pkt[ICMPv6ND_NS].tgt == self.__config.get('wan','link_local_addr'):
                        self.set_status('WAN: Enviando resposta ao NS com ICMP NA local')
                        logging.info('WAN: Enviando resposta ao NS com ICMP NA local')
                        self.neighbor_advertise_local(pkt)

                if not self.__config_setup1_1.get_setup1_1_OK():
                    self.set_status('WAN: Setup 1.1 em execução')
                    logging.info('WAN: Setup 1.1 em execução')
                    if not self.__config_setup1_1.get_disapproved():

                        self.__config_setup1_1.run_setup1_1(pkt)

                        if pkt.haslayer(ICMPv6ND_RS):

                            if pkt[Ether].src == self.__config.get('wan','link_local_mac'):
        
                                continue
                            if pkt[Ether].src == self.__config.get('wan','ra_mac'):

                                continue
                            self.set_status('WAN: Enviando ICMP RA com Routerlifetime maior que zero')
                            logging.info('WAN: Enviando ICMP RA com Routerlifetime maior que zero')
                            self.__config_setup1_1.set_local_addr_ceRouter(pkt[IPv6].src)
                            self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)                                 
                            self.__config_setup1_1.set_ether_src(self.__config.get('wan','ra_mac'))
                            self.__config_setup1_1.set_ether_dst(self.__config.get('multicast','all_mac_nodes'))
                            self.__config_setup1_1.set_ipv6_src(self.__config.get('wan','ra_address'))
                            self.__config_setup1_1.set_ipv6_dst(self.__config.get('multicast','all_nodes_addr'))
                            self.__sendmsgs.send_tr1_RA2(self.__config_setup1_1)

                    else:
                        logging.info('Reprovado Teste 3.2.2b - Falha em completar o Common Setup 1.1 da RFC')
                        self.__packet_sniffer_wan.stop() 
                        return False

                else:

                    if not self.__finish_wan:
                        start_time_count = True
                        if time1 < 50:

                            if part1_OK == False:
                                if pkt.haslayer(ICMPv6EchoRequest):
                                    self.set_status('WAN: Parte 1 concluida com quando Router Lifetime Maior que zero')
                                    logging.info('WAN: Parte 1 concluida com quando Router Lifetime Maior que zero')
                                
                                    part1_OK = True

                            if self.part2_lan_start:
                                if pkt.haslayer(ICMPv6EchoRequest):
                                    self.set_status('Reprovado Teste 3.2.2b - Recebido ICMPv6EchoRequest na WAN sendo que Routerlifime anunciado é zero')
                                    time.sleep(2)
                                    self.set_status('REPROVADO') # Mensagem padrão para o frontEnd atualizar Status
                                    logging.info('Reprovado Teste 3.2.2b - Recebido ICMPv6EchoRequest na WAN sendo que Routerlifime anunciado é zero')
                                    self.__packet_sniffer_wan.stop() 
                                    self.__packet_sniffer_lan.stop()
                                    self.__finish_wan = True 
                                    self.__fail_test = False
                                    return False

                            if part1_OK and not self.part2_lan_start:
                                #print('enviado1')
                                
                                self.__config_setup1_1.set_routerlifetime('0')
                                self.__config_setup1_1.set_reachabletime('0')
                                self.__config_setup1_1.set_retranstimer('0') 

                                self.__sendmsgs.send_tr1_RA2(self.__config_setup1_1)
                                #print('limpando')
                                while not self.stop_ping_OK:
                                    time.sleep(1)
                                    #print('aguardando terminar')
                                logging.info('WAN: Aguardando cessar mensagens Echo Request na LAN para iniciar Captura da parte 2 de ICMP RA com Router Lifetime igual zero')
                                
                                self.set_status('WAN: Aguardando cessar mensagens Echo Request na LAN para iniciar Captura da parte 2 de ICMP RA com Router Lifetime igual zero')
                                time.sleep(10)
                                while not self.__queue_wan.empty():
                                    self.__queue_wan.get()
                                
                                #print('enviando 3')
                                logging.info('WAN: Enviando ICMP RA com Router Lifetime igual a zero')
                                self.set_status('WAN: Enviando ICMP RA com Router Lifetime igual a zero')
                                for x in range(3):
                                    time.sleep(1)
                                    x = x+1
                                    self.__sendmsgs.send_tr1_RA2(self.__config_setup1_1)
                                self.part2_lan_start = True

                            if pkt.haslayer(ICMPv6ND_NS):
                                if pkt[ICMPv6ND_NS].tgt == self.__config.get('t3.2.2b','tn3_ip'):
                                    #print('glboal')
                                    logging.info('WAN: Solicitado NS com target TN3. Enviado NA do TN3')
                                    self.set_status('WAN: Solicitado NS com target TN3. Enviado NA do TN3')
                                    self.neighbor_advertise_global_tn3(pkt)

                                if pkt[ICMPv6ND_NS].tgt == self.__config.get('wan','ra_address'):
                                    #print('local')
                                    logging.info('WAN: Recebido ICMP NS do TN1. Enviando Resposta ICMP NA do TN1')
                                    self.set_status('WAN: Recebido ICMP NS do TN1. Enviando Resposta ICMP NA do TN1')
                                    self.__config_setup1_1.set_ipv6_src(self.__config.get('wan','ra_address'))
                                    self.__config_setup1_1.set_ether_src(self.__config.get('wan','ra_mac'))
                                    self.__config_setup1_1.set_ether_dst(pkt[Ether].src)
                                    self.__config_setup1_1.set_ipv6_dst(pkt[IPv6].src)
                                    self.__config_setup1_1.set_tgt(self.__config.get('wan','ra_address'))
                                    self.__config_setup1_1.set_lla(self.__config.get('wan','ra_mac'))
                                    self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)
                                    self.__sendmsgs.send_icmp_na(self.__config_setup1_1)
                                    
                        else:            
                            self.__packet_sniffer_wan.stop() 
                            self.__packet_sniffer_lan.stop()
                            self.set_status('Teste 3.2.2b - APROVADO. Não passou pacotes da LAN para WAN após envio do RouterLifetime igual a zero')
                            time.sleep(2)
                            self.set_status('APROVADO')
                            logging.info('Teste 3.2.2b - APROVADO. Não passou pacotes da LAN para WAN após reconfiguração do RouterLifetime zero')
                            return True        
                    else:
                        self.__packet_sniffer_wan.stop()
                        if self.__fail_test:
                            return False
                        else:
                                return True
        self.__packet_sniffer_wan.stop()
        return False
     
        
コード例 #25
0
ファイル: test273b.py プロジェクト: ronyjah/tcc_ronaldo
    def run(self):
        @self.__app.route("/WAN",methods=['GET'])
        def enviawan():
            return self.get_status()
        self.__t_lan =  Thread(target=self.run_Lan,name='LAN_Thread')
        self.__t_lan.start()
        
        self.__packet_sniffer_wan = PacketSniffer('Test273b-WAN',self.__queue_wan,self,self.__config,self.__wan_device_tr1)
        self.__packet_sniffer_wan.start()
        
        self.__packet_sniffer_lan = PacketSniffer('Test273b-LAN',self.__queue_lan,self,self.__config,self.__lan_device)
        test_lan = self.__packet_sniffer_lan.start()
        cache_wan = []
        self.set_flags()
        logging.info(self.__test_desc)
        t_test = 0
        sent_reconfigure = False
        time_over = False

        test_max_time = 300
        temporizador = 0 
        self.__config_setup1_1.set_pd_prefixlen(self.__config.get('t2.7.3b','pd_prefixlen')) 
        self.__config_setup1_1.set_routerlifetime(self.__config.get('t2.7.3b','routerlifetime')) 
        while not self.__queue_wan.full():
            while self.__queue_wan.empty():
                time.sleep(1)

                if temporizador < test_max_time:
                    temporizador = temporizador + 1
                else:
                    self.set_status('WAN: Reprovado. Timeout')
                    time.sleep(2)
                    self.set_status('REPROVADO')
                    logging.info('WAN: Reprovado. Timeout')
                    #logging.info(routerlifetime)
                    self.__packet_sniffer_lan.stop()
                    self.__packet_sniffer_wan.stop()
                    return False  

                if temporizador % 10 ==0:
                    logging.info('WAN: Envio de RA periódico')
                    self.set_status('WAN: Envio de RA periódico')                        
                    self.ra_wan()
                    

            pkt = self.__queue_wan.get()

            cache_wan.append(pkt)
            wrpcap("WAN-2.7.3b.cap",cache_wan)
            
            if not self.__config_setup1_1.get_setup1_1_OK():
                logging.info('WAN: Setup 1.1 em execução')
                self.set_status('WAN: Setup 1.1 em execução') 
                if not self.__config_setup1_1.get_disapproved():
                    self.__config_setup1_1.run_setup1_1(pkt)
                else:
                    logging.info('WAN: Reprovado Teste 2.7.3b - Falha em completar o setup 1.1')
                    self.set_status('WAN: Reprovado Teste 2.7.3b - Falha em completar o setup 1.1')
                    time.sleep(2)
                    self.set_status('REPROVADO') # Mensagem padrão para o frontEnd atualizar Status
                    self.__packet_sniffer_lan.stop()
                    self.__finish_wan = True
                    self.__fail_test = True 

            else:
                logging.info('WAN: Setup 1.1 Concluido')
                self.set_status('WAN: Setup 1.1 Concluido') 
                if self.__finish_wan: 
                    self.__packet_sniffer_wan.stop()
                    if self.__fail_test:
                        return False
                    else:
                        return True
  
        self.__packet_sniffer_wan.stop()
        return False
     
        
コード例 #26
0
ファイル: test323b.py プロジェクト: ronyjah/tcc_ronaldo
    def run(self):
        self.__t_lan = Thread(target=self.run_Lan, name='LAN_Thread')
        self.__t_lan.start()

        @self.__app.route("/WAN", methods=['GET'])
        def enviawan():
            return self.get_status()

        self.__packet_sniffer_wan = PacketSniffer('Test323a-WAN',
                                                  self.__queue_wan, self,
                                                  self.__config,
                                                  self.__wan_device_tr1)
        self.__packet_sniffer_wan.start()

        self.__packet_sniffer_lan = PacketSniffer('Test323a-LAN',
                                                  self.__queue_lan, self,
                                                  self.__config,
                                                  self.__lan_device)
        test_lan = self.__packet_sniffer_lan.start()
        self.__config_setup1_1.set_ra2()
        self.set_flags()
        logging.info(self.__test_desc)
        t_test = 0
        time1 = 0
        sent_reconfigure = False
        time_over = False
        start_time_count = False
        finish_wan = False
        part1_OK = False
        cache_wan = []
        self.__config_setup1_1.set_pd_prefixlen(
            self.__config.get('t3.2.3b', 'pd_prefixlen'))
        self.__config_setup1_1.set_routerlifetime(
            self.__config.get('t3.2.3b', 'routerlifetime'))
        while not self.__queue_wan.full():
            if self.__queue_wan.empty():
                if t_test <= 300:
                    time.sleep(1)
                    t_test = t_test + 1
                    if t_test % 10 == 0:
                        self.set_status(
                            'WAN: Transmissão de ICMP RA periódico')
                        logging.info('WAN: Transmissão de ICMP RA periódico')
                        self.rourter_advertise()

                    if start_time_count:
                        time1 = time1 + 1
                else:
                    time_over = True
            else:
                pkt = self.__queue_wan.get()
                cache_wan.append(pkt)
                wrpcap("WAN-3.2.3b.cap", cache_wan)
                if not self.__config_setup1_1.get_ND_local_OK():

                    if pkt[Ether].src == self.__config.get(
                            'wan', 'link_local_mac'):
                        #print('ND_LOCAL,continue')
                        continue

                    if pkt[Ether].src == self.__config.get('wan', 'ra_mac'):
                        #print('ND_LOCAL-A,continue')
                        continue

                    if pkt.haslayer(ICMPv6ND_RS):

                        if pkt[Ether].src == self.__config.get(
                                'wan', 'link_local_mac'):
                            #print('RS,continue')
                            continue

                        if pkt[Ether].src == self.__config.get(
                                'wan', 'ra_mac'):
                            #print('RS-A,continue')
                            continue

                        self.__config_setup1_1.set_local_addr_ceRouter(
                            pkt[IPv6].src)
                        self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)
                        #self.__config_setup1_1.set_ND_local_OK()

                    if pkt.haslayer(DHCP6_Solicit):
                        if pkt[Ether].src == self.__config.get(
                                'wan', 'link_local_mac'):
                            #print('solicit,continue')
                            continue

                        if pkt[Ether].src == self.__config.get(
                                'wan', 'ra_mac'):
                            #print('solicitA,continue')
                            continue
                        self.__config_setup1_1.set_local_addr_ceRouter(
                            pkt[IPv6].src)
                        self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)
                        #self.__config_setup1_1.set_ND_local_OK()

                if pkt.haslayer(ICMPv6ND_NS):

                    if pkt[ICMPv6ND_NS].tgt == self.__config.get(
                            'wan', 'global_wan_addr'):
                        self.set_status(
                            'WAN: Respondendo ao ICMP NS local. Enviado ICMP NA Global'
                        )
                        self.neighbor_advertise_global(pkt)

                    if pkt[ICMPv6ND_NS].tgt == self.__config.get(
                            'wan', 'link_local_addr'):
                        self.set_status(
                            'WAN: Respondendo ao ICMP NS local. Enviado ICMP NA local'
                        )
                        self.neighbor_advertise_local(pkt)

                #pkt = self.__queue_wan.get()
                if not self.__config_setup1_1.get_setup1_1_OK():
                    self.set_status('WAN: Setup 1.1 em execução')
                    #print('test1')
                    if not self.__config_setup1_1.get_disapproved():
                        #print('test2')
                        self.__config_setup1_1.run_setup1_1(pkt)
                        #print('test3')
                        if pkt.haslayer(ICMPv6ND_RS):

                            if pkt[Ether].src == self.__config.get(
                                    'wan', 'link_local_mac'):
                                #print('RS-2,continue')
                                continue
                            if pkt[Ether].src == self.__config.get(
                                    'wan', 'ra_mac'):
                                #print('RS-2A,continue')
                                continue
                            #print('test4')
                            #self.__config_setup1_1.set_ND_local_OK()
                            self.__config_setup1_1.set_local_addr_ceRouter(
                                pkt[IPv6].src)
                            self.__config_setup1_1.set_mac_ceRouter(
                                pkt[Ether].src)
                            self.__config_setup1_1.set_ether_src(
                                self.__config.get('wan', 'ra_mac'))
                            self.__config_setup1_1.set_ether_dst(
                                self.__config.get('multicast',
                                                  'all_mac_nodes'))
                            self.__config_setup1_1.set_ipv6_src(
                                self.__config.get('wan', 'ra_address'))
                            self.__config_setup1_1.set_ipv6_dst(
                                self.__config.get('multicast',
                                                  'all_nodes_addr'))
                            self.__sendmsgs.send_tr1_RA2(
                                self.__config_setup1_1)

                    else:
                        self.set_status(
                            'Reprovado Teste 3.2.3b - Falha em completar o Common Setup 1.1 da RFC'
                        )
                        time.sleep(2)
                        self.set_status(
                            'REPROVADO'
                        )  # mgs padrão para atualizar status no frontEnd
                        logging.info(
                            'Reprovado Teste 3.2.3b - Falha em completar o Common Setup 1.1 da RFC'
                        )
                        self.__packet_sniffer_wan.stop()
                        return False

                else:

                    if not self.__finish_wan:
                        start_time_count = True
                        if time1 < 50:
                            if time1 % 5 == 0:
                                self.ping()
                                self.set_status(
                                    'WAN: Setup 1.1 finalizado. Transmissão por TR1 de ICMP Echo request a um endereço não atribuido na LAN do Roteador'
                                )
                                logging.info(
                                    'WAN: Setup 1.1 finalizado.  Transmissão por TR1 de ICMP Echo request a um endereço não atribuido na LAN do Roteador'
                                )

                            if pkt.haslayer(ICMPv6ND_NS):
                                if pkt[ICMPv6ND_NS].tgt == self.__config.get(
                                        'wan', 'global_wan_addr'):
                                    #print('glboal')
                                    self.neighbor_advertise_global(pkt)

                                if pkt[ICMPv6ND_NS].tgt == self.__config.get(
                                        'wan', 'ra_address'):
                                    #print('local')
                                    self.__config_setup1_1.set_ipv6_src(
                                        self.__config.get('wan', 'ra_address'))
                                    self.__config_setup1_1.set_ether_src(
                                        self.__config.get('wan', 'ra_mac'))
                                    self.__config_setup1_1.set_ether_dst(
                                        pkt[Ether].src)
                                    self.__config_setup1_1.set_ipv6_dst(
                                        pkt[IPv6].src)
                                    self.__config_setup1_1.set_tgt(
                                        self.__config.get('wan', 'ra_address'))
                                    self.__config_setup1_1.set_lla(
                                        self.__config.get('wan', 'ra_mac'))
                                    self.__config_setup1_1.set_mac_ceRouter(
                                        pkt[Ether].src)
                                    self.__sendmsgs.send_icmp_na(
                                        self.__config_setup1_1)
                            if pkt.haslayer(ICMPv6DestUnreach):
                                self.__packet_sniffer_wan.stop()
                                self.__packet_sniffer_lan.stop()
                                self.set_status(
                                    'Teste 3.7.2b - APROVADO. Não passou Echo Request do TR1 para LAN e respondeu ao TR1 com Destino Inalcançavel'
                                )
                                time.sleep(2)
                                self.set_status('APROVADO')
                                logging.info(
                                    'Teste 3.7.2b - APROVADO. Não passou Echo Request do TR1 para LAN e respondeu ao TR1 com Destino Inalcançavel'
                                )
                                return True

                        else:
                            self.__packet_sniffer_wan.stop()
                            self.__packet_sniffer_lan.stop()
                            self.set_status(
                                'Teste 3.2.3b - Reprovado. Time out sem mensagem Unreacheable'
                            )
                            time.sleep(2)
                            self.set_status(
                                'REPROVADO'
                            )  #Msg padrão para status do frontend.
                            logging.info(
                                'Teste 3.2.3b - Reprovado. Time out sem mensagem Unreacheable'
                            )
                            return False
                    else:
                        self.__packet_sniffer_wan.stop()
                        if self.__fail_test:
                            return False
                        else:
                            return True
        self.__packet_sniffer_wan.stop()
        return False
コード例 #27
0
ファイル: test321a.py プロジェクト: ronyjah/rfc
    def run(self):
        self.__t_lan = Thread(target=self.run_Lan, name='LAN_Thread')
        self.__t_lan.start()

        self.__packet_sniffer_wan = PacketSniffer('Test273b-WAN',
                                                  self.__queue_wan, self,
                                                  self.__config,
                                                  self.__wan_device_tr1)
        self.__packet_sniffer_wan.start()

        self.__packet_sniffer_lan = PacketSniffer('Test273b-LAN',
                                                  self.__queue_lan, self,
                                                  self.__config,
                                                  self.__lan_device)
        test_lan = self.__packet_sniffer_lan.start()
        self.__config_setup1_1.set_ra2()
        self.set_flags()
        logging.info(self.__test_desc)
        t_test = 0
        sent_reconfigure = False
        time_over = False
        #time.sleep(11111)
        finish_wan = True
        self.__config_setup1_1.set_pd_prefixlen(
            self.__config.get('t3.2.1a', 'pd_prefixlen'))
        self.__config_setup1_1.set_routerlifetime(
            self.__config.get('t3.2.1a', 'routerlifetime'))
        #self.__config_setup1_1.active_DHCP_no_IA_PD()
        while not self.__queue_wan.full():
            if self.__queue_wan.empty():
                if t_test <= 30:

                    time.sleep(1)
                    t_test = t_test + 1
                    #logging.info(' 0 Thread da WAN NOT OK')
                    if t_test % 15 == 0:
                        #logging.info('1 - ENVIA RA')
                        self.__config_setup1_1.set_ether_src(
                            self.__config.get('wan', 'ra_mac'))
                        self.__config_setup1_1.set_ether_dst(
                            self.__config.get('multicast', 'all_mac_nodes'))
                        self.__config_setup1_1.set_ipv6_src(
                            self.__config.get('wan', 'ra_address'))
                        self.__config_setup1_1.set_ipv6_dst(
                            self.__config.get('multicast', 'all_nodes_addr'))
                        self.__sendmsgs.send_tr1_RA(self.__config_setup1_1)

                else:
                    #logging.info(' 2 Time Over')
                    time_over = True
            else:
                pkt = self.__queue_wan.get()
                logging.info(' TEM PACOTE')

                if pkt.haslayer(ICMPv6ND_RS):
                    if pkt[Ether].src == self.__config.get(
                            'wan', 'link_local_mac'):
                        logging.info(' TEM PACOTE continue 1')
                        continue

                    if pkt[Ether].src == self.__config.get('wan', 'ra_mac'):
                        logging.info(' TEM PACOTE continue ')
                        continue
                    logging.info('MAC E ADDR COLETADO')
                    #print(pkt[IPv6].src)
                    #print(pkt[Ether].src)
                    self.__config_setup1_1.set_local_addr_ceRouter(
                        pkt[IPv6].src)
                    self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)
                    self.__config_setup1_1.set_ND_local_OK()
                if not time_over:
                    if pkt.haslayer(ICMPv6EchoRequest):
                        self.__packet_sniffer_wan.stop()
                        self.__finish_wan = True
                        self.__fail_test = True
                        return False
                if pkt.haslayer(DHCP6_Solicit):
                    #print(pkt[IPv6].src)
                    #print(pkt[Ether].src)
                    self.__config_setup1_1.set_local_addr_ceRouter(
                        pkt[IPv6].src)
                    self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)
                    self.__config_setup1_1.set_ND_local_OK()
                if time_over:
                    #logging.info('FIM DA ESPERA')
                    #time_over = True
                    pkt = self.__queue_wan.get()
                    #logging.info('FIM DA ESPERA')
                    if not self.__config_setup1_1.get_setup1_1_OK():

                        if not self.__config_setup1_1.get_disapproved():
                            self.__config_setup1_1.run_setup1_1(pkt)
                            if pkt.haslayer(ICMPv6ND_RS):

                                if pkt[Ether].src == self.__config.get(
                                        'wan', 'link_local_mac'):
                                    continue
                                if pkt[Ether].src == self.__config.get(
                                        'wan', 'ra_mac'):
                                    continue
                                self.__config_setup1_1.set_ND_local_OK()
                                #if self.__local_ping_OK:
                                #print(pkt[IPv6].src)
                                self.__config_setup1_1.set_local_addr_ceRouter(
                                    pkt[IPv6].src)
                                #print(pkt[Ether].src)
                                self.__config_setup1_1.set_mac_ceRouter(
                                    pkt[Ether].src)

                                self.__config_setup1_1.set_ether_src(
                                    self.__config.get('wan', 'ra_mac'))
                                self.__config_setup1_1.set_ether_dst(
                                    self.__config.get('multicast',
                                                      'all_mac_nodes'))
                                self.__config_setup1_1.set_ipv6_src(
                                    self.__config.get('wan', 'ra_address'))
                                self.__config_setup1_1.set_ipv6_dst(
                                    self.__config.get('multicast',
                                                      'all_nodes_addr'))
                                #               if not self.__active_RA_no_IA_PD:
                                #self.set_lla(self.__config.get('wan','ra_mac'))
                                logging.info('SEND TR1 NA MAIN')
                                self.__sendmsgs.send_tr1_RA(
                                    self.__config_setup1_1)

                        else:
                            logging.info(
                                'Reprovado Teste 2.7.3a - Falha em completar o Common Setup 1.1 da RFC'
                            )
                            self.__packet_sniffer_wan.stop()
                            return False

                    else:
                        if not self.__finish_wan:

                            if pkt.haslayer(ICMPv6EchoRequest):
                                self.__packet_sniffer_wan.stop()
                                self.__packet_sniffer_lan.stop()
                                self.__finish_wan = True
                                self.__fail_test = False
                                logging.info(
                                    'T3.2.1a - Recebido ICMP Request somente após IA_PD '
                                )
                                return True

                            if pkt.haslayer(ICMPv6ND_NS):
                                if pkt[ICMPv6ND_NS].tgt == self.__config.get(
                                        'wan', 'global_wan_addr'):
                                    ##print('LOOP NS')
                                    ##print(pkt[ICMPv6ND_NS].tgt)
                                    #if not send_na_lan:
                                    self.__config_setup1_1.set_ipv6_src(
                                        self.__config.get(
                                            'wan', 'global_wan_addr'))
                                    self.__config_setup1_1.set_ether_src(
                                        self.__config.get(
                                            'wan', 'wan_mac_tr1'))
                                    self.__config_setup1_1.set_ether_dst(
                                        pkt[Ether].src)
                                    self.__config_setup1_1.set_ipv6_dst(
                                        pkt[IPv6].src)
                                    self.__config_setup1_1.set_tgt(
                                        self.__config.get(
                                            'wan', 'global_wan_addr'))
                                    self.__config_setup1_1.set_lla(
                                        self.__config.get(
                                            'wan', 'wan_mac_tr1'))
                                    #send_na_lan = True
                                    self.__sendmsgs.send_icmp_na(
                                        self.__config_setup1_1)

                            ##print('WAN - Concluido')
                            ##print('LAN RESULT')

    #                 if not sent_reconfigure:
    #                     time.sleep(25)
    #                     #print('aqui7')
    #                     self.__config_setup1_1.set_ipv6_src(self.__config.get('wan','link_local_addr'))
    #                     #print('aqui8')
    #                     self.__config_setup1_1.set_ipv6_dst(self.__config_setup1_1.get_local_addr_ceRouter())
    #                     #print('aqui10')
    #                     self.__config_setup1_1.set_ether_src(self.__config.get('wan','link_local_mac'))
    #                     #print('aqui11')
    #                     self.__config_setup1_1.set_ether_dst(self.__config_setup1_1.get_mac_ceRouter())
    #                     #print('aqui12')
    #                     self.__config_setup1_1.set_dhcp_reconf_type(self.__config.get('t1.6.3','msg_type'))
    #                     #print('aqui13')
    #                     self.__config_setup1_1.set_udp_sport('547')
    #                     self.__config_setup1_1.set_udp_dport('546')
    #                     self.__sendmsgs.send_dhcp_reconfigure(self.__config_setup1_1)
    #                     #print('aqui14')
    #                     sent_reconfigure = True

    #                 if pkt.haslayer(DHCP6_Renew):
    #                     if not self.__dhcp_renew_done:
    # #                        if self.__active_renew_dhcp:
    #                         self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)
    #                         self.__config_setup1_1.set_local_addr_ceRouter(pkt[IPv6].src)
    #                         self.__config_setup1_1.set_xid(pkt[DHCP6_Renew].trid)
    #                         self.__config_setup1_1.set_ipv6_src(self.__config.get('wan','link_local_addr'))
    #                         self.__config_setup1_1.set_ipv6_dst(pkt[IPv6].src)
    #                         self.__config_setup1_1.set_ether_src(self.__config.get('wan','link_local_mac'))
    #                         self.__config_setup1_1.set_ether_dst(pkt[Ether].src)
    #                         self.__config_setup1_1.set_dhcp_preflft('100')
    #                         self.__config_setup1_1.set_dhcp_validlft('200')
    #                         self.__config_setup1_1.set_dhcp_plen('60')
    #                         self.__config_setup1_1.set_prefix_addr(self.__config.get('setup1-1_advertise','ia_pd_address'))
    #                         self.__sendmsgs.send_dhcp_reply_v3(self.__config_setup1_1)
    #                         #self.__dhcp_ok = True
    #                         self.__dhcp_renew_done = True
                        else:
                            self.__packet_sniffer_wan.stop()
                            if self.__fail_test:
                                return False
                            else:
                                return True
        self.__packet_sniffer_wan.stop()
        return False
コード例 #28
0
ファイル: test323a.py プロジェクト: ronyjah/tcc_ronaldo
    def run(self):
        @self.__app.route("/WAN", methods=['GET'])
        def enviawan():
            return self.get_status()

        self.__t_lan = Thread(target=self.run_Lan, name='LAN_Thread')
        self.__t_lan.start()

        self.__packet_sniffer_wan = PacketSniffer('Test323b-WAN',
                                                  self.__queue_wan, self,
                                                  self.__config,
                                                  self.__wan_device_tr1)
        self.__packet_sniffer_wan.start()

        self.__packet_sniffer_lan = PacketSniffer('Test323b-LAN',
                                                  self.__queue_lan, self,
                                                  self.__config,
                                                  self.__lan_device)
        test_lan = self.__packet_sniffer_lan.start()
        self.__config_setup1_1.set_ra2()
        self.set_flags()
        logging.info(self.__test_desc)
        t_test = 0
        time1 = 0
        sent_reconfigure = False
        time_over = False
        start_time_count = False
        finish_wan = False
        part1_OK = False
        cache_wan = []
        self.__config_setup1_1.set_pd_prefixlen(
            self.__config.get('t3.2.3a', 'pd_prefixlen'))
        self.__config_setup1_1.set_routerlifetime(
            self.__config.get('t3.2.3a', 'routerlifetime'))
        self.set_status('WAN: Tráfego Iniciado')
        while not self.__queue_wan.full():
            if self.__queue_wan.empty():
                if t_test <= 300:
                    time.sleep(1)
                    t_test = t_test + 1
                    if t_test % 10 == 0:
                        self.set_status(
                            'WAN: Transmissão de ICMP RA periódico')
                        logging.info('WAN: Transmissão de ICMP RA periódico')
                        self.rourter_advertise()

                    if start_time_count:
                        time1 = time1 + 1

                else:
                    time_over = True
            else:
                pkt = self.__queue_wan.get()
                cache_wan.append(pkt)
                wrpcap("WAN-3.2.3a.cap", cache_wan)
                if not self.__config_setup1_1.get_ND_local_OK():

                    if pkt[Ether].src == self.__config.get(
                            'wan', 'link_local_mac'):
                        continue

                    if pkt[Ether].src == self.__config.get('wan', 'ra_mac'):
                        continue

                    if pkt.haslayer(ICMPv6ND_RS):

                        if pkt[Ether].src == self.__config.get(
                                'wan', 'link_local_mac'):
                            continue

                        if pkt[Ether].src == self.__config.get(
                                'wan', 'ra_mac'):
                            continue

                        self.__config_setup1_1.set_local_addr_ceRouter(
                            pkt[IPv6].src)
                        self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)

                    if pkt.haslayer(DHCP6_Solicit):
                        if pkt[Ether].src == self.__config.get(
                                'wan', 'link_local_mac'):
                            continue

                        if pkt[Ether].src == self.__config.get(
                                'wan', 'ra_mac'):
                            continue

                        self.__config_setup1_1.set_local_addr_ceRouter(
                            pkt[IPv6].src)
                        self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src)

                if pkt.haslayer(ICMPv6ND_NS):
                    self.set_status(
                        'WAN: Respondendo ao ICMP NS local. Enviado ICMP NA Global'
                    )
                    if pkt[ICMPv6ND_NS].tgt == self.__config.get(
                            'wan', 'global_wan_addr'):
                        self.neighbor_advertise_global(pkt)

                    if pkt[ICMPv6ND_NS].tgt == self.__config.get(
                            'wan', 'link_local_addr'):
                        self.set_status(
                            'WAN: Respondendo ao ICMP NS local. Enviado ICMP NA local'
                        )
                        self.neighbor_advertise_local(pkt)

                if not self.__config_setup1_1.get_setup1_1_OK():
                    self.set_status('WAN: Setup 1.1 em execução')
                    if not self.__config_setup1_1.get_disapproved():
                        self.__config_setup1_1.run_setup1_1(pkt)
                        if pkt.haslayer(ICMPv6ND_RS):

                            if pkt[Ether].src == self.__config.get(
                                    'wan', 'link_local_mac'):
                                continued

                            if pkt[Ether].src == self.__config.get(
                                    'wan', 'ra_mac'):
                                continue

                            self.__config_setup1_1.set_local_addr_ceRouter(
                                pkt[IPv6].src)
                            self.__config_setup1_1.set_mac_ceRouter(
                                pkt[Ether].src)
                            self.__config_setup1_1.set_ether_src(
                                self.__config.get('wan', 'ra_mac'))
                            self.__config_setup1_1.set_ether_dst(
                                self.__config.get('multicast',
                                                  'all_mac_nodes'))
                            self.__config_setup1_1.set_ipv6_src(
                                self.__config.get('wan', 'ra_address'))
                            self.__config_setup1_1.set_ipv6_dst(
                                self.__config.get('multicast',
                                                  'all_nodes_addr'))
                            self.__sendmsgs.send_tr1_RA2(
                                self.__config_setup1_1)

                    else:
                        self.set_status(
                            'Reprovado Teste 3.2.3a - Falha em completar o Common Setup 1.1 da RFC'
                        )
                        time.sleep(2)
                        self.set_status('REPROVADO')

                        logging.info(
                            'Reprovado Teste 3.2.3a - Falha em completar o Common Setup 1.1 da RFC'
                        )
                        self.__packet_sniffer_wan.stop()
                        return False

                else:

                    if not self.__finish_wan:
                        start_time_count = True
                        if time1 < 50:

                            if pkt.haslayer(ICMPv6EchoRequest):
                                self.set_status(
                                    'Reprovado Teste 3.2.3a - Recebeu ICMPv6EchoRequest na LAN de um endereço não designado a LAN pelo roteador'
                                )
                                time.sleep(2)
                                self.set_status('REPROVADO')
                                logging.info(
                                    'Reprovado Teste 3.2.3a - Recebeu ICMPv6EchoRequest na LAN de um endereço não designado a LAN pelo roteador'
                                )
                                self.__packet_sniffer_wan.stop()
                                self.__packet_sniffer_lan.stop()
                                self.__finish_wan = True
                                self.__fail_test = False
                                return False

                            if pkt.haslayer(ICMPv6ND_NS):
                                if pkt[ICMPv6ND_NS].tgt == self.__config.get(
                                        'wan', 'global_wan_addr'):
                                    self.neighbor_advertise_global(pkt)

                                if pkt[ICMPv6ND_NS].tgt == self.__config.get(
                                        'wan', 'ra_address'):

                                    self.__config_setup1_1.set_ipv6_src(
                                        self.__config.get('wan', 'ra_address'))
                                    self.__config_setup1_1.set_ether_src(
                                        self.__config.get('wan', 'ra_mac'))
                                    self.__config_setup1_1.set_ether_dst(
                                        pkt[Ether].src)
                                    self.__config_setup1_1.set_ipv6_dst(
                                        pkt[IPv6].src)
                                    self.__config_setup1_1.set_tgt(
                                        self.__config.get('wan', 'ra_address'))
                                    self.__config_setup1_1.set_lla(
                                        self.__config.get('wan', 'ra_mac'))
                                    self.__config_setup1_1.set_mac_ceRouter(
                                        pkt[Ether].src)
                                    self.__sendmsgs.send_icmp_na(
                                        self.__config_setup1_1)
                        else:
                            self.__packet_sniffer_wan.stop()
                            self.__packet_sniffer_lan.stop()

                            self.set_status(
                                'Teste 3.2.3a - Reprovado. Time out sem mensagem Unreacheable'
                            )
                            time.sleep(2)
                            self.set_status('REPROVADO')
                            logging.info(
                                'Teste 3.2.3a - Reprovado. Time out sem mensagem Unreacheable'
                            )
                            return True
                    else:
                        self.__packet_sniffer_wan.stop()
                        if self.__fail_test:
                            return False
                        else:
                            return True
        self.__packet_sniffer_wan.stop()
        return False
コード例 #29
0
ファイル: test274b.py プロジェクト: ronyjah/rfc
    def run(self):
        self.__t_lan = Thread(target=self.run_Lan, name='LAN_Thread')
        self.__t_lan.start()

        self.__packet_sniffer_wan = PacketSniffer('Test273b-WAN',
                                                  self.__queue_wan, self,
                                                  self.__config,
                                                  self.__wan_device_tr1)
        self.__packet_sniffer_wan.start()

        self.__packet_sniffer_lan = PacketSniffer('Test273b-LAN',
                                                  self.__queue_lan, self,
                                                  self.__config,
                                                  self.__lan_device)
        test_lan = self.__packet_sniffer_lan.start()

        self.set_flags()
        logging.info(self.__test_desc)
        t_test = 0
        sent_reconfigure = False
        time_over = False
        #time.sleep(11111)
        finish_wan = True
        self.__config_setup1_1.set_pd_prefixlen(
            self.__config.get('t2.7.4b', 'pd_prefixlen'))
        self.__config_setup1_1.set_routerlifetime(
            self.__config.get('t2.7.4b', 'routerlifetime'))
        #self.__config_setup1_1.active_DHCP_no_IA_PD()
        while not self.__queue_wan.full():
            while self.__queue_wan.empty():
                if t_test < 60:
                    time.sleep(1)
                    if t_test % 5 == 0:
                        self.__config_setup1_1.set_ether_src(
                            self.__config.get('wan', 'ra_mac'))
                        self.__config_setup1_1.set_ether_dst(
                            self.__config.get('multicast', 'all_mac_nodes'))
                        self.__config_setup1_1.set_ipv6_src(
                            self.__config.get('wan', 'ra_address'))
                        self.__config_setup1_1.set_ipv6_dst(
                            self.__config.get('multicast', 'all_nodes_addr'))
                        self.__sendmsgs.send_tr1_RA(self.__config_setup1_1)
                    t_test = t_test + 1
                else:
                    time_over = True
            pkt = self.__queue_wan.get()

            if not self.__config_setup1_1.get_setup1_1_OK():

                if not self.__config_setup1_1.get_disapproved():
                    self.__config_setup1_1.run_setup1_1(pkt)
                else:
                    logging.info(
                        'Reprovado Teste 2.7.3a - Falha em completar o Common Setup 1.1 da RFC'
                    )
                    self.__packet_sniffer_wan.stop()
                    return False

            else:
                if not self.__finish_wan:
                    print('WAN - Concluido')
                    print('LAN RESULT')
                    self.__config_setup1_1.check_layers(pkt)
                else:
                    self.__packet_sniffer_wan.stop()
                    if self.__fail_test:
                        return False
                    else:
                        return True

                #print(test_lan)
                #if not finish_wan:
                #self.__packet_sniffer_wan.stop()
                #finish_wan = True
                #continue

                # if pkt.haslayer(DHCP6_Renew):
                #     logging.info(pkt.show())
                #     logging.info('Reprovado Teste 2.7.1.a - Respondeu ao DHCP6 reconfigure de chave falsa')

                #     self.__packet_sniffer_wan.stop()
                #     return False
                # elif time_over :
                #     if not sent_reconfigure:
                #         self.__packet_sniffer_wan.stop()
                #         logging.info('Falha: Teste 2.7.1.a. Tempo finalizado mas Não Enviou DHCP Reconfigure')

                #         return False
                #     else:
                #         self.__packet_sniffer_wan.stop()
                #         logging.info('Aprovado: Teste 2.7.1.a. Tempo finalizado e não recebeu DHCP Renew em DHCP Reconf adulterado')

                #         return True
                # if not sent_reconfigure:

                #     self.__config_setup1_1.set_ipv6_src(self.__config.get('wan','link_local_addr'))
                #     self.__config_setup1_1.set_ipv6_dst(self.__config.get('multicast','dhcp_relay_agents_and_servers_addr'))
                #     self.__config_setup1_1.set_ether_src(self.__config.get('wan','link_local_mac'))
                #     self.__config_setup1_1.set_ether_dst(self.__config_setup1_1.get_ether_dst())
                #     self.__config_setup1_1.set_dhcp_reconf_type(self.__config.get('t2.7.1','msg_type'))
                #     self.__sendmsgs.send_dhcp_reconfigure_wrong(self.__config_setup1_1)
                #     sent_reconfigure = True

                # if pkt.haslayer(DHCP6_Solicit):
                #     self.__packet_sniffer_wan.stop()
                #     while not self.__queue_wan.empty():
                #         pkt = self.__queue_wan.get()
                #     return True
        # while not pkt.haslayer(IPv6):
        #     pkt = self.__queue_wan.get()
        self.__packet_sniffer_wan.stop()
        return False
コード例 #30
0
    def run(self):
        @self.__app.route("/WAN", methods=['GET'])
        def enviawan():
            return self.get_status()

        self.__t_lan = Thread(target=self.run_Lan, name='LAN_Thread')
        self.__packet_sniffer_lan = PacketSniffer('Test277a-LAN',
                                                  self.__queue_lan, self,
                                                  self.__config,
                                                  self.__lan_device)
        self.__packet_sniffer_wan = PacketSniffer('Test277a-WAN',
                                                  self.__queue_wan, self,
                                                  self.__config,
                                                  self.__wan_device_tr1)

        self.__t_lan.start()
        self.__packet_sniffer_wan.start()
        self.__packet_sniffer_lan.start()

        self.set_flags()

        logging.info(self.__test_desc)

        logging.info(
            '=========================================================================='
        )
        logging.info(
            'IMPORTANTE. Quando for Solicitado ative na ULA do roteador o prefixo: '
            + self.__config.get('t2.7.7a', 'prefix_ula'))
        logging.info(
            '=========================================================================='
        )

        time.sleep(10)

        t_test = 0
        sent_reconfigure = False
        time_over = False
        finish_wan = True
        cache_wan = []

        temporizador = 0
        test_max_time = 300

        self.__config_setup1_1.set_pd_prefixlen(
            self.__config.get('t2.7.7a', 'pd_prefixlen'))
        self.__config_setup1_1.set_routerlifetime(
            self.__config.get('t2.7.7a', 'routerlifetime'))

        while not self.__queue_wan.full():
            while self.__queue_wan.empty():
                time.sleep(1)
                if temporizador < test_max_time:
                    temporizador = temporizador + 1
                else:
                    self.set_status('WAN: Reprovado. Timeout')
                    time.sleep(2)
                    self.set_status('REPROVADO')
                    logging.info('WAN: Reprovado. Timeout')
                    #logging.info(routerlifetime)
                    self.__packet_sniffer_lan.stop()
                    self.__packet_sniffer_wan.stop()
                    return False

                if temporizador % 20 == 0:
                    logging.info('WAN: Tempo limite do teste: ' +
                                 str(test_max_time) + ' segundos. Tempo: ' +
                                 str(temporizador))
                    self.set_status('WAN: Tempo limite do teste: ' +
                                    str(test_max_time) + ' segundos. Tempo: ' +
                                    str(temporizador))

                if temporizador % 15 == 0:
                    logging.info('WAN: Envio periódico de ICMP RA')
                    self.set_status('WAN: Envio periódico de ICMP RA')
                    self.ra_wan()

            pkt = self.__queue_wan.get()

            cache_wan.append(pkt)
            wrpcap("WAN-2.7.7a.cap", cache_wan)

            if not self.__config_setup1_1.get_setup1_1_OK():
                self.set_status('WAN: Setup 1.1 em execução.')
                logging.info('WAN: Setup 1.1 em execução.')
                if not self.__config_setup1_1.get_disapproved():
                    self.__config_setup1_1.run_setup1_1(pkt)
                else:
                    self.set_status(
                        'Reprovado Teste 2.7.7a - Falha em completar o Common Setup 1.1 da RFC'
                    )
                    logging.info(
                        'Reprovado Teste 2.7.7a - Falha em completar o Common Setup 1.1 da RFC'
                    )
                    self.__packet_sniffer_wan.stop()
                    return False
            else:
                if self.__finish_wan:
                    self.__packet_sniffer_wan.stop()
                    if self.__fail_test:
                        return False
                    else:
                        return True
        self.__packet_sniffer_wan.stop()
        return False