Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Premessa: Con questa piccola guida, si presume che chi la legge abbia un minimo di conoscenza della programmazione in Visual Basic. Il progetto: Vedremo ora come strutturare lapplicazione PACKET GENERATOR, cio una piccola utility in grado di creare pacchetti e di trasmetterli in rete utilizzando le librerie Winsock. Attenzione! Non si tratta di una consolle mirata ad attacchi di tipo D.o.S., ma bens, una utility in grado di generare pacchetti personalizzabili da trasmettere a un computer host. Saremo cos in grado di ricostruire e analizzare i pacchetti inviati e ricevuti utilizzando in seguito uno sniffer (ad esempio ComView). Iniziamo a creare linterfaccia utente: Per prima cosa, buona abitudine stendere il progetto su carta dellapplicazione che vogliamo creare in modo da poter avere ben sotto gli occhi ci che vogliamo. Ora, facciamo finta di aver gi passato questo punto, visto che lapplicazione esiste gi e passiamo alla stesura dellinterfaccia utente. Avviamo Visual Basic e facciamo click su creazione EXE Standard. Fatto questo ci appare il primo Form che di default si chiama Form1. Rinominiamolo in frmMain. Ora inseriamo i controlli. Per creare la nostra applicazione, avremo sulla barra sinistra (generale) gi tutti i controlli che ci servono, tutti, tranne due: Winsock e CommonControl 6.0 (su SP4) Per inserirlo, andiamo nella barra del men e clicchiamo su Progetto>Componenti. Si aprir la finestra Componenti. Ora scorriamo lelenco e cerchiamo Microsoft Windows Common Control 6.0, spuntiamo il checkbox e scorriamo ancora di poco gi e andiamo a selezionare Microsoft Winsock Control 6.0. Ok, ora abbiamo tutto quello che ci serve. Selezionati questi due controlli, scegliamo applica e OK. Ora sulla sinistra, nella barra Generale di VB troveremo dei nuovi controlli, cio quelli che abbiamo appena selezionato. Ora passiamo allazione Abbiamo il nostro bel form che noi abbiamo rinominato frmMain, ok, ora iniziamo a inserire i controlli. E cerchiamo di creare uninterfaccia simile a quella qui sotto.
NOTA: Limmagine di sfondo che vedete qui sopra ovviamente non necessaria, ma per abbellire un po lapplicazione potrete crearvi anche voi uninterfaccia inserendo poi direttamente nelle propriet del Form alla voce Picture una BMP. Andiamo avanti Cerchiamo ora di assegnare i nomi ai controlli nel modo che segue.
Attenzione! In caso decidiate di assegnare nomi diversi ai controlli, in seguito dovrete modificare anche il codice sorgente, dichiarando nelle Sub Routine il nome che avrete scelto per il controllo.
Ok, ora assegnamo valori ad ognuno di questi controlli nel modo seguente: Text1 TabIndex Text Text2 MaxLength MultiLine ScrollBars TabIndex Text3 Locked TabIndex Text TxtPorta MaxLength TabIndex Text Command1 Caption TabIndex Command2 Caption TabIndex Command3 Caption TabIndex Command4 Caption Enabled Check1 Value Enabled Slider1 TabIndex Winsock1 Protocol Combo1 List = = = = = = = = = = = = = = = = = = 1 0.0.0.0 255 True Vertical 2 True 9 Pronto per la trasmissione.. 5 3 80 Avvia Flood 4 Stop 5 Accetta 16
HEAD PING 0.0.0.0 -ICMP 255 -T HELO target.com Ora che abbiamo attribuito ai vari controlli i loro valori, passaimo alla stesura del codice sorgente. Clicchiamo sul form due volte. Ci apparir la Sub Routine Private Sub Form_Load() ma cancelliamola, nessun evento Form_Load() servir al progetto. Inseriamo ora: Sub Timeout(interval) Dim Current Current = Timer Do While Timer - Current < Val(interval) DoEvents Loop End Sub Fatto questo passiamo alla stesura del codice abbinato allevento Click() sul Command1, quindi facciamo doppio click su Command1 (che corrisponde al nostro tasto AVVIA FLOOD) e scriviamo nella subroutine quanto segue: Private Sub Command1_Click() On Error Resume Next If Text2.Text = "" Then MsgBox "Non e' stata inserita nessuna stringa da inviare!", vbCritical Text3.Text = "Trasmissione sul target non riuscita, il valore di trasmissione e' 0..." End If Dim target As String target = Text1.Text Dim Porta As Integer Porta = txtPorta.Text Command2.Enabled = True Command1.Enabled = False Text3.Text = "Trasmissione pacchetto su " & target & " in corso..." Winsock1.LocalPort = 2043 Winsock1.RemoteHost = Text1 Winsock1.RemotePort = Porta Do DoEvents Winsock1.SendData Text2 DoEvents If Slider1.Value = 9 Then Timeout (0.1) If Slider1.Value = 8 Then Timeout (0.2) If Slider1.Value = 7 Then Timeout (0.3) If Slider1.Value = 6 Then Timeout (0.4) If Slider1.Value = 5 Then Timeout (0.5) If Slider1.Value = 4 Then Timeout (0.6) If Slider1.Value = 3 Then Timeout (0.7) If Slider1.Value = 2 Then Timeout (0.8) If Slider1.Value = 1 Then Timeout (0.9) If Slider1.Value = 0 Then Timeout (1) Loop While Command1.Enabled = False Winsock1.Close Command1.Enabled = True Command2.Enabled = False Exit Sub End Sub Passiamo ora a Command2 (Pulsante STOP) e inseriamo altro codice:
Private Sub Command2_Click() Dim target As String target = Text1.Text Command2.Enabled = False Command1.Enabled = True Text3.Text = "Trasmissione su " & target & " terminata..." End Sub
Ora inseriamo il codice per abbinato al Command3 (Pulsante ACCETTA) e inseriamo il listato: Private Sub Command3_Click() On Error Resume Next Dim target As String target = Text1.Text Select Case Combo1 Case Is = "GET ../.." If Combo1.Text = "GET ../.." Then Text2.Text = "GET ../.." Command4.Enabled = False Check1.Enabled = False End If Case Is = "HEAD" If Combo1.Text = "HEAD" Then Text2.Text = "HEAD" Command4.Enabled = False Check1.Enabled = False End If Case Is = "HELO target.com" If Combo1.Text = "HELO target.com" Then Text2.Text = "HELO " & target Command4.Enabled = False Check1.Enabled = False End If Case Is = "PING 0.0.0.0 -ICMP 255 -T" If Combo1.Text = "PING 0.0.0.0 -ICMP 255 -T" Then Check1.Enabled = True Command4.Enabled = True End If End Select End Sub Adesso finiamo di inserire il codice utilizzando la Subroutine di Command4 (Pulsante PINGA) n questo modo: Private Sub Command4_Click() On Error Resume Next Dim target As String Dim Porta As Integer Porta = txtPorta.Text target = Text1.Text If Check1.Value = Checked Then Shell ("command.com /k ping " & target & " -icmp 255 -t"), vbNormalFocus Command4.Enabled = False Check1.Enabled = False Text3.Text = "Trasmissione PING su " & target & " modalit MS-DOS in corso..." End If
If Check1.Value = Unchecked Then Text2.Text = "PING avviato su " & target & ". Premere STOP per terminare" Text3.Text = "Trasmissione PING su " & target & " in corso..." Command4.Enabled = False Check1.Enabled = False Command2.Enabled = True Command1.Enabled = False Winsock1.LocalPort = 2043 Winsock1.RemoteHost = Text1 Winsock1.RemotePort = Porta Do DoEvents Winsock1.SendData Text2 DoEvents If Slider1.Value = 9 Then Timeout (0.1) If Slider1.Value = 8 Then Timeout (0.2) If Slider1.Value = 7 Then Timeout (0.3) If Slider1.Value = 6 Then Timeout (0.4) If Slider1.Value = 5 Then Timeout (0.5) If Slider1.Value = 4 Then Timeout (0.6) If Slider1.Value = 3 Then Timeout (0.7) If Slider1.Value = 2 Then Timeout (0.8) If Slider1.Value = 1 Then Timeout (0.9) If Slider1.Value = 0 Then Timeout (1) Loop While Command1.Enabled = False Winsock1.Close Command1.Enabled = True Command2.Enabled = False Exit Sub End If End Sub A questo punto salviamo la nostra applicazione e proviamo a lanciare il Run-Time premento F5. Se tutto funziona, potrete crearne leseguibile da File>Crea PacketGenerator.exe (qui vi apparir il nome Crea seguito dal nome che avrete scelto da dare alla vostra applicazione).
Tabelle utili