PMD, dieci (undici? tredici?) anni dopo

Sto cercando di riportare in vita i programmi che ho fatto… dieci ? tredici anni fa? Il motivo è semplice: ho acquistato un nuovo modem-router-switch-wireless perché quello che ho sempre creduto essere in comodato (e che pagavo come se fosse in comodato) in realtà non lo è da… molto tempo. Bugie Magie dei commerciali che… hanno perso, presumo definitivamente, un cliente.

Ma torniamo a noi. Dicevo che ho comperato un nuovo modem-router-switch-wireless. Costo: 21 euro e spiccioli su Amazon, consegna compresa. Ok, ok, non ridete. Non è che non funziona. Funziona e funziona anche bene, ma. Ed è per colpa di questo “ma” che ho ripreso per mano, appunto, cose scritte ormai tredici anni fa.

Il punto è questo: il mio Smart TV si rifiuta(va) di andare in internet. E prima di gettare il modem in pasto a Ebay per comperarmene un altro  ho voluto capire cosa non funziona(va). Tornerò (forse) in un secondo momento su questa cosa, perché ora voglio parlare di PMD di come, inaspettatamente, questo programma compilato 11 anni fa ha funzionato, quasi perfettamente, al primo colpo, nonostante la ricompilazione recentissima di una libreria fondamentale per il suo funzionamento, la libreria Libnet.

Per i curiosi, PMD è un programma che permette, sotto determinate condizioni, di riconosce se un nodo di rete è in modalità “promiscua”. Per i dettagli di cosa sia la modalità “promiscua” potete leggere questo post, scaricare questo paper oppure queste slide.

In poche parole PMD “sollecita” una risposta da parte di uno o più nodi di rete in modo che solo quelli settati in tale modalità diano una risposta. Il “sollecito” è ovviamente “scritto” e questo significa che PMD, per funzionare necessita di “scrivere” dei pacchetti in rete. Cosa che, a suo tempo, era stata fatta tramite Libnet.

Prima ho usato un avverbio: “inaspettatamente”. E anche se, a ben pensare, dovrebbe essere normale che una libreria mantenga una retro compatibilità con le versioni passate, devo dire che tutt’ora sono in parte stupito e in parte compiaciuto del fatto che è bastato ricompilare Libnet, copiarla nella directory dell’eseguibile PMD e fare doppioclick su quest’ultimo per ottenere:

20150303 - PMD 001

E ancor più stupido del fatto che, dopo aver impostato i parametri di rito, tutto (beh, quasi tutto) abbia funzionato a dovere:

20150303 - PMD 002

Devo essere sincero: non ero affatto convinto. Non tanto dell’indirizzo IP visualizzato sbagliato (credo di sapere dove è l’inghippo, ma ora controllerò) ma del fatto che in rete fosse stato scritto il pacchetto in modo corretto. Ed invece WireShark ha confermato che è proprio così:

20150303 - PMD 003

Quindi: PMD fa il suo lavoro anche a 11 anni dalla sua ultima compilazione. Cosa non da poco se consideriamo che né PMD né Libnet fanno cose “normali” e interagiscono con sistema operativo, driver di rete, libreria Winpcap ecc.

Tempo di mettere a posto la visualizzazione dell’IP della risposta e PMD tornerà online.