Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-05-2003, 09:19   #1
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
quali funzioni per accedere al datagramma ethernet in linux

ciao, sto cercando dei link che descrivano le union e le struct che permettono di accedere al pacchetto ethernet...sto cercando da mezz'ora e non ho trovato nulla!
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 01-05-2003, 10:05   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Prova a vedere qui dentro:

linux/if_ether.h
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 01-05-2003, 17:10   #3
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
si c'avevo già guardato....in effetti il mio problema è più che altro di "formattazione"...per esempio un indirizzo fisico ethernet ( 6 coppie di cifre esadecimali separate dai : ) lo vorrei stampare così e invece me lo dà in decimale....poi ho anche dei problemi a stampare ( nel senso di cout<< o printf ) gli indirizzi ip quadripuntati..insomma mi incasino con htons inet_toa eccetera... se sapete dove trovare un buon tutorial sulla programmazione di rete oppure un bel sorgente da analizzare ( che per me è la cosa migliore.....)che faccia uso di ethhdr fatemelo sapere ...

ps: leggere gli header file non è proprio semplicissimo..... cosa vuol dire #endif ???
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2003, 13:29   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
E' una direttiva al compilatore :

Solitamente comincia così:

#ifndef PIPPO
...
#endif

Se non è definito PIPPO... Per gli include si fa sempre questa cosa:

#ifndef PIPPO_H
#define PIPPO_H
...
#endif

