������������������������������������������������������������� ��������������������������������������� ������������������������������������������������������������ ����������������������������� ���������������������������������� ���������������������������������������������������

�������������������������������������������������������������������������������������������������������������������������������������

400X302 Computer programming.ind1 1 20-03-2007 10:29:34 ������������������������������������������������������������� ��������������������������������������� ������������������������������������������������������������ ����������������������������� ���������������������������������� ���������������������������������������������������

�������������������������������������������������������������������������������������������������������������������������������������

400X302 Computer programming.ind1 1 20-03-2007 10:29:34 I N V E T R I N A V B J 7 5

Doing Objects Object-Oriented Programming Access Data in 2005 Languages: Interpretation Analysis Cookbook di D. Kurata di Craig - I. D. di K.Bluttman - W.S. Freeze Addison Wesley Springer O’ Reilly 552 pp - 46,95 Euro 256 pp - 36,70 Euro 366 pp - 47,20 Euro ISBN 9780321320490 ISBN 9781846287732 ISBN 9780596101220

Scrivi a [email protected] specificando nell’oggetto della e-mail: IN VETRINA VBJ n. 75 oppure inviaci il coupon al numero di fax 0587/732232 Potrai acquistare i libri qui riportati con uno SCONTO ECCEZIONALE del 10% anche se acquisti solo un libro oppure del 20% se acquisti 3 libri

VBJ 75 Learning Ruby MAKE: Technology on Your Core Internet Application di M. Fitzgerald Time Volume 10 Development with O’ Reilly di M. Frauenfelder ASP.NET 2.0 255 pp - 34,50 Euro O’ Reilly di R. Connolly ISBN 9780596529864 190 pp - 20,20 Euro Adison Wesley ISBN 9780596513863 1088 pp - 48,95 Euro ISBN 9780321419507

Rich Client Programming. Concepts of Programming Semantics with Applications: Plugging into the NetBeans Languages 8th Ed. An Appetizer Platform di R. Sebesta di H. Riis Nielson e F. Nielson di Tim Boudreau et al. Addison Wesley Springer Prentice Hall 752 pp - 46,95 Euro 278 pp - 31,40 Euro 640 pp - 47,20 Euro ISBN 9780321509680 ISBN 9781846286919 ISBN 9780132354806 I N V E T R I N A V B J 7 5

Visual Basic® 2005 Professional ASP.NET 2.0 Learning WCF La Guida Completa AJAX A Hands-on Guide di R. Petrusha di M. Gibbs - D. Wahlin di M. Leroux Bustamante Mc Graw Hill Wrox//Wiley O’ Reilly 930 pp - 60.00 Euro 336 pp - 42,80 Euro 607 pp - 45.50 Euro ISBN 9788838644696 ISBN 9780470109625 ISBN 9780596101626

Scrivi a [email protected] specificando nell’oggetto della e-mail: IN VETRINA VBJ n. 75 oppure inviaci il coupon al numero di fax 0587/732232 Potrai acquistare i libri qui riportati con uno SCONTO ECCEZIONALE del 10% anche se acquisti solo un libro oppure del 20% se acquisti 3 libri

VBJ 75 OrdinaOrdina lala tuatua copiacopia direttamentedirettamente daldal webweb www.infomedia.itwww.infomedia.it ���� ��������

���� ��������������������������������� �� ������������������������������������������������������������������������� ����������� ������������������

�������� �� ������������������������������������� �������������������������������������������������� ��������������

���������� �� ����������������������� ������������������������������������������������ ����������������

������������������� �� ���������������������������������������������������������������� ���������������������

����������� �� ���������������������������������������� �������������������������������������������������������������������������������������� ����������������������������������������������������������������������� ��������������

���� �� ���������������������������������������������������� �������������������������������������������������� ������������������

��������������� ��������

������������������������������������������������������������������������������������ �� ���������� �������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������� �� ��������������� �������������������������������������������������������������������

������������������������������� � ������������������� �������������������������� ������������������� ����������������������������� �������������������������� �������������� �������������������������������������� �������������������� ����������������������������������������� �������������������������������������������������������� ����������������������������������������������������������� ���������������� ������������������������������������������������������� ������������������������������� ������������������������������������������������������������������� ������������� ������������������������������������������������������������������������ ������������������� ������������������������������������������������������������������� ���������������� �������������������������������������������������������������������� ������������ �������������� ��������������������������������������������������������������������� ��������������� ��������������������������������������������������������������������� ������������ �������������������������������������������������������������������� � ����������������������������������������������������������������� ��������������������������������������������������������������������������������������������� ����������������������������������������������������������������������������������������� �������������������������������������������� ��������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������� �������� ���������� ������������������������������������������������������������������������������������������ �������������������������������� ������������������������������������������������������������������������������������������ ������������������������� ������������������������������������������������������������������������������������������� ����������������������� ����������������������������������������������������������������������������������������� ����������������������� ������������������������������������������������������������������������������������� ��������������� ����������������������������������������������������������������������������������� ����������� ���������������������������������������������������������������������������������������� ������������������������������ ������������������������������������������������������������������������������������ ������� �������������������������������������������������������������������������������������� ����������������������������������� ��������������������������������������������������������������������������������������� �������������� ����������������������������������������������������������������������������������������� ������������������������������ ����������� ����������� �������������������������������������������������������������������������������������� ������������� �������������������������������������������������������������������������������������� ������������������� ��������������������������������������������������������������������������������������� ������������������������������������������������������������� ������������������������������������������������������������������������������������� ������ ����������������������� ������������������������������������������������������������������������������������ ���������������������� �������������������������������������������������������������������������������������������� ���������������������������������������������� ������������������� ������������������������������������������������������������������������������������������� ���������������������������������� ��������������������������������������������������������������������������������������� ��������������������������������� ���������������������������������������������������������������������������������������������� ���������������� �������������������������������������������������������������������������������������������� ������������������������������� ������������������������������������������������������������������������������������������� ������������������������������������������������ ���������������������������������������������������������������������������������������� ���������������������������������� �������������������� ��������������������������������� ������������������������� ���������������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������� ���������������������������������������������������������������������� ��������������������������������������������������������� ���������������������������������������������������� ������������������������������������

���������������� ���������������������������������������������������������������� �������������������������� ���������������������������������������������������������

������������������������������������� �������������������������������������������������������������������������

����������������������������������������������������� �� ������������������������������

.NET .NET WCF – Infrastruttura di Sicurezza

Valutiamo l’infrastruttura di sicurezza offerta da Windows Communication Foundation

di Paolo Pialorsi (www.devleap.com)

Windows Communication Foundation (WCF), come o non possa avere un certo ser- abbiamo già visto in un precedente articolo [1], è vizio o svolgere una determina- una infrastruttura di comunicazione pensata per lo ta attività. Di norma l’autorizza- sviluppo di soluzioni Service Oriented (SOA) con zione avviene in virtù di regole il .NET Framework 3.0. e politiche associate all’identità In questo articolo concentreremo la nostra atten- stessa o a ruoli/gruppi ai quali zione sulle funzionalità e caratteristiche offerte da l’identità appartiene. WCF e orientate alla sicurezza. Oltre a questo molti sistemi di Dapprima è importante ricordare che quando si comunicazione hanno requisiti parla di sicurezza entrano in gioco almeno due dif- di integrità e/o riservatezza della ferenti ambiti, che sono spesso tra loro complemen- comunicazione. Per integrità si tari: autenticazione e autorizzazione. intende la garanzia del fatto che Autenticare qualcuno significa verificarne le cre- i messaggi scambiati non venga- denziali, in qualunque forma siano espresse, per no manomessi da terzi durante poi associare a quelle credenziali un’identità. Di per il loro trasferimento sulla rete. sé autenticare un’identità, cioè “riconoscerla”, non Quando si parla di riservatez- significa necessariamente autorizzarla ad ottenere za invece ci si riferisce al fatto il servizio richiesto. Autorizzare qualcuno infatti è che solo il reale destinatario di un’attività successiva all’autenticazione e prevede un messaggio deve poterne ve- la verifica del fatto che una specifica identità possa dere il contenuto. Questi due requisiti non sono necessaria- mente congiunti, ad esempio potrei trasmettere dei messag- Paolo Pialorsi è un consulente e autore specializzato nello gi che descrivono delle quota- sviluppo di servizi SOA e soluzioni in architettura distribuita con il Framework .NET di Microsoft. Lavora nell’omonima zioni di borsa, con la sola preoc- società Pialorsi Sistemi S.r.l. e fa parte del gruppo DevLeap. cupazione che non vengano ma- Può essere contattato via email: [email protected]. Paolo nomessi, ma senza preoccupar- mantiene un blog all’indirizzo: http://blogs.devleap.com/ mi che altri possano vederli, vi- paolo/ . sto che le quotazioni sono pub-

12 VBJ N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 13 .NET .NET

bliche. D’altro canto se devo trasmettere dei Claim per ciascuna proprietà caratterizzante numeri di carta di credito, avrò sicuramente della particolare identità Windows (UserNa- l’esigenza che non vengano letti da “occhi non me, SID, ogni gruppo Windows). autorizzati”, eventualmente operando anche verifiche di integrità. Spesso infine si parla di non ripudiabilità di un messaggio o di una transazione. Con que- Per integrità si intende la sto concetto ci si riferisce al fatto che un mes- garanzia del fatto che i saggio non può essere misconosciuto dal suo mittente. Per ottenere questo tipo di risultato messaggi scambiati non sono necessari: autenticazione, cioè devo po- vengano manomessi ter riconoscere il mittente del messaggio; in- tegrità, cioè devo avere garanzia del fatto che da terzi durante il loro nessuno ha manomesso il messaggio durante trasferimento sulla rete il transito sulla rete. La riservatezza non ri- guarda necessariamente le logiche di non ri- pudiabilità dei messaggi. WCF fornisce servizi di autenticazione, au- torizzazione, nonché sistemi di integrità e ri- Vediamo un altro esempio: un certificato di- servatezza della comunicazione, per realizzare gitale X.509. In questo caso l’identità dell’in- all’occorrenza comunicazioni basate su mes- terlocutore, sia esso un utente o un servizio saggi non ripudiabili. software, sarà descritta dal SubjectName, dal- l’Issuer del certificato, dalla data di scadenza, Autenticazione in WCF ecc. Anche in questo caso l’insieme dei Claim, che corrispondono a queste singole informa- In WCF possiamo infatti applicare politiche zioni, costituirà l’identità digitale che ci con- di autenticazione dal punto di vista dei servizi sentirà di riconoscere il mittente o il destina- nei confronti dei consumer che si presentano tario di un messaggio gestito da WCF. loro, ma anche dal punto di vista dei consu- Sfruttando questi concetti potremmo, al- mer, che possono valutare l’identità dei servi- meno teoricamente, realizzare qualsiasi si- zi, prima di “fidarsi” delle risposte ottenute. stema di autenticazione per WCF. In effetti è Il concetto chiave alla base della logica di au- proprio così, ma visto che vi sono dei mecca- tenticazione di WCF è il “Claim” che rappre- nismi di autenticazione molto diffusi e con- senta la “dichiarazione di qualcosa di vero” solidati, Microsoft stessa ce ne offre l’imple- (liberamente tradotto da: “An assertion of the mentazione direttamente nell’infrastruttura truth of something”). Un Claim descrive una di base di WCF. particolare informazione caratterizzante di un Possiamo ad esempio autenticare utenti e/o interlocutore da autenticare. Una identità di- servizi sfruttando: gitale è un insieme di Claim. Vediamo un esempio pratico: l’autenticazio- • Windows Authentication: consente di va- ne Windows. Ogni volta che autentichiamo un lidare le credenziali Windows di un utente sia utente Windows, le informazioni che ne carat- a livello di macchina locale, sia a livello di do- terizzano l’identità digitale sono il suo User- minio. Per trasferire le credenziali possono es- Name, il suo SID Windows (Security Identifier sere utilizzati diversi meccanismi, in funzio- Windows) e i gruppi Windows ai quali appartie- ne del protocollo di trasporto utilizzato e delle ne. Ecco che in WCF l’autenticazione Windows logiche di autenticazione scelte. Ad esempio si traduce nella rappresentazione di queste in- si possono utilizzare Kerberos, NTLM, Basic formazioni sotto forma di Claim. Avremo un o Digest authentication.

12 VBJ N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 13 .NET .NET

Infine è importante sottolineare che, nella classica filosofia di lavoro di WCF, possiamo WCF fornisce servizi scegliere le politiche di autenticazione agen- di autenticazione, do a livello di configurazione (file .config) dei consumer e dei service host, cioè delle appli- autorizzazione, nonché cazioni che espongono i nostri servizi, senza sistemi di integrità dover intervenire sul codice .NET. e riservatezza della Consideriamo il seguente contratto WCF:

comunicazione # - .NET 3.0 [ServiceContract(Namespace=”http://schemas.devleap.com/ Services/DateTime”)] public interface IDateTimeService { • UserName and Password Authentica- [OperationContract()] tion: prevede l’autenticazione degli utenti in DateTime GetDateTime(Int32 gmt); base ad una coppia UserName e Password. Le } credenziali ricevute possono essere verificate nuovamente come credenziali Windows, ovve- Si tratta di un servizio a fini dimostrativi, ro come credenziali applicative sfruttando la quindi prescindiamo da qualsiasi ragiona- Membership API di ASP.NET 2.0 oppure un mento in ottica Service Oriented e dalla de- sistema personalizzato di verifica. Quest’ulti- finizione del servizio stesso. In questo artico- mo è quello spesso più utilizzato nelle situa- lo concentriamoci solo sull’infrastruttura di zioni in cui gli utenti non sono configurati sicurezza al contorno. in Active Directory ma in database applicati- Di seguito è illustrata una possibile imple- vi personalizzati. mentazione del contratto:

