Newsgroup: it.comp.os.linux.development
Titolo: flusso da memoria

Salve a tutti,
ho già chiesto in altri ng ma mi hanno rimandato qui... ;)
Se io volessi monitorare tutti i dati inviati al modem su
/dev/ttyS0, conoscendo l'indirizzo ($03f8-qualcosaltro), posso
fare una sorta di stream a partire da quell'indirizzo?
scusate, sono imbranato, ma devo assolutamente scoprire un
modo per intercettare tutte le stringhe AT inviate al modem,
oramai è una questione di principo... ;)
grazie - saluti ;)
Marco Zanon (powered by Linux Mandrake 7.1)
Coming soon: 
http://www.marcozanon.com
!

Di preciso che cosa vuoi fare?
Idea banale: Potresti collegare pc e modem un'altro computer che copi da una
seriale all'altra i dati che riceve.
Ciao
Alessandro

ciao ;)
Sei sicuro che non ci sia gia' qualcosa del genere? Soprattutto se parli di
connessione a internet sono convinto che qualcosa c'e' gia' (wdial o roba
del genere).
Se non si tratta di internet la soluzione dipende dal programma in
questione, ma potrebbe bastare impostare opportunamente i permessi sul
device (/dev/ttyS*) per ottenere il risultato (e questa sarebbe la soluzione
piu' pulita).
Se invece devi entrare nel merito della stringa potresti dirigere il
programma di comunicazione su un pipe dal quale il tuo programma filtro
legge e ripete sulla seriale e viceversa ma anche questo non e' detto che
funzioni ne' che sia applicabile al tuo caso (prova a cercare informazioni
su ttysnoop o roba del genere).
Un'altra possibilita' potrebbe essere di mettere mano al driver delle
seriali ma non mi sembra che sia il caso...
Ciao
Alessandro Staltari.

> Di preciso che cosa vuoi fare?
di preciso, vorrei creare un demone per sapere se qualche
programma sta cercando di accedere al modem ed usarlo per fare
telefonate: in tal caso, se il numero che vogliono comporre fa
parte di una certa lista predefinita dal root ok, altrimenti
ciao ;)
se leggo l'echo da /dev/ttyS0 (ammesso che si possa), "rubo"
l'eco al programma che sta componendo, che appunto si
aspettava l'echo di ritorno,
quindi se faccio un monitoraggio costante della memoria in
quell'indirizzo dovrei esserci...
non si possono usare i puntatori normalmente?
int* i=0x03f8
e poi usare questo per leggere dalla memoria (tanto il
programma è root e non ha problemi di permessi di accesso)?


aspettava l'echo di ritorno,
..
Perche' non poll()i il file e trappi SIGIO?
Ma poi SIGIO arriva anche quando scrivi?
Ma poi il segnale e' proprio SIGIO?
Ma perche' non sto zitto quando non so niente? :-)))
--
  	Giuseppe "Cowo" Corbelli  -->>  Riding on Linux-2.2.16
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
  -<! Any sufficiently advanced bug is indistinguishable from a feature. !>-
                 Rich Kulawiec

 seriali ma non mi sembra che sia il caso...
mmh, e se io volessi impostare a 0 tutti i permessi di
/dev/ttyS0 e farmi un mio /dev/safemodem e creare un driver
per questo device? dopodiché, se quello che viene inviato a
safemodem "mi piace", allora "riaccendo" /dev/ttyS0 e
spedisco, sennò nulla...
insomma: come si crea un driver? ;))
il libro del Rubini è veramente troppo vecchio come sento dire
in giro? quando esce, se lo sai, una nuova versione?
grazie mille, ciao :))


 Ma perche' non sto zitto quando non so niente? :-)))
