Hacking and more...
HaCkinG CulT
Lista Forumurilor Pe Tematici
Hacking and more... | Reguli | Inregistrare | Login

POZE HACKING AND MORE...

Nu sunteti logat.
Nou pe simpatie:
AlexandraPopa
Femeie
25 ani
Bucuresti
cauta Barbat
25 - 39 ani
Hacking and more... / n00bs / Tutorial de perl - bazele limbajului Moderat de Shocker
Autor
Mesaj Pagini: 1
TE4L
Super Buruian

Inregistrat: acum 17 ani
Postari: 356


Code:

Dupa cum spuneam,ma orientez spre sectiunea noobs,si sper ca incepatorilor sa le foloseasca urmatorul tutorial.
Perl sau Practical Extraction and Report Language este un limbaj de scripting 

inventat de catre Larry Wall pentru a gestiona fisiere text foarte mari. Spre 

deosebire de C++ si Java este un limbaj "interpretat" si nu complilat. Acest tutorial 

are ca scop familiarizarea cu bazele limbajului Perl :).
    Inainte de a incepe orice miscare in Perl aveti nevoie de un program care 

sa interpreteze scripturile si sa le execute. Daca detineti un sistem unix(linux,mac 

os,solaris,bsd) aproape sigur caaveti deja interpretorul perl instalat. Acesta poate fi 

accesat deschizand consola de comanda si executand comanda perl. Daca primiti 

o eroare de genul "command not found" inseamna ca nu aveti perl instalat. 
    Daca folositi windows,sau nu aveti perl instalat puteti downloada 

programul de la http://perl.org.

    Dupa cum v-ati obisnuit de la majoritatea limbajelorde programare,primul 

nostru program va fi unul simplu,care afiseaza pe ecran "Hello World!".
Deschideti editorul de text (pico,vim,notepad,wordpad etc) si introduceti 

urmatoarele linii de cod.

    #!/usr/bin/perl
    print "Hello, world!n";
Salvati fisierul ca hello.pl (sau orice alt nume cu extensia .pl) apoi deschideti 

consola. Schimbati directorul pana in locul unde ati salvat scriptul si scrieti comanda 

"perl hello.pl". Daca ati facut toti pasii cum trebuie ar trebui sa afiseze Hello World!.
    Acum sa studiem sursa. Prima linie "#!/usr/bin/perl" ii transmite 

programului calea spre locul unde este instalat perl pe computerul vostru. Daca 

folosit windows,nu prea aveti nevoie de aceasta linie,dar daca folositi linux inlocuiti 

/usr/bin/perl cu locul unde este instalat perl.
    Linia urmatoare,adica 'print "Hello World!n" ; ' ii transmite programului sa 

afiseze textul Hello World! urmat de o linie noua. Dupa cum probabil ati 

observat,fiecare linie in perl trebuie sa fie urmata de " ; " similar cu multe alte 

limbajede programare.
    Strings - Stringurile reprezinta un sir de caractere care de obicei 

formeaza ceva ce are sens. Cuvantul perl de exemplu este un string. La fel si orice 

alt cuvant sau propozitie,sir de numere etc. In perl,stringurile sunt afisate folosind 

functia perl.
 De exemplu,linia 'print "hello world!n" ;" a afisat stringul hello world urmat de o linie 

noua.  Caracterul "n" sau newline este numit "escape sequence" (pentru a face 

acest tutorial cat de cat inteligibil,nu am tradus chiar toti termenii). Limbajul perl 

detine multe escape sequences printre care si "t" care printeaza un tab,adica se 

considera ca ai apasat tab si se muta textul mai la dreapta. De asemeanea "a" este 

un beep. Daca aveti sunetele enabled din windows ar trebui sa auziti beepul. 

Acum,sa zicem ca vreti sa afisati un sir mai lung de caractere "" si "n" fara sa 

adaugati o linie noua in text. . Pt a face asta aven doua posibilitati. Ori inlocuim 

ghilimelele " cu apostrof ' si ceea ce rezulta este " print 'Hello World!n' ;". 

Apostroful transmite intrerpetorului ca tot ceea ce urmeaza este text care trebuie 

doar afisat si nu interpretat. A 2-a varianta este inlocuirea caracterului "" cu "\". 

Aceasta comanda transmite interpretorului sa afiseze caracterul "" lasand litera "n" 

neafectata. Ambele metode au acelasi rezultat.
    Acum sa va prezint alte metode de formatare a textului. Comanda 
'print "Hello" . "World!" . "n" ; ' are acelasi rezultat ca si comanda initiala din 

programul hello world. Aceasta este datorita faptului ca . -punctul- este folosit pt 

concatenarea textului,adica pt a uni mai multe siruri de caractere intr-unul singur. 
    Acelasi efect il obtinem daca in loc de . -punct- folosim , -virgula-.

    !Numere si expresii matematice!
    Expresiile matematice de orice fel pot fi evaluate de programul perl. Operatorii 

folositi sunt urmatorii.
    + - adunare
     - - scadere
    * - inmultire
    / - impartire
    % - calcului restului (operatorul mod)

Spre exemplu,priviti urmatoarele operatii.
print 20+3; #afiseaza 23
print 20-3; #afiseaza 17
print 20*3; #afiseaza 60
print 20/3; #afiseaza 6.66666666666667
print 20%3; #afiseaza 2

Pana acum totul ar trebui sa fie destul de clar. Singura nelamurire este probabil 

semnificatia caracterului "#". In perl # anunta un comentariu. Interpretorul considera 

ca tot ce urmeaza dupa # este un comentariu si nu este afisat sau executat.
    De asemenea,nu trebuie uitata ordinea operatiilor matematice,ce a fost 

predata in cls a 4-a.si anume ca inmultirea si impartirea se executa inaintea adunarii 

si scadereii. Operatia 2+2*3 va avea ca rezultat 8 si nu 12. Daca doriti ca adunarea 

sa fie efectuata inaintea inmultirii folositi paranteze adica (2+2)*3.

    -Variabile.
 Of,in sfarsit am ajuns la variabile. Ca sa mai scurtez din tutorial o sa presupun ca 

stiti cu totii ce e aia o variabila,si nu o sa stau sa va explic :). Principalele tipuri de 

variabile in perl sunt 
- Scalar variable notata cu $numevariabila
- Array variable notata cu @numevariabila
- Hash variable notata cu %numevariabila

    O variabila scalara TREBUIE sa inceapa cu caracterul $(dolar) urmat de 

o litera sau underline. Exemplu de variabila corect scrisa : $variabilaluSion
Exepmplu de variabila incorect scrisa : variabila lu sion, $123variabila etc.
    Variabilelor le sunt asignate valori folosind operatorul = (egal) si pot fi 

printate folosind comanda print.
 Iata cum arata programul Hello World folosind o variabila. 

    #!/usr/bin/perl
#hello.pl -cu variabila

$hello_var = "Hello, world!n";
print $hello_var; 

    - Variabile de tipul array.

Cei care au experienta minima intr-un limbaj de programare cunosc termenul de 

vector. Cei care nu au sa isi imagineze un array ca in urmatoarea figura. |__|__|__|
Fiecare casuta are o anumita valoare in interior,iar accest array sau vector contine 

toate acele variabile.
 Variabilele array sunt initializate in felul urmator :
    @fructe = ("mere", "pere", "petarde");
    @numere = (23, 54, 35, 5432)
    @chestii_diverse = ("cuvant", 300, "tutorial perl plictisitor")
Dupa cum vedeti un array poate contine orice fel de scalar in interior.
    Operatiuni cu array- In perl ca si in alte limbajede programare numarul 

casutelor,sau variabilelor retinute de catre un array incep cu indicele 0. Adica daca 

dam comanda ' print $fructe[0] ' se va afisa "mere".
Daca dam comanda "$fructe[0] = "banane"; merele vor fi schimbate cu banane :)).
Dar,de ce oare folosim $ in loc de @ la aceste operatiuni? Pai,deoarece aceste 

operatiuni se adreseaza numai unei portiuni din array si nu tuturor variabilelor ce sunt 

cuprinse acolo.
    Daca vrem sa actionam in diverse feluri asupra unei portiuni din array 

