Titanic....Vista Ultimate 5472....
09 agosto 06 07.42 | andrear | with no comments
A poche pre dall'installazione di vista ho potuto notare circa un 4 bug.... a parte quello prima elencato gli ultimi risalgon alla gestione degli account..difatti non mi è possibile in quanto sia connesso come amministratore creare account perchè il sistema di creazione account risulta mal funzionante....insomma....mi chiedo se sto navigamdo con il titanic in questo momento..potrà mai lasciarmi all'improviso??
Windows Vista Build 5472 ultimate
09 agosto 06 06.17 | andrear | with no comments
Ho appena finito di installare questa build...il processo di installazione e graficamente migliorato e durante il completamento di installazione si ha una lieve panoramica dei prodotti contenutui in windows....Rispetto alle precedenti build appare leggermente migliorato in aspetto grafico peccato che ho trovato il primo bug...... windows media player non puoi essere visualizzato nella toolbar quando è ad icona e la scritta che dovrebbe essere ToolBar >> Windows media Player appare come una scritta stranissima di caratteri! Che dire risulta notevolmente migliorati in alcuni aspetti grafici e di prestazioni....sul mio pentium 4 3.00 ghz con 512 mb di ram va abbastanza bene anche se quando ho piu di un'applicazione aperta si vede notevolmente la mancanza del gb di ram consigliato (Come minimo )!Un consiglio se lo si vuole far girare il piu bene possibile e bene portare ad almeno 1.5 gb di ram ed ad una frequenza di non inferiore al 2.5 ghz!ora torno al testing di sviluppo di applicazioni di windows vista!Speriamo Bene ! Andrea Romeo MCPD
Sito su WinFX Italiano....
04 agosto 06 12.41 | andrear | with no comments

Vi segnalo un sito in italiano su winFx davvero molto carino.....potrete  trovare info e numerosi  articoli su questa nuova tecnologia ill sito è

www.winfxitalia.com

 

Buon divertimento  e buone vacanze a tutti.......

 

Ricavare informazioni sulle unità con vb.net 2005
08 ottobre 05 06.16 | andrear | with no comments

 

 

In questo esempio vedremo come ottenere informazioni sulle unità usando vb.net 2005

Innanzi tutto riempiamo una combobox con tutte le unità presenti che vanno dalla “a” alla “z”

Inseriamo nell’evento form_load() il codice seguente.

 

Prima di tutto però dichiariamo le seguenti variabili

 

    Private dirInfo As DirectoryInfo

    Private totalSpace As Long

    Private freeSpace As Long

    Private usedSpace As Long

    Private sweep As Single

    Private isSpaceInfoAvailable As Boolean

 

 

  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Me.driveReadyStatus.Text = ""

‘Ricava le unità presenti nel sistema

        Dim drives As System.IO.DriveInfo() = System.IO.DriveInfo.GetDrives

        ‘Popola la combobox con le lettere delle unità

        drivesOnPc.Items.AddRange(drives)

    End Sub

 