beh, premettendo che io non so nemmeno scrivere il classico
"hello world" senza dover correggere un paio di errori prima
di una compilazione valida (;)), vorrei chiederti cosa
significa poll(): cioè, è una system call?
insomma, credo che ciò che voglio scrivere io sia qualcosa di
simile ad un driver, solo che, per quanto ne so, esiste un
solo libro buono, quello del Rubini, ma sento dire dappertutto
che è vecchio di quasi 3 anni e che molti esempi non compilano
sui kernel 2.x :(((
per cui sono messo malino...
grazie - ciao ;)


 wrote:
...
Qui ci starebbe bene un bel moduletto...
Vi][oZ
-- 
          We are the true believers
       It's our turn to show the world
 In the fire of heavy metal we were burned
         It's more than our religion
          It's the only way to live
           But the enemies of metal
              We can't forgive

> Qui ci starebbe bene un bel moduletto...
sě, ma come imparo a farli?
il Linux Kernel Module Programming non mi pare che dica sto
granché (ammetto di avergli dato un'occhiata in fretta), e per
i driver non c'č molto da cui prendere spunto...


 No. Quello no e' indirizzo di memoria. Quello e' un indirizzo di una porta
0x3f8 e' l'indirizzo i/o di base del chip che gestisce una delle seriali
standard dei PC e corrisponde alla porta dati in tx (output) e in rx
(input).
Se vuoi vedere come viene gestita una seriale rs232 in Linux puoi leggere i
sorgenti: il file, se non ricordo male, si chiami "serial.c".
Comunque non e' possibile effettuare uno spionaggio dell'accesso ad un
indirizzo i/o via software; nei processori x86, se non ricordo male,
bisognerebbe usare gli indirizzi i/o in modo "virtuale" e comunque non penso
che sia la strada giusta per risolvere il tuo problema.
ciao
Stefano C.

 che sia la strada giusta per risolvere il tuo problema.
grazie di aver risposto, vorrà dire che imposterò a 0 i
permessi di /dev/ttyS0 e mi creerò /dev/modemwall, obbligando
i modem a comunicare con tale device che eventualmente
riabiliterà temporaneamente /dev/ttyS0...
per cominciare a studiare i driver va bene il Rubini?


 int* i=0x03f8
No, perche 0x03f8 e' un indirizzio di I/O, dovresti provare con le inp e le 
out .... ma non credo che andresti lontano: ti hanno gia spiegato che se 
leggi da 0x03f8 non e' detto ( anzi quasi mai ) che ti ritrovi l'ultima 
cosa scritta !!
e' molto piu' semplice modificare il sorgente del kernel che ti stampa 
quello che mandi ai device ttyS0....
MA scusa sei sicuro che non convenga agire da piu' alto livello ( chi fa il 
numero ? chat ? se si modifica quello; kppp ? se si rimodifica quello )

> che sia la strada giusta per risolvere il tuo problema.
Il discorso e' , da quello che ho capito, che in user space non posso
tentare di avere permessi di lettura scrittura sullo stesso descrittore da
due processi diversi.
Per pura curiosita ho provato ed il risultato e' che uno dei due processi
viene bloccato.
Ditemi se sbaglio per favore


 riabiliterà temporaneamente /dev/ttyS0...
Stavo proprio per suggerirti una cosa simile, mi sembra una buona
idea. Per massima sicurezza potresti anche bloccare i permessi dei
file di configurazione dei client che usano i tuoi utenti, dandogli
solo permessi di lettura. 
Però mi sembra che i modem non dovrebbero comunicare con
/dev/modemwall, forse hai scritto male? Dimmi se ho capito bene, tu
vorresti far comunicare i client con /dev/modemwall, che in realtà è
un fifo dalla cui altra parte c'e' il tuo programma, il quale
controlla il numero, se è ok manda il tutto a /dev/ttyS0, se no
blocca. Il modem comunica sempre attraverso /dev/ttyS0.
-- 
Stefano

 blocca. Il modem comunica sempre attraverso /dev/ttyS0.
sì, scusa, in realtà è proprio così, ma ho scritto in fretta:
il modem è attaccato alla seriale e comunica con il mio
programma modemwall tramite /dev/ttyS0, se io abilito tale
device.
il mio modemwall riceve i comandi dai client (che non possono
mandarli a /dev/ttyS0 perché imposto i permessi a 0!).
avevo scritto male, in effetti...
ora devo procurarmi documentazione e rileggere bene tutti i
messaggi di questo thread: penso di dover fare un device
driver, no? credo che il funzionamento del mio programma sia
qualcosa di simile a BestCrypt della Jetico: se uno invia
qualcosa a /dev/crypt, gli viene scritto criptato su disco...


> Mi sa che ti tocca scrivere un kernel driver... :)
lo farei anche, ma non si trova granché né in Rete né in
libreria, spero che Rubini faccia presto ad aggiornare il suo
libro... ;)


> per cominciare a studiare i driver va bene il Rubini?
Io non ho esperienza diretta nella scrittura di drivers per Linux ma
nell'azienda dove lavoro abbiamo il Rubini (se non erro ce lo segnalato un
universitario che implementa drivers). Chiedero', e se avro' altre
informazioni importanti te lo segnalero'.
ciao
Stefano C.

 informazioni importanti te lo segnalero'.
grazie mille - ciao :)


 numero ? chat ? se si modifica quello; kppp ? se si rimodifica quello )
già, ma io volevo fare qualcosa "di generico"...
ok, ho raccolto un mucchio di consigli in questo thread, ora
organizzo e decido... grazie a tutti ;)