• X.509 Certificate Authentication: ottiene C# - .NET 3.0 le credenziali di un interlocutore sulla base di public class DateTimeService: IDateTimeService un certificato digitale X.509, che può essere { associato a credenziali Windows, piuttosto che public DateTime GetDateTime(Int32 gmt) configurato in un database applicativo. { return(DateTime.UtcNow.AddHours(gmt)); Ciascuna di queste forme di autenticazione } si traduce in token di autenticazione di WS- } Security [2], definiti quindi secondo regole e standard di mercato che prescindono da Mi- Per pubblicarlo tramite un’applicazione crosoft e da WCF, ossia interoperabili anche ASP.NET 2.0 possiamo creare un semplice con altre piattaforme software (Java in pri- file SVC: mis). Un aspetto interessante da considerare è poi il fatto che questi sono solo alcuni dei SVC - ASP.NET 2.0 sistemi forniti da WCF e che comunque pos- <%@ServiceHost Language=”C#” Service=”DateTimeService”%> siamo creare in qualsiasi momento delle no- stre personalizzazioni degli stessi, piuttosto Il web.config dell’applicazione può essere che definire ex-novo dei token personalizzati come il seguente: per descrivere altre forme di autenticazione. Come sempre quindi WCF brilla per estendi- bilità e capacità di adattamento.

14 VBJ N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 15 .NET .NET

C# - .NET 3.0 DateTimeServiceClient svc = newDateTimeServiceClient(); DateTime result = svc.GetDateTime(1); Per modificare la configurazione in termini di autenticazione, ad esempio per sfruttare un token UserNamePassword, possiamo modifi- care il web.config del service host, personaliz- zando la configurazione del binding: Come sempre quindi di adattamento wsHttpBinding. Si tratta di un binding che nativamente supporta la sicurezza tramite WS-Security e che in modalità predefinita utilizza un token di autenticazione Windows nel messaggio. Possiamo creare un consumer .NET 3.0 di questo servizio, utilizzando il tool a riga di comando SVCUTIL.EXE oppure definendo una “Service Reference” da Visual Studio 2005. Dal momento che WCF è in grado di emettere nel WSDL dei servizi le policy che Semplicemente con questa modifica le cre- descrivono le regole di sicurezza adottate, il denziali del client saranno fornite con un to- consumer saprà quale tecnica di autentica- ken differente, che come comportamento pre- zione utilizzare. definito sarà sempre e comunque valutato ri- A livello di consumer non dovremo quindi spetto all’elenco di utenti di macchina o di fare altro che invocare il servizio, sfruttando dominio. il fatto che come comportamento predefinito Nel caso di token UserNamePassword dob- il consumer, nel caso di sicurezza Windows biamo però considerare il fatto che le creden- iniettata in WS-Security, invierà le credenzia- ziali (UserName e Password) viaggerebbero in li dell’utente Windows corrente. chiaro, a meno di non utilizzare un trasporto

14 VBJ N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 15 .NET .NET

sicuro come ad esempio HTTPS, rinuncian- do però ad una delle regole di SOA, cioè l’in- dipendenza dal trasporto. D’altra parte invo- Di solito non è cando il file SVC in un browser, dopo averlo architetturalmente configurato come appena riportato, otterremo un messaggio di errore come il seguente: “The corretto investire sulle service certificate is not provided. Specify a logiche autorizzative a service certificate in ServiceCredentials”. livello di servizio L’errore ci segnala che è necessario proteg- gere tramite encryption a chiavi asimmetri- che il token, fortunamente WCF è premuro- so e si preoccupa di avvisarci di un potenzia- le rischio. aggiornerà solo il proprio app.config, ma non Possiamo integrare il web.config aggiungen- modificherà minimamente il codice C# auto- do un comportamento (behavior) personalizza- generato, per supportare questa nuova con- to, che preveda appunto un certificato digitale figurazione. X.509 che il service host potrà utilizzare per Ora il codice consumer relativo alla chiama- farsi inviare in modo sicuro il token. ta al servizio dovrà però fornire le credenziali, in forma di UserName e Password, in modo esplicito. Infatti se dovessimo invocare il ser- vizio senza fornire le credenziali, otterremmo il seguente messaggio di errore: “Unhandled ion: The username is not provided. Specify Di seguito è riportato il codice consumer ag- giornato, con l’indicazione delle credenziali DateTimeServiceClient(); svc.ClientCredentials.UserName.UserName = “DEVLEAP\\UserName”; svc.ClientCredentials.UserName.Password =“Password”; DateTime result = svc.GetDateTime(1); Console.WriteLine(result); Nella sezione serviceCertificate si dichiara che si vuole utilizzare un certificato il cui Su- Come si vede lo UserName può prevedere bjectName è “WSE2QuickStartServer”, da ri- anche l’indicazione del dominio. Nel caso in cercare nello store locale di macchina. cui poi dal lato del service host si utilizzino Anche questa informazione sarà riportata certificati X.509 di test, quindi non validi in nelle policy emesse nel file WSDL del servi- quanto non rilasciati da Certification Autho- zio, quindi rigenerando il codice del consu- rity di fiducia, dobbiamo richiedere a WCF mer, cioè rinfrescando la Service Reference, di non verificarli. Possiamo farlo impostan- avremo il client in grado di contattare il ser- do opportunamente le proprietà Certificate- vizio nella nuova modalità. ValidationMode e RevocationMode dell’ogget- È interessante notare che anche il consumer to ServiceCertificate.Authentication di Clien-

16 VBJ N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 17 .NET .NET

tCredentials. li di ASP.NET 2.0, in connubio con la Mem- bership API, ovvero sfruttare delle Authori- Potremmo proseguire per ore, valutando le zationPolicies personalizzate, in grado di la- varie tipologie di token e tutte le possibili vorare direttamente a livello di Claim. impostazioni configurabili in WCF, ma l’obiet- In generale la modalità più comoda di gestire tivo di questi esempi era solo sottolineare la l’autorizzazione è impersonificare il chiaman- semplicità con cui è possibile configurare la te, indicando nel servizio che siamo in grado sicurezza di un servizio WCF, sia sul service di supportare questo tipo di comportamento host che sul consumer. (OperationBehavior) e poi sfruttando il motore di sicurezza di .NET, basando l’autorizzazio- Autorizzazione in WCF ne sulle Identity ed i Principal sia Windows che eventualmente personalizzati. Come abbiamo già visto, autenticare è solo Ecco una versione modificata del nostro ser- una parte del lavoro. Una volta ottenuta l’iden- vizio, in grado di supportare l’impersonifica- tità di un interlocutore dobbiamo autorizzarlo. zione del chiamante: Una prima considerazione che mi preme sot- tolineare a questo proposito è il fatto che di C# - .NET 3.0 norma l’autorizzazione compete allo strato di public class DateTimeService: IDateTimeService business di un’applicazione a N livelli. Lo stra- { to di comunicazione dal suo canto dovrebbe [OperationBehavior(Impersonation= limitarsi ad invocare un back-end strutturato, ImpersonationOption.Allowed)] fornendo l’identità ottenuta. Di solito quindi public DateTime GetDateTime(Int32 gmt) non è architetturalmente corretto investire pe- { santemente sulle logiche autorizzative a livel- return(DateTime.UtcNow.AddHours(gmt)); lo di servizio ed è meglio limitarsi ad auten- } ticare il chiamante, per poi demandare la re- } sponsabilità autorizzativa allo strato di back- end. Queste considerazioni nascono dal fatto Se volessimo autorizzare solo gli utenti del che l’infrastruttura di comunicazione evolve gruppo Windows degli “Administrators” ad nel tempo, una volta c’era ASMX, poi WSE, invocare l’operazione potremmo aggiungere ora WCF. Implementare la logica di autorizza- anche l’attributo PrincipalPermissionAttribu- zione a livello di servizio significherebbe do- te all’operazione. verla reimplementare ad ogni cambiamento dell’infrastruttura di comunicazione. Mante- C# - .NET 3.0 nere a livello di business layer tale logica ci public class DateTimeService: IDateTimeService consente invece di riutilizzarla più volte. { In tutti quei casi in cui comunque si voglia- [OperationBehavior(Impersonation= no implementare anche a livello di servizio ImpersonationOption.Allowed)] delle politiche di autorizzazione, WCF con- [PrincipalPermission(SecurityAction.Demand, sente di sfruttare innanzitutto l’autorizzazio- Role=”Administrators”)] ne a livello di Host, cioè con regole a livello public DateTime GetDateTime(Int32 gmt) di firewall e/o di application server, nel caso { di IIS. Qualora si utilizzi poi l’autenticazione return(DateTime.UtcNow.AddHours(gmt)); Windows, possiamo chiedere a WCF di im- } personificare il chiamante e di autorizzarlo } in base ai gruppi Windows. Nel caso di token non Windows possiamo in- A questo punto chiunque dovesse invocare vece scegliere di utilizzare il sistema di ruo- l’operazione, senza fornire le credenziali di

16 VBJ N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 17 .NET .NET

