Пример #1
0
void cabecalhoEthernet(unsigned char *packet, int len, int imp_tipo)
{
	struct ethhdr *c_ethernet;

	if(len > sizeof(struct ethhdr))
	{
		c_ethernet = (struct ethhdr *)packet;

		//Aponta para o campo de MAC destino e imprime os proximos 6 bytes
		imprimirBytes("MAC destino: ", c_ethernet->h_dest, 6, imp_tipo );
				
		//Aponta para o campo de MAC origem e imprime os proximos 6 bytes
		imprimirBytes("MAC origem: ", c_ethernet->h_source, 6, imp_tipo);
			
	}
	else
	{
		printf("Cabecalho Ethernet defeituoso!\n");
	}
}
void imprimirMemoria(){
	uint32_t offset, tamanio;
	printf("Indique un offset desde el comienzo de la memoria");
	scanf("%d", &offset);
	while( getchar() != '\n');
	printf("Indique una cantidad de bytes");
	scanf("%d", &tamanio);
	while( getchar() != '\n');
	printf("El tamanio es %d", tamanio);
	printf("El offset es %d", offset);

	if( memoria_size < (tamanio + offset)){
		log_error( logger, "Se ha producido Segmentation Fault a causa de indicar una cantidad de bytes que sobrepasa el tamaño de la memoria");
		printf("Se ha producido Segmentation Fault a causa de indicar una cantidad de bytes que sobrepasa el tamaño de la memoria\n");
	}
	else{
		imprimirBytes( 0, offset, tamanio, PorARCHIVO);
	}
}
Пример #3
0
int cabecalhoDados (unsigned char *p, int tam, int imp_tipo)
{
	struct ethhdr *c_ethernet;
	struct iphdr *c_ip;
	struct tcphdr *c_tcp;
	unsigned char *c_dados;
	int tamanho_dados;

	if(tam > (sizeof(struct ethhdr) + sizeof(struct iphdr) + sizeof(struct tcphdr)))
	{
		
		c_ip = (struct iphdr*)(p + sizeof(struct ethhdr));

		
		c_dados = (p + sizeof(struct ethhdr) + c_ip->ihl*4 +sizeof(struct tcphdr));
		//tot_len inclui o valor ip+tcp+dados (ihl utilizado pois ip possuí campos variaveis)
		tamanho_dados = ntohs(c_ip->tot_len) - c_ip->ihl*4 - sizeof(struct tcphdr);

		if(tamanho_dados!=0)
		{
			printf("Tamanho do cabecalho de dados: %d\n", tamanho_dados);
			imprimirBytes("Dados:", c_dados, tamanho_dados, imp_tipo);
			return 1;	
		}
		else
		{
			printf("Nao existe dados no pacote\n");
			return 0;
		}
	}
	else
	{
		printf("Nao existe dados no pacote\n");
		return 0;
	} 	

}