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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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