Serve per evitare di includere più volte gli stessi header...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 07-05-2003, 08:43   #5
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
ho un'altra domanda: se accedo all'header di un pacchettto ip che funzioni devo usare per trasformare l'indirizzo ip ( 32 bit) nella notazione quadripuntata che tutti conosciamo?? (accedo ai cambi s_addr[32] e d_addr[32] tramite un puntatore alla struct iphdr)...sono giorni che cerco questa funzione ma non l'ho trovata...
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 07-05-2003, 09:03   #6
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Io su Win uso inet_ntoa...dovrebbe essere la stessa...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 07-05-2003, 19:16   #7
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
si ma probabilmente la usi su un puntatore dereferenziato alla struct sockaddr_in..ora sono su win e il sorgente ce l'ho in una partizione linux...inet_ntoa non può essere applicata direttamente ai campi indirizzi dell'header ip.....sto impazzendo...oltretutto non sono ancora riuscito a trovare la funzione che trasforma l'indirizzo mac decimale nella notazione normale....mi ci vorrebbe una enciclopedia con tutte le funzioni del c++
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 07-05-2003, 19:54   #8
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ah...ma te vuoi il dotted decimale dell'indirizzo MAC ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 08-05-2003, 16:22   #9
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
no voglio la versione esadecimale saperata da :
per esempio 00:00:e3:99:f4:00
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 08-05-2003, 16:29   #10
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Non te la puoi calcolare da solo ? E' banale
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 09-05-2003, 07:50   #11
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
mmmm...si tratterebbe di prendere 8 bit per volta (= due cifre esadecimali) e stampare un : tra ogni coppia....come faccio però a prendere 8 bit per volta da un numero di 48 bit ?( castarli in hex è facile)...
sto pensando che si potrebbe ottenere questa informazione ( x l'host, non per chi si collega) anche interrogando il dirver della scheda di rete...il guaio è che non ho la minima idea di come si faccia...
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 09-05-2003, 08:43   #12
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Dimmi come sono memorizzati...sia il MAC che l'ip (soprattutto il tipo mi interessa)...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 09-05-2003, 16:03   #13
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
ho risolto il discorso MAC, avevi ragione, si fa prima a farlo che a dirlo...nell'header ethernet gli indirizzi mac di origine e destinazione sono array di 6 elementi di tipo char... nel c standard manca il tipo stringa ma cout e cin possono essere usati per l'input e l'output si array di char ( e solo di char, ovviamente ) quindi pesavo che bastasse una normale cout...ho risolto in modo piuttosto semplice: con un ciclo for prendo ciascuno dei 6 elementi , lo casto in un int e poi gli dico di sputarlo fuori in esadecimale e se l'elemento non è il sesto di affiancare i:...perfetto...

eccoti il codice:
for (int i = 0; i<6 ; i++)
{
cout<<hex<<int(ethernet_datagram->h_dest[i]);
if (i!=5) cout<<":";
}
cout<<endl;

hex lo usi includendo iomanip.h...

per l'indirizzo ip la vedo dura....perchè nell'header IP è un u_int32_t probabilmente un unsigned int che i programmatori di ip.h hanno definito da qualche altra parte...inet_ntoa forse va bene però il vi mi dice che non riesce a castare un u_int32_t in un tipo non scalare ( =l'indirizzo ip nella notazione classica):
suggerimenti?
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 09-05-2003, 16:25   #14
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Si faceva bene anche con il C...
Codice:
char tmp[18];
sprintf(tmp,"%x:%x:%x:%x:%x:%x", e->h_dest[0], e->h_dest[1], ....);
Visto che in_addr è così:
Codice:
struct in_addr {
  union {
          struct { u_char s_b1,s_b2,s_b3,s_b4; }   S_un_b;
          struct { u_short s_w1,s_w2; }            S_un_w;
          u_long                                   S_addr;
  } S_un;
};
...prova così:
Codice:
in_addr addr;
addr.S_un.S_addr = (u_long)il_tuo_u_int32_t;
inet_ntoa(addr);
Prova così... Se ti viene visualizzato al contrario dimmile che bisogna convertirlo...
Altrimenti si ricorre al trucco:
Codice:
unsigned char *ip = (unsigned char *)&il_tuo_u_int32_t;
Dopo accedendo da ip[0] a ip[4] hai le varie parti dell'ip...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 09-05-2003, 19:03   #15
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
nell'ultimo pezzo di codice che significato ha & ?
grazie cmq domani provo..
forse non è cmq complicato, per esempio basterebbe prendere 8 bit alla volta dei 32 dell'indirizzo ip e castarli a int uno per uno...
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 09-05-2003, 19:14   #16
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originally posted by "BountyKiller"

nell'ultimo pezzo di codice che significato ha & ?
L'indirizzo della variabile... Gli faccio un cast ad un puntatore a char e poi mi guardo un byte alla volta...
Quote:
Originally posted by "BountyKiller"

forse non è cmq complicato, per esempio basterebbe prendere 8 bit alla volta dei 32 dell'indirizzo ip e castarli a in uno per uno...
Certo... Puoi semplicemente fare un AND con le varie maschere e con degli shift riportare i vari byte nella posizione meno significativa...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 10-05-2003, 08:35   #17
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
scusa domanda scema....è ovvio che è l'operatore address of ....sarà il caldo ....cmq con i due esempi che mi hai proposto ho dei problemi...il primo mi dice che S_un non è un campo della struct in_addr ( e c'ha ragione..) nel secondo mi dice che è illegale il casting .. quasi proverei con la mascheratura..un po' rozzo ma semplice...non c'è bisogno di convertire in binario giusto? ( i numeri sono numeri cmq li rappresenti)...piuttosto per fare l'and bit a bit ? non l'ho mai fatto...
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 10-05-2003, 11:49   #18
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
ho risolto come dicevo io...è incredibile come certe volte uno perde tempo a pensare a cose complicate e invece basta scrivere due righe di codice e risolvi il problema in cinque minuti...
eccoti la funzione con un main di prova:

//funzione che riceve in input il campo indirizzo ( sorgente e/o destinazione) dell'header IP

#include <iostream.h>
#include <iomanip.h>

void StampaIP(unsigned int indirizzo)
{
unsigned int maschera1=0x000000FF;
unsigned int maschera2=0x0000FF00;
unsigned int maschera3=0x00FF0000;
unsigned int maschera4=0xFF000000;
unsigned int ris1 = indirizzo & maschera1;
unsigned int ris2 = indirizzo & maschera2;
unsigned int ris3 = indirizzo & maschera3;
unsigned int ris4 = indirizzo & maschera4;
ris2 >>= 8;
ris3 >>= 16;
ris4 >>= 24;
cout<<ris4<<"."<<ris3<<"."<<ris2<<"."<<ris1<<endl;
}

void main()
{
unsigned int indirizzo;
cout<<"inserire un numero di 8 cifre esadecimali:"<<endl;
cin>>hex>>indirizzo;
cout<<"l'indirizzo IP e': ";
StampaIP(indirizzo);
}

l'ho provato adesso ed è ok: se indirizzo è effettivemente saddr o daddr va passato in host to network long, non so se è linux (mandrake9.1) che lo vuole così o la cpu del mio portatile ( pentium3 m) o tutti e due....pensandoci bene non è necessaria la mascheratura, basta fare 4 shift e dopo ciascuno shift assegnare i vari pezzi dell'indirizzo IP.
ora grazie alla mia funzione posso levarmi dalle palle la structsockaddr_in e usare solo i campi sadddr e daddr dell'header ip il che mi sembra più chiaro e pulito ...se ci sono altri problemi mi rifaccio vivo in questo thread, per intanto ti saluto e ti ringrazio (mi sembri un programmatore professionista..sbaglio? )
ciao!!
BK

ps: il programma che sto scrivendo è uno sniffer per rete locale..
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 13-05-2003, 12:01   #19
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
ho un altra domanda> lo sniffer inizialmente chiede quanti pacchetti sniffare e per interromperlo prima che abbia finito devo schiacciare ctrl + c io vorrei che controllasse se, mentre sniffa, l utente ha premuto il tasto ESC, e se si si interrompe e fa vedere quello che ha sniffato...come faccio a fare un monitoraggio del tasto ESC?
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 13-05-2003, 17:15   #20
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
cionci ci sei?? ( ma perchè con konqueror non posso usare le emotincohns????? )
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
iPhone Fold: scorte limitate al lancio m...
OpenAI porterà la pubblicità in ChatGPT ...
TSMC aumenterà ancora i prezzi: nel 2026...
Marvel pubblica anche il secondo teaser ...
Nuovo accordo tra xAI e il Pentagono: l'...
La famiglia Xiaomi 17 sta per registrare...
Nuove auto elettriche che vedremo sul me...
E-bike illegali, a Verona il più ...
Quali sono i giochi più venduti su Steam...
HONOR sta per lanciare un nuovo smartpho...
Jared Isaacman sarà alla guida de...
Il Tesla Cybertruck non arriverà ...
Xiaomi Watch 5 è ufficiale: architettura...
CD Projekt vende GOG: il co-fondatore Mi...
Il meglio di Amazon in 26 prodotti, aggi...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:36.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v