Salut,
j'essaye de creer un forgeur de paquet au niveau 2, mais j'ai un petit problem.Mon packet est correctement envoyé, mais je ne recois pas de reponse(pour un echo ping par ex.).
j'utilise une sockaddr déclaré :
Code :
- struct sockaddr interface = { AF_INET, "lo" }(ou "eth0" )
|
je rempli des structures du type :
Code :
- struct ethhdr eth
- struct iphdr ip
- struct icmphdr icmp
|
je stock le tout dans un buffer(packet[124])
la socket est déclarée :
Code :
- int sockets
- sockets=socket(AF_INET, SOCK_PACKET, htons(ETH_P_802_3)) (ou ETH_P_ALL)
|
et j'utilise sendto :
Code :
- sendto(sockets,&packet, sizepacket, 0, &interface,sizeof(struct sockaddr))
|
Ma socket est elle mal déclarée ?
faut-il rajouter a la fin du paquet un checksum ethernet ?
Quelqu'un peut-il m'aider.