Per abbellire il progetto faremo in modo che le informazioni come spazio totale sul disco , spazio usato ecc.. siano rappresentati  graficamente ecco il codice che segue….

 

Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint

 

        ' Reattangolo che definirà il  Pie Chart

        Dim rect As Rectangle = New Rectangle(370, 20, 200, 200)

 

        Dim rect2 As Rectangle = New Rectangle(310, 10, 320, 320)

 

        ' Rettangoli che verranno usati per la legenda

        Dim freeLegend As Rectangle = New Rectangle(315, 275, 20, 20)

        Dim usedLegend As Rectangle = New Rectangle(315, 300, 20, 20)

 

        e.Graphics.DrawRectangle(Pens.Black, rect2)

 

        If isSpaceInfoAvailable = True Then

 

            ' Disegna Pie Chart

            e.Graphics.FillPie(Brushes.Green, rect, 0, sweep)

            e.Graphics.FillPie(Brushes.Red, rect, sweep, 360 - sweep)

 

            ' Disegna la legenda

            e.Graphics.FillRectangle(Brushes.Green, freeLegend)

            e.Graphics.FillRectangle(Brushes.Red, usedLegend)

 

            ' Inserisce il testo

            e.Graphics.DrawString("Capacity:", New Font("Tahoma", 10, FontStyle.Regular), Brushes.Black, New PointF(350, 230))

            e.Graphics.DrawString("Used Space:", New Font("Tahoma", 10, FontStyle.Regular), Brushes.Black, New PointF(335, 275))

            e.Graphics.DrawString("Free Space:", New Font("Tahoma", 10, FontStyle.Regular), Brushes.Black, New PointF(335, 300))

            e.Graphics.DrawString(totalSpace.ToString("N") + " bytes", New Font("Tahoma", 10, FontStyle.Regular), Brushes.Black, New PointF(420, 230))

            e.Graphics.DrawString(usedSpace.ToString("N") + " bytes", New Font("Tahoma", 10, FontStyle.Regular), Brushes.Black, New PointF(420, 275))

            e.Graphics.DrawString(freeSpace.ToString("N") + " bytes", New Font("Tahoma", 10, FontStyle.Regular), Brushes.Black, New PointF(420, 300))

        End If

    End Sub

 

 

 

 

Finalmente siamo arrivati alla classe che farà funzionare l’intero progetto

   La seguente classe viene usata per ricavare  informazioni delle unita.

    Useremo la classe System.IO.DriveInfo(LetteraUnita) per acquisire info    sull’unita selezionata.

 

 

Private Sub LoadDriveInfo(ByVal driveLetter As String)

      

 

        Dim driveInfo As System.IO.DriveInfo

        'Controlla  che l'unita selezionata sia valida

        Try

            driveInfo = New System.IO.DriveInfo(driveLetter)

        Catch ex1 As ArgumentNullException

            MessageBox.Show("L'unita selezionata non è valida./n/r" + ex1.Message, "Unita non valida", MessageBoxButtons.OK, MessageBoxIcon.Error)

            Return

        Catch ex2 As ArgumentException

            MessageBox.Show("The drive letter must be in the range of a-z./n/r" + ex2.Message, "Drive Letter error", MessageBoxButtons.OK, MessageBoxIcon.Error)

            Return

        End Try

 

        Me.driveName.Text = driveInfo.Name

        'Alcune unita non mostrano tutte le info

 

        Try

            If driveInfo.VolumeLabel.Length > 0 Then

                Me.driveVolumeLabel.Text = driveInfo.VolumeLabel

            Else

                Me.driveVolumeLabel.Text = "None"

            End If

            Me.driveFormat.Text = driveInfo.DriveFormat

            totalSpace = driveInfo.TotalSize 'Dimensione dell'unita

            freeSpace = driveInfo.TotalFreeSpace 'Spazio non usato

            usedSpace = totalSpace - freeSpace  'Ricava lo spazio usato

            sweep = 360.0F * freeSpace / totalSpace

            isSpaceInfoAvailable = True

        Catch

            Me.driveVolumeLabel.Text = "Not available"

            Me.driveFormat.Text = "Not available"

            isSpaceInfoAvailable = False

        End Try

 

        Me.driveType.Text = driveInfo.DriveType.ToString

 

        Me.driveRootDirectory.Text = driveInfo.RootDirectory.ToString

        dirInfo = driveInfo.RootDirectory

 

        If driveInfo.IsReady = True Then

            Me.driveReadyStatus.Text = "Drive is Ready"

        Else

            Me.driveReadyStatus.Text = "Drive is NOT Ready"

        End If

    End Sub

 

Le classi seguenti non fanno altro che convertire i bytes in mb e in gb.

 

 

 

  Private Function ConvertBytesToMB(ByVal bytes As Int64) As String

        Dim mb As Long = bytes / 1048576

        Return mb.ToString("N")

    End Function

 

    Private Function ConvertBytesToGB(ByVal bytes As Int64) As String

        Dim gb As Long = bytes / 1073741824

        Return gb.ToString("N")

    End Function

 

 

   

