Avalanches
Nuova Discussione
Rispondi
 
Stampa | Notifica email    
Autore

socket UDP

Ultimo Aggiornamento: 07/10/2003 19:32
Email Scheda Utente
Post: 220
Registrato il: 01/03/2003
Membro del forum
grande amico del forum
OFFLINE
30/07/2003 16:34
 
Modifica
 
Cancella
 
Quota

Salve ragazzi.
Alla fine sono riuscito a fare un port scanner per i servizi TCP.
Ora vorrei aggiungere una funzione per quelli UDP ma non so da dove cominciare!!
questo è ciò che ho fatto fin'ora:

------------- portscanner.c -------------
#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>

void TCP_connect_scan(char hts[255], unsigned int x, unsigned int tport);

struct hostent *hti;

int main()
{
char hts[255];
unsigned int fport, tport;

printf("\nInserire l'IP o l'hostname: ");
scanf("%s",hts);
printf("Inserire la porta iniziale: ");
scanf("%d",&fport);
printf("Inserire la porta finale: ");
scanf("%d",&tport);

if((hti = gethostbyname(hts)) == NULL) { printf("\nError: host not found\n"); exit(1); }

TCP_connect_scan(hts,fport,tport);
}

void TCP_connect_scan(char hts[255], unsigned int x, unsigned int tport)
{
int sd, new_sd;
struct sockaddr_in addr;

addr.sin_family = AF_INET;
addr.sin_addr = *((struct in_addr *)hti->h_addr);

while(x < tport)
{
sd = socket(AF_INET, SOCK_STREAM, 0);

addr.sin_port = htons(x);
new_sd = connect(sd, (struct sockaddr *)&addr, sizeof(struct sockaddr));
if(new_sd == 0) printf("%d tcp\n",x);
x++;
}

close(new_sd);
close(sd);
}
-----------------------------------------

E ora mi serve una funzione pressochè identica a TCP_connect_scan() ma ovviamente non so come fare per sapere se la porta è aperta, dato che non posso con l'if confrontare un socket descriptor dato da connect() con 0(trattandosi di un SOCK_DGRAM)...

Aiutatemi

P.S. tanto avete un mese per pensarci ¬_¬

[Modificato da lordlothar 30/07/2003 16.37]

[Modificato da lordlothar 30/07/2003 16.44]

[Modificato da lordlothar 30/07/2003 16.45]

Email Scheda Utente
Post: 223
Registrato il: 01/03/2003
Membro del forum
grande amico del forum
OFFLINE
31/08/2003 00:17
 
Modifica
 
Cancella
 
Quota

a questo punto (un mese) rido per non piangere...
Email Scheda Utente
Post: 257
Registrato il: 01/03/2003
Membro del forum
grande amico del forum
OFFLINE
24/09/2003 00:00
 
Modifica
 
Cancella
 
Quota

nessuno è in grado di darmi una mano (improbabile) o vi divertite di più a scrivere altro? [SM=g27979]
Email Scheda Utente
Post: 306
Registrato il: 01/03/2003
Dio
superamico del forum
OFFLINE
24/09/2003 13:34
 
Modifica
 
Cancella
 
Quota

Ora come ora non capisco neanche il sorgente sry...
Email Scheda Utente
Post: 633
Registrato il: 30/01/2003
Dio
superamico del forum
OFFLINE
24/09/2003 16:15
 
Modifica
 
Cancella
 
Quota

Ma che problema ti dà?
Email Scheda Utente
Post: 5
Registrato il: 19/07/2003
Membro del forum
nuovo iscritto
OFFLINE
24/09/2003 18:17
 
Modifica
 
Cancella
 
Quota

Hai provato a chimare GetSockOpt ???

so che ritorna la proprietà del socket che richiedi(nn mi chiedere come funzioni e come si usi)....inoltre hai fatto delle prove per vedere i diversi funzionamenti se hai una UDP aperta o chiusa?
Email Scheda Utente
Post: 258
Registrato il: 01/03/2003
Membro del forum
grande amico del forum
OFFLINE
27/09/2003 18:19
 
Modifica
 
Cancella
 
Quota

non è che mi ha dato un errore, nè centra nulla con il codice che ho postato.
Volevo chiedervi che cosa bisogna fare per fare un client UDP. So che bisogna usare recvfrom() e sendto(), e so anche perchè ma non so che risposte può dare e quali dati mandargli.
Email Scheda Utente
Post: 7
Registrato il: 19/07/2003
Membro del forum
nuovo iscritto
OFFLINE
27/09/2003 21:47
 
Modifica
 
Cancella
 
Quota

Le stesse che da Send e Recv
Email Scheda Utente
Post: 259
Registrato il: 01/03/2003
Membro del forum
grande amico del forum
OFFLINE
29/09/2003 23:23
 
Modifica
 
Cancella
 
Quota

no, nel senso che non so come reagisce un socket UDP a una chiamata perciò non ho idea di cosa mandargli o ricevere da esso.
Email Scheda Utente
Post: 9
Registrato il: 19/07/2003
Membro del forum
nuovo iscritto
OFFLINE
30/09/2003 20:34
 
Modifica
 
Cancella
 
Quota

mmm non capisco cosa nn capisci :)

con recvfrom e sendto mandi un normale buffer contenente dati binari o testo....niente di strano.
Se fa come vb, la chiamata a sendto apre la connessione direttamente se nn lo è.
Email Scheda Utente
Post: 261
Registrato il: 01/03/2003
Membro del forum
grande amico del forum
OFFLINE
07/10/2003 19:32
 
Modifica
 
Cancella
 
Quota

penso che la mia risposta sia che si ottiene "ICMP-Host-Unreachable" se non viene trovato il server... boh!
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
Rispondi
Cerca nel forum

Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Crea forum gratis, gestisci la tua comunità! Iscriviti a FreeForumZone
FreeForumZone [v.6.1] - Leggendo la pagina si accettano regolamento e privacy
Tutti gli orari sono GMT+01:00. Adesso sono le 12:53. Versione: Stampabile | Mobile
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com