Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto
Amazon porta i colori sul suo Kindle da scrittura più grande: schermo Colorsoft a 11 pollici, processore quad-core, penna premium più reattiva e strumenti IA per le note, sono le note salienti. Il salto di prezzo rispetto al modello in bianco e nero si fa sentire, anche se la percezione è quella di trovarsi di fronte a un prodotto di fascia altissima, per veri appassionati
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
Abbiamo intervistato Sumit Dhawan, CEO di Proofpoint, per capire come stia cambiando il mondo della sicurezza con l'avvento dell'intelligenza artificiale e con il ritmo sempre più serrato a cui vengono trovate vulnerabilità nel software. Un problema significativo, che richiederà del tempo per essere risolto (o quantomeno arginato)
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
La parola d'ordine al Nextcloud Summit 2026, che si è tenuto a Monaco, è stata "sovranità". Non come è spesso usato questo termine in politica ma, al contrario, come capacità positiva di decidere il proprio destino tecnologico, con modalità collaborative e aperte. L'Europa dice già molto nel mondo open source, che viene visto come mezzo per ottenere la tanto agognata autonomia digitale
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-05-2003, 08: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, 09: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, 16: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, 12: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, 07: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, 08: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, 18: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, 18: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, 15: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, 15: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, 06: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, 07: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, 15: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, 15: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, 18: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, 18: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, 07: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, 10: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, 11: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, 16: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


Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto Kindle Scribe Colorsoft: riduce le cornici e div...
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint L'IA cambia tutte le regole della sicurezza tra ...
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
Crisi Volkswagen, torna l'ipotesi cessio...
Il CERN spegne il Large Hadron Collider:...
Stranger Than Heaven avrà una storia mol...
Il futuro prezzo di PS6 preoccupa i gioc...
AMD Ryzen 10000 sempre più vicini...
OpenAI strappa ad Apple il capo dell'har...
Caso Anthropic, l'Austria all'UE: "...
Occhiali smart a scuola: cresce il numer...
Picchi di consumi e blackout in Italia: ...
Pannelli fotovoltaici e caldo estremo: q...
Colpisce droni in movimento senza fermar...
TikTok punta a diventare una super app: ...
Google contro l'Europa: 'Così sta...
Il Trump Phone è ora ordinabile c...
GTA VI su PS5 8 volte più richies...
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: 14:05.


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