Pagine: [1]
Autore Discussione: Raw Socket Programming  (Letto 793 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
Matrix86
Amministratore
Full Member
*****

Popolarità: +7/-0
Scollegato Scollegato

Messaggi: 119



WWW
« inserito:: Marzo 22, 2009, 16:26:45 »

Oggi mi sono messo a combattere un pò con i Socket Raw, e ho quindi scritto un piccolo esempio per il loro utilizzo. In questo esempio viene mostrato come creare e inviare un pacchetto TCP/IP con flag SYN settato, in modo da dare inizio all'handshaking. Ricordo che l'handshake si compone di tre fasi:
1) invio di un pacchetto SYN da parte del client
2) invio del SYN-ACK da parte del server
3) invio del ACK da parte del client. Da questo punto in poi il canale viene aperto e client e server lo usano per la comunicazione.
Per maggiori dettagli del protocollo vi consiglio di dare uno sguardo su google, o ancora su qualche manuale di reti di calcolatori.

SOURCECODE

Dopo la compilazione del sourcecode si può lanciare il programma e verificare che il server rispondi con un SYN-ACK:


Citazione
#TERMINALE 1
root@Side_Effect:/home/matrix86/Desktop# gcc -Wall -o sendsyn rawSocketExample2.c
root@Side_Effect:/home/matrix86/Desktop# ./sendsyn
Pacchetto inviato!

Exit.

#TERMINALE 2
root@Side_Effect:/home/matrix86/Desktop# tcpdump -i eth0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes
15:24:41.561651 IP 192.168.0.101.5678 > 192.168.0.102.http: Flags [ S], seq 1, win 32767, length 0
15:24:41.562767 IP 192.168.0.102.http > 192.168.0.101.5678: Flags [S.], seq 2337696018, ack 2, win 8192, options [mss 1460], length 0

P.s.: ricordo che per l'uso dei socket Raw bisogna avere i permessi di amministrazione...
« Ultima modifica: Marzo 22, 2009, 16:35:23 da Matrix86 » Registrato



Angel_of_Destroy
Jr. Member
**

Popolarità: +1/-0
Scollegato Scollegato

Messaggi: 53



E-mail
« Risposta #1 inserito:: Marzo 22, 2009, 23:43:52 »

Che spettacolo..Occhiolino
Matrix ti stimo..
Comunque...perchè bisogna avere i permessi di amministrazione?  Che?!?
Registrato

Il tempo scorre inesorabile lungo le autostrade della vita..

Matrix86
Amministratore
Full Member
*****

Popolarità: +7/-0
Scollegato Scollegato

Messaggi: 119



WWW
« Risposta #2 inserito:: Marzo 23, 2009, 02:08:05 »

Il kernel non permette la creazione di un socket raw se non si hanno i permessi di amministrazione, giustamente...se non si vuole switchare come utente root si può settare il bit suid all'applicazione. xD
Registrato



Dir31
Moderatori Globali
Newbie
*****

Popolarità: +1/-0
Scollegato Scollegato

Messaggi: 8


E-mail
« Risposta #3 inserito:: Marzo 25, 2009, 15:14:15 »

Come al solito quando ti ci metti ricacci sempre dell' ottimo materiale fratellò!
Registrato

Matrix86
Amministratore
Full Member
*****

Popolarità: +7/-0
Scollegato Scollegato

Messaggi: 119



WWW
« Risposta #4 inserito:: Marzo 25, 2009, 15:41:54 »

Grazie bello!!!! ^^
Registrato



Pagine: [1]
Stampa
Vai a: