SECTION-X
Administrateurs : blackhackerz
 
 SECTION-X  *Les cours:  Les cours de hacking et autres: 

 Les commandes Batch de Windows//Etherlord

Nouveau sujet   Répondre
 
Bas de pagePages : 1  
ledoc
lovers
Nouveau membre
ledoc
44 messages postés
   Posté le 28-11-2009 à 09:19:56   Voir le profil de ledoc (Offline)   Répondre à ce message   Envoyer un message privé à ledoc   

Les commandes Batch de Windows//Etherlord


Les commandes Batchs de Windows
Explorez la puissance de votre système

2003/etherlord - DHS


En ces temps incertains, ou la majorité des utilisateurs exploitent
des ordinateurs à travers des systèmes graphiques, ils sont nombreux
a avoir oublié les commandes de base d'un système opératif tel que
le DOS (Dos : Disk Operating System).

Le DOS vous autorise plusieurs commandes en lignes, qui si elles on
'look' vieillot et qu'il est nécessaire de les taper (ouch...),
peuvent se montrer très puissantes dans la réalisation de tâches
répétitives. Il est egallement utile de connaître ces commandes
lorsque vous êtes connectés à un système distant à travers le
réseau.

Vous connaissez probablement tous la commande FORMAT a:\. Mais
avez-vous seulement compris l'etendue des possibilités du PIPE ??
(Vous savez, cette barre etrange : ¦). Parmis les autres
possibilités du langage Dos, celle-la est certainement la
plus impressionante.

Mais avant de continuer a disgresser, voyons brievement les
commandes communes que vous pouvez utiliser dans un batch.

Commandes (Pour obtenir de l'aide sur chaque commande, vous
pouvez fournir le paramètre "/?" (sans les guillemets) à la
commande (par ex: START /? affiche l'aide de la commande START)
================================================== =============
Citation:

ATTRIB : Change les attributs d'un fichier

ex : attrib +r+h test.txt

La commande précedente va définir les attributs
LECTURE SEULE (R:READ ONLY) et FICHIER CACHE
(H:HIDDEN) pour le fichier test.txt.
Pour supprimer les attributs :

attrib -r-h test.txt


CLS : Efface l'ecran de la console


EXIT : Ferme la session de commande.


FOR : Initie une boucle. Voir plus bas pour un example.


FIND : Permet de rechercher du texte dans un ou
plusieurs fichiers, en memoire, permet de
recuperer les infos du bios,etc...


GOTO : Branchement du flux du programme vers un label

ex : goto Step1
echo Cette ligne n'est jamais affichée
:Step1
echo Cette ligne est affichée


IF : Permet d'utiliser une condition

ex : if exist autoexec.bat echo Existe!

La commande précedente affiche le mot "Existe!" si
le fichier autoexec.bat est prsent dans le répertoire
courant.


MORE : Permet de suspendre l'affichage temporairement
quand l'affichage depasse le nombre de lignes de
l'ecran

ex : type help.txt | more


MOVE : Déplace un fichier


SET : Défini une variable d'environnement

ex : set msg="Bienvenue "
msg2=%msg%%username%
echo msg2

Le batch précedent va définir une premiere variable
avec le contenu "Bienvenue ", puis cree une deuxième
variable en appondant le nom de l'utilisateur à la
première variable, et le résultat final est affiché.


SHIFT : Cette commande permet de déplacer un paramètre d'un
cran à gauche dans la pile des paramètres transmis au
batch:

ex : set A0 = %0
set A1 = %1
shift
set A2 = %1

La première ligne du batch enregistre le premier
paramètre passé au batche dans A0, la deuxième ligne
enregistre le deuxième paramètre dans A1, la troisième
ligne décale la pile des paramètres (%0 est perdu,
%1=%2, %2=%3, etc..). Finallement, le troisième
paramètre est stocké dans A2


START : Démarre l'execution d'un programme dans une nouvelle
fenêtre. La fenêtre est définissable (plein écran,
minimisée, invisible), ainsi que la priorité d'execution.
Cette commande permet égallement d'éxecuter un
processus et d'attendre la fin du processus pour
continuer le batch.


TYPE : Affiche un message sur le port de sortie (par defaut,
le port de sortie est la console, peut etre redefinie)


Comme vous vous en êtes suremnet aprecus, la plupart de ces
commandes sont en fait de petits fichiers executables, qui sont
lancés quand un fichier batch en fait la requête. Comprenez bien
que vous pouvez définir n'importe quel commande ou nom de
fichier dans un batch, cette commande ou fichier sera executé.
L'utilisation de certaines commandes est décrite plus loin.



Symboles pouvant etres utilises :
=================================

% - Ce symbol permet l'utilisation de variable à
l'intérieur d'un fichier batch.


@ - En ajoutant ce caractère au debut d'une commande
empêche cette commande de s'afficher a l'écran.

ex : @DIR (Execute la commande dir sans
afficher c:\>DIR sur l'ecran)


> - Ajouter un '>' a la fin d'une commande permet de
rediriger la sortie(affichage du résultat) de la
commande. Dans le cas d'une redirection sur un
fichier, le fichier est ecrasé.


ex : @DIR a:\ > test.txt (Va enregistrer le
contenu du répertoire
a:\ dans le fichier)


>> - Ajouter '>>' a la fin d'une commande permet de
rediriger la sortie(affichage du résultat) de la
commande. Dans le cas d'une redirection sur un
fichier, le nouveau contenu est appondu au
fichier.

ex : @DIR a:\ > test.txt (Va enregistrer le
contenu du répertoire
a:\ dans le fichier)

@DIR c:\ >> test.txt (le contenu du
répértoire est ajouté
au fichier précédent)


NUL - Périphérique NUL. Tout ce qui est envoyé à ce
périphérique est détruit.

ex : @DIR c:\ /s > NUL (Va envoyer le contenu
complet du disque (en
utilisant le switch /s)
sur le périph NUL.
Beaucoup de travail, rien
n'est affiché


< - Ajouter un '<' a la fin d'une commande permet de passer
la partie située à droite du symbole '<' comme
paramètre de la première commande.

ex : debug < file.txt (Va envoyer les commandes
contenues dans le fichier
au debugger)


| - Envoie la sortie(resultat) d'une commande comme paramètre
d'une autre commande:

ex : mem /c |find "MOUSE" (Va executer la commande
mem /c et envoyer le resultat
a FIND.EXE qui va afficher que
les lignes contenant le terme
'MOUSE')



Batch avancé
============

Maintenant, jouons un peu avec les commandes de bases que nous
avons vu précédeament.


La boucle FOR:
--------------

Code:

for %%f in (*.*) do echo Il y as un fichier appelé: %%f


La ligne précédente initie une boucle qui va chercher
tous les noms de fichiers dans le répértoire courant
(*.*). Tous les fichiers trouvés sont affichés. Bien sur,
il est possible d'être plus spécifique dans la commande.
La ligne suivante va silencieusement copier le contenu
du répértoire %windir%\repair sur un floppy:

Code:

for %f in (%windir%\repair\*.*) do @copy %f a:\



Il est égallement possible de définir des boucles avec
un compteur:

Code:

for /L %i in (1,1,5) do echo compteur: %i


Le switch /L spécifie que nous travaillons avec des nombres.
La boucle va commencer à 1, utiliser un incrément de 1, et
va executer la boucle jusqu'a 5. Il est biens ur possible
d'envoyer le résultat dans un fichier:

Code:

for /L %i in (1,1,5) do echo compteur: %i > result.txt



La condition IF :
-----------------

La condition IF peut être utilisée pour vérifier si
un condition est vraie ou fausse. Cette condition peut
traiter des variables, ou des paramètres envoyés au
batch:

Code:

if [%1]==[/?] goto AffichAide
goto Continue
:AffichAide
echo Ceci est l'aide en ligne...
:Continue


La condition IF peut égallement être utilisée en
conjonction avec la variable 'errorlevel', une
variable qui contient le resultat du dernier
programme executé
RunProg.exe
if errorlevel 0 goto OK
echo Wow! On as un problème!
goto End
:OK
echo Ca roule!!! Execution OK!
:End
Décalage de paramètres (SHIFT)
------------------------------

Cette commande peut être très utilse quand vous
avez plus de 10 paramètres a passer à un fichier
batch. Les paramètres sont pris en charge par le
fichiers batch sous la forme %0.....%9. %0
contient le nom du fichier batch,

Si vous avez plus de 9 paramètres à traiter, vous
pouvez utiliser la commande SHIFT. Cette commande va
décaler les paramètres vers le bas de 1 argument.
A chaque commande SHIFT, %0 disparait et récupère
la valeur de %1, %1 récupère la valeure de %2, etc..

Une fois décalé, un argument ne peut pas être
recuperé.


Fichier batch recursif :
------------------------

C'est dans ces conditions que j'adore les batchs. Il
est possible de créer un batch récursif en utilisant
les caractères %. Voyons un exemple: On veut vérifier
que le contenu du dossier c:\temp est bien copié
dans c:\temp2. Si le fichier n'existe pas, alors le
batch doit copier le fichier, et ensuite afficher le
contenu du fichier copié à l'ecran.
echo off
%1 %2
for /F "tokens=1 delims= " %%i in ('dir /A-D /B c:\temp\*.*') do if not exist c:\temp2\%%i call %0 goto step1 %%i
:step1
COPY c:\temp\%3 c:\temp2\%3
type c:\temp2\%3
echo -----------------------------------------------------------------------
:end
L'astuce a comprendre ici c'est : call %0 goto step1 %%i à
l'interieur de la commande DO. Nous demandons juste au batch
de s'appeller lui-même en fournissant GOTO et STP1 comme
arguments (respectivement %1 et %2). Maitnenant vous avez
compris a quoi sert la ligne %1 %2 qui appareament ne servait
a rien.....

On aurait pu le faire d'une facon plus élégante, en définissant
sous quelle condition on doit executer la commande:
[
Code]

echo off
if "%1" == "()" goto %2
for /F "tokens=1 delims= " %%i in ('dir /A-D /B c:\temp\*.*') do if not exist c:\temp2\%%i call %0 () step1 %%i
:step1
COPY c:\temp\%3 c:\temp2\%3
type c:\temp2\%3
echo -----------------------------------------------------------------------
:end
[/code]


De cette facon, on peut ajouter plusieurs conditions au
démarrage du batch.



Créer un fichier EXE en utilisant un batch:
-------------------------------------------

Oui. Même la création de fichiers EXE est possible
à travers les batchs. Examinons le fichier suivant:
@echo off
echo n prog.com > file1.txt
echo a 0100 mov ah,09 >> file1.txt
echo a 0102 mov dx,0109 >> file1.txt
echo a 0105 int 21 >> file1.txt
echo a 0107 int 20 >> file1.txt
echo a 0109 db 'hello world!$ >> file1.txt
echo rcx >> file1.txt
echo 16 >> file1.txt
echo w >> file1.txt
echo q >> file1.txt
debug < file1.txt
del file1.txt
prog
En premier lieu, on supprime tout affichage a l'écran (echo
off). La commande en elle-même n'est pas affichée.

Puis on crée un fichier appelé file1.txt, dont la première
ligne contiendras 'n prog.com'. C'est une commande destinée
au debugger, définissant le nom du fichier a créer.

On ajoute ensuite plusieurs lignes au fichier file1.txt qui
contient toutes les instructions en assembleur qui doivent
êtres compilées par le debugger (oui, debug.exe, un des
outils fabuleux que vous êtes assurés de trouver sur toutes
les moutures de Windown, est aussi capable de COMPILER de
l'assembleur!! je suis sur que vous voyez ce petit executable
dos sous un jour nouveau à présent...)

Le proramme compilé ne fait qu'afficher la ligne 'hello world!'
en utilisant l'interuption 21h.

Les dernières lignes incluent les commandes pour le debugger
(echo w : ecrit le fichier, echo q : quitte le debugger, etc..)

Ensuite on compile notre fichier source (debug < file1.txt),
on efface le source et on execute le résultat.


Fermer la fenetre a la fin de l'execution d'un batch:
-----------------------------------------------------

Vous avez probablement deja rencontre ces fenetres qui restent
ouvertes avec un titre tel que "Finnished - xxxx". Au lieu de
laisser l'utilisateur fermer la fenetre, la commande suivante
placee a la fin du batch auras pour effet de fermer la fenetre:

Code:

@cls


Qand le batch est termine, et que l'ecran de commande reste
vide, le systeme ferme la fenetre.


Implications de variables dans les commandes:
---------------------------------------------

Nous avons vu que le symbole % nous permet d'utiliser une
variable comme parametre. Le point interessant ici, c'est
que l'on peut egallement l'utiliser comme commande:

Code:

@%sign%cls


Si on defini sign comme etant vide (set sign= ) et que l'on
execute le batch, la commande sera executee. Maintenant, si
on defini sign comme etant une commande (set sign=REM), la
ligne du batch ne sera pas executee.



Supprimer une ligne spécifique d'un fichier ASCII:
--------------------------------------------------


Le code suivant va transferer le contenu du fichier a travers
la commande FIND. Le paramètre /V permet d'afficher toutes les
lignes qui ne contiennent pas la chaine "terme".
find /V "terme" <anyfile> %temp%.\anyfile.tmp
COPY/Y %temp%.\anyfile.tmp anyfile
DEL %temp%.\anyfile.tmp
Convertir une chaine de caracteres en majuscules:
-------------------------------------------------


Voici une facon simple de le faire, sachant que la commande
PATH convertit tout en majuscule

path> %temp%.\respath.bat
path chaine a convertir
set variable=%path%
call %temp%.\respath.bat
del %temp%.\respath.bat
Etat de la connection reseau:
-----------------------------


Comme pour beaucoup d'astuces, il s'agit souvent de trouver
l'executable qui permet de recuperer l'information.....
@echo off
ipconfig.exe |find "IP Address" >nul
if not errorlevel 1 ECHO Connecte
if errorlevel 1 ECHO Pas connecte
Effacer un fichier avec la commande COPY:
-----------------------------------------


He oui, c'est possible, comme quoi il faut se mefier de tout
dans un batch....
COPY nul fichier
Obtenir la liste de tous les fichiers .bat du HD:
-------------------------------------------------


J'imagine que tous le monde connait la commande dir /s,
bien sur, mais il y as tellement de manieres plus subtiles
d'arriver au resultat :
@echo off
chkdsk /v | find /i ".bat" > res.txt
type res.txt | more
del res.txt
L'option /v de chkdsk nous permet de voir le nom de chaque
fichier de chaque repertoire pendant que le disque est
verifie. Cette liste est envoyee a la commande find (pipe),
le parametre /i permet d'ignorer les difference entre les
majuscules et minuscules. Le parametre '.bat' nous permet
de specifier notre critere. Attention, cela ne fonctionne
pas sous NTFS.


Voila pour l'entree en matiere, j'espere avoir couvert tout ce qui
est necessaire pour aller un peu plus loin que l'emploi des commandes
basiques du systeme, si vous etes interesses a creuser ce domaine
je vous recommande l'etude des virus crees en batch, ils contiennent
quelques fines astuces.

--------------------
Bonjour a tous , G'Day All / Désolé pour certain tutorial qui sont en anglais / Et bon Hack! /
Haut de pagePages : 1  
 
 SECTION-X  *Les cours:  Les cours de hacking et autres:  Les commandes Batch de Windows//EtherlordNouveau sujet   Répondre
 
Identification rapide :         
 
Divers
Imprimer ce sujet
Aller à :   
 
 
créer forum