Ricavare UserName in vb.net
06 settembre 05 02.37 | andrear | 1 comment(s)

Eccovi il codice

Imports System

Imports System.Net

Imports System.Security.Principal

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

' Visualizzo tramite un msg l'username

MsgBox(Environment.UserName)

End Sub

Come ti cracco il serverweb:
21 luglio 05 04.19 | andrear | with no comments

 

Attenzione:Questo testo è solo a scopo informativo e quindi non mi assumo alcuna responsabilità di cosa farete con queste cose che vi illustrerò qui di seguito.

A causa di mancanza di tempo per rifinire la guida essa puo risultare in alcuni punti breve e scarna di contenuto.

 

 

 

Ho deciso di scrivere questo articolo in seguito alle enormi falle di sicurezza che ho  riscontrato n tanti webserver di grandi aziende ……ovviamente non vi rileverò i nomi !!!!Quasi tutti quelli che come  noi,sono programmatori magari anche di una certa fama , pensano molto alla sicurezza del codice ma non hanno idea di cosa è la sicurezza del proprio webserver .Questa guida non ha la finalità di rendere ognuno di voi (“che leggete questo testo”) un vero hacker ma vi dimostra come sia possibile senza avere particolari conoscenze ,di riuscire a bucare un server.

La prima fase dell’attacco consiste nel rintracciare più informazioni possibili sulla vittima prendiamo come esempio il sito www.provahk.net .Una volta conosciuto il target effettuando un semplice whois posso acquisire a volte tantissime info sulla vittima come ad esempio e-mail,telefono,fax ecc..!ma non in tutti i casi e possibile tutto ciò.La parte fondamentale che dobbiamo conoscere per poter attaccare un sito web e il tipo di sistema utilizzato dalla vittima per far ciò ci colleghiamo via telnet sul’host vittima.usando il telnet fornito con xp la stringa per dare il via alla connessione sarà o www.provahk.net 21 (“21 sta per la porta utilizzata dal servizio FTP file transfer protocol”) una volta che la connessione sarà stata avviata il server risponderà con una serie di parole del tipo we01.taonet.it please enter user e password

 

 

A questo punto inseriremo il comando syst  seguito da invio per conoscere il sistema utilizzato il server risponderà con Unix:L8 bene ora sappiamo che sistema usa e quindi possiamo continuare,però a volte  può capitare che digitando direttamente syst il server rispondera  dicendoci di doverci autentificare prima non ce problema basterà prima inserire un user a caso quindi digitiamo user prova seguito  da invio poi lui dirà username ok please insert pass in quel momento no inseriremo il comando syst ed ecco che lui ci d’ara  la versione del sistema utilizzato.A volte però i gestori dei servizi web come taonet voglio facilitarci le cose inserendo direttamente la versione del sistema appena ci colleghiamo quello che verrà scritto al momento della connessione avvenuta con successo  sarà  tipo la seguente “ web01.taonet.it system version NT 5.1 “

A quel punto sappiamo  gia che NT 5.1 Sta per windows 2000 quindi grazie ai gestori del webserver che ci hanno risparmiato 30 secondi. Il passo dopo aver capito che sistema monta il server e il capire quali servizi girano effettivamente sul server.Il modo migliore per capire quali servizi girano sul serverweb è effettuare un portscan , una volta aver acquisito quali servizi girano sul server viene la parte più bella e difficile di tutto.Ora sapendo per esempio che sul webserver gira il servizio ftp potremmo organizzarci un attacco bruteforce  , questo tipo di attacco consiste nel provare miliardi di combinazioni possibili per rintracciare     la password dell’admin un buon programma per effettuare questo tipo di attacco e brutus aet2 un password cracker abbastanza buono ,poi però c’è un programma di cui quasi nessuno ne conosce l’esistenza shaPCR un ottimo anzi ottimissino password cracker inzomma un pò una leggenda  della rete creato dal gruppo sha Secret hacker agency .Bando alle ciancie con questo programma è possibile effettuare la prova con ogni possibile combinazione di pw che l’admin può scegliere  per amministrare il server.Questo genere di attacco a volte richiede un sacco di tempo persino mesi dipende  da quanto e complicata la pw.Esiste però  un genere di password logica alla quale il pw cracker nn riesce a generarne una sequenza precisa e quindi  non e possibile craccarla con un semplice password cracker. Questo metodo è facile ma molto lungo.Altri generi di attacchi sono i D.O.S (Denial of services)Questo genere di attacchi consiste nel crascare il webserver sovraccaricando il sistema ,un altro metodo consiste nel ricercare exploit , cioè noi sappiamo per esempio che sul webserver  gira il servizio ftp v 2.4 per esempio quindi basterà ricercare un exploit che corrisponda al servizio di cui siamo a conoscenza per poi magari ottenere un accesso di root senza bisogno di user e pw.

