Hallo,
Voor een project waar ik aan werk is het nodig om RAW Ethernet packages te versturen.
Het ontwikkelen doe ik op een Ubuntu 9.04 Installatie.
het volgende gaat al mis, ik kan niet een socket creeeren:
Deze retourneert -1.
Ik heb ook geprobeerd of het mogelijk is om de SOCK_DGRAM i.p.v. SOCK_RAW te proberen, dit zou mij dan niet toestaan om de MAC-addressen mee te krijgen in ontvangen packets, maar ook deze retourneert in -1.
Zijn er handelingen die ik extra moet doen op het desbetreffende besturing-systeem om het mogelijk te maken een dergelijke system-call te doen?
Van internet heb ik de htons(ETH_P_ALL) (waarde is 0x03) gevonden, echter is dit een juiste protocol waarde voor de dergelijke code.
Enig voorbeeld dat ik op internet heb kunnen vinden over RAW Ethernet programeren heb ik gevonden op: http://aschauf.landshut.org/fh/linux/udp_vs_raw/ch01s03.html welke ik dan ook als bron gebruik.
UPDATE:
Ik heb nogmaals de voorbeeld applicatie gecompiled, en ben er nu achter gekomen dat de dergelijke socket operatie niet toegestaan is, wanneer de applicatie niet als ROOT wordt uitgevoerd.
Hoe kan ik een applicatie zichzelf als "root" laten inloggen, zodat ik in staat ben nog steeds in mijn IDE de applicatie te debuggen?
Voor een project waar ik aan werk is het nodig om RAW Ethernet packages te versturen.
Het ontwikkelen doe ik op een Ubuntu 9.04 Installatie.
het volgende gaat al mis, ik kan niet een socket creeeren:
code:
1
| int s = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL)); |
Deze retourneert -1.
Ik heb ook geprobeerd of het mogelijk is om de SOCK_DGRAM i.p.v. SOCK_RAW te proberen, dit zou mij dan niet toestaan om de MAC-addressen mee te krijgen in ontvangen packets, maar ook deze retourneert in -1.
Zijn er handelingen die ik extra moet doen op het desbetreffende besturing-systeem om het mogelijk te maken een dergelijke system-call te doen?
Van internet heb ik de htons(ETH_P_ALL) (waarde is 0x03) gevonden, echter is dit een juiste protocol waarde voor de dergelijke code.
Enig voorbeeld dat ik op internet heb kunnen vinden over RAW Ethernet programeren heb ik gevonden op: http://aschauf.landshut.org/fh/linux/udp_vs_raw/ch01s03.html welke ik dan ook als bron gebruik.
UPDATE:
Ik heb nogmaals de voorbeeld applicatie gecompiled, en ben er nu achter gekomen dat de dergelijke socket operatie niet toegestaan is, wanneer de applicatie niet als ROOT wordt uitgevoerd.
Hoe kan ik een applicatie zichzelf als "root" laten inloggen, zodat ik in staat ben nog steeds in mijn IDE de applicatie te debuggen?
[ Voor 14% gewijzigd door DoubleJOnline op 14-12-2009 09:01 ]