ne, possiamo poi personalizzare i nostri ser- vizi agendo in questo caso a livello di contrat- Il binding ti, sui singoli messaggi, per rendere obbliga- wsHttpBinding sfrutta tori alcuni criteri minimi di protezione. Pos- in modo predefinito siamo anche agire a livello di configurazione, per scegliere se avere integrità e riservatezza l’autenticazione tramite il protocollo di trasporto, oppure a li- Windows e WS- vello di messaggio SOAP. In particolare è interessante notare che nel SecureConversation caso in cui si utilizzi il binding wsHttpBin- ding, i nostri servizi non solo sfrutteranno in modo predefinito l’autenticazione Windows e l’autorizzazione basata sui ruoli di Windows, un Administrator, riceverebbe un messaggio ma sarà anche attivo WS-SecureConversation di errore di tipo “Access is denied”. [4], che ci consentirà di avere lo scambio delle Ovviamente qualora utilizzassimo utenti credenziali tra service host e consumer solo personalizzati e non Windows, al posto dei alla prima richiesta, per poi condividere un gruppi Windows potremmo sostituire ruoli canale sicuro (firma digitale ed encryption, persolizzati, codificati ad esempio su un da- by default) senza dover fornire le credenziali tabase applicativo. ad ogni successiva richiesta. Per maggiori dettagli sull’attributo Principal- PermissionAttribute e in generale sulla sicu- Conclusioni rezza di .NET, consiglio la lettura dell’ottimo libro “.NET Security” [3]. WCF costituisce indubbiamente un’infra- Dal momento che non è particolarmente co- struttura di comunicazione solida e sicura, modo, in termini di mantenibilità, dover mo- pronta per realizzare in modo rapido ed effi- dificare il codice del servizio per autorizzare cace soluzioni in architettura Service Orien- utenti e gruppi/ruoli, è anche possibile defi- ted. nire delle classi personalizzate di policy, che In questo articolo abbiamo potuto valutare implementino l’interfaccia IAuthorizationPoli- alcuni degli aspetti chiave della sua struttu- cy della class library di WCF, per gestire ruoli ra in termini di sicurezza. Abbiamo in parti- e identità applicative da “risolvere” caso per colare visto come definire servizi sicuri, rea- caso all’interno delle AuthorizationPolicy, va- lizzando nei fatti quello che la teoria di SOA lutando i Claim ricevuti. raccomanda, cioè il poter riutilizzare i servizi In conseguenza degli spazi disponibili per un su diversi protocolli e configurazioni, in modo articolo come questo, non vedremo dettagli di trasparente per il nostro codice. questa tecnica avanzata di autorizzazione. Riferimenti Integrità e riservatezza [1] Paolo Pialorsi – “WinFx: Windows Com- Anche sul fronte dell’integrità e riservatezza munication Foundation”, Visual Basic Jour- della comunicazione WCF consente di applica- nal n° 69 re firma digitale (integrità) ed encryption (ri- [2] http://www.oasis-open.org/committees/wss/ servatezza) ai messaggi o a porzioni di essi. [3] http://www.apress.com/book/ Il comportamento predefinito di WCF pre- bookDisplay.html?bID=104 vede sia integrità che riservatezza delle co- [4] http://specs.xmlsoap.org/ws/2005/02/sc/ municazioni. WS-SecureConversation.pdf Come per l’autenticazione a l’autorizzazio-

18 VBJ N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 19

TECNICHE TECNICHE Regular Expression Seconda Parte

In questa seconda parte ci concentreremo su una implementazione reale delle Regular Expression, quella fornita dal motore di Scripting Versione 5.5 o superiore di Microsoft. Vedremo come sfruttare questa libreria COM in linguaggi molto diffusi quali Visual Basic, Delphi e VBScript.

di Vito Vessia

La prima parte di questo corso sulle Regular Ex- La libreria in dettaglio pression vi sarà sembrata un po’ troppo teorica e astratta e peraltro priva di codice di programma- Questa implementazione è zione. Il codice, infatti, dona sempre una sensazio- pressoché completa e fornisce ne di consistenza a qualsiasi concetto di informati- un parser RegEx potente e ve- ca teorica. L’obiettivo era di introdurre i rudimenti loce che potrà già soddisfare la sulle espressioni regolari senza legarli a nessuna gran parte delle esigenze di ela- implementazione, analogamente a quanto si fareb- borazione delle stringhe. Si tratta be per il linguaggio di interrogazione SQL, che è di una libreria fornita come par- alquanto neutro rispetto al database sottostante e te del framework di VBScript e sicuramente lo è rispetto al framework di accesso come tale è già embedded nel ai dati utilizzato. linguaggio, nel senso che negli Per cui, pur ribadendo che RegEx è una tecnolo- script di questo linguaggio non gia presente e sfruttabile ormai in numerosi lin- dovrete nemmeno istanziare il guaggi di programmazione e su sistemi operativi motore con una CreateObject, differenti, in questo articolo invece ci concentrere- ma potrete procedere con una mo sulla libreria Microsoft VBScript Regular Ex- semplice New: pression 5.5 fornita con Internet Explorer 5.5 o suc- cessivi e liberamente scaricabile ed installabile su ‘VBScript tutte le versioni di Windows anche non in bundle Set RegEx = New RegExp con Internet Explorer, ma come parte dello Script Engine 5.5. ‘VBA Dim RegEx as RegExp Vito Vessia progetta e sviluppa applicazioni e framework Dim MatchColl As MatchCollection occupandosi degli aspetti architetturali. Scrive da anni per le principali riviste italiane di programmazione ed è autore del Dim Match As Match libro “Programmare il cellulare”, Hoepli, 2002, sul protocollo standard AT+ dei telefoni cellulari con. Può essere contattato Set RegEx = CreateObject(“VBScript tramite e-mail all’indirizzo [email protected]. .RegExp”)

20 VBJ N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 21 TECNICHE TECNICHE

L’oggetto fondamentale è appunto VBScript_ oRegEx.Pattern = “ IDX(\d{3})-1:(\…” RegExp_55.RegExp, il motore. Si supponga di voler interpretare la stringa di esempio già A questo punto si imposteranno le proprie- presentata nel primo articolo [1]: tà di scansione del motore:

IDX001-1:045826,1,”ALIM”,”DEPERIB”,”FRUTTA”, · IgnoreCase – indica che deve scansionare ”MELE TRENT.”,”KG”,2002-09-29 le occorrenze in modalità case-insensitive; IDX001-2:45454354,34534534,3453456 IDX002-1:022342,,”ALIM”,”CONFEZ”,”LATTIC”, · MultiLine – deve interpretare gli indicatori ”SCAMOR.MASA” di inizio e fine stringa, cioè $ e ^, come ini- IDX002-2:3243441 zio e fine di una linea, considerando quindi IDX003-1:111134,,ALIM,CONFEZ,LATTIC,LATTE i CRLF come indicatori di fine linea; ALICE,,2002-12-29 IDX003-2:232454354,13203456 · Global – deve estrarre tutte le occorrenze (match) che rispondono al pattern e non fer- A cui applicheremo il pattern già analizzato marsi alla prima. nello stesso articolo: oRegEx.IgnoreCase = True IDX(\d{3})-1:(\d+),\d*,”?([\w|.|\s|- oRegEx.MultiLine = True ]+)”?,”?([\w|.|\s|-]+)”?,”?([\w|.|\s|- oRegEx.Global = True ]+)”?,”?([\w|.|\s|-]+)”?(?:,”?(\w*)”?(?:,(\ d{4})-(\d{2})-(\d{2})|)|)\r\nIDX\1-2:(\d*)(?: Quindi si potrà finalmente eseguire la ,(\d*)|)(?:,(\d*)|)(?:,(\d*)|)(?:,(\d*)|) scansione facendosi restituire come risul- tato una collection di match, cioè una Ma- Per il suo utilizzo si procede con l’assegna- tchCollection: zione del pattern regex all’oggetto, in modo da preparare il motore alla scansione delle ‘esecuzione del pattern su un testo passato stringhe secondo tale pattern: come parametro Set MatchColl = RegEx.Execute(“IDX001-1: ‘assegnazione del pattern 045826,1,”ALIM…”)

Si potrà così procedere con la lettura di tutti i match restituiti dalla scansione, magari con una semplice for each:

For Each Match In MatchColl Debug.Print Match.Value & vbCrlf Next

Il pattern impostato nell’esempio e ap- plicato al testo visto in precedenza ci re- stituisce tre match, uno per ciascuno dei tre blocchi di record presenti nel testo e cioè il blocco IDX001:

IDX001-1:045826,1,”ALIM”,”DEPERIB”,”FRUTTA, Figura 1 La referenza da usare nei progetti Visual Basic ”MELE TRENT.”,”KG”,2002-09-29 IDX001-2:45454354,34534534,3453456

20 VBJ N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 21 TECNICHE TECNICHE

Figura 2 I gruppi estratti per posizione

Seguito dal blocco IDX002: sta dall’oggetto Match. Si tratta della soli- ta collection, ma questa volta gli item sono IDX002-1:022342,,”ALIM”,”CONFEZ”,”LATTIC”, dei semplici Variant non tipizzati che con- ”SCAMOR.MASA” tengono direttamente il valore della sotto- IDX002-2:3243441 occorrenza:

E così per il terzo o per tutti gli altri, se ce ne Debug.Print Match.SubMatches(1) fossero stati. Ma il nostro pattern, come spie- gato in [1], è in grado di estrarre anche i grup- Dove l’indice 1 rappresenta il numero pro- pi, cioè dei sottocampi all’interno del match gressivo del submatch, assegnato dal moto- che contengono proprio le informazioni ato- re in ordine di elaborazione dei gruppi, cioè miche presenti nella stringa (nell’esempio si il primo gruppo trovato avrà indice 1, il se- trattava di codice articolo, descrizione artico- condo 2, e così via… lo, unità di misura, ecc...). I gruppi, come si ri- corderà, venivano creati per ogni sotto-pattern For Each Group In Match.SubMatches racchiuso tra parentesi tonde, ad esempio: Debug.Print Group Next IDX(\d{3})-1... L’esempio Visual Basic 6 Per accedere a queste informazioni dal mo- dello ad oggetti di VBScript RegExp 5.5, si do- Dal sito ftp://ftp.infomedia.it è possibile sca- vrà utilizzare la proprietà SubMatches espo- ricare il codice Visual Basic 6 di esempio del

22 VBJ N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 23 TECNICHE TECNICHE

Listato 1

Dim RegEx As RegExp Dim MatchColl As MatchCollection Dim Match As Match Dim Group As Variant Dim i As Integer Dim j As Integer

Set RegEx = New RegExp RegEx.Pattern = txtPattern.Text RegEx.IgnoreCase = True RegEx.MultiLine = True RegEx.Global = True Set MatchColl = RegEx.Execute(txtText.Text)

txtResult.Text = „“ For Each Match In MatchColl txtResult.Text = txtResult.Text & „Match: „ & Match.Value & vbCrLf & vbCrLf

For Each Group In Match.SubMatches i = i + 1 txtResult.Text = txtResult.Text & „Group: „ & i & „ = „ & Group & vbCrLf Next

txtResult.Text = txtResult.Text & vbCrLf & _ „======“ & _ vbCrLf & vbCrLf & vbCrLf Next

scenza del significato di ciascuna sotto-occor- renza e per cui si può procedere con l’even- L’implementazione tuale manipolazione di queste informazioni VBScript RegEx 5.5 è specifiche, come mostrato nel semplice esem- pio del Listato 2. completa e potente Si può notare come si è proceduto alla ricerca puntuale di specifiche sotto-occorrenze (Codi- ce Articolo, Descrizione, Gruppo Merceologi- co, ecc…) semplicemente conoscendo la loro posizione e quindi l’ordine di estrazione dei progetto VB6RegEx.vbp che mostra come uti- gruppi dal pattern. In Figura 3 è possibile os- lizzare questi oggetti. Innanzitutto in Figura 1 servare il risultato a video dell’esecuzione del è possibile osservare le librerie da referenzia- precedente codice. re. La Figura 2 mostra invece il nostro picco- lo client VB6 in azione: viene fornito in input La Replace il nostro testo di esempio col record di ana- grafica da importare (txtText), sottoponendolo Un’altra potente funzione offerta dai motori alla ben nota RegEx (txtPattern) applicando RegEx e quindi anche da quello fornito nella la funzione riportata nel Listato 1. libreria VBScript Regular Expressions 5.5, è È altresì vero che, conoscendo la struttura la possibilità di effettuare la sostituzione di della stringa e avendo già definito l’espressio- occorrenze di sottostringhe con sequenze di ne regolare che la interpreta, si è già a cono- caratteri prestabilite, che possono anche es-

22 VBJ N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 23 TECNICHE TECNICHE

Listato 2

Dim Match As Match Dim Group As Variant Dim j As Integer

txtResult.Text = “” For Each Match In MatchColl txtResult.Text = txtResult.Text & “Analisi del record: “ & Match.Value & vbCrLf & vbCrLf

txtResult.Text = txtResult.Text & “Codice articolo : “ & Match.SubMatches(1) & vbCrLf txtResult.Text = txtResult.Text & “Descrizione articolo: “ & Match.SubMatches(5) & vbCrLf txtResult.Text = txtResult.Text & “Gruppo merceologico : “ & Match.SubMatches(2) & vbCrLf txtResult.Text = txtResult.Text & “Famiglia merceolog. : “ & Match.SubMatches(3) & vbCrLf txtResult.Text = txtResult.Text & “Sottofamiglia merc. : “ & Match.SubMatches(4) & vbCrLf txtResult.Text = txtResult.Text & “Unità di misura : “ & Match.SubMatches(6) & vbCrLf If Match.SubMatches(7) <> “” Then txtResult.Text = txtResult.Text & “Data del lotto : “ & _ CDate(Match.SubMatches(7) & “/” & _ Match.SubMatches(8) & “/” & Match.SubMatches(9)) & vbCrLf End If txtResult.Text = txtResult.Text & “Codice a barre 1 : “ & Match.SubMatches(10) & vbCrLf txtResult.Text = txtResult.Text & “Codice a barre 2 : “ & Match.SubMatches(11) & vbCrLf txtResult.Text = txtResult.Text & “Codice a barre 3 : “ & Match.SubMatches(12) & vbCrLf txtResult.Text = txtResult.Text & “Codice a barre 4 : “ & Match.SubMatches(13) & vbCrLf txtResult.Text = txtResult.Text & “Codice a barre 5 : “ & Match.SubMatches(14) & vbCrLf

txtResult.Text = txtResult.Text & vbCrLf & _ “======” & _ vbCrLf & vbCrLf & vbCrLf Next

sere dinamicamente rappresentate da gruppi (CP) estratte dalla stringa di origine. Per semplifi- care, dato un testo di origine: A questo punto si procederà con l’esecuzione della Replace sulla stringa in questione: CP è la prima rivista di programmazione in Italia. CP è edito dal Gruppo Editoriale Dim RegEx As RegExp Infomedia. Dim replacedString As String

Si potrebbe voler sostituire la parola CP con Set RegEx = New RegExp Computer Programming, ogni volta che si pre- RegEx.Pattern =”(CP)” senta nella stringa. Si procederà quindi in que- RegEx.IgnoreCase = True sto modo: innanzitutto si definirà il pattern RegEx.MultiLine = True che trova le occorrenze di CP nella parola. RegEx.Global = True

24 VBJ N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 25 TECNICHE TECNICHE

Figura 3 Accesso puntuale ai gruppi estratti

Figura 4 L’effetto della Replace sulla nostra stringa d’esempio

Un’altra possibilità offerta dalla Replace è La Replace è la quella di sostituire le sottostringhe che cor- possibilità di effettuare rispondono ad un certo pattern, con gruppi catturati nel pattern stesso. Per meglio com- la sostituzione prendere questo concetto, si torni all’esem- di occorrenze di pio della stringa di importazione anagrafiche articoli. Si potrebbe, ad esempio, voler sosti- sottostringhe con altre tuire l’intero match catturato, con il seguen- sottostringhe te pattern di Replace:

Gruppo: $3 Famiglia: $4 Sottofamiglia: $5 ($6)

replacedString = RegEx.Replace(“CP è la prima Si vuole cioè che ciascun gruppo di record rivista di programmazione in Italia. CP è edito del file importazione (record IDX001, IDX002, dal Gruppo Editoriale Infomedia.”, “Computer ecc…) venga sostituito con una stringa del Programming”) tipo “Gruppo: ” seguita dal codice del Grup- po Merceologico che verrà preso direttamen- Il risultato, cioè il contenuto della variabile te dal gruppo (dalla sotto-occorrenza) numero replacedString, sarà: 3 definita nel nostro pattern (per identifica- re un gruppo in un pattern di Replace si usa Computer Programming è la prima rivista di pro- una sintassi che prevede un carattere $ segui- grammazione in Italia. Computer Programming è to dal numero posizionale del gruppo), segui- edito dal Gruppo Editoriale Infomedia. ta a sua volta dalla stringa “Famiglia: ” con il relativo codice di Famiglia Merceologica pre-

24 VBJ N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 25 TECNICHE TECNICHE

Listato 3

procedure TForm1.cmdProcessClick(Sender: TObject); var RegEx : TRegExp; MatchItem : Match; SubMatchColl : ISubMatches; Group : OleVariant; i, j: Integer; begin RegEx:= TRegExp.Create(nil); RegEx.Pattern := txtPattern.Text; RegEx.IgnoreCase := True; RegEx.MultiLine := True; RegEx.Global := True; MatchColl:= RegEx.Execute(txtText.Text) as IMatchCollection2;

txtResult.Clear; For j:= 0 to MatchColl.Count - 1 do begin MatchItem:= MatchColl[j] as IMatch2; txtResult.Lines.Add(‚Match: ‚ + MatchItem.Value); SubMatchColl:= MatchItem.SubMatches as ISubMatches;

For i:= 0 to SubMatchColl.Count - 1 do txtResult.Lines.Add(‚Group: ‚ + IntToStr(i + 1) + ‚ = ‚ + SubMatchColl[i]);

txtResult.Lines.Add(#13#10 + ‚======‘ + #13#10#13#10#13#10); end; cmdExtractData.Enabled:= True; end; End Class

sa dal gruppo numero 4, e così via. to COM duale, è opportuno considerare il Si osservi dunque il codice del progetto di suo utilizzo anche da linguaggi diversi da esempio Visual Basic 6: Visual Basic e persino da linguaggi non Mi- crosoft, come ad esempio Borland Delphi. Il Dim RegEx As RegExp tool di casa Borland non dispone nativamen- Dim replaceText As String te di una implementazione delle Espressioni Regolari per cui probabilmente l’uso di que- Set RegEx = New RegExp sta libreria, gratuita e sufficientemente sofi- RegEx.Pattern = txtPattern.Text sticata e potente, resta la soluzione migliore RegEx.IgnoreCase = True anche nella applicazioni Delphi, pur essen- RegEx.MultiLine = True do disponibili in forma freeware, shareware o RegEx.Global = True commerciale, diverse soluzioni di terze parti txtResult.Text = RegEx.Replace(txtText.Text, in codice. Essa peraltro è gratuita e già pre- txtReplacePattern.Text) sente sulle macchine client di tipo Windows XP o su macchine Windows su cui è installa- Il risultato che otterremo a video è mostra- to Internet Explorer 6. to in Figura 4. Per il suo utilizzo si dovrà procedere in- La libreria in Delphi nanzitutto alla importazione della Typeli- brary (menù Project \ Import Type Library Considerando che libreria Microsoft VB- \ Install) come mostrato in Figura 5. Questa Script Regular Expressions 5.5 è in forma- operazione produrrà la solita unità di codice

26 VBJ N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 27 TECNICHE TECNICHE

VBScript RegEx 5.5 resta la soluzione migliore anche rispetto ad altre implementazioni native

nativo di proxy sul componente COM, che nel caso specifico si chiamerà VBScript_Re- gExp_55_TLB. Fatto questo, il codice Delphi sarà pratica- mente identico a quello visto per VB6. Nel- la directory \DelphiRegEx dei sorgenti è di- sponibile il progetto RegEx.dpr che poi altro non è che il rifacimento in Delphi del prece- Figura 5 La referenza da usare nei progetti Delphi dente esempio VB. Osserviamone un esem- pio nel Listato 3.

26 VBJ N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 27 TECNICHE TECNICHE

Listato 4

procedure TForm1.cmdProcessClick(Sender: TObject); var RegEx : TRegExp; i, j: Integer; begin RegEx:= TRegExp.Create(nil); RegEx.Pattern := txtPattern.Text; RegEx.IgnoreCase := True; RegEx.MultiLine := True; RegEx.Global := True;

MatchColl:= RegEx.Execute(txtText.Text);

txtResult.Clear; For j:= 0 to MatchColl.Count - 1 do begin txtResult.Lines.Add(‚Match: ‚ + MatchColl[j].Value); For i:= 0 to MatchColl.Item[j].SubMatches.Count - 1 do txtResult.Lines.Add(‚Group: ‚ + IntToStr(i + 1) + ‚ = ‚ + MatchColl[j].SubMatches.Item[i]); txtResult.Lines.Add(#13#10 + ‚======‘ + #13#10#13#10#13#10); end; cmdExtractData.Enabled:= True; end;

Ed ecco il nostro programma, dopo la “tra- cata di VBScript_RegExp_55_TLB.pas sosti- duzione” Delphi, in esecuzione come viene tuendola a quella prodotta in modo automati- mostrato in Figura 6. Per quanto riguarda gli co da Delphi. Da quel momento in poi potre- oggetti in versione Delphi bisogna tener con- te utilizzare tutte le proprietà e i metodi del- to di qualche curiosa differenza, legata al più l’oggetto RegExp e anche l’editor di Delphi basso livello in cui Delphi opera con gli ogget- vi verrà in aiuto attraverso il Code Completa- ti COM rispetto a Visual Basic. Innanzitutto tion. Le cose si complicano leggermente per si consideri che l’oggetto principale della li- gli altri oggetti della libreria, cioè Match, Ma- breria, cioè RegExp, nel proxy Delphi assu- tchCollection, ecc… In questo caso l’importa- me il familiare nome di TRegExp e diventa zione non ha prodotto codice di proxy altret- istanziabile nella forma tradizionale: tanto efficiente. Innanzitutto questi altri og- getti non sono direttamente istanziabili come var accade per RegExp, ma vengono restituiti da RegEx : TRegExp; metodi e proprietà di altri oggetti. Ad esempio, RegEx:= TRegExp.Create(nil); come si ricorderà, il metodo RegExp.Execute restituisce un’istanza di MatchCollection, la Per la comprensione dei concetti che ver- proprietà MatchCollection.Item restituisce ranno esposti di seguito è necessaria una co- un’istanza di Match che, a sua volta, espone noscenza, seppur minima, di Microsoft COM, una proprietà Match.SubMatches appunto di per cui se non siete proprio ferrati sull’argo- tipo SubMatches. mento, potete saltare direttamente alla par- Nell’importazione, però, i valori di ritorno te delle conclusioni dell’articolo, senza però dei metodi e delle proprietà RegExp.Execute, dimenticare di includere la versione modifi- MatchCollection.Item e Match.SubMatches,

28 VBJ N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 29 TECNICHE TECNICHE

Figura 6 Il client Delphi 6 in azione

nel proxy che Delphi ha creato a partire dal- Si può osserverare come, utilizzando l’ope- la Typelibrary, hanno perso il tipo specifico e ratore “as”, si effettua il casting dei tipi alla sono stati sostituiti con dei generici IDispatch, corretta interfaccia. Per ovviare a questi pro- cioè l’interfaccia fondamentale di automazio- blemi che appesantirebbero molto il codice, ne COM. Questo, oltre a non far funzionare il è sufficiente “correggere” la unit di proxy Code Completation dell’ambiente di sviluppo e generata dall’importazione, cioè VBScript_ ad obbligare ad accedere agli oggetti via auto- RegExp_55_TLB.pas, sostituendo nelle in- mazione e quindi in late binding, anziché uti- terfacce importate tutte le occorrenze errate lizzare le interfacce appropriate, costringe ad di IDispatch con il tipo relativo. Ad esempio effettuare il casting dei tipi come mostrato in osserviamo come correggere il metodo Exe- questo estratto di funzione: cute di TregExp; originariamente esso si pre- senta così: var RegEx : TRegExp; function TRegExp.Execute(const sourceString: WideString): MatchItem : Match; IDispatch; SubMatchColl : ISubMatches; La nuova versione invece sarà: … RegEx:= TRegExp.Create(nil); function TRegExp.Execute(const sourceString: WideString): MatchColl:= RegEx.Execute(txtText.Text) as IMatchCollec- IMatchCollection; tion2; MatchItem:= MatchColl[1] as IMatch2; A questo punto il Code Completation fun- zionerà a dovere e il vostro codice sarà più

28 VBJ N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 29 programmazione Mobile

di Gianluigi Davassi > [email protected] La programmazione concorrente e i thread

TECNICHE della(Figura classe 4Thread), che, perche fortuna, esegue laappare sincronizzazione solo la prima è volta Join() che. ConNonostante questa base, le sempliceritrosie all’utilizzo ma necessaria, quotidiano TECNICHEpossiamo di affrontare, questi di- Di vienefatto, caricatal’operazione la DLL. di Join Possiamo consiste concedere nel bloccare il permesso il thread di nelspositivi, prossimo le numero,potenzialità concetti del mobile più complessi in ambito di sincronizzaaziendale ed- chiamanteesecuzione fino ed a ignorareche il thread il messaggio. specificato non termini. zioneIT sono come talmente i mutex, esplosive i semafori, da lerisultare sezioni quasi critiche, preoccupanti. gli eventi, Si veda,· Concesso ad esempio, il permesso... il Listato eureka! 9 (C#) Premendo e la Figura il 5 tasto. Si può am - i meccanismiLe possibilità di offerte comunicazione, da un Internet ecc. Tratteremopervasivo, accessibileanche dei Opzione Significato Descrizione notaremireremo che Main() il nostro si ferma, PocketPc dapprima, spegnersi, alla eistruzione dopo 5 secondi deadlock,dovunque che e da si verificanochiunque sonoquando destinate vi sono a cambiaredei conflitti il nostro nella Nessuna opzione è impostata. Corrisponde all’enumerativo riaccendersi. Una possibilità che la normale J9 sicuramente sincronizzazione.modo di lavorare Tratteremo e di investire. del debugging Il mobile-commerce ed altro ancora. (al- Nessuna RegexOptions.None. tid1.Join()non prevede! Ovviamente,tresì detto m-commerce) sempre con lo ad stesso esempio stile… è solo tramite un petalo esempi. della rosa del futuro che ci aspetta. Approfondire lo sviluppo su Effettua la scansione della stringa in modalità case insensitive, cioè non fa in attesa che termini il primo thread, poi alla istruzione dispositiviDownload Mobile, del progetto sempre connessi e pervasivi, incentivan- I Case insensitive differenza tra le maiuscole e le minuscole (“CIRO” = “ciro”). Corrisponde Conclusioni e possibilità di sviluppo do sull’utilizzo di tecnologie opensource (PhoneMe è alle all’enumerativo RegexOptions.IgnoreCase. tid2.Join() porteScarica e il Linuxprogetto del completo tablet Nokia770 di questo rappresentaarticolo all'indirizzo: un’ottima Imposta la scansione in modalità multiline, cioè interpreta i token ^ e $ A livello di programmazione, nel caso si abbiano conoscenze alternativaftp://ftp.infomedia.it/pub/DEV./Listati/Dev149/Speciale.zip a WindowsMobile) rappresenta uno degli scenari di C++, le possibilità di estendere la J9 attraverso JNI sono più interessanti del nostro futuro. M Multiline come indicatori di inizio e fine linea e non inizio e fine stringa. Corrisponde in attesa che termini il secondo thread. Infine Main() potenzialmente illimitate. Ad esempi, è possibile estendere all’enumerativo RegexOptions.Multiline. termina. Da notare il passaggio di una variabile al thread tramitela J9 per il metodo ciò che concerneStart(var). la In connettività, questo caso il supportonon può esseresonoro, Giovanni Viva Cattura i soli gruppi per i quali è stato definito un nome ed ignora tutti gli altri. il supporto grafico, fino alla possibilità di implementare un N Cattura esplicita usata una istanza di ThreadStart ma una istanza di Paramete- Gianluigi Davassi Corrisponde all’enumerativo RegexOptions.ExplicitCapture. rizedThreadStartdatabase SQL.. IlÈ chiaroListato che 10 se mostra J9 implementasse la versione unin C++.maggior È laureato in Fisica ed è attualmente impiegato, come responsabile I concetti,numero discussidi funzionalità in precedenza facilmente (nel utilizzabili, caso C#), attirerebbevengono delloLaureato sviluppo a Pisasoftware, in Ingegneriain R&S di Informatica,una società del appassionato gruppo Selex di È una caratteristica dell’implementazione.NET delle Regular Expression: applicatiun gran parimenti. numero di sviluppatori e di aziende disposte a in- Finmeccanica.programmazione Svolge di Java/C++ attività è cofondatore di docenza di OmegaDream per Prometheo, (http: permette cioè di creare e compilare al volo un oggetto.NET in grado di Questavestire prima nel mondo parte mobile sui fondamenti utilizzando terminaJava. È già qui. in corso Ho collaborando,//www.omega-dream.com) in particolare, una con società la sede specializzata di Roma nello Centro. sviluppo Si interpretare la RegEx impostata. Se presente, la scansione avviene quindi C Compilato introdotto,un progetto insieme open adsource alcuni con concetti, questo leobbiettivo, basi della Jomega pro- occupa,di applicazioni fondamentalmente, e sistemi su didispositivi sistemi paralleli,Mobile. Gestisce con caratteristiche un progetto sempre con un oggetto che è in grado in modo nativo di gestire quel grammazione(http://jomega.sourceforge.net). multitasking tramite È i un thread. progetto Ho che mostrato gestisco real-timeopensource ed chiamato usa linguaggi JOMEGA C-like (http://jomega.sourceforge.net), (C, C++, C#, ecc.). Dauna pattern e non in modo interpretato come accade normalmente. Corrisponde alcunipersonalmente esempi riguardo ed implementa la creazione anche dei un thread, porting il significato delle libSDL qualchelibreria annoche estende lavora la J9 con attraverso Microsoft JNI. Visual Attualmente Studio è .NETimpiegato e all’enumerativo RegexOptions.Compiled. del(http://www.libsdl.org) foreground, del background per la gestionee della priorità. della grafica. Infine, ho Windowsall’interno CE.NET della Ksolutions su sistemi (http://www.ksolutions.it) embedded. e lavora al Imposta la scansione in modalità singleline: interpreta i token ^ e $ accennatoLe possibilità ai principi offerte della dai dispositivisincronizzazione. mobile sono ancora un framework CMS opensource Kaistarv (http://www.kaistar.org). fenomeno acerbo e poco sfruttato, almeno qui in Italia. S Singleline come indicatori di inizio e fine stringa. Corrisponde all’enumerativo RegexOptions.Singleline.

Ignora gli spazi Ignora gli spazi bianchi presenti nella RegEx. Corrisponde all’enumerativo X bianchi RegexOptions.IgnorePatternWhitespace.

Impone la scansione della stringa da destra verso sinistra. Può essere R RightToLeft impostata solo all’inizio del pattern. Corrisponde all’enumerativo RegexOptio ns.RightToLeft.

Questa opzione impone la compatibilità con le regole dello standard ECMAScript. In realtà è da considerarsi come una metaopzione perché non ECMAScript descrive alcun comportamento specifico, ma si abbina alle opzioni Ignore Case, Multiline e Compiled rendendole confacenti ad ECMAScript. Corrisponde a RegexOptions.ECMAScript.

Tabella 1

veloce perché non dovrà accedere all’ogget- // Modifica: si sostituisce il tipo IDispatch col più ac- to COM via automazione, operazione che co- curato IMatchCollection sta molto in termini di overhead. Lo stesso // property Item[index: Integer]: IDispatch read Get_Item; dicasi, ad esempio, per il metodo Get_Item default; e per la proprietà Item dell’interfaccia IMa- property Item[index: Integer]: IMatch2 read Get_Item; tchCollection. default;

// Modifica: si sostituisce il tipo IDispatch col più ac- Saltiamo ora il resto delle modifiche (che co- curato IMatchCollection munque potrete osservare nel sorgente della // function Get_Item(index: Integer): IDispatch; safe- unit di proxy), per osservare invece il metodo call; TForm1.cmdProcessClick nella nuova forma function Get_Item(index: Integer): IMatch2; safecall; più compatta e più user-friendly (Listato 4).

30 VBJ N. 75 - Maggio/Giugno 2007 >> 42 N. 75 - Maggio/GiugnoDEV > n.151 2007 VBJmaggio 200731 DEV > n.149 marzo 2007 27 << programmazione Mobile

di Gianluigi Davassi > [email protected] La programmazione concorrente e i thread

TECNICHE della(Figura classe 4Thread), che, perche fortuna, esegue laappare sincronizzazione solo la prima è volta Join() che. ConNonostante questa base, le sempliceritrosie all’utilizzo ma necessaria, quotidiano TECNICHEpossiamo di affrontare, questi di- Di vienefatto, caricatal’operazione la DLL. di Join Possiamo consiste concedere nel bloccare il permesso il thread di nelspositivi, prossimo le numero,potenzialità concetti del mobile più complessi in ambito di sincronizzaaziendale ed- chiamanteesecuzione fino ed a ignorareche il thread il messaggio. specificato non termini. zioneIT sono come talmente i mutex, esplosive i semafori, da lerisultare sezioni quasi critiche, preoccupanti. gli eventi, Si veda,· Concesso ad esempio, il permesso... il Listato eureka! 9 (C#) Premendo e la Figura il 5 tasto. Si può am - i meccanismiLe possibilità di offerte comunicazione, da un Internet ecc. Tratteremopervasivo, accessibileanche dei Conclusioni sticate che possono realmente mandare in pen- notaremireremo che Main() il nostro si ferma, PocketPc dapprima, spegnersi, alla eistruzione dopo 5 secondi deadlock,dovunque che e da si verificanochiunque sonoquando destinate vi sono a cambiaredei conflitti il nostro nella riaccendersi. Una possibilità che la normale J9 sicuramente sionesincronizzazione.modo ogni di lavorarealtra forma Tratteremo e di investire. tradizionale del debugging Il mobile-commerce di manipo ed altro ancora.- (al- tid1.Join()non prevede!Le Espressioni Regolari sono uno stru- lazioneOvviamente,tresì dettodelle m-commerce) stringhe.sempre con lo ad stesso esempio stile… è solo tramite un petalo esempi. della mento molto potente, ma presentano una Nelrosa frattempo del futuro che esercitatevi ci aspetta. Approfondire pure a tirar lo fuorisviluppo su in attesa curvache termini di apprendimento il primo thread, iniziale poi alla istruzionenon bana - espressionidispositiviDownload Mobile, regolari del progetto sempre da qualsiasi connessi e stringa pervasivi, vi incentivan ca- - Conclusionile; invece e possibilitàl’apprendimento di sviluppo e l’uso di alcu- pitido per sull’utilizzo le mani. diE tecnologiepotete anche opensource (\s*cominciare) (PhoneMe è alle tid2.Join() ne librerie che implementano motori Re- adesso^…porteScarica e ilil Linuxprogetto del completo tablet Nokia770 di questo rappresentaarticolo all'indirizzo: un’ottima A livello di programmazione, nel caso si abbiano conoscenze alternativaftp://ftp.infomedia.it/pub/DEV./Listati/Dev149/Speciale.zip a WindowsMobile) rappresenta uno degli scenari gEx è quanto di più semplice si possa de- in di attesa C++, che le possibilità termini il di secondoestendere thread. la J9 attraverso Infine JNIMain() sono più interessanti del nostro futuro. siderare. termina.potenzialmente Da notare illimitate. il passaggio Ad esempi, di una èvariabile possibile al estendere thread E l’implementazione VBScript Regular Bibliografia tramitela J9 per il metodo ciò che concerneStart(var). la In connettività, questo caso il supportonon può esseresonoro, Giovanni Viva usatail supporto unaExpressions istanza grafico, di ThreadStart fino 5.5 alla è possibilità proprioma una istanza unadi implementare di di Paramete queste. un- Gianluigi Davassi rizedThreadStartdatabasePerché SQL.. IlÈdunque chiaroListato che non10 se mostra J9 utilizzarla implementasse la versione nelle unin vostre C++.maggior [1]È V. laureato Vessia in -Fisica “Regular ed è attualmente Expression impiegato, – Prima come responsabilePar- I concetti,numeroapplicazioni discussidi funzionalità in precedenza Visual facilmente Basic, (nel utilizzabili, caso Delphi C#), e attirerebbevengono quan- te”,delloLaureato Visual sviluppo Basic a Pisasoftware, Journal in Ingegneriain R&S n. di74 Informatica,una società del appassionato gruppo Selex di applicatiun gran t’altro?parimenti. numero di sviluppatori e di aziende disposte a in- Finmeccanica.programmazione Svolge di Java/C++ attività è cofondatore di docenza di OmegaDream per Prometheo, (http: vestire nel mondo mobile utilizzando Java. È già in corso //www.omega-dream.com) una società specializzata nello sviluppo Questa primaNella parteprossima sui fondamenti ed ultima parte termina di qui.questo Ho collaborando, in particolare,Riferimenti con la sede di Roma Centro. Si un progetto open source con questo obbiettivo, Jomega di applicazioni e sistemi su dispositivi Mobile. Gestisce un progetto introdotto,breve insieme corso ad su alcuni RegEx concetti, esamineremo le basi della in detpro-- occupa, fondamentalmente, di sistemi paralleli, con caratteristiche grammazione(http://jomega.sourceforge.net). multitasking tramite È i un thread. progetto Ho che mostrato gestisco real-timeopensource ed chiamato usa linguaggi JOMEGA C-like (http://jomega.sourceforge.net), (C, C++, C#, ecc.). Dauna taglio la ben più potente implementazione [2] V. Vessia – “Programmare il cellulare” - Hoe- alcunipersonalmente esempi riguardo ed implementa la creazione anche dei un thread, porting il significato delle libSDL qualchelibreria annoche estende lavora la J9 con attraverso Microsoft JNI. Visual Attualmente Studio è .NETimpiegato e del(http://www.libsdl.org) foreground,RegEx del fornita background nel.NETper la gestionee della Framework priorità. della grafica. Infine, ed im ho- pliWindows all’interno– 2002 –CE.NET dellaCapitoli Ksolutions su 1 sistemi e 3.(http://www.ksolutions.it) embedded. e lavora al accennatoLe possibilitàplementeremo ai principi offerte della dai alcunedispositivisincronizzazione. tecniche mobile sonomolto ancora sofi -un framework CMS opensource Kaistarv (http://www.kaistar.org). fenomeno acerbo e poco sfruttato, almeno qui in Italia.

30 VBJ N. 75 - Maggio/Giugno 2007 >> 42 N. 75 - Maggio/GiugnoDEV > n.151 2007 VBJmaggio 200731 DEV > n.149 marzo 2007 27 << Prodotti & News Prodotti & News Potete inviare i vostri comunicati stampa all’indirizzo: [email protected]

Programmare con Visual passa velocemente al quarto capitolo come utilizzare il programma gra- Basic 2005 oltre il codice dedicato alla creazione dei pacchetti tuito Microsoft SandCastle, un tool di installazione, argomento molto adatto a questo scopo. sentito tra i vari programmatori Il capitolo 9 è dedicato a come Visual Basic. NET. In questo capitolo migliorare la stesura del codice; nel il lettore viene guidato passo dopo capitolo vengono dati consigli su passo alla creazione di un vero pac- come rendere il codice con un tocco chetto d’installazione. di professionalità. Consigli utili ed Nel capitolo 5, viene discusso ancora importanti per una buona e corretta l’argomento riguardante la distribu- stesura del codice, che un buon pro- zione dei programmi, ossia la crea- grammatore deve sempre seguire. zione dei pacchetti di setup tramite Nel capitolo conclusivo, dedicato alla l’utilizzo della tecnologia ClickOne, gestione degli assemby, si acquisisce una nuova tecnologia per il rilascio e il concetto di assemby, di come l’aggiornamento del software. L’auto- analizzarlo tramite lo strumento gra- re prima di addentrarsi nell’utilizzo di tuito Microsoft FxCop, come rendere questa tecnologia introduce l’argo- sicuri gli assemby tramite la tecnica mento con una panoramica generale. dell’offuscamento utilizzando il pro- Viene illustrata non solo la creazione, dotto DotFuscator. ma anche la rimozione e l’aggiorna- mento dell’ applicazione. In entrambi Il libro – ben fatto sia a livello di i capitoli (4 e 5) si parla anche dei argomenti che per la sua imposta- certificati, in modo da rendere più zione – illustra le tecniche di utilizzo Programmare con Visual Basic 2005 è sicuro il pacchetto per l’installazione dell’ambiente di sviluppo Visual il primo libro di Alessandro Del Sole, del software. Il sesto capitolo riguar- Studio 2005, e di come dotare le ap- un libro che illustra alcune tecniche da creazione ed utilizzo di una guida plicazioni di funzionalità aggiuntive, da utilizzare durante la scrittura di utente, di cui ogni applicazione che come appunto indicato dal titolo del un programma con il linguaggio di si rispetta dovrebbe essere dotata; in libro. Un altro fattore interessante è programmazione Visual Basic 2005. questo capitolo l’autore illustra come il fatto che nei vari capitoli si pren- Alcuni esempi si riferiscono anche creare una guida in linea tramite lo dono in esame i diversi tool gratuiti all’ambiente di sviluppo Visual Studio strumento gratuito Microsoft Help e non, in modo da ottenere degli 2005 Express. Workshop, che permette la creazione ottimi risultati. Il libro è composto da 10 capitoli, dei file guida in formato.chm. Una tutti dedicati all’utilizzo del nuovo volta terminata la creazione del file SCHEDA DEL LIBRO ambiente di sviluppo, e in pratica per la guida, viene illustrata la tecnica Autore Alessandro Del Sole aiuta il lettore ad utilizzare al meglio di come utilizzare il file della guida l’ambiente di sviluppo e a dotare di appena creato in una Windows Ap- Prezzo 35,00 € nuove funzionalità le applicazioni che plication. Pagine 544 si vogliono realizzare. Il settimo capitolo riguarda sempre Ma vediamo in dettaglio i vari capito- la parte della documentazione, ma ISBN 9788882336257 lo che fanno parte di questo libro. in particolare come si creano do- Anno 2007 Nel primo capitolo viene fatta una cumenti da aggiungere alla guida in panoramica riguardante alcune linea di Visual Studio 2005 tramite funzionalità di Visual Studio 2005; gli strumenti Microsoft Help 2.x SDK. tramite numerose immagini e le Nel capitolo sono presi in esami i vari Da INTEL® nuovi dovute formattazioni del testo è tool messi a disposizione del pro- compilatori per i possibile acquisire subito familiarità grammatore. L’ottavo capitolo riguar- processori multi-core con l’ambiente di sviluppo. Il secon- da la gestione dei commenti, ossia do capitolo illustra le tecniche per come commentare in formato XML i Intel Corporation ha annunciato la una gestione corretta dell’ambiente, propri programmi e generare la gui- disponibilità di due nuovi compila- come per esempio la creazione ed da specifica per il codice sorgente. tori grazie ai quali gli sviluppatori esportazione di un modello, la crea- Con il nuovo ambiente di sviluppo ed sono in grado di creare in modo zione ed esportazione dei frammenti il nuovo framework anche in Visual efficiente applicazioni più affidabili di codice (Code Snippet) tramite ap- Basic 2005 è possibile utilizzare dei e dalle prestazioni elevate, in grado posito tool, creazione di un pacchet- commenti particolari, come avviene to per Visual Studio Content Installer. per il linguaggio C#. Nel capitolo, di velocizzare i tempi di risposta dei Nel terzo capitalo si parla di come tramite appositi esempi, si prendono computer. Intel® C++ Compiler e estendere le funzionalità di Visual in esami i vari tag che fanno parte Fortran Professional Edition rappre- Studio 2005, tramite appositi tool, dello schema per i commenti XML. sentano una combinazione unica di macro o componenti aggiuntivi; si Per generare la guida l’autore spiega compilatori altamente ottimizzanti e

32 VBJ N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 33 Prodotti & News Prodotti & News

dalle elevate. Questi prodotti offrono un periodo limitato di tempo presso i F-Secure Internet Security 2007 il nuovo supporto automatico per ac- rivenditori di tutto il mondo. comprende uno degli antivirus più celerare le prestazioni dei programmi Intel ha inoltre annunciato un nuovo rapidi a fornire copertura dalle nuo- eseguiti con i più recenti processori pacchetto a prezzo scontato riserva- ve minacce e più abile nel bloccarle, Intel® multi-core. Le applicazioni con to agli studenti che ne hanno diritto, un personal firewall, un antispyware grafica 3D o video vengono automa- che include in un’unica soluzione e la nuova tecnologia proprietaria ticamente accelerate tramite l’uso di anche Intel® VTune Performance DeepGuard, che arresta qualsiasi vettori mediante le istruzioni Strea- Analyzer, Intel® Thread Checker e attività potenzialmente pericolosa ming SIMD Extension (SSE), compre- Intel® Thread Profiler o sospetta in atto all’interno del sa la più recente versione SSE 4. PC. FSIS2007 filtra inoltre la posta Le prestazioni delle applicazioni Per ulteriori informazioni, visitare il indesiderata (grazie al sistema anti- vengono inoltre accelerate dai pro- sito web all’indirizzo spamming) e i tentativi di phishing. cessori multi-core tramite l’uso di più www.intel.com/software/products. Grazie alla funzione Parental Control, thread. Abbinando l’uso di vettori e infine, è possibile regolare la naviga- thread e integrando gli stessi con I prodotti per la sicurezza zione e bloccare l’accesso dei minori una tecnologia nota come “loop di F-Secure indirizzati al a siti Web dai contenuti discutibili o transformation” è possibile aumen- mercato consumer suppor- pericolosi. tare le prestazioni delle applicazioni tano anche Windows Vista su i processori multi-core senza la Su http://www.f-secure.it/home_ necessità di riscrivere il codice. Oltre Le soluzioni di protezione di F-Secu- user/compraonline/fsis2007.html alle ottimizzazioni per i processori re indirizzate al mercato consumer tutte le informazioni su prezzi e for- multi-core, queste funzionalità com- F-Secure Internet Security 2007 mule di licenza. binate tra loro offrono altri vantaggi (FSIS2007) e F-Secure Anti-Virus agli sviluppatori, quali la possibilità 2007 (FSAV2007) da oggi supportano inLive Interactive: canali di individuare vulnerabilità che non anche il sistema operativo Windows video automatizzati e inte- verrebbero altrimenti rilevate, ad Vista. Le versioni ottimizzate per rattivi esempio variabili non inizializzate e Vista sono il frutto di un lungo e ac- possibili overrun del buffer. curato test mirato a fornire ai clienti inLive Interactive, fornitore pioniere la massima qualità. di soluzioni end-to-end in tempo rea- Intel® C++ Professional Edition per Le due nuove versioni per Vista sa- le, interattive e ad ampia partecipa- Windows*, Linux* e Mac OS* X rac- ranno acquistabili presso i rivenditori zione, annuncia il lancio europeo del chiude in sè il compilatore Intel e le di F-Secure a partire da fine giugno, canale inLive automatizzato. La piat- soluzioni Intel® Math Kernel Library, mentre i clienti che già possiedono taforma inLive Quad Play consente Intel® Integrated Performance Pri- una regolare licenza per FSIS2007 agli operatori di creare e distribuire mitives e Intel® Threading Building e/o FSAV2007 potranno aggiornare i interattivamente canali automatizzati Blocks. loro prodotti gratuitamente a partire video-TV su ogni media, Mobile TV, da oggi, collegandosi a http://www.f- IPTV, TV e Internet TV. Intel Fortran Compiler Professional secure.it/vista/consumers. Da fine Le soluzioni inLive offrono formati Edition per Windows, Linux e Mac OS luglio, saranno inoltre disponibili interattivi ad utenza globale (gio- X combina il compilatore Intel con In- versioni OEM dei due prodotti per chi, notizie, sport, musica, e aste), tel Math Kernel Library. Per la prima integratori e rivenditori che vogliano si tratta di strumenti personalizzati volta, Intel® Visual Fortran Compiler incorporarle nelle loro proposte di per opeatori telecom e coloro che 10.0 include , notebook e PC desktop. si occupano in generale di telecomu- che rende disponibile l’ambiente di Le versioni per Vista sono state po- nicazione, che dimostrano sempre sviluppo visivo per creare, modifica- tenziate e migliorate in numerose più interesse relativamente alla con- re, generare e eseguire il debug di caratteristiche pur mantenendo sem- vergenza dei servizi mobile e delle applicazioni Fortran. pre la semplicità d’uso cui gli utenti trasmissioni video. F-Secure di tutto il mondo sono abi- La tecnologia più nuova: la piattafor- I nuovi prodotti sono già disponi- tuati. Il meticoloso periodo di svilup- ma Quad Play bili sul mercato a prezzi consigliati po e testing cui sono stati sottoposti InLive Interactive presenta al merca- compresi tra 599 e 1.599 dollari USA. è stato voluto da F-Secure per garan- to la prossima generazione di video Gli aggiornamenti alle Professional tire compatibilità assoluta con Vista e interattivi fornendo una soluzione Edition dalla versione precedente dei massima affidabilità nella protezione end-to-end per consentire una par- compilatori Intel sono disponibili per dalle minacce informatiche. tecipazione globale in tempo reale

32 VBJ N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 33 Prodotti & News Prodotti & News

e automatizzata con canali video su tivi con un feedback personale per tore 3D real-time per creare grafica ogni supporto: Mobile TV, IPTV, TV ogni partecipante. tridimensionale renderizzata in tem- and Internet TV. po reale con strumenti integrati ed il La rivoluzionaria tecnologia di inLi- Per ulteriori informazioni consultare motore Sprite Animation per svilup- ve Interactive, la piattaforma Quad il sito www.allplay.tv pare superfici sprite che integrano la Play, offre agli spettatori televisivi rilevazione delle collisioni. sparsi in tutto il mondo una nuova Rilasciato REALbasic 2007 dimensione di interattività con i R3 Per ulteriori informazioni: programmi TV. Un numero illimitato www.realsoftware.com di telespettatori potrà collegarsi in REALbasic è costituito da un moder- . contemporanea ai programmi TV, no linguaggio di programmazione Microsoft Project Server condividendo lo stesso contenuto su orientato agli oggetti e da un am- Connector ogni media e interagire utilizzando biente di sviluppo disponibile ed il telefono (cellulare o a linea fissa), in grado di creare applicazioni per Microsoft ha annunciato la disponibi- la tastiera del computer o controllo Windows, Macintosh e Linux. lità di Visual Studio Team Foundation remoto STB. La piattaforma trasver- REALbasic è un ambiente di sviluppo Server – Project Server Connector sale sincronizzata di interazione può rapido per applicazioni (RAD) che (PS-TFS Connector), uno strumento essere integrata senza soluzioni di consente di aumentare notevolmen- in grado di fornire una maggiore in- continuità in ogni tipo di program- te la produttività degli sviluppatori tegrazione tra Team Foundation Ser- mazione: voto in tempo reale, giochi, rispetto ad altri strumenti di sviluppo ver e Microsoft Office Project 2007. quiz, scommesse, acquisto o aste. cross-platform. Include pieno sup- Grazie all’integrazione tra ambiente Inoltre con le sue soluzioni tecnolo- porto al drag-and-drop per disegna- di sviluppo e strumenti di project giche più recenti, con una console a re velocemente l’interfaccia utente, management, gli utenti avranno una contenuto generico, inLive Interacti- consentendo di associare ad ogni visione completa e aggiornata delle ve offre dei nuovi formati video in- elemento il relativo codice. informazioni necessarie per gestire in terattivi, facili da usare, agli operatori REALbasic è altamente compatibile modo efficace i progetti di sviluppo di tutto il mondo. con Visual Basic, tanto che i program- software nelle proprie aziende oltre inLive Interactive collabora anche matori Visual Basic sono produttivi in che una migliore gestione delle risor- molto da vicino con i suoi clienti, breve tempo con REALbasic. REAL- se e aggiornamenti automatici. per progettare un contenuto inte- basic contiene anche un’utility per Visual Studio Team Foundation Ser- rattivo per programmi già esistenti facilitare la conversione di progetti ver – Project Server Connector è un nel settore dello sport, delle notizie, Visual Basic a REALbasic, dove con un ulteriore passo della strategia di Mi- dell’intrattenimento, dei giochi, della semplice click possono essere compi- crosoft che mira, attraverso il rilascio musica, e di programmi con conte- lati per Windows, Mac e Linux. di strumenti capaci di implementare nuto generato a livello globale dagli REALbasic è disponibile ed in grado l’innovazione tecnologica, a rendere stessi utilizzatori. di creare software per Windows 98, l’IT e lo sviluppo aziendale fattori Con il multi-canale automatizzato NT, Me, 2000, XP e Vista, Mac OS sempre più strategici per il business. inLive gli operatori mobile saranno X e Linux compilando il medesimo in grado di creare e distribuire il loro codice sorgente. Incorpora elementi Symantec Endpoint Protec- contenuto in modo indipendente. specifici per ogni piattaforma, come tion Questo nuovo modo di lavorare per ad esempio per i componenti del- gli operatori mobile rappresenterà l’interfaccia utente, in modo tale il Symantec Corpha compiuto un si- un investimento produttivo econo- look and feel del software creato con gnificativo passo avanti nella propria micamente dato che l’avvio e le ope- REALbasic è nativo, a prescindere strategia denominata Security 2.0 razioni di manutenzione mensili si della piattaforma utilizzata per lo svi- con l’annuncio di Symantec Endpoint ridurranno al minimo. inLive fornisce luppo. Le applicazioni che fanno uso Protection 11.0 e Symantec Network agli operatori mobile una piattaforma intensivo di dati utilizzano il database Access Control 11.0 (già noto con il interattiva originale per creare nuovi REAL SQL, il motore database basato nome in codice di Hamlet). flussi di guadagno per servizi con su SQLite integrato in REALbasic. È Symantec Endpoint Protection – il più network GSM/CDMA/GPRS/Edge e possibile connettersi a motori di da- importante aggiornamento apporta- 3G/HSDPA/MediaFlo/DVB-H, offren- tabase multi-utente esterni utilizzan- to al pacchetto antivirus enterprise do ai loro abbonati nuove esperienze do REALbasic Professional Edition. di Symantec da alcuni anni a questa televisive con partecipazione mobile REALbasic supporta formati di grafica parte – combina Symantec AntiVirus play-along e video TV mobile interat- vettoriale standard. Contiene un mo- con tecniche avanzate per la preven-

34 VBJ N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 3235 Prodotti & News Prodotti & News

zione delle minacce proponendo un tempi di installazione rapidissimi. sistema di Web Reputation sviluppa- unico agente software che offre livelli Symantec ha inoltre presentato to dai Websense Security Labs, che si di difesa senza paragoni nei confronti Symantec Network Access Control concretizza in tre nuove categorie degli attacchi informatici diretti con- 11.0, nuova versione del modulo di siti web, che permettono alle tro laptop, desktop e server. Syman- opzionale totalmente integrato con organizzazioni di gestire la propria tec Endpoint Protection è già dispo- Symantec Endpoint Protection che sicurezza web in base al livello di nibile nella versione beta pubblica aiuta i clienti a verificare e valutare lo tolleranza al rischio accettato. all’indirizzo www.symantec.com/ stato dei client, consentire il livello di Le nuove categorie proteggono le endpointsecurity. accesso appropriato alla rete e met- organizzazioni da siti che ospitano Per proteggere gli utenti dalle minac- tere a disposizione funzioni di ripri- o potrebbero ospitare codice di ce attuali così come da quelle future, stino affinché le policy e gli standard exploit, siti che ospitano account Symantec Endpoint Protection adotta di sicurezza siano rispettati. usati per lo spamming, siti di “domain tecnologie proattive che analizzano La disponibilità di entrambi i prodotti parking” e siti “click fraud” usati per automaticamente il comportamento è prevista per il prossimo settembre. fuorviare i risultati dell’advertising delle applicazioni e le comunicazioni Symantec Endpoint Protection 11.0 online generando fatturato illecito. di rete in modo da intercettare e e Symantec Network Access Control Le nuove categorie proteggono bloccare attivamente ogni tentativo 11.0 saranno disponibili in tutto inoltre da siti web che camuffano la di attacco. Il prodotto integra fun- il mondo dal prossimo settembre loro vera natura o identità e siti “dor- zioni antivirus, antispyware, firewall, direttamente o attraverso la rete di mienti” dagli intenti potenzialmente controllo di applicazioni e dispositivi, rivenditori, distributori e system inte- maligni. e include tecniche di host intrusion grator Symantec. Come dimostrato da attacchi web prevention (HIPS) tutto in un’unica Per maggiori informazioni sui prodotti estesi come il recente Super Bowl e soluzione software facile da installare e per scaricare la beta pubblica di Sy- gli exploit ANI, i software di sicurezza e semplice da gestire. mantec Endpoint Protection è possibi- e i sistemi per la tutela della reputa- Integrando soluzione tecnologiche le visitare il sito www.symantec.com/ zione tradizionali che guardano solo avanzate (“best of breed”) di Syman- endpointsecurity. ai semplici attributi del sito non sono tec, Sygate, Whole Security e Veritas, attrezzati per proteggere da queste Symantec Endpoint Protection riduce Per ulteriori informazioni, con- minacce dinamiche. i costi amministrativi che derivano sultare il sito web all’indirizzo A differenza dei sistemi di controllo dalla gestione di più prodotti di sicu- www.symantec.it della reputazione degli indirizzi IP rezza per client e server. dei siti basati sull’esame del semplice Symantec Endpoint Protection si av- Websense amplia la nome di dominio, il sistema di Web vale anche del supporto del Global protezione dai siti web Reputation di Websense sfrutta la Intelligence Network di Symantec, tecnologia proprietaria ThreatSeeker una struttura composta da otto Virus e worm allegati alle email non per adeguare in tempo reale il livello Symantec Security Response Center, sono più la principale minaccia per di affidabilità del sito. Poiché un sito quattro Symantec Security Opera- la sicurezza: il vero – e più insidioso web può trasformarsi molto rapida- tions Center, 120 milioni di sistemi pericolo – viene dalla navigazione mente in un sito violato dagli hacker e oltre 40.000 sensori installati in sul Web, dove proliferano siti spesso anche se la sua reputazione storica è 180 Paesi. dall’apparenza innocua o dall’ottima ottima. Symantec Endpoint Protection è reputazione, ma pieni di codice ma- La nuova Web Security Suite 6.3.1 è l’unico prodotto a integrare tutti i ligno creato per rubare informazioni immediatamente disponibile senza vantaggi delle tecnologie di sicurez- e creare interruzioni dell’operatività costi aggiuntivi per tutti gli attuali za (antivirus, antispyware, firewall aziendale. Web Security Suite 6.3.1, utenti della soluzione Websense. Le desktop, intrusion prevention e de- la nuova versione del software per organizzazioni che vogliono provarla vice control) all’interno di un unico la protezione contro le minacce del gratis per 30 giorni ed eseguire anche agente gestito da un’unica console. Web annunciata da Websense, si una verifica dell’efficacia delle loro Symantec Endpoint Protection of- focalizza proprio su questo e lo fa attuali soluzioni di sicurezza possono fre una nuova console di gestione aggiungendo un nuovo insieme di collegarsi a: semplificata, la possibilità di imple- categorie di minacce da bloccare alle www.websense.com/challenge mentare tecniche di Network Access numerose già disponibili nel databa- Control (NAC), più un ventaglio di se Websense. Per ulteriori informazioni sulla tec- offerte di assistenza e formazione In particolare, gli utenti della soluzio- nologia ThreatSeeker di Websense: per partner e clienti volte a favorire ne Websense avranno ora accesso al www.websense.com/threatseeker.

34 VBJ N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 323535 .NET TOOLS .NET TOOLS

Gli add-in di Reflector – Parte I Il primo add-in che andiamo ad esaminare è Co- di Fabio Perrone deMetrics: analizza un e restituisce di- versi indicatori che possono essere suddivisi per Estendiamo il disassemblatore di.NET tipo, per metodo e per modulo. Gli indicatori che più famoso vengono forniti in risposta variano ovviamente in base a ciò che viene analizzato. I risultati spaziano Reflector è lo strumento più amato/odiato dagli dalla complessità ciclomatica, cioè la misura del- sviluppatori .NET: amato perché offre innume- la complessità di un programma partendo dal co- revoli possibilità di controllare qualsiasi assem- dice sorgente, al numero di eccezioni e istruzioni bly a nostra disposizione, odiato perché obbliga del singolo metodo. Interessante anche il numero ad usare degli offuscatori di codice per protegge- di exception handler presenti in un determinato re la proprietà intellettuale del codice stesso (in metodo, utili per migliorare eventualmente le pre- particolar modo in presenza di algoritmi sensibi- stazioni di un’applicazione. Quando si analizzano li). Tuttavia, essendo uno strumento assai diffu- i dati di un determinato tipo è possibile anche ot- so e versatile è nata una community che ha svi- tenerne una rappresentazione grafica che confron- luppato una serie di add-in di svariate tipologie ta visivamente le dimensioni dell’entità selezio- ed utilità, che andremo ad esaminare in due arti- nata rispetto agli altri tipi. L’obiettivo principale coli. Ovviamente abbiamo dovuto scegliere tra le di questo add-in è ovviamente quello di permet- estensioni di Reflector disponibili, quindi queste tere di apportare delle modifiche al codice in caso recensioni non intendono esaurire l’argomento, di complessità troppo elevata, in primo luogo per quanto piuttosto portare a conoscenza le enormi migliorarne la manutenibilità futura, poi per ave- potenzialità di Reflector e della sua estendibilità. re una visione più generalizzata dei tipi che sono Installare gli add-in è semplicissimo: è sufficiente stati scritti e come sono stati scritti. copiare gli assembly che formano l’add-in nella Il secondo add-in che prenderemo in considera- cartella in cui è stato installato Reflector, lancia- zione è Diff. Ognuno di noi obbligatoriamente ag- re Reflector stesso e dal suo menu View selezio- giorna il proprio software e quindi mette mano ad nare la voce “Add-ins” che permetterà di sceglie- uno o più assembly che compongono un’applica- re l’assembly dell’add-in che vogliamo aggiunge- zione. Normalmente gli strumenti per il control- re. A questo punto, è sufficiente controllare nel lo del codice sorgente permettono di confronta- menu Tools la presenza di una nuova voce che re un file sorgente con qualsiasi altra versione indicherà il nuovo add-in. del file stesso, ma in questo caso stiamo discu- tendo di un tool che permette di confrontare un Fabio Perrone, laureato in Matematica e MCTS intero assembly e tutti i tipi che lo compongono (Web) in C# 2.0, lavora presso TSF s.p.a. dove si in un’unica opzione. Oltre al confronto visuale è occupa di progettazione e sviluppo di applicazioni molto utile la possibilità di esportare le differenze Windows e Web. in modo ricorsivo in un file XML e così scrivere

36 N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 37 .NET TOOLS .NET TOOLS

Figura 1 Code Metrics

una piccola applicazione che analizzi questo file pleto e specializzato come l’IDE di Microsoft. e possibilmente ne applichi una trasformazione L’ultimo add-in che prendiamo in considerazione per tener traccia delle differenze (a livello di co- è Graph. Con questo strumento è possibile visua- dice, quindi anche funzionale) presenti tra due lizzare un grafo disegnato in base alle dipenden- versioni diverse di un assembly. ze di un assembly ed è utile quando si tratta di Il terzo add-in che prendiamo in considerazione comprendere progetti particolarmente comples- è il FileDisassembler. Uno dei “problemi” di Re- si oppure per visualizzare graficamente le corri- flector è la difficoltà di manipolazione dei tipi di- spondenze tra assembly in modo grafico. È an- sassemblati. Con il FileDisassembler è possibile che qui ovviamente possibile esportare e stam- esportare un’operazione di disassemblamento di- pare il grafo, per ottenere una documentazione rettamente in una libreria di classi, in un’applica- di un progetto esaustiva e completa. zione Windows o in un’applicazione Console. Così In questa prima panoramica degli add-in per Re- facendo è possibile successivamente importare il flector abbiamo analizzato alcune estensioni del progetto in Visual Studio.NET per poter sfruttare potente tool di Lutz Roeder. Nel prossimo nume- tutti i vantaggi di un ambiente di sviluppo com- ro approfondiremo ulteriormente l’analisi cercan-

36 N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 37 .NET TOOLS .NET TOOLS

Prodotto do di fornire un quadro completo del variegato e Reflector add-ins complesso mondo che gravita intorno a Reflector, in modo che ognuno di noi possa avere a dispo- Url di riferimento http://www.codeplex.com/reflectoraddins sizione nella propria cassetta degli attrezzi degli strumenti adatti per ogni esigenza che si possa Stato Release Stabile presentare durante la progettazione e lo svilup- po di applicazioni enterprise. Semplicità d’uso ªªªª² È sufficiente estrarre l’assembly contenente l’add-in nella stessa cartella di Reflector Utilità ªªªªª Un grande aiuto per le diverse sfaccettature che riguardano il sof- Reflector è lo strumento tware enterprise più amato/odiato dagli Qualità prodotto ªªªªª Affidabile, nei test sul prodotto eseguiti non ha mai mostrato par- sviluppatori .NET ticolari problemi. Qualità documentazione ªª²²² Poco presente, anche perché l’utilizzo dei tool è immediato.

Figura 2 Graph

38 N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 39 .NET TOOLS .NET TOOLS

sposizione un tool completo, che alle funzionalità Network Monitor 3.1 beta 2 di base del tipico sniffer affianca altri strumenti di Raffaele Di Natale che lo rendono versatile e dinamico.

Un tool potente e completo per l’analisi del L’applicazione traffico di una LAN Network Monitor può essere usato sia per ana- Etichettare questo tool come uno sniffer di rete lizzare i dati che circolano all’interno della rete (l’ennesimo) significherebbe nascondere le mol- sia per analizzare gli eventuali guasti dei dati tra- teplici funzionalità che soprattutto gli sviluppa- sferiti fra i nodi e dispositivi di una rete. Questo tori possono apprezzare. tool ha la capacità di adattarsi facilmente alla fi- gura tecnica che lo utilizza. Infatti, un ammini- Introduzione stratore di rete normalmente lo usa per analizza- re eventuali infrazioni nella rete locale, oppure Chi ha avuto in passato la possibilità di conosce- per analizzare la fonte di eventuali colli di bot- re e utilizzare la versione 2.1 dello stesso tool ha tiglia. Uno sviluppatore, invece, lo utilizza come certamente optato per altri software concorrenti. un ulteriore strumento di debugging per le pro- Questa volta però bisogna riconoscere che in casa prie applicazioni network based. Infine un Web Microsoft hanno deciso finalmente di mettere a di- Administrator potrebbe trarre informazioni di

Figura 1 La finestra principale del tool in fase di avvio

38 N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 39 .NET TOOLS .NET TOOLS

Figura 2 I risultati di un’analisi del traffico dati

Network Monitor non ovviamente si tratta di una beta, viene distribui- è solo uno sniffer, ma to in due versioni distinte a 32e 64 bit, rispetti- vamente per i sistemi di cui sopra a 32 e 64 bit. un tool dinamico che si Entrambe le versioni possono essere scaricate dal adatta alle differenti figure sito [1]. Ulteriori informazioni sul prodotto sono tecniche che lo utilizzano fornite dai siti [2] e [3]. Novità rispetto alla versione 3.0 basso livello circa tempi, connessioni ed attività varie correlate alla connessione da parte di altri La versione 3.1 differisce rispetto alla 3.0 per al- utenti al server web. cuni miglioramenti che riguardano l’interfaccia e per nuove funzionalità. Le novità più interes- Le versioni santi riguardano la possibilità di monitorare reti WiFi 802.11 a/b/g e di intercettare traffico relati- Network Monitor è compatibile con Windows vo a connessioni RAS/VPN. XP, Windows Vista e Windows Server 2003. Inol- Per gli utilizzatori di Vista si raccomanda di ese- tre, pur essendo un prodotto gratuito, anche se guire il tool come amministratore.

40 N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 41 .NET TOOLS .NET TOOLS

Filtri

Come qualsiasi sniffer che si rispetti, anche Network Monitor consente di filtrare i pacchet- ti che transitano nella rete. Sono disponibili due tipi di filtri: i Display Filter che effettuano una selezione dei pacchetti analizzati solo a livello di visualizzazione ed i Caption Filter che filtrano in- vece i pacchetti già in fase di lettura. Ciò signifi- ca che ad esempio possiamo effettuare un’analisi completa del traffico di rete e poi ad esempio vi- sualizzare solo ed esclusivamente i pacchetti che fanno riferimento al protocollo ARP (Display Fil- ter), oppure richiedere di analizzare il traffico solo dal punto di vista dei pacchetti ARP (Caption Fil- ter). È chiaro che le due tipologie di filtri hanno caratteristiche e performance differenti e vengono scelte in relazione al problema affrontato.

Parser di protocolli

Network Monitor mette a disposizione una serie Alcuni protocolli supportati dai parser di parser per i più diffusi protocolli di comunica- Figura 3 di default zione, sebbene sia comunque possibile sviluppar- ne ad hoc per particolari applicazioni. Network Parsing Language (NPL) è il linguaggio utilizza- to per lo sviluppo di tali parser di rete. La Figu- Interfaccia e funzionalità ra 3 descrive una parte dell’elenco dei protocolli supportati dai parser di default ed in Figura 4 si In Figura 2 è descritta la finestra principale del- può osservare una porzione di script in NPL re- l’applicazione al termine di una fase di analisi. lativo al parser definito in wireless.npl. Come si può evincere dell’im- magine, nella parte alta è pre- sente la finestra per la gestione dei filtri (nell’esempio in figura sono stati filtrati solo i pacchetti ARP, Capture Filter), nella par- te centrale si trova la finestra relativa al sommario dei frame “catturati”, ed infine nella parte bassa c’è la finestra dei dettagli di un frame selezionato nella fi- nestra centrale. Nell’esempio in figura la scansione è stata effet- tuata su una rete WiFi ed, infat- ti, tra i dettagli del frame, si può notare il campo WiFi. Figura 4 Porzione di codice del parser wireless

40 N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 41 .NET TOOLS .NET TOOLS

Figura 5 La finestra di dialogo di nmwifi.exe

Network Monitor da riga di comando Scanning WiFi

Per tutte le situazioni in cui non si può fare Quando si utilizza Network Monitor per analiz- a meno di lanciare l’applicazione da riga di co- zare una rete WiFi, i frame catturati si riferisco- mando, Network Monitor mette a disposizione il no esclusivamente al traffico locale, tipicamen- tool NMCAP.exe, che si trova all’interno della di- te dal nodo di partenza all’access point. Spes- rectory di installazione del tool, e che permette di so questo non è ciò che desideriamo: potremmo effettuare la maggior parte delle operazioni della avere la necessità di dover decidere a quale ac- versione con GUI. Per questo tool è disponibile cess point connetterci in base a determinati fat- sia l’help (digitando NMCAP /?) sia una serie di tori o semplicemente volere assistere al traffico esempi di tipiche applicazioni (digitando NMCAP dati che avviene in prossimità della nostra rete /examples). WiFi. Per tale ragione, sempre all’interno della

42 N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 43 .NET TOOLS .NET TOOLS

videre anche esternamente i risultati dell’analisi (per esempio esportando in formato XML i frame In aggiunta ai Parser di catturati) non dovrebbe comunque rappresenta- protocollo standard è re un ostacolo al suo utilizzo. È vero anche che le possibile implementarne alternative al presente tool forniscono strumenti di analisi statistica, ma nel contempo sono spes- di propri in NPL so più difficili da utilizzare.

Conclusioni directory di installazione di Network Monitor, è disponibile l’applicazione nmwifi.exe che, intera- La facilità di utilizzo è senz’altro la caratteristica gendo con il tool principale, permette allo stesso più evidente di questo tool. Molteplici potrebbero di mettersi in ascolto in modalità “Monitor”. La essere gli spunti di miglioramento, ma riuscire a Figura 5 ne illustra la finestra principale. Al mo- “leggere” il traffico della nostra rete con una lente mento non tutte le schede 802.11 sono supporta- d’ingrandimento così maneggevole può sorprende te per la modalità monitor. Per un elenco detta- non solo i neofiti dello sniffing di rete. gliato fare riferimento a [3]. Bibliografia e riferimenti Punti di forza [1] https://connect.microsoft.com Network Monitor è uno strumento facilmente [2] http://support.microsoft.com/kb/933741/en-us utilizzabile. Per partire basta davvero premere so- [3] http://blogs.technet.com/netmon/ lamente il pulsante Play. Modifiche all’ambiente ed alla configurazione si rendono necessari solo Raffaele Di Natale è laureato in Scienze dell’Informazione in caso di analisi avanzate per risolvere problemi presso l’università di Catania, insegna Informatica presso l’ITI. specifici o per esempio per attività di debug. La Attualmente si occupa di programmazione in ambito mobi- prima particolarità di Network Monitor è quella le, di help authoring, content management system, content syndication ed e-learning. di riuscire ad analizzare più reti contemporanea- mente: infatti, un simile tool solitamente si utiliz- za in postazioni con più schede di rete, si pensi, Prodotto Network Monitor 3.1 beta ad esempio, ad un server equipaggiato con Win- dows 2003 server. La seconda particolarità è rap- Url di riferimento https://connect.microsoft.com presentata dal fatto che è possibile lanciare più sessioni di analisi contemporaneamente ottenen- Stato Release do comunque un output altamente leggibile. In- v. 3.1 beta, stabile fine, oltre a “catturare” i dati della rete, Network Semplicità d’uso ªªªªª Monitor consente di assegnare delle proprietà ai Tool di immediato utilizzo: in brevissimo tempo si impara ad ef- fettuare analisi anche complesse. frame. Tali proprietà verranno successivamente utilizzate per raggruppare i frame catturati in una Utilità ªªªªª In tutte le situazioni in cui è necessario effettuare un’analisi del traf- struttura ad albero che prende il nome di Conver- fico dati un tool come Network Monitor è indispensabile. sation. Di default, per questioni di efficienza, le Conversation sono disabilitate. Qualità prodotto ªªªªª La Microsoft ha fatto il salto di qualità passando dalla versione 2.1 alla 3.0. Un ulteriore passo in avanti è stato fatto con que- Punti di debolezza sta versione. Qualità documentazione ªªª²² Gli aspetti legati ad un’analisi statistica sono Pur essendo un tool di facile utilizzo, la documentazione a sup- senz’altro i più trascurati. È senz’altro un gros- porto non appare sempre esaustiva. so limite, ma la possibilità date dal tool di condi-

42 N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 43 APPLICATIVI APPLICATIVI Un centro di controllo per server remoti

Una utility rivolta agli amministratori (esperti e non) di sistemi operativi Windows, che gestisce e controlla uno o più server da un unico punto di accesso.

di Mauro Magni

L’applicazione è basata sul browser Internet Descrizione Explorer, un listener locale e uno o più server re- moti. L’applicazione è composta di Dal browser l’utente esegue un comando (di con- un listener locale e uno (o più) trollo oppure di amministrazione) su un server re- remoti, entrambi funzionanti in moto e successivamente su un altro senza diffi- ambiente Windows, scritti con il coltà. linguaggio VB.NET ed utilizza- Nella parte inferiore sinistra della schermata ini- no il framework.NET. ziale sono visualizzate le descrizioni, mentre nel- Un listener è un particolare la parte destra i comandi corrispondenti; un uten- tipo di server che è identifica- te esperto più inoltre cambiare o aggiungere altri to dalla terna protocollo di tra- comandi con le descrizioni corrispondenti (vedi il sporto (TCP,UDP), indirizzo IP paragrafo “Migliorie”). del computer, numero di porta. Per gli utenti più esperti che hanno scritto co- mandi propri (script, utility) c’è la possibilità di Codice del listener locale eseguirli sui server remoti (vedi il paragrafo “Uti- lizzo dell’utility”). Creare una directory (per esempio c:\srvlocal), crea- re un file vuoto (per esempio srvlocal.vb), copiare e salva- Mauro Magni È uno specialista di sicurezza informatica su mainframe (Z/OS).Ha lavorato come sistemista Unix,linux,AIX re il codice VB.NET riportato SP2 (Unix IBM). nel Listato 1 (disponibile su ftp.infomedia.it).

44 N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 45 APPLICATIVI APPLICATIVI

nagement Instrumentations): Questa utility è rivolta agli amministratori (esperti e select * from win32_pingstatus …. non) di sistemi operativi Questa istruzione esegue un ping sul com- Windows puter remoto e ritorna il valore dello stato: Up or Down. Il codice nella sezione ‘Esecuzione dei coman- di del server locale', utilizzando la subroutine L’istruzione imports System.Net.Sockets ExecDoscmd, esegue i comandi sul server lo- (e System.Net) rende disponibile (al pro- cale mentre ‘Il server locale( ora client) invia gramma) gli oggetti che ci consentono di il comando al server remoto …’ invia il coman- creare una connessione TCP/IP tra un client do al server remoto (facendo uso della client ed un server, mentre l’istruzione imports subroutine) ed attende la risposta. System.Management serve per gestire gli oggetti messi a disposizione dalla WMI (Win- Installazione del listener locale dows Management Instrumentation). La WMI è presente nel sistema operativo Windows e Prima di installare il server verificare la serve per reperire qualsiasi tipo di informa- versione di.NET installato nel sistema ope- zione sui computer presenti nella rete. rativo. Nella sezione ‘Modulo principale’, il pro- È necessario avere installato il.NET fra- gramma controlla che il server sia eseguito mework alla versione 2.0.50727.42 o superio- correttamente specificando tutti i parametri ri. Per eseguire questa verifica cercare(avvio- e le istruzioni che seguono dichiarano tutte >cerca->file o cartelle) nei file del computer le costanti. il programma vbc.exe e dal prompt del DOS La sezione intitolata ‘Codice Javascript che con il comando CD (change directory) portarsi crea il form sullo..’ contiene il codice Java- nella directory che lo contiene (generalmen- Script per controllare il valore dei campi in- te la directory è la seguente C:\WINDOWS\ seriti dall’utente nella schermata iniziale. Microsoft.NET\Framework\V.x.y.zzzzz), digita- La sezione seguente ‘Codice Javascript per re vbc e premere il tasto invio; il risultato si il messaggio di ShutDown dei listener’ contie- legge sulla seconda riga. ne il codice per eseguire il display per lo Shu- Contrariamente, se.NET non è installato ese- tDown del server locale o remoto. guire il download dal sito della Microsoft al- L’istruzione tcpListener.start() nella sezione l’indirizzo: ‘listener parte sull’indirizzo IP specificato..’ http://www.microsoft.com/downloads/details avvia il listener locale. L’istruzione tcpListen- .aspx?FamilyId=10CC340B-F857-4A14-83F5-2 er.AcceptTcpClient() mette in stato di attesa 5634C3BF043&displaylang=en il server locale pronto per ricevere le richie- Per compilare il codice del listener locale, ste dai client. creare il file srvlocal.cmd (nella directory La sezione seguente ‘server locale legge i dati create in precedenza c:\srvlocal), copiare la che l’utente gli invia..’ è il cuore del program- seguente istruzione: ma; nella prima parte il listener locale riceve C:\WINDOWS\Microsoft.NET\Framework\ i dati dal client (browser), analizza i valori dei tuaversione\vbc srvlocal.vb /out:srvlocal.exe campi Sistema, Comando, Opzioni e control- /t:exe la se il server remoto è attivo. e salvare il file. Per eseguire questo controllo ho utilizzato Rimpiazzare tuaversione con quello letto sul- un oggetto dell’ambiente WMI (Windows Ma- lo schermo in precedenza (V.x.y.zzzzz).

44 N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 45 APPLICATIVI APPLICATIVI

Figura 1

Dalla linea comandi del DOS digitare Loopback è un indirizzo di rete “fittizio” di srvlocal.cmd e premere il tasto invio, sarà tutti i computer, infatti, ogni computer (de- automaticamente creato il file eseguibile sktop oppure server, Windows oppure Unix) srvlocal.exe che è il nostro listener locale. hanno questo indirizzo oltre a quello reale (es. 10.10.10.78). È fittizio perchè non è un indiriz- Avvio del listener locale zo “visto” dagli altri computer della rete. So- litamente si utilizza il local loopback quando Dalla directory dove è stato creato il liste- si desidera fare un test di programmi ed ap- ner (c:\srvlocal) avviare il server con la se- plicazioni su un computer non connesso alla guente codifica: rete. Si pensi ad esempio ad un database o ad Srvlocal.exe localhost 1957 a un web server in fase di sviluppo. oppure Comparirà invece un messaggio di errore se Srvlocal.exe 127.0.0.1 1957 il server sarà avviato con un numero di para- metri non corretto. In entrambi i casi il listener sarà avviato sull’indirizzo di local loopback (localhost o Codice del listener remoto 127.0.0.1) e si metterà in ascolto sulla por- ta 1957. Ora ci trasferiamo sul server remoto su

46 N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 47 APPLICATIVI APPLICATIVI

cui creiamo una directory (per esempio c:\ srvremote), creiamo un file vuoto (per esem- pio srvremote.vb), copiamo e salviamo il co- L’utility proposta è dice VB.NET del Listato 2 (anch’esso libera- composta di un listener mente scaricabile da ftp.infomedia.it). locale e uno (o più) remoti Il funzionamento del server remoto è simi- le a quello locale, con la sola differenza che il suo unico compito è di ricevere i coman- di, eseguirli e inviarli al richiedente (il ser- netstat -an | find “:port” ver locale). dove port è il numero della porta del server. Installazione del Se sullo schermo non compare nessuna rispo- listener remoto sta allora possiamo tranquillamente utilizza- re la porta scelta in precedenza. Si raccoman- Prima di installare il listener remoto è neces- da di utilizzare lo stesso numero di porta per sario eseguire le medesime verifiche (presen- tutti i server remoti. Comparirà un messag- za di.NET) effettuate per il server locale. gio di errore se il server sarà avviato con un Per compilare il codice del listener remoto, numero di parametri non corretto. creare il file srvremote.cmd (nella directory Importante: l’utente che avvia il listener re- create in precedenza c:\srvremote), copiare la moto deve avere tutte le autorità per eseguire seguente istruzione i comandi provenienti dal server locale. C:\WINDOWS\Microsoft.NET\Framework\ tuaversione\vbc srvremote.vb /out: Configurazione dell’ambiente srvremote.exe /t:exe e salvare il file. Rimpiazzare tuaversione Il listener locale deve essere uno solo men- con quello letto sullo schermo in preceden- tre quelli remoti sono uno o più a seconda za (V.x.y.zzzzz). Dalla linea comandi del DOS della configurazione che si desidera conferi- digitare srvremote.cmd e premere il tasto in- re all’utility. vio, sarà automaticamente creato il file ese- guibile srvremote.exe che è il nostro listener L’utility utilizza l’interfaccia browser remoto. (Internet Explorer) ed è basata sulla pro- grammazione client-server e sul protocollo Avvio del listener remoto TCP/IP. Lo scopo dell’utility è di eseguire un coman- Dalla directory dove è stato creato il liste- do sul server remoto, da un unico punto, ed ner (c:\srvremote) avviare il server con la se- attendere la risposta. La tipologia dei coman- guente codifica: di è la seguente:

Srvremote.exe ipaddress porta • Eseguire verifiche es. (ipconfig, netstat, nslookup...) Ipaddress è l’indirizzo del server mentre por- ta è un valore qualsiasi a partire da 1025; non • Eseguire comandi amministrativi utilizzare porte occupate da altri servizi altri- menti il server riceverà un errore. • Eseguire un proprio script o programma Per eseguire questa verifica da una finestra DOS digitare il comando Per inviare un comando sul server remoto

46 N. 75 - Maggio/Giugno 2007 N. 75 - Maggio/Giugno 2007 VBJ 47 APPLICATIVI APPLICATIVI

Listato 2

Imports System.Net Imports System.Net.Sockets Imports System.Text Module main ‘ ‘------Modulo principale ------‘ Public Sub Main(Params As String())

Dim args As [String]() = System.Environment.GetCommandLineArgs() If args.Length <> 3 Then Console.writeline(“ “) Console.writeline(“>>> Error during start-up “) Console.writeline(“ “) Console.WriteLine(“ Utilizzo: srvlocal.exe ”) Console.writeline(“ “) Return End If

‘console.writeline(“ipaddr “ & params(0) & “ port “ & params(1))

Dim k as integer Dim cmd as string = “ “ Dim opt as string = “ “ Dim strOutput as string = “ “ Dim strError as string = “ “ Dim textdelimiter as String = vbCrLf Dim rowdispl as string = “ “ Dim Errmsg as string = “ “ dim ipaddr as string = Params(0) Dim port As Int32 = Params(1) Dim localAddr As IPAddress = IPAddress.Parse(ipaddr) Dim msgshut as string = _ “” & _ “



” & _ “

” & _ “
” & _ “Server shutting down ...  “ & _ “” & _ “
” & _ “