Oltre ai metodi qui elencati cene sono molti altri ,e non molto difficili ma purtroppo non ho tempo per elencarli tutti.

 

 

 

Per maggiori info su  come proteggere ottimamente il proprio  webserver utilizzando un algoritmo a prova dei maggiori password cracker,potete contattarmi a  andy.cp@hotmail.it

 

Vi auguro buon lavoro:

 

Andrea Romeo

 

 

Ricavare l nome utente in c#
08 luglio 05 01.34 | andrear | with no comments

Namespaces:

using System;

using System.Net;

using System.Security.Principal;

 

Code:

static void Main(string[] args)

{

           Console.WriteLine(Environment.UserDomainName + @"\" + Environment.UserName);

 

     WindowsIdentity user = WindowsIdentity.GetCurrent();

      Console.WriteLine(user.Name.ToString());

}

Winsock come in vs 6.0 per il .net
07 luglio 05 06.00 | andrear | with no comments

E disponibile un winsock anche per il net lo potete trovare su www.serverdati.altervista.org/oswsck.rar .

 

Far parlare una nosta applicazione .net usando vb.net
08 giugno 05 12.33 | andrear

Bene prima di cominciare scarichiamo le  Text-to-speech e le SAPI 4.0 da http://www.microsoft.com/msagent/downloads/user.asp .Dopo aver scaricato e installato i componenti apriamo VS. Apriamo un nuovo progetto applicazione per windows con vb.net. Ora aggiungiamo al progetto il componente C:\WINDOWS\speech\Xvoice.dll. Fatto ciò inseriamo nel forma il componente , se tutto è andato bene vedremo sul form una bocca ,ora inseriamo una textbox e un command button,ora  cliccando due volte sul commandbutton inseriamo il codice che segue:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

AxDirectSS1.Speak(TextBox1.Text)

End Sub

Ora possiamo avviare il progetto, inseriamo nella csella di testo una parola  per esem. ciao mondo  e cliccando sul commandbutton il computer riprodurra vocalmente la parola inserita muovendo contemporaneamente l'immagine della bocca.Potremmo anche fargli dire che ore sono con il metodo seguente,

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

AxDirectSS1.Speak("Sono le " & TimeOfDay & " secondi")

End Sub

Come vedete utilizzare questo controllo è molto facile e  veloce per lo meno utilizzando vb.

Ciao e alla prossima.

VS 2005 Beta Experience ordinalo subito e gratis........
05 giugno 05 12.07 | andrear

Beta Experience vi invita a partecipare ad un viaggio alla scoperta delle nuove caratteristiche di Visual Studio 2005. Troverete le ultime versioni beta di Visual Studio 2005 Team System e SQL Server 2005, e potrete sperimentare direttamente il grande progetto di training appositamente studiato per farvi sfruttare al meglio le potenzialità di Beta 2. Mantenetevi aggiornati con la newsletter Beta Experience che riporta le opinioni degli esperti, le risorse tecniche e tutte le informazioni sugli eventi locali.

Aderite oggi stesso a Beta Experience, e accompagnate Visual Studio 2005 verso la versione finale…

Indirizzo: http://www.microsoft.com/emea/msdn/betaexperience/itit/order.aspx

Come far parlare un'applicazione .NET
02 giugno 05 06.58 | andrear

Se volete aggiungere un tocco di stile facendo parlare  le vostre app lo potete fare , basta scaricare Text-to-speech engines , SAPI 4.0 runtime support da http://www.microsoft.com/msagent/downloads/user.asp , poi inserite i controllo relativo ( Microsoft DSS) al vostro progetto .net e   voila sbizzarite le vostre fantasie.Io per ora lo provato con vb.net usando vs2003 e funziona benissimo be più tardi lo proverò con c# poi vi faccio sapere. 

Generare un codice fiscale da vb.net
31 maggio 05 06.36 | andrear

Codice da inserire nel form :

Public Class frmMain

Inherits System.Windows.Forms.Form

#Region " Codice generato da Progettazione Windows Form "

Public Sub New()

MyBase.New()

'Chiamata richiesta da Progettazione Windows Form.

InitializeComponent()

'Aggiungere le eventuali istruzioni di inizializzazione dopo la chiamata a InitializeComponent()

End Sub

'Form esegue l'override del metodo Dispose per pulire l'elenco dei componenti.

Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)

