Basic Sniffer Tutorial

Размер: px
Начинать показ со страницы:

Download "Basic Sniffer Tutorial"

Транскрипт

1 Basic Sniffer Tutorial LnZ >Aspinall > S.P.I.N.E. Research Group April 2, 2003 Abstract Con questo semplice esempio cerchero di mostrarvi l uso di base delle socket raw e delle ioctl necessarie a scrivere uno sniffer nel modo piu semplice possibile. E necessaria una conoscenza di base dei protocolli di rete prima di cominciare a scrivere anche solo una linea di codice di uno sniffer, se non ne avete vi consiglio di darvi un occhiata ai vari Stevens (se non sapete cosa siano vergognatevi ;) ). Il nostro amico Google vi dar una mano, provate con una semplice ricerca di TCP/IP Illustrated 1. Il codice non e assolutamente ottimizzato, e studiato per essere letto facilmente. Contents 1 Descrizione Codice 1 2 Codice Sniffer in C 6 3 Esempio di utilizzo Raw Sockets <Aspinall > 7 4 Ringraziamenti 11 1 Descrizione Codice Iniziamo subito con la definizione delle strutture che il nostro sniffer utilizzera qui di seguito vi riporto le strutture per una macchina Little Endian : typedef struct { unsigned int h_len:4; //Lunghezza Header ip unsigned int ip_version:4; //Versione protocollo IP //Se avete una macchina "Big Endian" invertite i due campi precedenti unsigned char tos; //Tipo del servizio unsigned short t_len; //Lunghezza totale unsigned short ident; //IP Ident unsigned short frag_and_flags; //Frammenti e Flags unsigned char ttl; //Time To Live unsigned char proto; //Protocollo di Trasporto unsigned short checksum; //Checksum pacchetto IP 1 Guardate la bibliografia per i riferimneti 1

2 unsigned int source_ip;//ip sorgente unsigned int dest_ip;//ip destinazione IP_Header; typedef struct { unsigned short source;//porta sorgente unsigned short dest;//porta destinazione unsigned int seq;//numero della sequenza unsigned int ack_seq;//numero di Acnowledge unsigned char unused;//non utilizzato unsigned char doff:4;offset dei dati ;) //Se avete una macchina "Big Endian" invertite i due campi precedenti unsigned char flags;//flags TCP unsigned short checksum;//checksum pacchetto TCP unsigned short urg_ptr;//urgent Pointer TCP_Header; Queste due strutture, le inseriremo in un file header che poi importeremo all interno del nostro codice. Chiamatelo inet structures.h. Ed ora iniziamo a dare un occhiata al codice e a commentarlo (non spaventatevi! ;) ) riga per riga, il codice completo lo trovate alla fine: #include <stdio.h> Questa include e per le funzioni di i/o #include <sys/socket.h> Senza questa le socket ve le scordate ;) #include <sys/ioctl.h> Questa ci serve per poter utilizzare la funzione ioctl(). #include <net/if.h> Funzioni per accedere alle interfacce. #include <netinet/in.h> Strutture necessarie all utilizzo delle socket #include <arpa/inet.h> Contiene funzioni per fare conversioni da network a host byte order.vi ricordate little/big Endian? no? leggetevi lo Stevens!! #include <unistd.h> #include "inet_structures.h" Questa e la nostra libreria contenente le nostre strutture. #define IFACE "eth0" Interfaccia sulla quale vogliamo effettuare lo sniffing. 2

3 int sock, bytes_received, fromlen; In sock verra salvato il file descriptor della connessione (ricordatevi che in Unix le socket vengono viste come file particolari), mentre Bytes received, verra utilizzata come buffer per il salvataggio dei bytes ricevuti(ho detto ricevuti e non letti!). fromlen viene utilizzata come variabile d appoggio per salvare la dimensione della struttura sockaddr in. char buffer[65535]; Buffer utilizzato per salvare i byte letti dalla socket. struct sockaddr from; struct IP_Header *ip; struct TCP_Header *tcp; Queste sono le strutture che utiliziamo. Inet_SetPromisc(IFACE); Questa e la funzione che utiliziamo per aprire la socket e per settare l interfaccia in modalita promiscua. La modalita promiscua ci serve per poter analizzare tutti i pacchetti che viaggiano sulla nostra Lan locale, in pratica la nostra scheda di rete cattura anche i pacchetti con indirizzo MAC diverso dal proprio. Ovviamente saranno visibili solo i pacchetti che viaggiano sul nostro stesso segmento di rete, unico modo per vedere anche pacchetti su altri segmenti e utilizzare l arp poisoning, in questo modo la nostra scheda si identifichera come destinatario dei paccheti degli altri host nella loro arp cache. sock = Inet_SetPromisc(IFACE); Serve a creare la socket e a mettere in promiscuo la scheda, la funzione ve la spiego in dettaglio piu avanti. while(1) { In questo modo lo sniffer analizza in modo continuo i pacchetti. fromlen = sizeof(from); dimensione della strutura sockaddr in. bytes_recieved = recvfrom(sock, buffer, sizeof buffer, 0, (struct sockaddr *)&from, &fromlen); int recvfrom(int sockfd, void *buf, int len, unsigned int flags struct sockaddr *from, int *fromlen); Con questa chiamata, ci ritroveremo ad avere la struttura from riempita con tutti i dati della macchina da cui il pacchetto proviene. printf("\nbytes received ::: %5d\n",bytes_recieved); 3

4 recvfrom() restituisce il numero di byte che riesce a leggere dalla socket o -1 in caso di errore printf("source address ::: %s\n",inet_ntoa(from.sin_addr)); Stampo l IP sorgente del pacchetto. ip = (struct ip *)buffer; //Guardo se e un paccheto TCP if(ip->proto == 6) { printf("lunghezza Header = %d\n",ip->h_len); printf("protocollo = %d\n",ip->proto); tcp = (struct tcp *)(buffer + (4*ip->h_len)); printf("porta Sorgente = %d\n",ntohs(tcp->source)); printf("porta Destinazione = %d\n",ntohs(tcp->dest)); Analizzo l header IP e stampo le informazioni a video. int Inet_OpenRawSock() { int sock; if((sock = socket(af_inet, SOCK_RAW, IPPROTO_TCP)) < 0) { perror("errore creazione socket"); exit(0); ; return(sock); Con questa funzione creiamo la nostra socket in modalita raw e con protocollo TCP. int socket(int domain, int type, int protocol); Alla funzione socket() che si occupa di definire il protocollo vengono passati tre parametri : domain : Definisce un dominio di comunicazione,ovvero la famiglia del protocollo che sara usato per la comunicazione. PF_INET : ipv4 protocollo internet PF_INET6 : ipv6 protocollo internet PF_UNIX : Comunicazione locale PF_NS : Protocolli di Xerox NS PF_IMPLINK : Livello di collegamento IMP *PF (protocol family) e AF (address family) sono equivalenti. type : Indica il tipo di socket SOCK_STREAM : streaming connection (TCP) SOCK_DGRAM : datagram communication (UDP) SOCK_RAW : Accesso "grezzo" al protocollo di rete (IP) protocol : Indica il particolare protocollo utilizzato dal socket0 : il sistema usa il protocollo piu adatto al tipo di socket IPPROTO_UDP : udp IPPROTO_TCP : tcp IPPROTO_ICMP : icmp IPPROTO_RAW : ip 4

5 int Inet_SetPromisc(char *iface, int sock ) { int sock; struct ifreq ifr; sock = Inet_OpenRawSock(iface); memset(&ifr, 0, sizeof(ifr)); strncpy(ifr.ifr_name, iface, sizeof(ifr.ifr_name)); if((ioctl(sock, SIOCGIFFLAGS, &ifr) < 0)) { perror("errore Interfaccia\n"); exit(0); printf("interfaccia: %s\n", iface); //Setto l interfaccia in modalita promiscua if (!(ifr.ifr_flags & IFF_PROMISC)) { ifr.ifr_flags = IFF_PROMISC; if ( ioctl(sock, SIOCSIFFLAGS, &ifr) < 0 ){ // promisc mode perror("errore non riesco a settare la modalita promiscua"); exit(0); printf("interfaccia %s settata in modo promiscuo", iface); return(sock); Questa funzione e il cuore del nostro programma, prende la nostra interfaccia di rete e la setta in modalita promiscua. ifr e la struttura tramite utilizzata dalla funzione ioctl per accedere ai parametri della nostra interfaccia. ioctl(sock, SIOCGIFFLAGS, &ifr) Con questa chiamata, andiamo a leggere quali sono tutti i parametri della nostra interfaccia, per poi poterli modificare. Il primo parametro e la socket su qui vogliamo lavorare, mentre il secondo e la richiesta che vogliamo efettuare, ifr ci serve per salvare i valori della ioctl. ifr.ifr_flags = IFF_PROMISC; Qui modifico i parametri dell interfaccia per poi renderli effettivi tramite la ioctl successiva. if (ioctl (sock, SIOCSIFFLAGS, &ifr) == -1 ) Questa seconda chiamata alla ioctl rende effettivi i parametri che ho modificato nella struttura ifr. 5

6 2 Codice Sniffer in C #include <stdio.h> #include <sys/socket.h> #include <sys/ioctl.h> #include <net/if.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #include "inet_structures.h" #define IFACE "eth0" //prototipi int Inet_OpenRawSock(void); int Inet_SetPromisc(char *iface); int main() { int sock, bytes_recieved, fromlen; char buffer[65535]; struct sockaddr from; IP_Header *ip; TCP_Header *tcp; //Creiamo la socket e mettiamola in promiscuo sock=inet_setpromisc(iface); while(1) { fromlen = sizeof from; bytes_recieved = recvfrom(sock, buffer, sizeof(buffer), 0, (struct sockaddr *)&from, &fromlen); if (bytes_recieved < 0){ printf("sock=%d",sock); perror("errore recv"); exit(1); printf("\nbytes received ::: %5d\n",bytes_recieved); //printf("source address ::: %s\n",inet_ntoa(from.sin_addr)); ip = (IP_Header *)buffer; //Guardo se e un paccheto TCP if(ip->proto == 6) { printf("lunghezza Header = %d\n",ip->h_len); printf("protocollo = %d\n",ip->proto); tcp = (TCP_Header *)(buffer + (4*ip->h_len)); printf("porta Sorgente = %d\n",ntohs(tcp->source)); printf("porta Destinazione = %d\n",ntohs(tcp->dest)); 6

7 int Inet_OpenRawSock() { int sock; if((sock = socket(af_inet, SOCK_RAW, IPPROTO_TCP)) < 0) { perror("errore creazione socket"); exit(0); ; return(sock); int Inet_SetPromisc(char *iface) { int sock; struct ifreq ifr; sock = Inet_OpenRawSock(); printf("sock promisc=%d",sock); memset(&ifr, 0, sizeof(ifr)); strncpy(ifr.ifr_name, iface, sizeof(ifr.ifr_name)); if((ioctl(sock, SIOCGIFFLAGS, &ifr) < 0)) { perror("errore Interfaccia\n"); exit(0); printf("interfaccia: %s\n", iface); //Setto l interfaccia in modalita promiscua if (!(ifr.ifr_flags & IFF_PROMISC)) { ifr.ifr_flags = IFF_PROMISC; if ( ioctl(sock, SIOCSIFFLAGS, &ifr) < 0 ){ // promisc mode perror("errore non riesco a settare la modalita promiscua"); exit(0); printf("interfaccia %s settata in modo promiscuo", iface); return(sock); 3 Esempio di utilizzo Raw Sockets <Aspinall > /**************************************************************** * Copyright (c) 2003 * * author : <[email protected]> or <[email protected]>* * send to host a rst flag with ip spoofed* * compile gcc spoof_tcp.c -o spoof_tcp * * Use : #./spoof_tcp * 7

8 * License : This source file is under GPL * * Only for Linux kernel * * * * * * Special thanks to : #networking@azzurranet * * mydecay <[email protected]> * * sviat <[email protected]> * * This code is derived from my knowledge of raw sockets, * * due to lack of well-done documentation on the web. you * * can use it to forge your own tcp packets,all you ve got * * to do is change header to suit your needs. * * * * Disclaimer: * * Use of this information constitutes acceptance for use in * * an AS IS condition.there are NO warranties with regard to * * this information. In no event shall the author be liable for * * any damages whatsoever arising out of or in connection with * * the use or spread of this information. Any use of this * * information is at the user s own risk. * ****************************************************************/ #include <stdlib.h> #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netinet/in_systm.h> #include <netinet/ip.h> #include <netinet/tcp.h> #include <string.h> #include <unistd.h> #include <netdb.h> #include <time.h> void send_rst(void); /* algoritmo del checksum */ unsigned short in_cksum(unsigned short *addr,int len) { int sum = 0; u_short answer = 0; u_short *w = addr; int nleft = len; while (nleft > 1) { sum += *w++; nleft -= 2; if (nleft == 1 ) { 8

9 *( u_char* ) ( &answer ) = *( u_char * )w; sum += answer; sum = (sum >> 16) + (sum & 0xffff); sum += (sum >> 16); answer = ~sum; return(answer); // main() main(int argc, char *argv[]) { struct pseudo_header { u_long saddr; u_long daddr; char useless; char protocol; u_short length; ; char buf[256], buf2[256]; struct hostent *host; struct hostent *host2; struct iphdr *ip = (struct iphdr *) buf; struct tcphdr *tcp = (struct tcphdr *) (buf + sizeof(struct iphdr)); struct pseudo_header *pseudo = (struct pseudo_header *)buf2; struct sockaddr_in addr; struct sockaddr_in addr2; int fd, on=1; if (geteuid ()) { fprintf (stderr, "You should be root\n"); exit (1); if (argc < 3) { printf("usage : <spoof_sorg> <host_dest> <port>\n"); exit(1); if ((host = gethostbyname(argv[1]))!= NULL) memcpy (&addr.sin_addr, host->h_addr, host->h_length); else if((addr.sin_addr.s_addr = inet_addr(argv[1])) == INADDR_NONE) { herror("gethostbyname"); 9

10 exit(1); if ((host2 = gethostbyname(argv[2]))!= NULL) memcpy (&addr2.sin_addr, host->h_addr, host->h_length); else if((addr2.sin_addr.s_addr = inet_addr(argv[2])) == INADDR_NONE) { herror("gethostbyname"); exit(1); if((fd = socket(pf_inet,sock_raw,ipproto_tcp)) < 0) { perror("socket"); exit(1); if(setsockopt(fd,ipproto_ip,ip_hdrincl,&on,sizeof(on)) < 0) { perror("setsockopt"); exit(1); /* memoria a 0 */ memset(ip, 0, sizeof(struct iphdr)); memset(tcp, 0, sizeof(struct tcphdr)); memset(pseudo, 0, sizeof(struct pseudo_header)); /* HEADER */ pseudo->saddr = inet_addr(argv[1]); /* sorgente */ pseudo->daddr = inet_addr(argv[2]); /* destinazione */ pseudo->useless = 0; /* inutile :P */ pseudo->protocol = IPPROTO_TCP; /* tcp */ pseudo->length = htons(sizeof(struct tcphdr)); /* lunghezza header */ ip->ihl = 5; ip->version = 4; ip->tos = 0; ip->tot_len = sizeof(struct iphdr) + sizeof(struct tcphdr); ip->id = htons((u_short)random()); ip->frag_off = htons(ip_df); ip->ttl = 255; ip->protocol=ipproto_tcp; ip->saddr = addr.sin_addr.s_addr; ip->daddr = addr2.sin_addr.s_addr; ip->check = 0; tcp->source = htons(rand()); /* guardare sopra*/ tcp->dest = htons(atoi(argv[3])); /* guarda sopra */ tcp->seq = htonl(random()); /* dopo */ tcp->ack_seq = 0; /* dopo */ 10

11 tcp->doff = 5; /* offset */ tcp->fin = 0; tcp->syn = 0; tcp->rst = 1; tcp->psh = 0; tcp->ack = 0; tcp->urg = 0; tcp->window = htons(4000); tcp->urg_ptr = 0; tcp->check = 0; /* checksum */ memcpy(buf2, pseudo, sizeof(struct pseudo_header)); memcpy(buf2 + sizeof(struct pseudo_header), tcp, sizeof(struct tcphdr)); memset(buf2 + sizeof(struct pseudo_header) + sizeof(struct tcphdr), 0, 12); tcp->check = in_cksum((unsigned short *)buf2,(sizeof(struct pseudo_header) + sizeof(struct tcphdr) + 12 ip->check = in_cksum((unsigned short *)buf2,(sizeof(struct iphdr) + sizeof(struct tcphdr) + 12) & ~1); /* send */ addr.sin_family = AF_INET; addr.sin_addr.s_addr = addr2.sin_addr.s_addr; addr.sin_port = htons(7); if(sendto(fd,buf, ip->tot_len, 0,(struct sockaddr *)&addr, sizeof(addr)) < 0 ) { perror("sendto"); exit(1); printf("the ip header is %d bytes long.\n", sizeof(struct iphdr)); printf("the tcp header is %d bytes long.\n", sizeof(struct tcphdr)); printf("ip checksum correct\ntcp checksum correct\n"); printf("done\n"); return 0; 4 Ringraziamenti Eccovi i soliti noiosi ringraziamenti (mi costringono con la forza a farli!!) Un saluto a tutto il gruppo degli spine e ovviamente anche a tutti i ragazzi di #phrack.it;)...dimenticavo di salutare anche tutte le rosse con gli occhi verdi!! che vi credevate?che vivessi di sola informatica?:) Ovviamente saluto anche il miglior chan di Azzurra #networking. 11

12 References [1] W. Richard Stevens. The Protocols (TCP/IP Illustrated, Volume 1) Edition: Hardcover Stevens1 [2] W. Richard Stevens. T The Implementation (TCP/IP Illustrated, Volume 2) Edition: Hardcover Stevens1 12

Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server.

Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale architettura consente ai sistemi di condividere risorse e cooperare per il raggiungimento

Подробнее

I Socket. Laboratorio Software 2008-2009 M. Grotto R. Farina

I Socket. Laboratorio Software 2008-2009 M. Grotto R. Farina M. Grotto R. Farina Sommario 1. Applicazioni Distribuite 2. I Socket Introduzione Interfacce e protocolli Descrizione Stile di comunicazione Namespace e protocollo Include e system call Creazione e chiusura

Подробнее

Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server.

Socket. Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale architettura consente ai sistemi di condividere risorse e cooperare per il raggiungimento

Подробнее

Cenni di programmazione distribuita in C++ Mauro Piccolo [email protected]

Cenni di programmazione distribuita in C++ Mauro Piccolo piccolo@di.unito.it Cenni di programmazione distribuita in C++ Mauro Piccolo [email protected] Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale

Подробнее

unsigned long inet_addr(cp) char *cp;

unsigned long inet_addr(cp) char *cp; /* bcopystru.c #include struct point int x; char *y; ; struct point a, b; struct pint *pta, *ptb; a.x = 5; a.y = pippo ; b = a; printf i valori del secondo point sono: %d %s\n,b.x,b.y); pta=

Подробнее

Interazione (TCP) Client-Server con le socket

Interazione (TCP) Client-Server con le socket Interazione (TCP) Client-Server con le socket D. Gendarmi Interazione TCP Client/Server Server 2. Assegnare un local address alla socket 3. Settare la socket all ascolto 4. Iterativamente: a. Accettare

Подробнее

Introduzione allo sniffing

Introduzione allo sniffing Università degli Studi di Milano Facoltà di Scienze Matematiche, Fisiche e Naturali Anno Accademico 2007/2008 Introduzione allo sniffing Roberto Paleari 2-4 Settembre 2008 Roberto Paleari Introduzione

Подробнее

Una semplice applicazione client/server 1

Una semplice applicazione client/server 1 Una semplice applicazione client/server 1 Il nostro obiettivo In questa parte del corso implementeremo un applicazione client/server che usa i socket Internet disponibili nei sistemi Unix/Linux. Nello

Подробнее

COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX

COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX A cura del prof. Gino Tombolini 1 COMUNICAZIONE TRA PROCESSI REMOTI IN UNIX Il sistema UNIX TCP/IP fornisce un meccanismo di comunicazione tra processi residenti su nodi distinti di una rete, compatibili

Подробнее

L uso di Socket UDP. TCP vs. UDP UDP

L uso di Socket UDP. TCP vs. UDP UDP L uso di Socket UDP TCP TCP vs. UDP UDP 1 Interazione UDP Client/Server Server 1. Creare un socket 2. Assegnare un local address al socket 3. Iterativamente: a. Inviare e ricevere dati 4. Chiudere il socket

Подробнее

Uso di sniffer ed intercettazione del traffico IP

Uso di sniffer ed intercettazione del traffico IP Uso di sniffer ed intercettazione del traffico IP Massimo Bernaschi Istituto per le Applicazioni del Calcolo Mauro Picone Consiglio Nazionale delle Ricerche Viale del Policlinico, 137-00161 Rome - Italy

Подробнее

Socket TCP. prima parte

Socket TCP. prima parte Socket TCP prima parte Cosa cambia: socket int fd = socket(pf_inet, SOCK_STREAM, 0); if (fd

Подробнее

IPC Inter Process Communication

IPC Inter Process Communication Il protocollo TCP controlla che la trasmissione tra due end points avvenga correttamente. Non stabilisce alcun criterio su chi deve iniziare la comunicazione. Questo compito è svolto dalle applicazioni

Подробнее

Esempio 1: stampa locale di file remoto

Esempio 1: stampa locale di file remoto Alcuni esempi di uso di Socket Esempio 1: stampa locale di file remoto Visualizzazione locale del contenuto di un file remoto. Il client deve richiedere la creazione della connessione e successivamente

Подробнее

Reti (già Reti di Calcolatori )

Reti (già Reti di Calcolatori ) Reti (già Reti di Calcolatori ) Cenni di Socket Programming Renato Lo Cigno http://disi.unitn.it/locigno/index.php/teaching-duties/computer-networks Socket API Programmazione dei socket Obiettivo:imparare

Подробнее

IP - SPOOFING by styx^

IP - SPOOFING by styx^ IP - SPOOFING by styx^ INDICE 1.0 PREMESSA 2.0 3 WAY HANDSHAKE 3.0 IP INTERNET PROTOCOL 4.0 TPC TRANSFER CONTROL PROTOCOL 5.0 RAW SOCKET 6.0 PROBLEMATICHE 7.0 IP SPOOFING NON CIECO - 7.1 SCONNESSIONE -

Подробнее

I/O su Socket TCP: read()

I/O su Socket TCP: read() I/O su Socket TCP: read() I socket TCP, una volta che la connessione TCP sia stata instaurata, sono accedibili come se fossero dei file, mediante un descrittore di file (un intero) ottenuto tramite una

Подробнее

Interazione (TCP) Client-Server con le socket

Interazione (TCP) Client-Server con le socket Interazione (TCP) Client-Server con le socket Interazione TCP Client/Server Server 1. Creare una socket 2. Assegnare un local address alla socket 3. Settare la socket all ascolto 4. Iterativamente: a.

Подробнее

CREARE UNA LIBRERIA IN C

CREARE UNA LIBRERIA IN C CREARE UNA LIBRERIA IN C Prima di cominciare a vedere come fare una libreria, dobbiamo capire di cosa abbiamo bisogno... di un file.h che sarà l'header della libreria (ovvero il file che conterrà i prototipi

Подробнее

Esercitazione [6] Client/Server con Socket

Esercitazione [6] Client/Server con Socket Esercitazione [6] Client/Server con Socket Leonardo Aniello - [email protected] Daniele Cono D'Elia - [email protected] Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di

Подробнее

Creare una applicazione Winsock di base

Creare una applicazione Winsock di base Creare una applicazione Winsock di base Usiamo le API Winsock incluse in Creare un progetto per una Socket Windows (in Dev C++) Selezionare la file New Projects Selezionare Empty Project Salvare

Подробнее

Una prima applicazione in C per l utilizzo delle socket

Una prima applicazione in C per l utilizzo delle socket Una prima applicazione in C per l utilizzo delle socket Richiamo sulle socket Socket in Windows (WinSock) Differenze tra sistemi operativi D. Gendarmi Socket API API: Application Programming Interface

Подробнее

L interfaccia socket

L interfaccia socket L interfaccia socket Application Programming Interface: API Socket API Procedure base Altre procedure Ordinamento dei byte Interazione client-server orientata alla connessione Interazione client-server

Подробнее

rsystem Maximiliano Marchesi [email protected]

rsystem Maximiliano Marchesi maximiliano.marchesi@studenti.unipr.it Maximiliano Marchesi 28 Settembre 2005 Diario delle Revisioni Revisione 1.2 28 Settembre 2005 [email protected] Sommario Introduzione..................................................................................

Подробнее

Socket TCP. seconda parte

Socket TCP. seconda parte Socket TCP seconda parte Schema della connessione Computer 1 127.43.18.1 indirizzo I1 indirizzo I2 Computer 2 143.225.5.3 porta 45000 socket porta 5200 socket processo client processo server socket(...)

Подробнее

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Подробнее

Opzioni del Socket. Socket Options. Opzioni di Livello Socket. Livello delle Opzioni

Opzioni del Socket. Socket Options. Opzioni di Livello Socket. Livello delle Opzioni a.a. 2003/04 Opzioni del Socket Socket Options Prof. Vincenzo Auletta [email protected] http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in Informatica 1 Ogni socket

Подробнее

DATAGRAM SOCKET. Angelastro Sergio Diomede Antonio Viterbo Tommaso

DATAGRAM SOCKET. Angelastro Sergio Diomede Antonio Viterbo Tommaso DATAGRAM SOCKET Angelastro Sergio Diomede Antonio Viterbo Tommaso Definizione supporta i datagram privo di connessione messaggi inaffidabili di una lunghezza massima prefissata il protocollo UDP supporta

Подробнее

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori I

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori I Corso di Laurea in Ingegneria Informatica Corso di Reti di Calcolatori I Roberto Canonico ([email protected]) Giorgio Ventre ([email protected]) Il livello rete in Internet Il protocollo

Подробнее

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Подробнее

L uso di Socket UDP. Usiamo le API Winsock incluse in <Winsock.h> A.A. 2005/06. Dott.ssa Valeria Carofiglio

L uso di Socket UDP. Usiamo le API Winsock incluse in <Winsock.h> A.A. 2005/06. Dott.ssa Valeria Carofiglio L uso di Socket UDP Usiamo le API Winsock incluse in A.A. 2005/06 TCP TCP vs. UDP UDP Interazione UDP Client/Server Server 1. (Inizializzare una WSA) 2. Creare una socket 3. Assegnare un local

Подробнее

Raw socket. L intercettazione di un pacchetto IP

Raw socket. L intercettazione di un pacchetto IP Raw socket Il sistema compie molte operazioni sui livelli bassi della rete, ma che non sono immediatamente visibili all utente tramite l interfaccia delle socket L intercettazione di un pacchetto IP Anche

Подробнее

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014 Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 18 31/03/2014 Funzioni: Dichiarazione e Definizione La dichiarazione di una funzione serve a comunicare al compilatore quali sono

Подробнее

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni. Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni

Подробнее

request reply richiesta client processo di servizio processo server principale From - Valeria Cardellini, Corso Sist. Distr. A.A.

request reply richiesta client processo di servizio processo server principale From - Valeria Cardellini, Corso Sist. Distr. A.A. Applicazioni di rete Forniscono i servizi di alto livello utilizzati dagli utenti Determinano la percezione di qualità del servizio (QoS) che gli utenti hanno della rete sottostante Programmazione di applicazioni

Подробнее

Protocolli di Comunicazione

Protocolli di Comunicazione Protocolli di Comunicazione La rete Internet si è sviluppata al di fuori dal modello ISO-OSI e presenta una struttura solo parzialmente aderente al modello OSI. L'architettura di rete Internet Protocol

Подробнее

Creare un'elementare backdoor in C in ambiente UNIX

Creare un'elementare backdoor in C in ambiente UNIX Creare un'elementare backdoor in C in ambiente UNIX DISCLAIMER: Questo tutorial è a solo scopo didattico. L'autore NON si prende alcuna responsabilità circa usi errati o non legali delle informazioni qui

Подробнее

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 6

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 6 UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica, Elettronica e delle Telecomunicazioni a.a. 2005-2006 CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 6 1 Socket

Подробнее

Gestione dei File in C

Gestione dei File in C Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania [email protected] http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte

Подробнее

ESERCIZIO NUMERO 1 ESERCIZIO NUM. 2

ESERCIZIO NUMERO 1 ESERCIZIO NUM. 2 ESERCIZIO NUMERO 1 Alcuni errori di segnale possono provocare la sostituzione di interi gruppi di bit di un pacchetto mediante una sequenza di valori 0 oppure una sequenza di valori 1. Supponete che vengano

Подробнее

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli

Подробнее

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI Confronto tra ISO-OSI e TCP/IP, con approfondimento di quest ultimo e del livello di trasporto in cui agiscono i SOCKET. TCP/IP

Подробнее

Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012. - Comunicazione Tra Processi (IPC) - - 2 Parte -

Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012. - Comunicazione Tra Processi (IPC) - - 2 Parte - Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012 - Comunicazione Tra Processi (IPC) - - 2 Parte - 1 Sommario Comunicazione tra processi su macchine diverse in rete: Socket TCP o Socket Stream

Подробнее

TCP: trasmissione Source port [16 bit] - Identifica il numero di porta sull'host mittente associato alla connessione TCP. Destination port [16 bit] - Identifica il numero di porta sull'host destinatario

Подробнее

Introduzione allo sniffing

Introduzione allo sniffing Introduzione allo sniffing Andrea Lanzi, Davide Marrone, Roberto Paleari Università degli Studi di Milano Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica 29 novembre 2006

Подробнее

Il livello Network del TCP/IP. Il protocollo IP (versione 4)

Il livello Network del TCP/IP. Il protocollo IP (versione 4) Il livello Network del TCP/IP. Il protocollo IP (versione 4) L architettura TCP/IP (il cui nome più preciso è ) è formata da diversi componenti, che si posizionano nello stack dei protocolli a partire

Подробнее

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30'

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30' Prima di cominciare: si scarichi dal sito http://esamix.labx il file StartKit5.zip contenente i file necessari (solution di VS2008 e progetto compresi). Avvertenze per la consegna: apporre all inizio di

Подробнее

Controllo Winsock di Visual Basic

Controllo Winsock di Visual Basic Controllo Winsock di Visual Basic Il controllo Winsock, non visibile all'utente, consente di accedere ai servizi di rete TCP e UDP. Per creare applicazioni client o server non è necessario conoscere in

Подробнее

Innanzitutto, esistono diversi modi per realizzare una rete o più reti messe insieme; vi illustro la mia soluzione :

Innanzitutto, esistono diversi modi per realizzare una rete o più reti messe insieme; vi illustro la mia soluzione : SALVE, Scrivo questo breve testo di delucidazioni a seguito di alcune richieste.. e per permettere a tutti di usare al meglio zeroshell per quanto riguarda i sistemi di video sorveglianza; é mia intenzione

Подробнее

Introduzione allo sniffing

Introduzione allo sniffing Università degli Studi di Milano Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica November 30, 2005 Sommario Introduzione alle chiamate socket 1 Introduzione alle chiamate

Подробнее

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per

Подробнее

Lab. di Sistemi Operativi - Esercitazione n 9- -Thread-

Lab. di Sistemi Operativi - Esercitazione n 9- -Thread- Lab. di Sistemi Operativi - Esercitazione n 9- -Thread- 1 Sommario Esercizi su: Comunicazione tra processi: la funzione pipe() Condivisione dati e codice tra due o più processi: concetto di Thread 2 -

Подробнее

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete IP Analizziamo con sufficiente dettaglio il sistema denominato IP, usato per consentire a due computer mobili di spostarsi liberamente in altre reti pur mantenendo lo stesso indirizzo IP. In particolare,

Подробнее

Basi di network programming sotto Unix/Linux (draft version) Claudio Piciarelli

Basi di network programming sotto Unix/Linux (draft version) Claudio Piciarelli Basi di network programming sotto Unix/Linux (draft version) Claudio Piciarelli 20 dicembre 2004 ii Indice 1 Introduzione 1 1.1 Notazioni e terminologia..................................... 1 2 Un po di

Подробнее

CORSO DI RETI SSIS. Lezione n.2. 2 Novembre 2005 Laura Ricci

CORSO DI RETI SSIS. Lezione n.2. 2 Novembre 2005 Laura Ricci CORSO DI RETI SSIS Lezione n.2. 2 Novembre 2005 Laura Ricci IL DOMAIN NAME SYSTEM (DNS) Indirizzi IP poco adatti per essere memorizzati da utenti umani è prevista la possibiltà di associare nomi simbolici

Подробнее

Il livello di Trasporto del TCP/IP

Il livello di Trasporto del TCP/IP Il livello di Trasporto del TCP/IP Il compito del livello transport (livello 4) è di fornire un trasporto efficace dall'host di origine a quello di destinazione, indipendentemente dalla rete utilizzata.

Подробнее

IP (Internet Protocol) sta al livello 2 della scala Tcp/Ip o al livello 3 della scala ISO/OSI. Un indirizzo IP identifica in modo logico (non fisico

IP (Internet Protocol) sta al livello 2 della scala Tcp/Ip o al livello 3 della scala ISO/OSI. Un indirizzo IP identifica in modo logico (non fisico IP e subnetting Ip IP (Internet Protocol) sta al livello 2 della scala Tcp/Ip o al livello 3 della scala ISO/OSI. Un indirizzo IP identifica in modo logico (non fisico come nel caso del MAC Address) una

Подробнее

Reti. Reti. IPv4: concetti fondamentali. arp (address resolution protocol) Architettura a livelli (modello OSI)

Reti. Reti. IPv4: concetti fondamentali. arp (address resolution protocol) Architettura a livelli (modello OSI) Reti Architettura a livelli (modello OSI) Prevede sette livelli: applicazione, presentazione, sessione, trasporto, rete, collegamento dei dati (datalink), fisico. TCP/IP: si può analizzare in maniera analoga

Подробнее

Laboratorio di Programmazione in Rete

Laboratorio di Programmazione in Rete Laboratorio di rogrammazione in Rete a.a. 2005/2006 http://www.di.uniba.it/~lisi/courses/prog-rete/prog-rete0506.htm dott.ssa Francesca A. Lisi [email protected] Orario di ricevimento: mercoledì ore 10-12

Подробнее

TCP/IP: summary. Lorenzo Cavallaro, Andrea Lanzi

TCP/IP: summary. Lorenzo Cavallaro, Andrea Lanzi Università degli Studi di Milano Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica December 7, 2004 Sommario 1 La suite di protocolli TCP/IP Layer 2 3 4 5 6 Sommario 1 La

Подробнее

Socket API per il Multicast

Socket API per il Multicast Socket API per il Multicast Massimo Bernaschi Istituto per le Applicazioni del Calcolo Mauro Picone Consiglio Nazionale delle Ricerche Viale del Policlinico, 137-00161 Rome - Italy http://www.iac.cnr.it/

Подробнее

INTERNET DOMAIN SOCKETS (Cap.59)

INTERNET DOMAIN SOCKETS (Cap.59) INTERNET DOMAIN SOCKETS (Cap.59) Internet Domain Stream Socket TCP Internet Domain Datagram Socket UDP A differenza degli UDDS I datagrams possono essere persi duplicati o arrivare in un ordine diverso

Подробнее

Guida all utilizzo del compilatore lcc-win32 per creare una applicazione console

Guida all utilizzo del compilatore lcc-win32 per creare una applicazione console Guida all utilizzo del compilatore lcc-win32 per creare una applicazione console Il compilatore per i linguaggi c e c++ chiamato lcc-win32 è un prodotto gratuito scaricabile dal sito http://www.cs.virginia.edu/~lcc-win32/

Подробнее

Esercitazione [5] Input/Output su Socket

Esercitazione [5] Input/Output su Socket Esercitazione [5] Input/Output su Socket Leonardo Aniello - [email protected] Daniele Cono D'Elia - [email protected] Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di Calcolo

Подробнее

Lab. di Sistemi Operativi - Esercitazione n 7- -Gestione dei processi Unix-

Lab. di Sistemi Operativi - Esercitazione n 7- -Gestione dei processi Unix- Lab. di Sistemi Operativi - Esercitazione n 7- -Gestione dei processi Unix- 1 Sommario Esercizi sulla gestione dei processi Creazione di un nuovo processo: fork Sincronizzazione tra processi: wait 2 -

Подробнее

Sicurezza nelle reti

Sicurezza nelle reti Sicurezza nelle reti Manipolazione indirizzi IP 1 Concetti Reti Rete IP definita dalla maschera di rete Non necessariamente concetto geografico Non è detto che macchine della stessa rete siano vicine 2

Подробнее