[C/Linux] Raw ethernet packets socket maken.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • DoubleJOnline
  • Registratie: Juni 2007
  • Laatst online: 27-05 07:07
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:

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 ]


Acties:
  • 0 Henk 'm!

  • dwilmer
  • Registratie: Oktober 2008
  • Laatst online: 25-01 09:50
DoubleJOnline schreef op maandag 14 december 2009 @ 08:41:
Hoe kan ik een applicatie zichzelf als "root" laten inloggen, zodat ik in staat ben nog steeds in mijn IDE de applicatie te debuggen?
AFAIK niet (zou nogal een veiligheidslek zijn).
Gewoon 'sudo ./jouwApp' aanroepen en hij doet het.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
In een TR word terecht opgemerkt dat Raw Ethernet access een OS feature is. Ik pas je titel dus even aan.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • mace
  • Registratie: Juni 2003
  • Laatst online: 00:01

mace

Sapere Aude

dwilmer schreef op maandag 14 december 2009 @ 10:47:
[...]


AFAIK niet (zou nogal een veiligheidslek zijn).
Gewoon 'sudo ./jouwApp' aanroepen en hij doet het.
Nee precies.

Je kan wel je IDE als root starten natuurlijk, maar dat is link.

Acties:
  • 0 Henk 'm!

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

Kijk even naar setuid en aanverwanten.

ASSUME makes an ASS out of U and ME


Acties:
  • 0 Henk 'm!

  • mace
  • Registratie: Juni 2003
  • Laatst online: 00:01

mace

Sapere Aude

H!GHGuY schreef op maandag 14 december 2009 @ 12:44:
Kijk even naar setuid en aanverwanten.
Ja, maar kan je die ook sticky maken? Aangezien de binary steeds weer opnieuw gecompileerd wordt.
En dat lijkt me ook behoorlijk onveilig, sticky setuid.

[ Voor 10% gewijzigd door mace op 14-12-2009 12:57 ]


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 18:39

Matis

Rubber Rocket

mace schreef op maandag 14 december 2009 @ 12:57:
Ja, maar kan je die ook sticky maken? Aangezien de binary steeds weer opnieuw gecompileerd wordt.
En dat lijkt me ook behoorlijk onveilig, sticky setuid.
Dat licht toch aan je GCC instellingen, althans ik kon (als ik het me goed herinner) credentials aan mijn applicatie meegeven.

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • mace
  • Registratie: Juni 2003
  • Laatst online: 00:01

mace

Sapere Aude

Matis schreef op maandag 14 december 2009 @ 12:59:
[...]

Dat licht toch aan je GCC instellingen, althans ik kon (als ik het me goed herinner) credentials aan mijn applicatie meegeven.
Ja, maar dan moet je GCC wel als root aanroepen anders mag je natuurlijk geen setuid root meegeven.

Zou een leuke lek zijn als het wel kon. 8)7

En als je GCC als root kan starten dan kun je ook je gecompilede meuk als root starten.

[ Voor 10% gewijzigd door mace op 14-12-2009 13:30 ]


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-09 22:43
DoubleJOnline schreef op maandag 14 december 2009 @ 08:41:
Hoe kan ik een applicatie zichzelf als "root" laten inloggen, zodat ik in staat ben nog steeds in mijn IDE de applicatie te debuggen?
Debug commando aanpassen naar een sudo versie misschien?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • DoubleJOnline
  • Registratie: Juni 2007
  • Laatst online: 27-05 07:07
Debug commando aanpassen naar een sudo versie misschien?
Hoe zou ik dit eventueel kunnen doen?

Mijn oplossing voor dit moment is dat ik een clean&build/build uitvoer en daarna in mijn commandline de executable uitvoer met het sudo commando. Verder werkt alles wel prima en kan ik nu gewoon RAW ethernet data versturen.

Acties:
  • 0 Henk 'm!

  • mace
  • Registratie: Juni 2003
  • Laatst online: 00:01

mace

Sapere Aude

Dat moet je in de IDE ergens instellen.
Pagina: 1