If disposing Then

If Not (components Is Nothing) Then

components.Dispose()

End If

End If

MyBase.Dispose(disposing)

End Sub

'Richiesto da Progettazione Windows Form

Private components As System.ComponentModel.IContainer.

Friend WithEvents lblCodFisc As System.Windows.Forms.Label

Private Sub InitializeComponent()

Me.lblCodFisc = New System.Windows.Forms.Label()

Me.SuspendLayout()

'

'lblCodFisc

'

Me.lblCodFisc.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D

Me.lblCodFisc.Font = New System.Drawing.Font("Courier New", 20.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))

Me.lblCodFisc.Location = New System.Drawing.Point(8, 8)

Me.lblCodFisc.Name = "lblCodFisc"

Me.lblCodFisc.Size = New System.Drawing.Size(288, 40)

Me.lblCodFisc.TabIndex = 0

Me.lblCodFisc.Text = "@@@@@@@@@@@@@@@@"

Me.lblCodFisc.TextAlign = System.Drawing.ContentAlignment.MiddleCenter

'

'frmMain

'

Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)

Me.ClientSize = New System.Drawing.Size(300, 54)

Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.lblCodFisc})

Me.Name = "frmMain"

Me.Text = "Form1"

Me.ResumeLayout(False)

End Sub

#End Region

Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim ambiente As String

mdlFiscali.Avvio()

ambiente = Microsoft.VisualBasic.Command

If Trim(ambiente) = "" Then

ambiente = InputBox("Inserire il COGNOME:") & ","

ambiente &= InputBox("Inserire il NOME:") & ","

ambiente &= InputBox("Inserire la DATA DI NASCITA (dd/mm/aaaa):") & ","

ambiente &= InputBox("Inserire il SESSO (M/F):") & ","

ambiente &= InputBox("Inserire il LUOGO DI NASCITA:")

lblCodFisc.Text = mdlFiscali.CreaCodiceFiscale(Trim(ambiente))

Else

If Microsoft.VisualBasic.Left(ambiente, 7) Like "/Verify" Then

ambiente = UCase(InputBox("Inserire il Codice fiscale da verificare:"))

If mdlFiscali.VerificaCodiceFiscale(Trim(ambiente)) = True Then

lblCodFisc.Text = "VALIDO"

Else

lblCodFisc.Text = "NON VALIDO"

End If

Else

lblCodFisc.Text = mdlFiscali.CreaCodiceFiscale(Trim(ambiente))

End If

End If

End Sub

End Class

Codice da inserire nella classe:  mdlFiscali.vb

Option Explicit On

Option Strict Off

Imports Microsoft.Win32

Friend Module mdlFiscali

Private DatiCreazioneCF As Collections.ArrayList

Private strConnectionString As String

Private HKLM As Registry

Const CHIAVE_LOCALE As String = "SOFTWARE\InfoNet s.n.c."

Private DBData As New OleDb.OleDbConnection()