folosim ceea ce se numeste "array slice" adica felie de array.
print @fructe[1,2,3]; afiseaza mere pere petarde
print @fructe[3,2,1]; afiseaza petarde pere mere.
print @fructe[1..3]; afiseaza mere pere petarde.
    In acest context folosim iar operatorul @ deoarece actionam asupra mai 

multor variabile din array si nu asupra unui singur lucru.
    De asemenea este posibil sa numaram invers intr-un array,fara sa stim 

cate elemente are.
print @fructe[-1]; afiseaza petarde :).
    Ca sa determinam lungimea unui array folosim sintaxa speciala 

$#array(unde inlocuim array cu numele propriuzis). Adica priviti urmatorul exemplu:
$last = $#fructe #variabila last a retinut indexului ultimului element al arrayului
print @fructe[($last/2)..$last] # si se afiseaza a 2-a jumatate a arrayului.
Daca vom afisa variabila $last vom observa ca are valoarea 2 si nu 3-care elem are 

arrayul. Asta se intampla deoarece indexarea incepe de la 0 si nu de la 1. Pt a afla 

numarul real de obiecte din array trebuie doar sa adunam 1 :).
    Totusi,exista si o cale mai simpla de a numara exact cate obiecte are un 

array. Asta se face examinand arrayul dpdv al unei variabile scalare.
Adica $numarul_d_elem = @fructe si vom avea numarul de elemente fara sa mai 

trebuiasca sa adunam sau sa scadem nu stiu ce.
    Stiu ca multi dintre voi "h4x0r-ilor" sunteti foarte lenesi,si stiu ca e destul 

de plictisitor sa tot stai sa scrii la un array toate elementele cu ghilimele virgule si 

alte prostii. De accea va prezint comanda qw//. Operatorul qw// vine de la quote 

words si ia cuvinte separate de spatiu si le transforma intr-o lista fara sa mai stati voi 

cu grija punctuatiei. Spre exemplu initializam un array in felul urmator :
@an = qw/ ianuarie februarie martie aprilie mai iunie iulie august septembrie 

octombrie noiembrei decembrie/ ; Dupa cum vedeti este foarte clar si dificil de 

gresit la o asemenea sintaxa.
    -Afisarea valorilor unui array (nenicule da mult mai dureaza tutorialul asta 

:( )
Consideram urmatorul program care vorbeste de la sine.
my @fructe = qw/mere portocale banane caise struguri/;
print @fructe; # afiseaza "mereportocalebananecaisestruguri"
print join(", ", @fructe);# afiseaza "mere, portocale, banane, caise, struguri"
print "@fructe"; # afiseaza "mere portocale banane caise struguri"
    Mai ramane ultimul tip de variabila,variabila hash sau matrice,dar e mult 

de scris la ea,multe operatiuni si o sa revin cu un tutorial facut special pt hash.

    -Operatori decizional- Adica if,and,or fratilor :)

    Operatorul decizional if. Fara sa mai adaug multa palavrageala iata cum 

functioneaza if in perl.
if( test boolean) {aici intra comenzi ce se executa daca testul boolean este 

adevarat}
Spre exemplu studiati urmatorul program.
if (5 > 3) {
print "Mdap,5 e mai mare decat 3 nenen";}
    Daca tot am ajuns la if,trebuie sa va familiarizez cu operatorii (nu mai stiu 

cum le zice) ma rog,va dati voi seama care cum sunt :
== - egal cu (valoare numerica) adica intre 2 numere cand le testezi egalitatea bagi 

==
eq - egal cu (la stringuri)
> - mai mare
< - mai mic
>= - mai mare sau egal
<= - mai mic sau egal
!= - diferit de (sau nu e egal cu)
|| - operatorul logic sau
&& - operatorul logic si

    Structura conditionala if...blabla...else.
Din nou,un program care vorbeste de la sine : 
if (3 > 5) {
print "Da frate,3 e mai mare decat 5.n";
}

else {
print "Fraiere,3 nu e mai mare decat 5.n";
} 
    
    Structura repetitiva
Structura repetitiva while functioneaza in felul urmator:
while (test boolean adevarat) {executa comenzile de aici}
Priviti urmatorul exemplu:
$i = 0;
while ($i <= 10) {
print "$i inca e mai mic decat 10n";
$i = $i + 1;
} 
    Daca tot am batut atata drum pana aici,hai sa va arat si cum scurtam 

textul,facem codul mai curat,si ne pastram lenea pt un joc de cs :).
$a += 1; # e la fel cu $a = $a + 1
$a -= 3; # e la fel cu $a = $a - 3
$a *= 42; # e la fel cu $a = $a * 42
$a /= 2; # e la fel cu $a = $a / 2
$a %= 5; # e la fel cu $a = $a % 5;
$a **= 2; # e la fel cu $a = $a ** 2;
    
    De asemenea perl detine si operatori de incrementare ++ si 

decrementare --. Adica $variabila++ # aduna 1 la variabila
$variabila-- #scade 1 din variabila.

    Structura repetitiva for.
For-ul din perl e identic cu cel din c++. Studiati programul urmator si va veti da 

seama ce si cum.
for ($i = 0; $i <= 10; $i++) {
print "$i nu e mai mare decat 10n";
} 


In sfarsit am ajuns la sfarsitul tutorialului. Sper ca o sa il citeasca macar unul din 

voi... Voi reveni cu tutoriale mai detaliate pt hashuri si alte sectiuni.



_______________________________________


Beware of the buruian( he is ... super )

pus acum 17 ani
   
TE4L
Super Buruian

Inregistrat: acum 17 ani
Postari: 356
Fratilor,sa imi ziceti va rog,daca va foloseste la ceva,ca daca nu,nu mai bag alte tutoriale din astea kilometrice. 2 ore mi-a luat sa combin 3 carti intre ele si sa le si traduc. insa,daca va foloseste informatia, eu sunt fericit

_______________________________________


Beware of the buruian( he is ... super )

pus acum 17 ani
   
big chuck
A firewall

Din: Inside the band
Inregistrat: acum 17 ani
Postari: 589
Damn romanian

_______________________________________
The answer is not in the box,the answer is in the band

pus acum 17 ani
   
zbeng
Junior+

Inregistrat: acum 17 ani
Postari: 43
oameni trebuie sal invatam pe big_chuck romana daca

pus acum 17 ani
   
epic
User

Inregistrat: acum 17 ani
Postari: 1896
DarthSion, pe mine ma intereseaza orice tutorial, nu conteaza despre ce e vorba. Orice informatie noua este binevenita.

_______________________________________
:< 4 8 15 16 23 42 *execute*
TOATA LUMEA ESTE INVITATA PE NOUL FORUM!

pus acum 17 ani
   
Sad_Dreamer
Elite Member

Inregistrat: acum 17 ani
Postari: 1602
darthsion tu l-ai tradus?

_______________________________________
In caz ca nu sti...Getting Laid <> Getting r00t

pus acum 17 ani
   
dasda
-

Inregistrat: acum 17 ani
Postari: 265
nice ...!

_______________________________________
Imperfect ? Where ? ...

pus acum 17 ani
   
TE4L
Super Buruian

Inregistrat: acum 17 ani
Postari: 356
Da Sad,eu l-am tradus. Si a fost munca destula... Sper sa va foloseasca. A,daca stie careva chestii marfa in perl,de genul scripturi de trimis mail,de luat ip,sintaxa lor etc,postati-le si voi

_______________________________________


Beware of the buruian( he is ... super )

pus acum 17 ani
   
Sad_Dreamer
Elite Member

Inregistrat: acum 17 ani
Postari: 1602
esti moderator !keep up the good job !

_______________________________________
In caz ca nu sti...Getting Laid <> Getting r00t

pus acum 17 ani
   
Sad_Dreamer
Elite Member

Inregistrat: acum 17 ani
Postari: 1602

DarthSion a scris:


Sper ca o sa il citeasca macar unul din
voi...

esti tampit !!!!!!!!
L-au Furat si altii si si l-au pus pe forumuri :) de exemplu ghici pe rosecurity e super man mersi din nou....nu am priceput tot acum cu variabile chestii pentru ca sunt cu ochii in pc de ceva timp...dar e super tutorialul...dupa ce imi mai " aerisesc " materia cenusie sper sa inteleg totul ! mersi !


_______________________________________
In caz ca nu sti...Getting Laid <> Getting r00t

pus acum 17 ani
   
Pagini: 1  

Mergi la