Private Const CONSONANTI As String = "BCDFGHJKLMNPQRSTVWXYZ"

Private Const VOCALI As String = "AEIOU"

Private Const NUMERI As String = "0123456789"

Private Const MESIALFA As String = "A,B,C,D,E,H,L,M,P,R,S,T"

Private arrMesiAlfa() As String

Private Structure rigaPunti

Friend valore As String

Friend puntiPari As Integer

Friend puntiDispari As Integer

Friend restoPunti As Integer

End Structure

Private NuovaRiga() As rigaPunti

Friend Enum Sesso

Maschio = 0

Femmina = 1

End Enum

Friend Sub Avvio()

Dim elencoCompleto() As String = Split("0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z", ",")

Dim elPuntiPari() As String = Split("0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25", ",")

Dim elPuntiDispari() As String = Split("1,0,5,7,9,13,15,17,19,21,1,0,5,7,9,13,15,17,19,21,2,4,18,20,11,3,6,8,12,14,16,10,22,25,24,23", ",")

Dim elRestoPunti() As String = Split("0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25", ",")

Dim i As Integer

Dim tentativi As Integer = 0

Try

strConnectionString = Replace(CStr(Microsoft.Win32.Registry.LocalMachine.OpenSubKey(CHIAVE_LOCALE & "\Common", True).GetValue("Connection String", "")), "$APPPATH$", AppDomain.CurrentDomain.BaseDirectory)

Catch ex As Exception

MsgBox(ex.ToString)

ScriviChiave()

strConnectionString = Replace(CStr(Microsoft.Win32.Registry.LocalMachine.OpenSubKey(CHIAVE_LOCALE & "\Common", True).GetValue("Connection String", "")), "$APPPATH$", AppDomain.CurrentDomain.BaseDirectory)

End Try

If Trim(strConnectionString) = "" Then

ScriviChiave()

End If

arrMesiAlfa = Split(MESIALFA, ",")

For i = 0 To UBound(elencoCompleto)

ReDim Preserve NuovaRiga(i)

NuovaRiga(i).valore = elencoCompleto(i)

NuovaRiga(i).puntiPari = CInt(elPuntiPari(i))

NuovaRiga(i).puntiDispari = CInt(elPuntiDispari(i))

NuovaRiga(i).restoPunti = CInt(elRestoPunti(i))

Next

Try

DBData.ConnectionString = strConnectionString

DBData.Open()

Catch ex As OleDb.OleDbException

MsgBox(ex.ToString)

Finally

'DBData.Dispose()

End Try

End Sub

Private Function RicercaCodiceComune(ByVal Comune As String) As String

On Error GoTo Messaggio

Dim locCmdRicerca As New OleDb.OleDbCommand("SELECT * FROM ITALIA WHERE COMUNE = '" & UCase(Comune) & "'", DBData)

Dim locDaRRicerca As OleDb.OleDbDataReader

locDaRRicerca = locCmdRicerca.ExecuteReader

While locDaRRicerca.Read

Return locDaRRicerca.Item("NAZIONALE").ToString

Exit While

End While

Exit Function

Messaggio:

MsgBox("Nessun comune trovato.", MsgBoxStyle.Exclamation, "No city found")

End Function

Friend Function CreaCodiceFiscale(ByVal elencoValoriCommaSeparated As String) As String

Dim arrValori() As String

Dim locSesso As Sesso

arrValori = Split(elencoValoriCommaSeparated, ",")

If UBound(arrValori) = 4 Then

If IsDate(arrValori(2)) = False Then

MsgBox("Dati inviati non corretti.", MsgBoxStyle.Exclamation, "Data corrupted")

Exit Function

End If

If (UCase(arrValori(3)) = "M") Or (UCase(arrValori(3)) = "MASCHIO") Or (UCase(arrValori(3)) = "UOMO") Then

locSesso = Sesso.Maschio

ElseIf (UCase(arrValori(3)) = "F") Or (UCase(arrValori(3)) = "FEMMINA") Or (UCase(arrValori(3)) = "DONNA") Then

locSesso = Sesso.Femmina

Else

MsgBox("Dati inviati non corretti.", MsgBoxStyle.Exclamation, "Data corrupted")

End If

Else

MsgBox("Dati inviati non completi.", MsgBoxStyle.Exclamation, "Not enought data")

Exit Function

End If

Return EseguiCreazione(arrValori(0), arrValori(1), CDate(arrValori(2)), locSesso, arrValori(4))

End Function

Friend Function CreaCodiceFiscale(ByVal cognome As String, ByVal nome As String, ByVal dataNascita As Date, ByVal sessoEnum As Sesso, ByVal Luogo As String) As String

Return EseguiCreazione(cognome, nome, dataNascita, sessoEnum, Luogo)

End Function

Private Function EseguiCreazione(ByVal cognome As String, ByVal nome As String, ByVal dataNascita As Date, ByVal sessoEnum As Sesso, ByVal Luogo As String) As String

Dim i As Integer

Dim lettera As Integer

Dim CODICE_FISCALE As String = ""

Dim consCognome As String

Dim vocCognome As String

Dim consNome As String

Dim vocNome As String

Dim puntiTotale As Integer

Dim resto As Integer

 

If Len(Trim(cognome)) >= 3 Then

consCognome = Replace(cognome, " ", "")

For i = 1 To Len(cognome)

If UCase(Mid(cognome, i, 1)) <> " " Then

For lettera = 1 To Len(VOCALI)

consCognome = UCase(Replace(consCognome, Mid(VOCALI, lettera, 1), ""))

If UCase(Mid(cognome, i, 1)) = Mid(VOCALI, lettera, 1) Then

vocCognome &= UCase(Mid(cognome, i, 1))

Exit For

End If

Next

End If

Next

Else

cognome = Trim(cognome)

consCognome = UCase(cognome) & StrDup(3 - Len(cognome), "X")

End If

If Len(Trim(nome)) >= 3 Then

consNome = Replace(nome, " ", "")

For i = 1 To Len(nome)

If UCase(Mid(nome, i, 1)) <> " " Then

For lettera = 1 To Len(VOCALI)

consNome = UCase(Replace(consNome, Mid(VOCALI, lettera, 1), ""))

If UCase(Mid(nome, i, 1)) = Mid(VOCALI, lettera, 1) Then

vocNome &= UCase(Mid(nome, i, 1))

Exit For

End If

Next

End If

Next

Else

nome = Trim(nome)

consNome = UCase(nome) & StrDup(3 - Len(nome), "X")

End If

If Len(consCognome) < 3 Then

CODICE_FISCALE = consCognome & Mid(vocCognome, 1, 3 - Len(consCognome))

Else

CODICE_FISCALE = Left(consCognome, 3)

End If

If Len(consNome) < 3 Then

CODICE_FISCALE &= consNome & Mid(vocNome, 1, 3 - Len(consNome))

Else

CODICE_FISCALE &= Left(consNome, 1) & Mid(consNome, 3, 2)

End If

' determinati cognome e nome, si passa alla data...

Select Case sessoEnum

Case Sesso.Maschio

CODICE_FISCALE &= Right(CStr(Year(dataNascita)), 2)

CODICE_FISCALE &= arrMesiAlfa(CInt(Month(dataNascita)) - 1)

CODICE_FISCALE &= Format(CInt(Microsoft.VisualBasic.Day(dataNascita)), "00")

Case Sesso.Femmina

CODICE_FISCALE &= Right(CStr(Year(dataNascita)), 2)

CODICE_FISCALE &= arrMesiAlfa(CInt(Month(dataNascita)) - 1)

CODICE_FISCALE &= Format(CInt(Microsoft.VisualBasic.Day(dataNascita)) + 40, "00")

End Select

' quindi al codice di comune

CODICE_FISCALE &= RicercaCodiceComune(Luogo)

' e infine alla lettera di controllo

For i = 1 To Len(CODICE_FISCALE)

If (i Mod 2) = 0 Then

' pari

For lettera = 0 To UBound(NuovaRiga)

If NuovaRiga(lettera).valore = Mid(CODICE_FISCALE, i, 1) Then

puntiTotale += NuovaRiga(lettera).puntiPari

End If

Next

Else

' dispari

For lettera = 0 To UBound(NuovaRiga)

If NuovaRiga(lettera).valore = Mid(CODICE_FISCALE, i, 1) Then

puntiTotale += NuovaRiga(lettera).puntiDispari

End If

Next

End If

Next

resto = puntiTotale Mod 26

CODICE_FISCALE &= NuovaRiga(resto + 10).valore

'EseguiCreazione = CODICE_FISCALE

Return CODICE_FISCALE

End Function

Private Sub ScriviChiave()

Dim dlgRisposta As String

dlgRisposta = InputBox("Inserire qui il percorso (con nome del file) del database:", "Database path", "")

With HKLM.LocalMachine.CreateSubKey(CHIAVE_LOCALE & "\Common")

If Trim(dlgRisposta) = "" Then

.SetValue("Connection String", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=$APPPATH$data.mdb;Mode=ReadWrite;Persist Security Info=False")

Else

.SetValue("Connection String", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dlgRisposta & ";Mode=ReadWrite;Persist Security Info=False")

End If

End With

End Sub

Friend Function VerificaCodiceFiscale(ByVal codiceFiscale As String) As Boolean

Dim i As Integer

Dim lettera As Integer

Dim puntitotale As Integer

Dim resto As Integer

Dim LetteraControllo As String

If Len(Trim(codiceFiscale)) > 15 Then

For i = 1 To (Len(codiceFiscale) - 1)

If (i Mod 2) = 0 Then

' pari

For lettera = 0 To UBound(NuovaRiga)

If NuovaRiga(lettera).valore = Mid(codiceFiscale, i, 1) Then

puntitotale += NuovaRiga(lettera).puntiPari

End If

Next

Else

' dispari

For lettera = 0 To UBound(NuovaRiga)

If NuovaRiga(lettera).valore = Mid(codiceFiscale, i, 1) Then

puntitotale += NuovaRiga(lettera).puntiDispari

End If

Next

End If

Next

resto = puntitotale Mod 26

LetteraControllo = NuovaRiga(resto + 10).valore

If LetteraControllo = Right(Trim(codiceFiscale), 1) Then

Return True

Else

Return False

End If

Else

Beep()

End If

End Function

End Module

Per il codice completo : www.serverdati.altervista.org/codfisc.rar in caso problemi con il collegamento trexhk@hotmail.com

Mono ,finalmente è possibile programmare in c#.net anche in ambiente linux
30 maggio 05 07.32 | andrear

 Mono ,finalmente è possibile programmare in c#.net  anche in ambiente linux

Be molti di voi penseranno "ma perchè dovrei interessarmi a Mono se per windows c'è gia il .net framework???",be perchè Mono e multipiattaforma, cioè un applicazione compilata con mono può essere eseguita sia  su ambienti linux che Windows in cui esso sia installato

 

Parte 1:Installazioni di Mono in ambienti LINUX

 Uno dei modi che vi consiglio e scaricare in package ufficiali.Gli utenti di sistemi basati su RPM-based quindi Red Hat suse ecc… possono scaricare gli rpm da http://www.mono-project.com/Downloads be se però non riuscite a trovare il package per la vostra distribuzione di linux  vi consiglio di installarlo direttamente dai sorgenti.

 

Parte 1:Installazioni di Mono in ambienti WINDOWS

In ambienti windows l’installazione è molto più semplice basta portarci sull’url indicata cioè

http://www.mono-project.com/Downloads e scaricare l’installer per windows. L’installazione  e

semplice ciccando su di esso lo si installerà  per default in c:\programmi\Mono-VXX

VXX sta per la versione di Mono.Nella cartella bin e quindi in c:\programmi\Mono-VXX\bin si trova un file batch  per wrappare gli eseguibili.

 

Nel mio prossimo articolo spiegherò come realizzare applicazioni usando mono

This Blog

Tags

No tags have been created or used yet.

Syndication