Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation since 09/24/08 in all areas

  1. 31 points
    Descarcati: https://github.com/nishad/udemy-dl-windows/releases Creati un cont nou pe udemy, nu conteaza ce email folositi pentru ca nu trebuie verificat Deschideti cursul dorit si apasati pe Start Free Preview (apare sub Take This Course) Rulati programul astfel: udemy-dl.exe -u email -p pass <link catre curs> Screenshots pentru cei batuti in cap: Spor la invatat
  2. 28 points
    1. Go to http://www.easyname.com 2. Register any .com domain of your choice. 3. Add to cart. 4. Go and add a 20gb hosting plan on your cart as well. 5. Redeem these 2 coupons. T26G8MPC3 & HA26GVFW5 6. Your cart total should now be $0.00 Am luat eu acu 5 min ,nu am avut chef sa traduc dar cred ca va descurcati voi
  3. 27 points
    Tin de la inceput sa mentionez ca tutorialul este pentru aplicatii web. De-a lungul timpului am vazut numeroase persoane care, desi aveau cunostinte despre anumite vulnerabilitati web(de ce apar, cum se exploateaza, etc.), nu reuseau sa gaseasca mai nimic in aplicatii web reale. Acest lucru se datoreaza faptului ca au sarit peste o etapa esentiala a unui audit de securitate si anume, Information Gathering. Neavand o metodologie clara si un plan de atac bine stabilit, acestia nu erau in masura sa obtina date suficiente despre aplicatiile pe care le analizau iar ca urmare a acestui lucru nu reuseau sa identifice vulnerabilitatile. In acest tutorial vom discuta despre care sunt informatiile de care avem nevoie despre tinta si cum le putem afla astfel incat sa ne maximizam rezultatele. Asa cum spuneam la inceputul acestui tutorial, Information Gathering este etapa initiala a oricarui audit de securitate IT care poate face diferenta dintre succes si esec. Prin aceastea, pentesterul incearca sa obtina toate informatiile posibile despre tinta folosindu-se de diferite servicii (motoare de cautare, diferite utilitare, etc.). Intrucat nu exista un model standard, fiecare pentester este liber sa isi construiasca propria metodologie astfel incat rezultatele sa fie cat mai bune. In cele ce urmeaza voi prezenta modul in care obisnuiesc eu sa abordez o tinta atunci cand realizez un audit de securitate. 1.Motoarele de cautare Primul lucru pe care trebuie sa il faci este sa cauti informatii prin intermediul motoarelor de cautare folosindu-te de diferiti operatori de cautare. Astfel poti obtine subdomeniile, diferite fisiere, tehnologiile folosite de aplicatia web si chiar unele vulnerabilitati. Exemplu: diferite subdomenii ale yahoo.com Cei mai folositori operatori ai motorului de cautare Google sunt: site: - acest operator permite afisarea rezultatelor doar de pe un anumit domeniu si este extrem de folositor pentru descoperirea subdomeniilor. Exemplu: site:*.yahoo.com filetype: sau ext: limiteaza rezultatele afisand doar paginile care au o anumita extensie si pot fi folosite pentru a descoperi tehnologiile folosite in dezvoltarea aplicatiei web. Exemplu: site:*.yahoo.com ext:php – am limitat rezultatele cautarii la subdomeniile yahoo.com care au fisiere .php intext:<termen> limiteaza rezultatele afisand doar paginile in care se regaseste termenul specificat si poate fi folosit pentru a descoperi diferite vulnerabilitati. Exemplu: site:targetwebsite.com intext:”You have an error in your SQL syntax” site:targetwebsite.com intext:”Microsoft OLE DB Provider for SQL Server” site:targetwebsite.com intext:”Microsoft JET Database Engine” site:targetwebsite.com intext:”Type mismatch” site:targetwebsite.com intext:”Invalid SQL statement or JDBC” site:targetwebsite.com intext:”mysql_fetch_array()” site:targetwebsite.com intext:”mysql_” operatori logici: Google accepta anumiti operatori logici care de cele mai multe ori sunt foarte folositori. De exemplu, putem exclude din rezultate anumite subdomenii folosind operatorul - . Astfel, site:.yahoo.com -site:games.yahoo.com va returna subdomeniile yahoo.com, mai putin rezultatele care au legatura cu games.yahoo.com. Mai multe informatii despre operatorii de cautare pentru Google gasesti aici si aici. Pe langa motoarele de cautare obsnuite ca Google, Bing, Yahoo etc., foloseste si: Censys - Foarte folositor in descoperirea subdomeniilor Exemplu: https://www.censys.io/certificates?q=parsed.subject.organization%3A%22Yahoo%22 Shodan 2. Determinarea tehnologiilor folosite La acest pas va trebuie sa verifici daca: aplicatia web este protejata de vreun Web Application Firewall (WAF) Cel mai simplu mod prin care poti face acest lucru este folosind wafw00f: $ python watw00f2.py http://www.targetwebsite.com aplicatia web foloseste un Content Management System (CMS) open-source (Wordpress, Joomla, Drupal, etc.) Poti verifica acest lucru folosind whatweb, cms-explorer, CMSmap. $ whatweb -a 3 http://targetwebsite.com $ cms-explorer.pl -url http://targetwebsite.com/ -type wordpress Urmatorul pas consta in identificarea sistemului de operare, al tipului de WebServer (Apache, IIS) folosit de tinta si versiunea acestora. Daca versiunile celor doua sunt outdated, cel mai probabil exista cateva vulnerabilitati cunoscute (CVE) in acele produse. Poti descoperi acest lucru cu o simpla cautare pe http://cvedetails.com . Exemplu: Vulnerabilitatile cunoscute pentru Apache 2.3.1 Determinarea sistemului de operare se poate realiza foarte simplu folosind nmap. $ nmap -sV -O www.targetwebsite.com Metodele prin care poti identifica versiunea Webserver-ului sunt: Analizand output-ul cererilor HTTP care folosesc metoda HEAD, OPTIONS sau TRACE Raspunsul HTTP al unei cereri care foloseste una din metodele de mai sus va contine, de cele mai multe ori, si headerul Server. Analizand pagina de eroare 404 Folosind httprecon / httprint . Un alt aspect important il constituie tehnologia server-side folosita de tinta. Cel mai simplu mod in care aceasta poate fi descoperita este urmarind extensiile fisierelor. De exemplu, daca URL-ul tintei este http://targetwebsite.com/index.php , este clar ca aplicatia web a fost scrisa in limbajul PHP. Alte extensii specifice tehnologiilor server-side sunt: .py – Python .rb – Ruby .pl – Perl .php / .php3 / .php4 / .php5 / .phtml / .phps – PHP .asp – Active Server Pages (Microsoft IIS) .aspx – ASP+ (Microsoft .NET) .asmx – ASP.NET WebServer .cfm – ColdFusion .cfml – Cold Fusion Markup Language .do – Java Struts .action – Java Struts .jnpl – Java WebStart File .jsp – Java Server Page .nsf – Lotus Domino server In cazul in care extensiile nu sunt vizibile in URL, poti identifica tehnologia server-side folosita analizand cookie-ul pe care aplicatia web il seteaza. Exemplu: PHPSESSID=12355566788kk666l544 – PHP De asemenea, iti poti da seama daca o aplicatie web este scrisa in PHP si prin intermediul unui Easter Egg. Daca adaugi codul ?=PHPE9568F36-D428-11d2-A769-00AA001ACF42 la finalul unui URL iar in pagina apare o imagine amuzanta inseamna ca aplicatia respectiva a fost dezvoltata folosind PHP. Bineinteles, acest Easter Egg poate fi dezactivat din php.ini. Mai multe informatii gasesti aici. 3. Identificarea fisierelor aplicatiei web La acest pas nu trebuie decat sa accesezi cat mai multe pagini alte aplicatiei web, fara a face nimic altceva. Viziteaza fiecare pagina insa nu uita sa conectezi browserul la Burp Suite pentru a se crea site-map-ul aplicatiei web. Astfel vei avea o evidenta mult mai clara asupra fisierelor pe care urmeaza sa le testezi. Foloseste Burp Spider pe langa navigarea manuala pentru a descoperi cat mai multe fisiere. PS: verifica daca exista fisierul robots.txt Dupa ce consideri ca ai navigat suficient printre fisierele aplicatiei web, trebuie sa descoperi fisierele ascunse. Exista numeroase aplicatii care te pot ajuta: Dirbuster Functia Discover Content a aplicatiei BurpSuite Wfuzz Patator Burp Intruder Liste de cuvinte pentru scripturile de mai sus: fuzzdb gitDigger svnDigger SecLists Urmatorul pas este sa iei la rand fiecare fisier gasit si sa incerci sa intelegi cum functioneaza aplicatia web respectiva. Pentru a-ti fi mai usor sa iti dai seama unde ar putea exista o vulnerabilitate, pune-ti urmatoarele intrebari: 1. In fisierul pe care il testezi, continutul se modifica in mod dinamic in functie de anumite criterii (valoarea unui parametru din URL, cookie, user agent etc.) ? Mai exact, este posibil ca in acel fisier aplicatia web sa foloseasca informatii dintr-o baza de date? Daca da, testeaza in primul rand pentru vulnerabilitatile de tip injection (SQL, XPATH, LDAP, etc.) insa nu neglija celelalte tipuri de vulnerabilitati. S-ar putea sa ai surprize. 2. Poti controla in vreun fel continutul paginii? Ceilalti utilizatori pot vedea datele pe care le introduci tu? Daca da, testeaza in special pentru vulnerabilitati de tip Cross Site Scripting si Content Spoofing. 3. Aplicatia web poate interactiona cu alte fisiere? Daca da, testeaza in special pentru Local File Inclusion. 4. In fisierul respectiv exista functii care necesita nivel sporit de securitate (cum ar fi formular de schimbare al emailului/parolei etc.)? Daca da, testeaza in special pentru Cross Site Request Forgery. Nu uita sa testezi fiecare parametru al fiecarui fisier pe care l-ai descoperit.
  4. 25 points
    Bun, vad tot mai des aceasta intrebare pe forumuri (nu doar RST). Mai nou, primesc mesaje de genul: - Cum ai invatat sa programezi ? - Cat a durat ? M-am gandit sa raspund tuturor, si cu aceasta ocazie poate iese un tutorial din care fiecare va avea cate ceva de invatat. (PS: astea sunt intrebarile gresite puse de oricine sperand ca daca li se da un raspuns de genul: "am invatat singur si mi-a luat 3 luni" , atunci automat si ei vor putea face acelasi lucru. Acestia din urma nu iau in calcul urmatoarele: poate cel pe care l-au intrebat a avut un background solid poate ca el si-a dat intr-adevar interesul si a vrut sa devina cineva / sa faca ceva poate ca ceea ce a invatat el nu se va potrivi cu ceea ce vrei tu sa inveti In primul rand, pentru a incepe o cariera in programare, fie ea web sau software, tre' sa va placa. Tre' sa va doriti sa vreti sa realizati singuri ceva, iar la sfarsit, dupa multe ore nedormite sa ziceti: "Ba, da ! Uite ce-am facut. Singur". Fara pasiune, putina dorinta si entuziasm veti ajunge niste wannabes (refference) care vor aspira intotdeauna la ceea ce fac altii, ei nestiind sa faca practic..nimic. (Been there, done that) In ciuda faptului ca majoritatea se apuca de programare pentru: bani, a fi hackeri sau a da cu DDoS in cel mai bun tovaras pe Skype, exista si pusti pasionati, care vor sa invete pentru ca le place. Pentru ca vor sa creeze, sa se perfectioneze si sa-si atinga un scop: scopul de a deveni la un moment dat printre cei mai buni. Pe scurt, unul dintre pasii catre o viata de programator este dorinta / pasiunea. Nu devii Guido van Rossum (refference) pierzand timp, cersind VNC-uri / root-uri / scan-uri pe toate forumurile. In al doilea rand, pe langa incredere, pasiune si dorinta, ai nevoie de putin creier. Si aici imi voi permite sa impart programatorii in trei categorii: cei care se nasc cu darul de a programa cei care invata sa programeze (si reusesc sa o faca intr-un mod foarte ok) cei care cred ca au invatat sa programeze, se mint, si stagneaza pe intreg parcursul carierei Voi incerca sa fiu scurt si la obiect, pentru ca nu imi sta in fire sa tin prelegeri de mii de randuri. O mica schema: Inainte de a te apuca sa programezi, exista niste reguli de bun simt la care trebuie sa te gandesti si pe care trebuie sa le iei in calcul: Cat timp nu stii sa vorbesti si sa scrii corect in limba romana, nu poti invata o alta limba. Cam tot ce tine de programare e legat in mod direct de limba engleza. Ca este documentatie sau ca este limbajul in sine, NU poti face nimic daca nu stii engleza la un nivel acceptabil. Acum ca am trecut de aceste doua etape, imi permit sa mai fac o mica observatie, din propria experienta: Programarea nu se invata din carti ! Majoritatea programatorilor pe care ii cunosc au invatat programare cu diverse resurse online (articole / tutoriale scurte, nu intinse pe sute de pagini din care nu inveti nimic), si cel mai important au invatat prin a dezvolta un proiect real (fie el cat de mic). Programarea e ca futaiul - poti sa te uiti la o carte cu 13 pozitii o zi intreaga. Daca n-ai o gagica pe care sa experimentezi, te uiti degeaba. Asa si cu cartile. Poti sa citesti 13 carti de C, daca nu pui in aplicare ceea ce citesti, degeaba. ( asta apropo de densitatea cartilor - recomand articole scurte, la obiect decat carti cu 2000 pagini ). Remember: NU poti depasi nivelul de incepator daca ramai la carti / tutoriale. Acum sa nu credeti ca: "Ia uite, s-a trezit si asta sa vina aici sa scuipe 3 cuvinte si sa-si spuna parerea de cacat". Pe mine unul, ma doare la stromeleag daca intelegeti ceva din ce scriu sa nu. Important e ca voi sa deschideti ochii si sa incepeti sa realizati ca daca vreti sa faceti ceva in viata, va trebuie un minim de efort. Cat dureaza ? Eu m-am apucat serios de 5 ani si inca am senzatia ca stiu extrem de putine. De la caz la caz, si tinand cont de tipul de programator la care te incadrezi, poate dura de la 1 an la o viata intreaga. Pana si Guido van Rossum a spus ceva de genul: "Chiar daca eu am inventat acest limbaj de programare, pe o scara de la 1 la 10, mi-as da nota 9. Pentru ca sunt constienti ca sunt altii care il stiu deja mai bine ca mine". Deci, nu timpul e problema. Conteaza sa vrei, apoi vei vedea ca timpul e irelevant. Let's dig in a bit: Reguli de aur: un program trebuie sa fie scris in asa fel încat sa poata fi citit de catre oricine. fa bucatile in asa fel incat sa intelegi usor ce face fiecare fara a trebui sa stii cum se face. ( Domnul Djikstra - in olandeza se citeste aproximativ Daicstra, recomanda o tactica veche de pe vremea lui Cezar: divide et impera ( adica: imparte si stapaneste). Asa e bine sa scrieti programele - in bucati cat mai independente unele de altele care interactioneaza intre ele in moduri cat se poate de clare si simple. un editor inteligent reduce handicapul unort fisiere mari, pentru ca va permite sa va mutati cautand automat aparitiile functiilor si variabilelor. invata sa faci debug (din pacate, cunosc multi programatori de duzina care intreaba: Ce-i aia ?). E cazul sa cautati si sa vedeti de ce e bine sa stiti asta. Hai, putina mobilizare Si ele pot continua (portabilitatea codului, comentariile, fiabilitatea, etc.), insa de baza astea sunt. Sa luam ca exemplu un kiddo care vrea sa invete un limbaj de programare: 1. Stiu limba romana ? O stiu 2. Stiu si engleza ? Nu prea, dar am de gand sa schimb asta - mentalitatea dorita 3. Ce limbaj vreau sa invat ? Pai, hai sa vedem ce as vrea sa fac. 4. Am ajuns la concluzia ca vreau sa invat Python. Now what? 5. Citesc si ma interesez daca Python e pe placul meu. Face ce-mi doresc ? Face. Ma ajuta sa ajung acolo unde vreau ? Da. Exista documentatie cacalau in caz ca ma incurc ? Exista. 6. Ma apuc de treaba. Cu probleme simple. Imi bat capul, incerc sa-mi dau seama. Nu reusesc. Fac debug. Intreb lumea. 7. Am invatat "the basics". Trec la lucruri mai complicate. Fac un mini-proiect. Fac scannerul ala de il ceream din saptamana in saptamana pe RST si luam ban de la nenorocitul de @hades Nu mai dau bani pe el, e doar al meu, ba chiar pot sa il vand. Si asa toata lumea e impacata: tu ramai cu cunostintele si scannerul, noi ne bucuram ca nu mai esti cretin si tot asa. E ca un lant trofic. Si crede-ma ca daca ajungi la nivelul la care vei putea face un scanner, nu-l vei face. Vei vrea sa faci chestii mult mai complexe. Voi inchide topic-ul asta cu un citat pe care il dau de multe ori exemplu: "As soon as we started programming, we found to our surprise that it wasn't as easy to get programs right as we had thought. Debugging had to be discovered. I can remember the exact instant when I realized that a large part of my life from then on was going to be spent in finding mistakes in my own programs." Voi mai adauga idei pe masura ce voi avea mai mult timp.
  5. 24 points
    Link: https://sub.watch Am facut un site in care va puteti face o lista cu serialele favorite si care va poate anunta cand apar seriale noi, in functie de timezone-ul vostru. Asta inseamna ca daca un serial apare in mod normal in US azi la ora 21, veti fi anuntati maine, pentru ca ora 21 azi la ei inseamna 3-4 maine dimineata la noi. Cam asa arata: Sigur ca asta nu e tot, fiecare serial afiseaza ultimele cele mai recente 5 episoade, iar fiecare episod din lista poate fi descarcat de pe unul din site-urile de torrente listate, sau poate fi cautat pe un site definit de voi. Am sa explic mai tarziu cum sa adaugati un alt site in lista. La click pe un titlu, veti ajunge pe pagina individuala a unui serial, de pe care puteti descarca fiecare episod din serie. Daca puneti cursorul pe un episod aparut astazi sau din trecut, veti observa o lista de trackere si site-uri pe care puteti sa cautati torrentele episodului. Exista doua tipuri de site-uri definite in lista respectiva. 1. Site-uri pe care aplicatia va cauta singura torrentele si vi le afisa cand faceti click pe el: In lista va aparea calitatea torrent-ului, numele sau (fara titlul show-ului, ca sa nu ocupa loc si pentru ca e irelevant), optiunea de a descarca torrentul prin magnet sau direct fisierul .torrent (unele site-uri suporta ambele versiuni, altele doar una din ele), marimea si numarul de seederi si leecheri. Lista este sortata dupa raportul dintre Seeders si Leechers, descrescator, asta pentur ca nu conteaza doar cat de multi seeds sunt, ci si cat de multi leeches sunt. La click pe titlul de coloana "Size", lista va fi sortata descrescator dupa marime. Puteti reveni la Seeders / Leechers dand click pe coloana respectiva. Pentru a incepe descarcarea unui torrent, pur si simplu faceti click pe o optiune din coloana Actions. FileList, Zooqle, ExtraTorrent, 1337x si TPB sunt site-urile din categoria asta. 2. Site-uri pe care puteti cauta manual torrentele pentru un episod anume. /r/MEGA, Google si YourSerie fac parte din categoria 2, la fel si toate site-urile pe care le puteti defini chiar voi. -------------------------------- Pentru a adauga un serial, apasati Search, scrieti numele si apasati Subscribe pe un serial din lista de cautare. La click pe un poster, veti ajunge pe pagina individuala a unui serial, de pe care puteti descarca fiecare episod din serie. -------------------------------- Pe langa lista si cautare, mai sunt si alte optiuni, precum: Pagina Calendar, pe care apare un calendar cu luna curenta si toate serialele ce vor avea episoade noi. Pentru datile din trecut sau cele de azi, puteti sa dati click pe orice episod si sa descarcati torrentele direct de acolo. --------------------- Pagina Discover, pe care apar listate serialele care au episoade aparute astazi, iar din partea de sus puteti selecta categoria de seriale sau sa schimbati ziua curenta. Sunt sortate descrescator dupa o medie dintre nota pe IMDb si alte 2 site-uri de informatii. ------------ Pagina Extensions, pe care sunt afisate extensiile pentru Chrome, Firefox si Opera, prin care va anunta cand apar seriale noi. -------------- Si in final, pagina Account, unde puteti defini si alte site-uri pe care sa cautati torrent si sa le activati / dezactivati pe cele deja definite. Pentru a defini un nou site, apasati pe butonul Add New, dupa care completati campurile cu un nume si un URL de cautare. Numele este ce va aparea in lista de torrente, iar URL-ul trebuie sa contina unul din codurile explicate in imaginea anterioara, pentru a putea genera link-ul de cautare. Pentru noul link, aveti la fel posibilitatea de a-l activa / dezactiva dupa bunul plac. Link-urile create de voi sunt vizibile doar pentru voi, ceilalti useri nu le pot vedea. Site-ul este: https://sub.watch Iar link-urile catre extensii le puteti gasi aici: https://subwatch.dev/extensions Extensiile sunt sincronizate pe baza contului vostru, astfel ca nu conteaza pe cate PC-uri aveti instalata extensia, cand apar notificari, vor fi aceleasi pe toate. In momentul in care postez, extensia pentru Opera inca e in stadiul "pending" in store-ul oficial, dar butonul va deveni activ imediat ce aceasta este aprobata. Motivul pentru care site-ul necesita un cont este pentru ca astfel tine minte cine sunteti si cui sa ataseze serialele cautate.
  6. 23 points
    AGSQ: Mai dute ma in pula mea de tigan mustacios cu tot cu SRL-ul pulei mele de 200 de lei capital social si sediu social in pizda pe campuri unde nu aveti nici canalizare. Tu compari o corporatie cu cacatul tau de SRL si 400 euro incasari lunare? Cum adica server reutilizat? Tu dupa ce foloseste clientul o luna serverul, il arunci ? Pai ce flocii lu ma-ta grasa, serverul e prezervativ ? Besi in pula mea de ratat cu aberatiile si comparatiile tale de doi lei.
  7. 22 points
    Anul trecut am fost la olimpiada de informatica si chiar inainte de olimpiada m-am gandit ca sigur au un evaluator care verifica problemele. Asa ca am intrat pe siteul local al sectiunii de informatica si am gasit un server ftp de unde am reusit sa iau evaluatorul. Dupa ce l-am decompilat, am facut un cod universal care pus la orice problema va da punctaj maxim. #include <iostream> #include <fstream> #include <stdio.h> #include <string.h> #include <string> #include <sstream> #define BUFFER_SIZE 18 using namespace std; bool isMatch(const string& lFile,const string&rFile) { ifstream lFileStream(lFile.c_str(), ifstream::in | ios::binary); ifstream rFileStream(rFile.c_str(),ifstream::in | ios::binary); if(!lFileStream.is_open() || !rFileStream.is_open()) { return false; } char* lData = new char[BUFFER_SIZE](); char* rData = new char[BUFFER_SIZE](); do{ lFileStream.read(lData, BUFFER_SIZE); rFileStream.read(rData, BUFFER_SIZE); if(memcmp(lData,rData,BUFFER_SIZE)!=0) { delete[] lData; delete[] rData; return false; } }while(lFileStream.good() || rFileStream.good()); delete[] lData; delete[] rData; return true; } int main() { stringstream path; path << "..\\probleme\\numeproblema\\teste\\"; const int kTests = 20; for(int i=0;i<=kTests;i++) { stringstream current; current << path.str() << i <<"-numeproblema.in"; cout << current.str() <<endl; if(isMatch("numeproblema.in", current.str())) { stringstream out; out << path.str() << i << "-numeproblema.ok"; ofstream fout("numeproblema.out", ios::binary); ifstream file((out.str()).c_str(),ios::binary); fout << file.rdbuf(); } } return 0; }
  8. 22 points
    Bravo tie ca ai terminat cu 8.7 scoala si acum lucrezi la McDonalds. Reprezinti cliseul perfect. Trebuie sa fii foarte mandru, parintii tai probabil sunt in extaz si ei. Sau poate ai vreo drama si aici despre care sa ne spui?! Tu chiar crezi ca esti singurul care duce sau a dus o viata mizera sau fara de noroc? In situatia ta se afla majoritatea romanilor, in special generatia de astazi, in principal pentru ca au distrageri la fiecare pas, carora daca ai apucat sa le acorzi atentie, te pot duce pe un drum complet distructiv pentru viitorul tau. Uneori le multumesc alor mei ca nu mi-au acordat niciodata atentie, ca nu m-au impins prea tare la scoala si ca nu au pic de cultura generala pe care sa mi-o paseze, pentru ca astazi poate as fi in situatia celor cu mai multe diplome decat cunostinte, pentru ca nu as mai fi avut libertatea asta in a alege ce vreau sa fac si sa invat. Iar daca ai impresia ca fac bani din afilieri sau alte lucruri ce tin de extreme si ca pur si simplu am avut noroc ca am reusit fara scoala, tin sa precizez ca te inseli. Te asigur ca eu, si probabil multi altii, de pe aici chiar, avem mai multe cunostinte in materie de web development decat orice inginer care urmeaza sa iasa de la ce facultate vrei tu. De ce? Pentru ca facultatile care predau asa ceva, te lasa cu baza, de restul te ocupi tu (deci, de ce te-ai duce acolo in primul rand?), iar restul nici nu se ating de subiect. De ce? Pentru ca inca se bazeaza pe idei de succes generale, initiate cu zeci de ani in urma, iar IT-ul nu are loc pe acolo, dar mai exact pentru ca nu exista inca profesori adevarati in asa ceva si pe la noi. Si inca un motiv pertinent ar fi pentru ca nu-ti da nimeni diploma de antreprenor. Asa ca nu ai decat sa-ti agati diplomele tale cu un lant la gat si sa te plimbi cu ele prin centrul orasului, ca fara experienta nu ai altceva de facut cu ele, inafara de a o lua de la zero ca junior/sclav intr-o multinationala. Si tin sa mentionez ca pe aici, cel putin cei care vor da doi bani sa-ti raspunda, majoritatea suntem impotriva sistemului de invatamant, pentru ca, cei care chiar stim ceva folositor, ne-am dat seama de mult ca scoala ne incurca. Iar tu, venind sa te lauzi cu facultatea ta, nu vei reusit decat sa te distantezi si mai tare de noi. Eu tot ce am facut, si nu cred ca-s singurul, a fost pe cont propriu, asa ca scuza-ma daca nu am nici cel mai mic strop de compasiune pentru cei ca tine, care asteapta totul de-a gata. Am dus zicala "a fura meseria" la un nou nivel. O problema cu ce incerci sa ceri tu aici este ca, din moment ce tu nu ai cunostintele necesare sa cunosti acel ceva la care te astepti, orice ti-ar propune cineva, ar presupune ca tu sa inveti ceva, iar asta iti va starni in cap numai motive mai mult sau mai putin penibile de a refuza acel lucru, pentru nu ai baza de cunostinte necesare. Pe scurt, ar vorbi cu peretii. Dovada pentru asta o regasesti in ignoranta cu care ai tratat fiecare replica de mai sus, ale baietilor care chiar ti-au dat atentie si sfaturi din propria lor experienta si care chiar ii ajuta pe ei. Ai ales sa stai sa te certi ca babele cu noi, cei care te criticam, si sa-i ignori pe restul. Iar daca ma insel, si i-ai contactat pe PM sa le ceri mai multe informatii, sa-mi fie cu pardon, si, de asemenea, bravo tie. Pe de alta parte, sa vii pe aici si sa te plangi ca nu gasesti ceva de facut, cand altii chiar stau si depun mult efort pentru asta, e cel putin ignorant din partea ta. Asa ca asteapta-te in continuare la acelasi gen de critici pe care le-ai primit si pana acum. Gasca cu oua de aur nu o scoate nimeni la vanzare, si in niciun caz nu o ofera gratis. Daca vii sa ceri ajutor in felul asta, fara ca intr-adevar sa depui ceva efort sa te educi singur intr-o directie, nu ai decat sa te astepti la unul dintre oua si sa speri ca inauntru e un pui, dar cel mai probabil iti vei pierde timpul. Iar daca continui sa ne dai replici de-astea la fiecare critica, asigura-te ca esti suficient de informat pentru a fi arogant, pentru ca, in caz contrar, singurul lucru pe care-l vei trezi in restul va fi gandul ca esti penibil. Un om chibzuit ar fi citit, ar fi realizat cat de in urma este si s-ar fi pus pe invatat absolut tot ce apuca. Concluzia la care am ajuns, dupa fiecare critica adunata de-a lungul experientei mele, e ca trebuie sa inveti ceva din fiecare intamplare. E mult mai valoroasa o critica decat un pupic in cur, cel putin daca intr-adevar vrei sa evoluezi, ca vad ca unora chiar le place sa fie linsi in cur la fiecare pas. Daca te-ai nascut dupa ~85, adica nu ai apucat mentalitatea comunista, ai avut acces la PC minim 3 ani in viata ta si inca nu iti permiti sa faci bani din asta, din punctul meu de vedere, nu meriti ajutat, pentru ca esti genul de om care trebuie tinut de mana toata viata (mentalitate predata in scoala; toata lumea are nevoie de ajutor la fiecare pas - corect in masura in care ajutorul il gasesti singur, nu il cersesti, ca nu multi vor sta dupa tine, mai ales sa faci tu bani si ei sa se uite la tine), pe cand niciunul dintre noi, cei care am atins o boaba de succes, chiar daca suficient doar sa ne platim chiriile, nu suntem asa. Iar gandul cu care te las e ca daca mai continui sa te compari cu restul, ai sa mori de ciuda.
  9. 21 points
    Salut, Am decis sa inlocuim vechiul vBulletin 4 cu o platforma mult mai moderna si mai utila: IPBoard. Mentionez faptul ca este posibil sa apara probleme pe care insa o sa le rezolvam. Orice problema intampinati, postati aici sau trimiteti-mi un PM. Upgrade-ul a inceput in ianuarie, asadar tot ce s-a postat in ianuarie a disparut. De asemenea, au loc mai multe schimbari de care va rog sa tineti cont: 1. Nu se mai permit lucruri ilegale ca: root-uri, vps-uri, smtp-uri etc. 2. Au disparut cateva categorii: Club ShowOff, Games Hacks etc. Am facut putina ordine. 3. Exista un sistem de Downloads insa nu se permite upload-ul fisierelor cu drepturi de autor. 4. Accesand acest website necesita acceptarea termenilor si conditiilor. Ar fi bine sa cititi acel text, nu este lung. 5. Free stuff va fi limitat, nu se va mai posta orice cont furat. 6. La RST Market se va modera fiecare topic postat. Inca nu stim ce sa facem cu el. 7. Nu mai exista niciun VIP. Cine va fi util de acum inainte va primi VIP. 8. Nu pot oferi o lista completa de modificari, o voi actualiza cu timpul. Scopul acestui forum este sa ajute comunitatea romaneasca in domeniile IT security, programare si multe altele. Odata cu aceasta schimbare, vrem sa scapam de cei care intra aici pentru mizerii: scannere, root-uri si alte prostii care le pot aduce probleme. Daca ati venit aici pentru asa ceva, acesta nu este locul potrivit. Va vom bana pentru orice apropiere de aceste practici. Nu sunteti utili pentru comunitate si nici comunitatea nu este utila pentru voi. Am investit atat bani cat si timp in acest forum (cei din staff + altii). Nu vreau sa vorbesc in numele lor, eu vreau sa continui acest proiect deoarece acum multi ani stiam doar Counter-Strike, insa dupa ceva timp petrecut in aceasta comunitate, cu persoanele din acele timpuri, m-a ajutat si acum lucrez in domeniul IT security. Scopul acestui forum este sa ii educe pe cei noi si sa nu ii duca pe cai gresite, insa fiecare este responsabil pentru actiunile sale. Nu inseamna insa faptul ca forumul va fi complet whitehat :). Tehnici blackhat, exploituri si alte lucruri interesante sunt prezentate de catre nume mari in domeniu la conferinte internationale, deci nu ne vom feri sa le publicam aici. Incercati sa faceti si voi cate ceva, o sa vedeti ca va va ajuta mult pe viitor. Incercati sa ii ajutati pe ceilalti si veti vedea ca veti fi de asemenea ajutati. Mai multe, cu timpul. // Staff-ul RST
  10. 21 points
    Un ratat cu numele Alexandru Cosmin Stan din Giurgiu care a activat pe acest forum sub diverse porecle sinistre a facut ceva "afaceri" cu niste baieti de aici. Afaceri in urma carora majoritatea s-au ales cu tepe, dovezi de plati fictive si promisiuni. Oamenii au muncit pentru el si s-au ales cu ea in mana. Anul trecut a spus ca are cateva site-uri web si vrea sa incerce sa lucreze la ele si sa faca ceva bani. I-am dat un account de hosting gratuit, si-a pus acolo 5-6 site-uri web (adult) si am inteles ca la ele lucra un user de aici (manutadeaur). Dupa doua luni, a vrut sa cumpere un server dedicat si sa se apuce sa faca hosting. Un alt user de aici i-a instalat wordpress, whmcs, i-a facut traducerile din template-uri si a lucrat cateva zile bune (whois), dupa care s-a ales cu teapa. Pe skype, ratatul de Alexandru Cosmin Stan din Giurgiu mi-a aratat o dovada de plata pentru munca prestata de whois. Desigur, dovada de plata era falsa pentru ca la om nu a ajuns niciun ban. I-am activat serverul dedicat si apoi dupa o luna i-am trimis notificare de plata. Pe skype imi tot zicea ca plateste in cateva ore si trecea ziua. Dupa aproximativ 3 saptamani de minciuni, i-am oprit serverul dedicat. La scurt timp, Alexandru Cosmin Stan Tepar infect din Giurgiu, mi-a trimis notificare ca el vorbeste cu un avocat, ca nu i se pare corect sa-i fie oprit serverul, ca-s documentele lui acolo. I-am spus ca serviciul a fost oprit pentru neplata. Acum ma apeleaza pe mesaje private pe aici, ca vrea sa-mi plateasca (dupa 4 luni). I-am spus ca nu am nevoie de niciun ban. Imi scrie ca asa imi tratez eu clientii, ca datele lui de pe servere au ajuns publice. Poze cu familia sau cu sotia lui. Adica ratatul crede ca o companie ar sta sa faca publice datele unui ratat necunoscut. Ba mai mult, imi spune ca face plangeri penale pentru tot felul de cacaturi si ca justitia isi va face treaba. Sfat: Nu mai faceti afaceri cu toti labagii tigani, ciorditori si in special nu faceti afaceri cu ROMANI. // update: Mai multe date MajesticRol @ RST aka Ovschools @ RST aka Nicotin @ RST YM: stancosmin.alexandru@yahoo.com ; supbakoo@yahoo.com Domain Name: OVSCHOOLS.COM Registry Domain ID: 1812649095_DOMAIN_COM-VRSN Domain Status: ok Registry Registrant ID: Registrant Name: Stan Cosmin Alexandru Registrant Organization: Stan Cosmin Alexandru Registrant Street: 1 Decembrie 1918 Bl C8 Sc C Ap 6 Et 1 Registrant City: Giurgiu Registrant State/Province: Giurgiu Registrant Country: RO Registrant Phone: +4.0765690113 Registrant Email: cosmin@networkx-ro.ro S.C. Market Geana SRL Sediul in Giurgiu, Str 1 Decembrie 1918 CUI 30515521, Nr. Reg Comertului J52/487/03.08.2012 iBAN RO55RZBR0000060014899088 Raiffeisen Sucursala Giurgiu
  11. 20 points
    Salut, Acum un an, scriam niste cateva randuri pe acest forum cu privire la dropshipping si afilieri, cred ca unele topicuri au disparut insa...pentru ca primesc intrebari pe privat, skype, mail referitoare la domeniul dropshippingului si vin pe forum sa caut cele ce le-am scris deja sa dau lumii sa citeasca si nu mai gasesc...probabil odata cu upgradeul forumului...s-a mai pierdut date..n-am idee... O sa mai scriu odata bazele acestui domeniu asa cum le stiu eu, ce fac, cum fac, de unde iau si ce mai stiu... ------------------ Am pornit la drum acum un an, cu 16 dolari care ii aveam pe paypal, auzisem de dropshipping, citisem cateva tutoriale si mi se parea super ideea, se potrivea cu vorba unui om care avea o influenta destul de mare asupra mea : Nepoate, eu nustiu cum functioneaza treburile astea cu internetul, am 69 de ani, dar tot vad la televizor. comanda online, cumpara pe internet...asta inseamna ca cineva are ceva de vandut, si face bani....face reclama si la televizor, a dracului...fix in timpul filmelor mai bune...sa intri si sa cumperi. Am vazut, treburi dealea de masaj...saltele...tratamente Daca tu nu ai ce sa vinzi, vinde si tu pentru ei, daca ei vind o saltea cu 2 lei tu vindea altuia cu 2lei 50, asa se fac bani... S-a stins intre timp... In fine, plecand de la ideea aceasta, am facut o corelatie cu dropshippingul, care este cam acelasi lucru...lumea vinde produsele altora. In Romania, daca iti deschizi o firma pe aceasta ramura se numeste "Intermediere de servicii", asta am invatat mai tarziu. Am luat hosting, domeniu, am pus wordpress pe el, am cautat o tema tip "ecommerce" pe care am incarcat-o, cateva pluginuri + pluginul principal Woocommerce si asta a fost tot - ramasesem si fara bani. Am cautat o nisa cu produse pe aliexpress / alibaba / dinodirect etc si am inceput sa incarc produse, MANUAL. Luam numele produsului, poze, descriere, pret, tot si incarcam in site-ul meu. A fost o munca care mi se parea zadarnica uneori...pentru ca trebuia sa scot de multe ori watermarkuri la poze...si pierdeam ore in photoshop...trebuiau incarcate preturi in woocommerce, facute clase, (cei care a-ti mai utilizat stiti despre ce vorbesc ) apoi incarcate pozele, descriere, aranjare in pagina, calculare shipping etc. Am adaugat multe produse asa...am muncit saptamani intregi. Nu mai stiu cate produse am adaugat ca nu aveam un numar in cap, trebuia sa mi se para mie plin, populat, diversificat. Am terminat site-ul entuziasmat si mi-am dat seama ca nu am cu-i sa vand. Pe nisa care o alesesem nu aveam nici o sansa in urmatorul an sa ajung macar in primele 10 pagini de google... Avem cateva pagini de facebook si am tot da shareuri acolo....apoi am observat ca lumea tot intreba de produse, pret, shipping etc, atunci am stiu unde o sa fac promovare => Social Media. Am inceput sa fac vanzari destul de repede spre surprinderea mea (cei care mi-au citit celelalte topicuri pe tema, au vazut si printurile cu veniturile ), Faceam si affiliere pe vremea aceea. Nu mai am poze...am gasit un singur print de la affilieri: Primele luni, 80% din venituri le-am reinvestit in oameni, adica am cumparat conturi de social media si altele (proxyuri, massplanner etc). In acest moment detin 20 de conturi de instagram, 20 de twitter, 31 de pagini de fb si vreo 15 grupuri, vreo 8 pagini de pinterest. Saptamana trecuta facusem un calcul si ma adresam la aproximativ 6 milioane de oameni, toti targetati pe nise, majoritatea din USA / UK. ------------------------- In momentul de fata, colaborez direct cu cinezii...pe care i-am abordat pe alibaba si aliexpress...dar doar cu cei care au si depozite in EU si / sau in USA - credeti-ma sunt destui. Platesc ceva in plus ca sa imi lipeasca niste stickere cu logoul meu si sa nu puna chinezariile lor pe colete. Detin 41 de site-uri, nise diferite...la un moment dat am avut mai multe dar am renuntat... Ma adresez la aprox 6 mil oameni. Procentul meu este de 20%, reprezentand pretul cu care il cumpar Am 2 VA care ma ajuta Am firma mea Inca nu mi-am dat demisia de la job - e destul de permisiv..si stau foare mult in fata pc-ului (sysadmin) asa ca am timp sa lucrez si la ale mele... Tot ce am facut a fost disponibil pe internet pentru toata lumea. Nu am avut acces la vreo metoda secreta sau la buget mai mare, nu, am plecat cu 16 dolari - si no sa uit niciodata intrucat rad inca cu familia mea pe aceasta tema si am ajuns sa fac destuii bani incat sa nu am nevoie de job - dar la care inca merg. Cu timpul a aparut si primul plugin de dropshipping, care este destul de scump dar merita, Yaross a muncit extrem de mult la el, practic automatizeaza TOT, se vinde cu tot cu tema wordpress. Nustiu cum o sa se numeasca, nu e liber pentru toata lumea, insa eu am avut onoarea sa fiu unul din beta testari si am ramas uimit de ce poate acest plugin, practic iti pune siteul pe picioare cu tot cu tema in 5 minute + produse + clase+ clacule, shipping tot ...ai tot, complet. Un exemplu de site facut cu acest plugin si tema : https://kittenrules.com/ Sa nu mi cereti inca acest plugin ca nu e gata , inca mai lucreaza la el. Va propun sa va strangeti profile de social media si sa le cresteti, sa va creati o audienta, caci ei sunt clientii vostri ! Unii m-au intrebat cati bani fac in momentul acesta, ei bine nu pot raspunde la aceasta intrebare pentru ca fluctueaza, azi noapte, cat am dormit, am facut aproape 400 de dolari - profit, ieri noapte a fost mai putin. Acum sa nu va ganditi ca din acestia 400 nu cheltuii....VPS-uri...hosting, domenii...trackers...numere de skype...proxyuri..VA, taxe, contabili ..toate astea costa...insa raman si eu cu 170-200. Daca va apucati nu luati in ras clientii...stati de vorba cu ei, cumparati-va un nr de telefon de la skype, sunatii, intrebatii daca e in ordine etc, ei pun mare pret pe asa ceva, imi scriu review-uri, dat share la articole, siteuri, si revin sa faca cumparaturi. Am vrut sa scriu multe aici, nustiu cate am apucat ca scriu de vreo 4 ore timp in care tot fug sa fac acte altceva...revin...sper sa nu fi ametit tot pe aici... Ideea e ca in acest moment conduc o afacere din spatele pc-ului, care merge destul de binisor, mi-am luat deja un apartament din banii pe care i-am facut pe net (m-au mai ajutat si ai mei) si ma gandesc acum sa ma extind, adica sa imi inchiriez un spatiu cu 3-4 oameni care sa se ocupe de toata treaba. Am un de pozit in UK unde tineam produse....era cineva care avea grija de ele si pe care il plateam lunar ( transfer bancar) - m-am dus lunile trecute acolo...am reusit sa ajung...si mai avea putin si ma batea...nu ma cunostea...credea ca's la furat. Nu fac nimic special, si voi puteti face la fel. Spre exemplu m-am afiliat cu un tip Roman, care are un site despre accesorii de catei...ei bine, eu am un magazin online cu mancare de catei...pet food...asa ca el vinde..si da vouchere oamenilor de 10% pe site-ul meu..si invers, ne promovam unul pe altul. Se pot face multe....doar sa va apucati de treaba. Numai Bine sper sa raspunda intrebarilor unora. PS: Scuze de greselile gramaticale, promit sa editez.
  12. 18 points
    Mi-am facut si eu blog. Nu o sa scriu prea des, doar asa, din cand in cand... https://nytrosecurity.com/
  13. 18 points
    "dacă ești bun, serios și puțin bun la vânzare și marketing online nu ai probleme în a găsi clienți" E ca si cum ai spune, "daca esti unicorn". Sa va iau bloggerii motivationali la fugarit daca nu ma disperati cu ei. Atatea articole pline de cacat universal n-am vazut in viata mea, iar voi le luati drept articole inspirationale. Un romanas prostanac cu aere de speaker motivational vine si si se caca in mediul public si puf, toate forumurile se umplu de reshare. Faceti ceva notabil si toata lumea va va pupa in cur regulat, daca asta va e visul, dar nu mai postati balarii pe aici, ca nu e taramul viselor in IT. Republica, medium si toate site-urile de genul asta sunt pline de figuri ale unor oameni care cauta atentie pe unde apuca. Ba mai mult, unii sunt extrem de idioti iar majoritatea sunt femei. Nu sunt sexist, dar femeile n-au loc in programare cu logica lor one-way. La ce va asteptati? Astia nu sunt programatori, iar voi nu ar trebui sa-i luati drept exemplu. Un programator de succes are ce face si nu sta sa se planga pe bloguri ca nu-si gaseste clienti sau ca a dus-o rau pana a dat de succes. In plus, ratatul ala da sfaturi antreprenoriale, dar nu a realizat nimic in viata lui. Nu inteleg de ce mai e bagat in seama. E un simplu recrutor IT cu aere de speaker motivational. Ce anume credeti voi ca are de oferit? Asta e profilul sau, plin de live-uri motivationale, trageti singuri concluziile, asta daca sunteti in stare: https://www.facebook.com/ValentinMaiorOfficial Hai, chiar va rog frumos, arati-mi un singur proiect de programare de-al sau. Sunt tare curios. Am dat scroll de-am innebunit pe pagina lui de Facebook si e plina de cacaturi inspirationale, dar zero cod, desi se pretinde a fi programator. Oh, va invit chiar si pe profilul lui de LinkedIn, unde veti gasi asta: In istoricul joburilor sale. Cum va place eroul vostru acum? Sunt convins ca sunteti foarte inspirati sa concepeti urmatorul SaaS de succes datorita vorbelor sale intelepte. Va e lene sa faceti ceva si credeti toate balivernele ce fac sens 5% fara sa puneti vreo intrebare. Majoritatea antreprenorilor de maine sunt niste glume proaste datorita articolelor de genul asta. Treziti-va la realitate, toata lumea a dus-o greu pana sa ajunga sus, ca altfel nu s-ar chinui nimeni ca prostul sa dovedeasca ceva cuiva. Voi, cei care cautati calea cea mai usoara, nu veti reusi niciodata sa faceti ceva. Sunteti prea prosti. Sunteti prea lenesi.
  14. 17 points
    M-a tot văzut ca bântui pe aici pe forum si na, totuși e prea tare. Cel mai tare cadou de ziua mea https://imgur.com/a/Xv1DU
  15. 17 points
    Nu rezolvi nimic prin asta. Va sfatuiesc sa nu recurgeti la chestii de genul. Singurul lucru care o sa rezolve ceva acolo este sangele. Sa curga mult pe strazi. Sunt granitele libere, orientati-va si plecati in alta parte unde munca este apreciata, unde exista protectie sociala, unde copii vostri nu vor creste intre tigani, manelari, ticalosi si alte subspecii. Feriti-va de romani, oriunde ati umbla in lume.
  16. 16 points
    Având puțin timp liber seara, am decis să mă destind cu acest challenge. La rugămintea lui @Usr6 în continuare postez rezolvarea problemei. 1. Descărcăm imaginea, verificând ca aceasta să fie integră $ curl -s https://rstforums.com/forum/uploads/monthly_2017_09/OldGarage.jpg.cdab3e6485face558cb330baf13519cf.jpg --output OldGarage.jpg && md5sum OldGarage.jpg 2. Folosind un hex editor, căutăm biții de sfârșit ai jpg-ului, aceștia fiind FF D9. Dacă după acești biți începe analiza noastră. Dacă după acești biți mai există ceva care ne-ar putea da de bănuit, iar în acest caz putem observa un nume de fișier, anume "The_eye_of.jpg". De începem să bănuim că aici vom găsi următoarea sub-problemă. Verificăm dacă la sfârșitul acelui bloc de biți găsim grupul de litere PK (inițialele lui Phil Katz, creatorul formatului zip) 3.1.0 Folosind dd sau un extractor, extragem arhiva din imagine. Îi vom da valoarea parametrului skip valoarea în format decimal a blocului unde se termină jpg-ul (unde am găsit blocul FF D9), în cazul nostru: dd if=OldGarage.jpg bs=1 skip=47168 of=imaginea_din_arhiva.zip 3.1.1 Dezarhivăm imaginea_din_arhiva.zip PS: Am prezentat acest pas pentru a se putea observa cum funcționează lucrurile. 3.2 Probabil aveți un extractor care e destul de deștept și puteți extrage direct: 4. Analizăm imaginea obținută analog cu pasul 3, unde observăm același procedeu, dar, la extragerea arhivei suntem întâmpinați de cererea unei parole. Pentru un rezultat mai obiectiv, căutăm imaginea pe Google împreună cu numele acesteia fără "_". Găsim astfel parola Horus 5. Analog pasului anterior, la dezarhivare trebuie să introducem o parolă pentru a ajunge la următorul sub-challenge: Căutând pe Google după "the code of holy bible" ajungem pe pagina de Wikipedia a acestuia, iar la al doilea paragraf găsim asta: Decidem să spargem textul în bucăți de câte 50 de caractere. Pentru asta, eu am folosit site-ul http://www.dcode.fr/text-splitter care are o mulțime de tool-uri de criptanaliză. Obținem asta: Deci, avem parola: GoodDataIsCryptedData 6. În urma tuturor indiciilor am ajuns să avem fișierul cu numele "Divide ET Impera.56" La prima vedere pare o înșiruire de hash-uri MD5, cel puțin pentru mine. Dar, ca să folosim indiciul, vom împărți textul în 56 de blocuri. Pe fiecare linie avem câte 32 de caractere, ceea ce corespunde unui hash MD5. Deci, să trecem la treabă. Căutăm un site unde putem introduce mai multe hash-uri odată. Eu am găsit https://hashkiller.co.uk/md5-decrypter.aspx Rezultatul este: 92eb5ffee6ae2fec3ad71c777531578f MD5 : b 4b43b0aee35624cd95b910189b3dc231 MD5 : r 0cc175b9c0f1b6a831c399e269772661 MD5 : a 9e3669d19b675bd57058fd4664205d2a MD5 : v d95679752134a2d9eb61dbd7b91c4bcc MD5 : o 5058f1af8388633f609cadb75a75dc9d MD5 : . 7215ee9c7d9dc229d2921a40e899ec5f MD5 : [space] e358efa489f58062f10dd7316b65649e MD5 : t e1671797c52e15f763380b45e841ec32 MD5 : e 336d5ebc5436534e61d16e63ddfca327 MD5 : - 0cc175b9c0f1b6a831c399e269772661 MD5 : a 865c0c0b4ab0e063e5caa3387c1a8741 MD5 : i 7215ee9c7d9dc229d2921a40e899ec5f MD5 : [space] 83878c91171338902e0fe0fb97a8c47a MD5 : p 4b43b0aee35624cd95b910189b3dc231 MD5 : r 865c0c0b4ab0e063e5caa3387c1a8741 MD5 : i 7b8b965ad4bca0e41ab51de7b31363a1 MD5 : n 03c7c0ace395d80182db07ae2c30f034 MD5 : s 5058f1af8388633f609cadb75a75dc9d MD5 : . 7215ee9c7d9dc229d2921a40e899ec5f MD5 : [space] 800618943025315f869e4e1f09471012 MD5 : F e1671797c52e15f763380b45e841ec32 MD5 : e 2db95e8e1a9267b7a1188556b2013b33 MD5 : l 865c0c0b4ab0e063e5caa3387c1a8741 MD5 : i 4a8a08f09d37b73795649038408b5f33 MD5 : c 865c0c0b4ab0e063e5caa3387c1a8741 MD5 : i e358efa489f58062f10dd7316b65649e MD5 : t 0cc175b9c0f1b6a831c399e269772661 MD5 : a 4b43b0aee35624cd95b910189b3dc231 MD5 : r 865c0c0b4ab0e063e5caa3387c1a8741 MD5 : i 9033e0e305f247c0c3c80d0c7848c8b3 MD5 : ! 7215ee9c7d9dc229d2921a40e899ec5f MD5 : [space] 44c29edb103a2872f519ad0c9a0fdaaa MD5 : P 5058f1af8388633f609cadb75a75dc9d MD5 : . 5dbc98dcc983a70728bd082d1a47546e MD5 : S 5058f1af8388633f609cadb75a75dc9d MD5 : . 7215ee9c7d9dc229d2921a40e899ec5f MD5 : [space] d20caec3b48a1eef164cb4ca81ba2587 MD5 : L 0cc175b9c0f1b6a831c399e269772661 MD5 : a 7215ee9c7d9dc229d2921a40e899ec5f MD5 : [space] 69691c7bdcc3ce6d5d8a1361f22d04ac MD5 : M 7b774effe4a349c6dd82ad4f4f21d34c MD5 : u 2db95e8e1a9267b7a1188556b2013b33 MD5 : l e358efa489f58062f10dd7316b65649e MD5 : t 865c0c0b4ab0e063e5caa3387c1a8741 MD5 : i 7215ee9c7d9dc229d2921a40e899ec5f MD5 : [space] 7fc56270e7a70fa81a5935b72eacbe29 MD5 : A 7b8b965ad4bca0e41ab51de7b31363a1 MD5 : n 865c0c0b4ab0e063e5caa3387c1a8741 MD5 : i 7215ee9c7d9dc229d2921a40e899ec5f MD5 : [space] b2f5ff47436671b6e533d8dc3614845d MD5 : g 0cc175b9c0f1b6a831c399e269772661 MD5 : a 4b43b0aee35624cd95b910189b3dc231 MD5 : r 0cc175b9c0f1b6a831c399e269772661 MD5 : a 363b122c528f54df4a0446b6bab05515 MD5 : j e1671797c52e15f763380b45e841ec32 MD5 : e Cam acesta a fost challenge-ul. Mulțumiri @Usr6și la mulți ani cu întârziere @MrGrj, că am uitat :"> Resurse utile: https://ctfs.github.io/resources/topics/steganography/file-in-image/README.html https://gchq.github.io/CyberChef/ http://www.dcode.fr/ http://security.cs.pub.ro/hexcellents/wiki/kb/crypto/home http://ridiculousfish.com/hexfiend/
  17. 16 points
    Salut, Am mai discutat acest subiect, cred ca unele topicuri s-au pierdut din pacate, dar update-ul forumului este de bun augur, articole se pot scrie oricand. Pentru cei care mi-ati scris in ultima vreme aici, pe skype, facebook etc, incerc sa va raspund aici, forumul fiind public, poate ii ajuta si pe altii. Nu o sa reiau ce fac si cum fac, o sa incerc sa raspund la cateva intrebari. 1) Ai nevoie de firma pentru a incepe un business in dropshipping ? Daca vrei sa fie o chestie serioasa, iti recomand sa iti faci una, la inceput nu o sa iti trebuiasca, dar cu timpul o sa tranzactionezi din ce in ce mai multi bani si o sa ai nevoie de o firma, paypalul o sa puna intrebari si o sa devina stresant. 2) De ce cunostinte ai nevoie ? De utilizare a calculatorului si de limba engleza medie. E nevoie intradevar de un magazin online dar se gasesc 100000+ tutoriale nu iti trebuie cunostinte, sau poti folosi shopify ! 3) De unde iau produsele ? De oriunde ! Asta daca nu detii o companie. Daca ai o companie, ceea ce iti si recomand, suplieri se gasesc : sunt marketuri pentru asa ceva, un exemplu este Doba. Daca nu ai firma si totusi cauti un suplier, poti arunca un ochi aici : http://www.blackhatworld.com/blackhat-seo/f68-dropshipping-wholesale-hookups/ 4) Cat timp iti trebuie, eu am si servici..si... Si eu, da si eu am un job, intradevar e mai lejer dar am un program de 8 ore si totusi reusesc cumva sa ma ocup si de droipshipping. Prefer sa am si un job dar sa muncesc si la afacerea mea, pana strang destuii bani sa investesc in ceva mai bun, sau sa extind deja ceea ce am. 5) Am site, am tot planificat dar nu am cui sa vand ! Metoda cu bani + rapida : Dai bani ca sa faci bani ! = Facebook Ads, Google Adwords, campanii SEO. Metoda fara bani : pagini in social media -> distribuirea in toate grupurile din nisa ta + grupurile de tip "Buy & Sell", follow 4 follow, pin, etc...depinde de retea. Seo -> cred ca poti optimiza tu paginile fara ajutorul cuiva, sunt mult prea multe informatii pe internet, apoi poti incepe pasiv sa iti creezi si backlinkuri, semnale sociale, etc. 6) Ce sisteme de plati folosesti ?! Inainte de a avea firma foloseam doar paypal, pentru ca ofera celor care nu au un cont sa plateasca si cu cardul, acum am o firma si am integrate mai toate sistemele : Cu cardul, paypal, western etc. 7) Cat sa cresc pretul produselor ?! Formula mea : PRETUL PRODUSULUI + PRETUL CELUI MAI RAPID SHIPPING + 20 - 40 % - asta depinde si de valoarea produsului. 8) Ce fac daca cineva imi cere date de contact ?! Ai crescut in pestera ? Sau deh poate esti mut, atunci te inteleg, daca nu se aplice acestea, te duci frumos pe skype, iti cumperi un nr de telefon de la ei, il redirectezi catre nr tau de telefon si vorbesti cu oameni. 9) Ce fac daca nu stiu engleza ?! Pas ! 10) Cat profit faci si cat de repede ai inceput sa castigi bani ? Fac destul altfel nu ma tineam de business si nu imi faceam o companie pentru aceste lucruri. Cat de repede? Eu din prima zi pentru ca aveam cateva conturi de social media deja setate pentru aceste lucruri. 11) Poti sa imi dai un link cu siteurile tale si / sau paginile tale ?! NU. Acestea sunt cele mai comune intrebari care le primesc, dropshippingul e in ochii tuturor, nu e secret, toti il puteti face, asta ca sa nu mai spuneti ca nu se pot face bani pe internet! Cum spunea un bun prieten al meu ": Bani adevarati pe internet se fac din intermediere de servicii....ala are produsul, tu il vinzi, punct. Numai Bine si spor la bani !
  18. This post cannot be displayed because it is in a forum which requires at least 10 posts to view.
  19. 16 points
    Am revenit cu un nou index pentru RST. E scris in AngularJS, complet client side. Are notificari, am folosit acelasi sunet de pe forum pentru a nu va obisnui cu altul pentru acelasi lucru. Are si partea de notificari pentru quote-uri, rep si toate cele, pm-uri, pentru mods are si reported posts. Totul functioneaza prin autorefresh la 5 secunde. Daca vreti sa schimbati tema sau sa opriiti notificarile, aveti butoane in partea dreapta, sus. Sursa: https://github.com/RomanianSecurityTeam/IPBActivityWatcher Il puteti folosi pe propriul forum daca aveti ultima versiune de IPB. Print-uri: Dark: https://i.imgur.com/jxGrloe.png Light: https://i.imgur.com/6eQDyAJ.png
  20. 15 points
    Nu trebuie sa fii niciun rezident intr-un paradis fiscal. Folosesti doar servicii din afara tarii pentru plati (cont bancar, firma si toate cele), astfel incat in tara pulei sa nu figurati cu niciun venit. Nu declarati absolut niciun venit la statul roman ticalosit. Nu vi se ofera nimic pe banii aia. - Nu deschideti firme in romania. Veti deveni prostituate iar statul pestele vostru. 80% din bani merg la stat. - Nu va faceti conturi bancare si carduri in Romania. In orice moment va puteti trezi cu conturile blocate sau verificati de ticalosi. - Daca va intreaba vreo curva de functionara cu ce traiti, spuneti ca futeti babe contra mancare si bautura si ca puteti oferi discount in cazul in care e interesata. Da-i in pula mea, nu e treaba lor.
  21. 15 points
    Shellcode Compiler Shellcode Compiler is a program that compiles C/C++ style code into a small, position-independent and NULL-free shellcode for Windows. It is possible to call any Windows API function in a user-friendly way. Shellcode Compiler takes as input a source file and it uses it's own compiler to interpret the code and generate an assembly file which is assembled with NASM (http://www.nasm.us/). Shellcode compiler was released at DefCamp security conference in Romania, November 2016. Link: https://github.com/NytroRST/ShellcodeCompiler
  22. This post cannot be displayed because it is in a forum which requires at least 10 posts to view.
  23. 15 points
    :)))))))))) Stii ce ar fi tare ? Sa fie un copil cu ... acunetix.
  24. 14 points
    Salut, Nu mai sunt atat de activ ca inainte pe forum dar incerc sa intru la 2-3 zile - insa primesc in continuare mesaje pe tema dropshippingului - ce tin sa va zic ca ca aceast domeniu nu este pentru oricine - ai nevoie de ceva capital ca sa mearga treburile rapid, de o platforma, plugins etc - depinde ce folosesti - dar mai ales de cadru legal. Odata ce faci mai multi banuti incep sa apara probleme, paypal iti limiteaza contul, stripe cere dovezi si tot asa, plus taxe de platit etc. Observ ca multi nu se descurca, altii renunta cand aud de cadru legal si asa mai departe insa toata lumea vrea sa faca bani si nu inteleg de ce lumea nu merge pe "old fashion way" blog sau aflieri cu amazon sau ceva de genu pentru ca merge, eu vad asta in fiecare zi, mai exact, o simt la buzunar.. La un moment dat am renuntat la aflieri si adsense si amazon si media.net dar am reluat de cateva luni si merge chiar foarte bine a-si putea spune. Nustiu daca frecventati Flippa insa eu o fac zilnic si gasesc acolo diferite chilipiruri in materie de NISE, am si vandut cateva site-uri, am mai cumparat unele insa pentru mine acest website e ca un fel de cutia pandorei. Acum ceva timp s-a vandut un site cu 4000 de dolari daca nu ma insel, era o pagina statica, alba complet cu un articol de 700 de cuvinte... a fost mind fuck, am verificat site-ul, avea 26 de backlinkuri, pareau naturale...cele mai multe de la directoare web. Competitie 4-5 siteuri...poate.. Next Step pentru mine, am cumparat un domeniu si hosting (19$ pe an pentru amundoua de la NameCheap) am incarcat o tema, am contactat o firma care imi scrie articole (7.50$ / 500 cuvinte) si am comandat 5 articole, unul de 2000, si restul de 500. Am luat un pachet seo de pe BHW unde am platit 130$. Investitia finala a fost undeva la 200 de dolari, plus minus. Asta am facut in prima saptamana, apoi NIMIC, l-am lasat sa doarma acolo. Cati bani face? Nu mult, in a 3-a luna e ok. Si asta e doar amazon, cu ce am mai facut din media.net ajung la 200 si asta e doar un site. Trafic doar din google - organic, fara social media fara nimic, nisa e cam "strange" si nustiu ce accounturi a-si putea face. Acum inmultiti cu 4 site-ui ca atatea am pe partea asta deocamdata... ------------------------------------------------- Short Story - Cu ce ajuta 1000223 topicuri cu 12232 de intrebari daca x lucru e mort, daca se mai poate daca etc.. totul merge, doar sa te tii. Mergi pe kwfinder cautati un cuvant / nisa usor de rankat si da drumu la treaba. Un prieten ma facea idiot aseara cand eu ii spuneam ca a face bani pe net e joaca de copii - poate e doar parerea mea - aici nu vorbesc de sute mii de doalri...ci de bani in general...e simplu, doar apuca-te de treaba si tine-te de ea. Daca renunti si la fumat 1 saptamana sau la scuipat seminte s-ar putea sa ai bani de domeniu si hosting sau orice altceva. Numai Bine.
  25. 14 points
    Salut ! Am postat acum ceva timp ca lucrez la un proiect si aveam nevoie de testeri pentru aplicatie. Cred ca am ajuns la o versiune momentan stabila. (mereu se poate mai bine...) Ce face aplicatia? - Deschide link-uri in Google Chrome ( Simplu nu ? practic e mai greu ) Cum ? - Cu referrer customizabil (de la facebook,google,youtube la ce vrei tu) - Cu User-Agent random (Firefox,Chrome,Opera,Safari si dispozitive mobile) - Dimensiunea ferestrei (random) - Mouse Scroll pe pagina - Click pe un element ales din pagina - Timp la alegere intre (10 si 600 secunde) - Cautare pe Google / Youtube si Click ( Promovare Keywords & SEO ) - Click pe Youtube Play si Skip Ad (automat) Ip-uri unice din Romania ? - Da , fiecare utilizator din Romania va vizualiza un link doar 1 data la 24 de ore . Cat costa ? - E gratis (este o comunitate , ne ajutam unii pe altii) Necesita : -Java -Google Chrome (versiune recente) Am facut un tutorial (sper sa fie de ajutor) : Pentru membrii RST ofer suport si bonusuri. Daca sunteti interesati va rog sa ma contactati. Rog un administrator sa verifice si sa confirme daca este ok. Link : https://video-seo.ro/
  26. 14 points
    Cred ca ar fi interesant sa discutam punctele tale de vedere. 1. Da-ti seama ca probleme apar si la corporatii precum Yahoo, Microsoft, Google. Inclusiv probleme de securitate grave. Asta e doar un forum. Avem familie, job si nu e timp asa berechet pentru a face ceva pe el. In plus, nu avem bani precum corporatiile mentionate anterior. 2. Esti exemplul clasic de Roman care nu isi face curat in fata portii si asteapta primaria sa vina pentru a face asta. Pune osul la munca daca vrei sa se schimbe ceva. Suntem un popor de curve, lenesi, prosti, fricosi, ciorditori si smenari. Desigur, nu ne asumam niciodata vina pentru ceva. Clasa politica e vinovata ca esti tu prost. Hahaha. 3. S-au pierdut ceva informatii de pe forum odata cu migrarea lui pe alta platforma. Asta e, am pierdut mai multe in viata cu totii. Suntem vai de pula noastra si ne-a fost furata inclusiv tara iar tu te vaiti pe o bucata de forum ca au disparut ceva posturi (cel mai probabil cu link-uri porno sau jocuri). 4. Sunt baieti aici care au 14-17 ani si stiu matematica, fizica si programare mai mult decat multi olimpici. Intre uscaturi poti gasi si oameni buni (daca stii sa-i cauti). Asta a fost si principalul motiv pentru care nu ne-am bagat pula-n el de forum. 5. Care din ei ? 6. Deci nu esti programator. Ma intreb care e profilul tau. Ti-ai facut si user nou. Generatie de barbati pizdificati.
  27. 14 points
    1. Nu imi par deloc mici preturile . 2. Dupa ce castigi licitatia, poate dura si 2 ani pana intri in posesia bunului . 3. La apartamente e jale mare , majoritatea nu le poti vedea inainte de licitatie . 4. Cand vei vedea ca dai afara in ploaie 2- 3 copii plangand , nu cred ca o sa mai ai acelasi entuziasm . 5. Majoritatea celor executati sunt oameni onesti , nu merita asta . Pentru niste bancnote sa distrugi viata unei familii , chiar nu mi se pare in regula.
  28. 14 points
    Salut, Am pont de facut bani: munca. Incercati, si dupa 1an veniti sa-mi spuneti daca a functionat.
  29. 14 points
    Am facut un index nou pentru RST, daca va place il fortam pe Nytro sa-l puna. Daca nu, se ignora. Ce ziceti? Print: i.imgur.com/euxLiKP.png Demo: http://webtoil.co/rst_index_preview/ P.S. E responsive.
  30. 14 points
    Data: 27.12.2013 Autor: Gecko Acest tutorial este destinat incepatorilor, dar exemplele si link-urile sunt folositoare oricui. Regex (sau regexp; prescurtare pentru regular expressions) este o secventa de caractere care alcatuiesc un tipar (pattern) de cautare. Daca sunteti programatori, il regasiti frecvent in limbajele de programare si/sau scripting si in editoarele de text. Poate fi folosit in cautari simple, dar, in principal, este folosit pentru a extrage date dintr-un sir lung de caractere (de exemplu, sursa unei pagini HTML), asta veti invata sa faceti si voi cu ajutorul acestui tutorial. Cu siguranta ati vazut un pattern regex pe undeva daca sunteti programatori, chiar si amatori. E acel lucru de care se fereste toata lumea la inceput pentru ca nimeni nu-l intelege, dar dupa ce intelegeti ce este si cum sa compuneti unul, o sa observati si singuri cat de puternic este. De asemenea, de mentionat este ca toate exemplele principale din acest tutorial sunt scrise in functie de limbajul PHP. A. Aplicabilitate As dori sa precizez ca regex difera in aplicabilitate in functie de limbaj sau editor, dar nu cu mult, si cu siguranta dupa ce veti intelege in ce constau aceste diferente, le veti putea gasi usor in documentatia aferenta limbajului sau cu ajutorul prietenului Google. De asemenea, voi incerca sa precizez cand apar astfel de diferente. Un alt lucru important de retinut este ca puteti folosi un pattern in mai multe scopuri. (1) Puteti pur si simplu sa verificati daca exista intr-un sir, (2) puteti sa extrageti diferite parti dintr-un sir sau (3) puteti inlocui anumite parti dintr-un sir. Iata si cate un exemplu, in PHP: 1. Verifica daca exista cuvantul "dolor" in sirul "Lorem ipsum dolor sit amet" preg_match( '/dolor/', 'Lorem ipsum dolor sit amet' ); Nota: Acel caracter '/' de la inceput si de la sfarsit nu este pus acolo ca sa va incurce pe voi mai tare. Regex are nevoie de un delimitator ca sa stie unde incepe pattern-ul si unde se termina. Daca aveti nevoie sa folositi caracterul '/' in pattern-ul vostru de cautare, puteti sa-l folositi cu escape: '\/'. Voi explica despre caracterele care necesita escape mai tarziu mai in detaliu. 2. Verifica daca exista cuvantul "dolor" in sirul "Lorem ipsum dolor sit amet", iar daca aceasta conditie este indeplinita, pattern-ul este returnat in variabila $rezultat preg_match( '/dolor/', 'Lorem ipsum dolor sit amet', $rezultat ); 3. Inlocuieste cuvantul "dolor" cu "RST" preg_replace( '/dolor/', 'RST', 'Lorem ipsum dolor sit amet' ); B. Elemente 1. Caractere alfa-numerice Literele si numerele sunt cele mai des folosite caractere pentru a crea un pattern. Considerand urmatorul sir de caractere: 'Acesta este un tutorial despre regex.' Dupa cum am observat anterior, cu regex putem verifica daca exista un anumit sir in sirul dat: preg_match( '/dolor/', 'Acesta este un tutorial despre regex.' ); Aceasta bucata de cod va returna false pentru ca nu exista nimic in sirul de caractere dat asemanator pattern-ului de cautare. La fel putem cauta dupa numere. Daca avem urmatorul sir: '007 este un film artistic.' Si vrem sa cautam "007", procedam in felul urmator: preg_match( '/007/', '007 este un film artistic.' ); Iar de data aceasta va returna true pentru ca "007" exista in sirul dat. --- Nu am inceput cu aceste exemple banale, doar ca sa va fac sa cititi chestii in plus, ci pentru ca asa puteti vizualiza in minte cel mai bine cum functioneaza regex. Ce urmeaza in continuare sunt doar caractere care substituie alte caractere pentru a diminua lungimea pattern-ului, dar principiul de functionare este acelasi ca la cele alfa-numerice. --- 2. Caractere speciale 2.1. Caractere non-printabile In aceasta categorie intra new line (linie noua sau sfarsit de rand), caracterul tab si altele. "\n" reprezinta un new line "\t" reprezinta un tab orizontal "\v" reprezinta un tab vertical "\r" reprezinta un carriage return etc. Aceste caractere nu depinde de regex, ele sunt pur si simplu caractere speciale existete in limbajele de programare, asa ca pentru o lista completa va trebui sa cautati pe Google. Un exemplu pentru a identifica un new line intr-un sir este urmatorul: Considerand urmatorul sir: $sir = 'Now that there is the Tec-9, a crappy spray gun from South Miami. This gun is advertised as the most popular gun in American crime. Do you believe that shit?'; Pentru a cauta, vom folosi urmatoarea instructiune: preg_match( '/\n/', $sir ); Aceasta va returna true din motive sper ca evidente pana acum. 2.2. Caractere care necesita escape Escape inseamna acel '\' inaintea unui caracter. Exemplu: ' \' '. Majoritatea ar trebui sa fiti familiarizati cu situatiile in care trebuie sa folositi escape, doar ca regex este diferit asa ca exemplele urmatoare: '\'', "\"" sau caracterele non-printabile nu sunt singere situatii in care este necesar caracterul de escape. Regex contine diferite caractere care au efectul scontat doar daca sunt scrise cu '\' in fata. "\d" (digit) selecteaza un caracter numeric Exemplu: preg_match( '/\d/', 'Ana are 7 mere acre.' ); Aceasta secventa va returna true pentru ca exista acel 7 in string pe care acest caracter regex il cauta. "\w" (word) selecteaza un caracter ce face parte dintr-un cuvant (o litera, un numar sau un underscore '_', daca acestea sunt scrise legate de o litera, adica daca nu exista un spatiu intre ele) - acesta poate include mai multe caractere pe care le poate considera cuvinte, asta depinde de implementarea de regex Exemplu: preg_match( '/\w/', 'Ana are 7 mere acre.' ); Aceasta secventa va returna true din cauza primului caracter "A" din sir. "\s" (white space) selecteaza un spatiu - si el depinde de diferitele implementari de regex, dar, in general, lumea il foloseste pentru a selecta un spatiu normal " " Exemplu: preg_match( '/\s/', 'Ana are 7 mere acre.' ); Aceasta secventa va returna true din cauza primului spatiu de dupa cuvantul "Ana". Pentru toate cele trei exemple de mai sus exista si variantele care selecteaza pe dos. "\D" selecteaza orice inafara de cifre "\W" selecteaza orice inafara de caractere dintr-un cuvant "\S" selecteaza orice inafara de caractere de tip spatiu 2.3. Caracterul "." Acest caracter functioneaza ca si cele despre care am vorbit anterior, dar charset-ul este mai complex. Practic, selecteaza absolut orice caracter, inafara de cel de new line. Dar, din nou, depinde de implementarile regex. Exemplu: preg_match( '/./', 'Ana are 7 mere acre.' ); Din moment ce exista caractere diferite de cel de new line, aceasta secventa va returna true. 3. Secvente de caractere Tot ce am vazut pana acum selecteaza cate un singur caracter, acum vom trece la lucruri mai complicate si vom invata cum sa compunem intr-adevar un pattern regex. 3.1. Elemente de repetitie La toate caracterele amintite anterior se pot adauga unul din caracterele urmatoare: "+" sau "*". 3.1.1. Caractere de repetitie "+" inseamna ca orice caracter ce il precede exista in sir cel putin odata. "*" inseamna acelasi lucru, cu mentiunea ca acel caractere care il precede poate lipsi din sir si expresia va returna true. Sa vedem cateva exemple pentru a intelege mai bine. preg_match( '/\s+/', 'Security' ); Returneaza false pentru ca "\s+" presupune sa existe in sir cel putin un spatiu. In schimb... preg_match( '/\s*/', 'Security' ); Returneaza true pentru ca "*" nu presupune neaparat ca spatiul acela sa existe. Din nou, aceste doua caractere se pot folosi pentru orice caracter, sau grupuri de caractere, cum vom invata mai tarziu. 3.1.2. Caracterele "{" si "}" Pe langa "+" si "*", mai exista un mod prin care putem delimita marimea unui grup de caractere. Aceasta metoda este mult mai precisa. "\w{3}" aceasta sintaxa va selecta un cuvant de exact 3 caractere "\w{3,6}" aceasta sintaxa va selecta un cuvant de minim 3 si maxim 6 caractere preg_match( '/\w{8}/', 'Security', $rezultat ); $rezultat[0] contine "Security", pentru ca pattern-ul cauta un cuvant de 8 caractere. preg_match( '/\w{10}/', 'Security', $rezultat ); $rezultat[0] este gol, pentru ca nu exista niciun cuvant de 10 caractere in sir. preg_match( '/\w{4,20}/', 'Security', $rezultat ); $rezultat[0] contine "Security" pentru ca selecteaza un cuvant cu numarul de caractere intre 4 si 20. Retineti, un cuvant, in regex, este un sir de litere, numere si caractere underscore. Si nu va selecta primele 4 caractere (numarul minim) din sir, ci tot ce inseamna cuvant de la inceputul cuvantului "Security" pana la un caracter ce nu apartine charset-ului "\w", sau al 20-lea dupa primul selectat. E incurcata fraza asta, dar o veti intelege daca o veti citi de mai multe ori. E logica. 3.2. Grupuri de caractere Cu regex putem sa selectam grupuri de caractere definite prin mai multe charset-uri puse laolalta. De exemplu, daca vrem sa selectam un cuvant succedat de un simbol "#", o putem face astfel: preg_match( '/\w+\#+/', 'sir' ); Nota: Deoarece exista diferente in implementarile regex, ca sa fiti siguri ca toate simbolurile sunt interpretate cum ne dorim, putem adauga un caractere de escape in fata. Simbolurile nu au semnificatii speciale daca le scriem cu escape, asa ca '\#' este acelasi lucru cu '#'. Am precizat acest lucru pentru ca, in PHP (de exemplu), nu doar caracterul '/' se poate folosi pentru a delimita pattern-ul, ci se poate folosi orice alt simbol, daca este acelasi si la inceput si la sfarsit. preg_match( '#\w+\#+#', 'sir' ); Este acelasi lucru cu exemplul anterior, dar s-a folosit caracterul '#' pentru delimitarea pattern-ului, iar daca nu am fi tracut un escape in fata simbolului nostru '#', am fi stricat pattern-ul. Caracterul '/' se foloseste cel mai frecvent pentru ca in majoritatea limbajelor de programare a fost implementat cu acest scop, dar PHP ne permite sa folosim orice alt simbol. Este bine de stiut acest lucru pentru ca daca aveti un pattern cu multe simboluri '/', nu are rost sa-l folositi si ca delimitator si cu escape peste tot. Din nou, acest lucru se aplica in cazul PHP, nu stiu in care alt limbaj mai este posibil, dar va las pe voi sa aflati, in functie de ce folositi. Ca sa dam si un exemplu, o sa facem o simpla instructiune de verificare sa vedem daca un string este un URL: preg_match( '@https*://\w+\.\w{2,4}/*@', 'https://rstforum.com/' ); In primul rand, am spus ca e bine sa facem escape la toate simbolurile pentru a fi siguri ca le interpreteaza cum trebuie, dar am omis asta de data aceasta pentru a putea sa intelegeti mai usor pattern-ul. In al doilea rand, nu folositi pattern-ul acesta pentru a verifica URL-uri in situatiile reale pentru ca nu este gata, inca nu am explicat indeajuns de multe elemente regex pentru a ajunge la o instructiune fara greseala. Pattern-ul de mai sus nu verifica si dupa numere in numele domeniului, nu verifica daca exista www. la inceput s.a.m.d. Observam in prima faza observam: '@https*@' Asta inseamna ca sirul trebuie sa inceapa cu "http" si poate avea sau nu caracterul "s" in continuare. Apoi avem: '@://@' Care cauta exact ce se vede. In continuare: '@\w+@' Care selecteaza un cuvant de un caracter, sau mai mult, dintr-un cuvant. '@\.@' Despre acesta nu am aflat anterior, dar consider ca este pur si simplu self-explanatory. Reprezinta un caracter ".". I-am pus un escape in fata doar ca sa nu fie interpretat ca fiind caracterul regex ".", care selecteaza aproape orice caractere. '@\w{2,4}@' Cum nu stiu sa existe nume de domenii mai mici de 2 caractere in lungime si mai mari de 4, am precizat ca dupa punct trebuie sa existe un cuvant de minim 2 si maxim 4 caractere. Acest ultim pattern exemplifica cel mai bine un grup de caractere. Aceste grupuri sunt folosite pentru a crea un pattern de detectie mai puternic decat daca am fi pus un simplu '.*' pentru a selecta tot ce se afla in string. Aceste tipuri de pattern-uri sunt ceea ce fac regex sa conteze in programare. Am fi putut da explode() de nenumarate ori pentru a verifica acelasi lucru in mult mai multe linii, dar aceasta instructiune preg_match() se poate pune intr-un if si asta e tot. Din nou, nufolositi ultimul exemplu in aplicatii reale pentru ca nu e complet. 3.3. Dictionare de caractere Am invatat in pasul anterior ca puteti crea o anumita ordine cand creati patternul, dar cum facem daca vrem sa selectam un anumit grup din sir care sunt reprezentate de mai multe elemente regex ? Raspunsul e: Simplu, folosim caracterele "[" si "]". Tot ce se afla in interiorul acestor doua caractere este considerat un dictionar, iar in sir se va cauta un caracter ce face parte din acest dictionar. 3.3.1. Simboluri speciale in interiorul "[]" "^" pus la inceput, inseamna ca tot ce se afla in continuare, pana la "]", este ignorat in cautarea in sir. Practic inseamna "selecteaza-mi tot INAFARA de ce este intre aceste doua paranteze patrate". preg_match( '/[^\d]/', 'RST' ); Acesta va returna true pentru ca este in cautarea oricarui caracter diferit de "\d" (cifre). De aici ne putem da seama ca "[^\d]" este de fapt echivalent cu "\D", cu mentiunea ca nu e asa. "\D" este de fapt un alias pentru "[^\d]", nu invers. La fel si "\W" pentru "[^\w]" sau "\S" pentru "[^\s]". "-" (minus) alcatuieste intervaluri intre caractere. "[0-7]" selecteaza toate cifrele de la "0" la "7", "[a-q]" selecteaza toate caracterele de la "a" la "q", "[A-Q]" selecteaza toate caracterele de la "A" la "Q" s.a.m.d. Puteti forma ce intervale vreti: "[a-b]", "[a-c]", "[a-d]" ... Ajungem din nou la alias-uri si aflam ca "\d" este acelasi lucru cu "[0-9]" s.a.m.d. 3.3.2. Secvente de caractere in interiorul "[]" Dupa cum am spus, "[" si "]" creaza un dictionar, deci putem pune mai multe selectoare laolalta. Nota: "." si "+", intre "[]" sunt simple caractere, nu mai au niciun efect special. Ca sa imbunatatim un pic checker-ul de mai devreme de adrese URL, il vom modifica astfel: preg_match( '@https*://[a-z0-9\-]+\.[a-z]{2,4}/*@', 'https://rstforum.com/' ); Totul este identic pana la: '/[a-z0-9\-]+/' Acum, inaintea punctului din domeniu, verificam daca exista litere, numere si minusuri. A se observa minusul precedat de escape; dupa cum am spus, minusul creaza intervaluri si nu vrem sa fie interpretat gresit, asa ca ii vom trece escape in fata pentru a fi siguri de rezultat. Nota: Fiind un dictionar, elementele din el nu vor fi cautate in aceeasi ordine in care au fost adaugate, astfel ca "[a-z0-9\-]" este cu totul diferit de "a-z0-9\-". Aceasta este partea interesanta la dictionare, acest fapt trebuie retinut pentru a va da seama cand le folositi. Din acest motiv, daca as fi adaugat si punctul in dictionar, acesta nu ar mai fi fost obligat sa se afle la sfarsitul dictionarului, si astfel ar strica scopul checker-ului. In continuare observam inca o diferenta: '/[a-z]{2,4}/' Am modificat aceasta bucata pentru ca "\w" selecta si numere sau caractere underscore, si nu exista asa ceva in TLD-uri, asa ca le-am ignorat si astfel checker-ul nostru este mai puternic. --- Putem obtine un numar foarte mare de combinatii diferite, dar si cele extrem de simple sunt puternice. Un exemplu: '/gr[ae]y/' Nu va selecta "graey" sau "greay", dupa cum observat, este un dictionat nesuccedat de un element de repetitie ("*", "+" sau "{}"), deci in prima faza ar trebui sa va dati seama ca va selecta un singur caracter. Deci rezultatele pe care se aplica sunt "gray" si "grey". 3.3.2.1. Exceptii de caractere in interiorul "[]" Exista posibilitatea de a selecta un intreg grup de charset-uri, cu cateva exceptii setate de noi. Cu ajutorul pattern-ului urmator: '/[a-z-[aeiuo]]/' Putem selecta doar consoanele din intervalul "a-z". Tot in acest exemplu observam ca "-" mai are o semnificatie in interiorul "[]", aceea de diferenta, exact ca in matematica. Practic calculeaza "alfabet - vocale = consoane". Charsetul unicode Se presupune despre acest charset ca ar contine toate caracterele din toate limbile (vii sau moarte). Puteti folosi acest charset pentru a create directionare extrem de spicifice pentru ce vreti sa cautati intr-un sir. Pentru a selecta ceva dintr-un charset se foloseste "\p" sau "\P" care este echivalent cu "^\p", urmate the numele a ceea ce vreti sa selectati din charset intre "{}". Un dictionar cu toate caracterele latine arata cam asa: '/[\p{Latin}]/' Daca vreti sa selectati acelasi lucru dar fara cifre: '/[\p{Latin}-[\p{Nd}]]/' "Nd" este prescurtare pentru "not digit" Exista extrem de multe instructiuni pentru aceasta categorie, extrem de multe constante pentru "{}" si extrem de mutle combinatii pe care nu le pot include aici pentru ca as distrage atentia de la ideea principala. Puteti vedea mai multe proprietati si caractere aici: Unicode Properties and Caracters Pentru a folosi "\p" in PHP, trebuie sa specificati ca intentionati sa folosi charsetul unicode in felul urmator: preg_match( '/[\p{Latin}-[\p{Nd}]]/[b]u[/b]', 'Sir' ); PHP si alte limbaje suporta acest tip de instructiuni suplimentare dupa pattern-ul regex. Majoritatea includ cateva by default. 3.3.2.2. Intersectii de caractere in interiorul "[]" Mi se pare important sa stiti ca exista, dar sunt folosibile doar in Perl si Ruby (versiunea 1.9+). Pentru a scrie exemplul cu alfabetul fara vocale de mai devreme in modul acesta: '/[a-z&&[^aeiuo]]/' 3.3.3. Simboluri speciale in exteriorul "[]" Tot ce se aplica la orice alt tip ce charset-uri ("\d", "\w", "\s" etc) se aplica si aici. Exemple: '/[a-z]+/' '/[a-z]*/' '/[a-z]{1,3}/' 4. Ancore Ancorele sunt elemente care specifica unde ar trebui sa inceapa si unde sa se termine un sir. "^" determina inceputul sirului "$" determina sfarsitul sirului "\b" determina limita pentru un cuvant De exemplu: preg_match( '/Security/', 'Romanian Security Team' ); Returneaza true pentru ca "Security" exista undeva in sir. Dar daca vrem sa verificam daca sir-ul incepe si se termina in "Security" (adica este egal cu el), vom proceda astfel: preg_match( '/^Security$/', 'Romanian Security Team' ); Acesta va returna false pentru ca mai exista caractere si la stang si la dreapta de "Security". Se pot folosi si cate unul: preg_match( '/^Security/', 'Romanian Security Team' ); sau preg_match( '/Security$/', 'Romanian Security Team' ); Care returneaza false amandoua. Daca ati fost atenti, ati observat ca "^" are doua intelesuri diferite in regex. Da, e adevarat, si asta pentru ca "[]" este atat de complex incat majoritatea sensurilor elementelor regex se schimba inauntru pentru a forma altele relative pentru "[]". "\b" e acelasi lucru ca si "^" si "$" doar ca nu determina inceputul sirului si inceputul sau sfarsitul unui cuvant. Ca si la alte elemente, "\B" este opusul lui "\b". Pentru a demonstra cel mai bine importanta lui "\b", vom face o functie care cenzureaza un cuvant doar atunci cand e scris separat, nu si atunci cand face parte dintr-un altul. preg_replace( '/\bpula\b/', '****', 'Cuvantul "pula" va fi cenzurat, dar nu si in "manipulare".' ) Rezultatul va fi 'Cuvantul "****" va fi cenzurat, dar nu si in "manipulare".'. 5. Caracterele "|" si "?" si grupari "()" parenteze rotunde se pot folosi in gruparea unor charset-uri "|" are rol de "OR" (in traducere: "SAU") "?" face ca ceea ce il precede sa fie optional Pentru a cauta intr-un string cuvintele "RST" sau "Security", vom proceda astfel: preg_match( '/RST|Security/', 'RST rullz.' ); sau preg_match( '/RST|Security/', 'Security rullz.' ); Vor retuna ambele true pentru ca in primul exista "RST" iar in al doilea "Security". Daca avem mai multe cuvinte de cautat, putem folosi "()" pentru a le grupa: preg_match( '/(RST|Romanian Security Team)/', 'Security rullz.' ); Acest exemplu va returna false pentru ca este cautat "RST" sau "Roamnian Security Team", iar in sir gasim doar o parte din a doua optiune, ceea ce nu e de ajuns. Caracterul "?" este folositor cand cautam ceva care ar putea avea o componenta in plus, dar nu suntem siguri: preg_match( '/RST(: Romanian Security Team)?/', 'RST' ); preg_match( '/RST(: Romanian Security Team)?/', 'RST: Romanian Security Team' ); Ambele vor returna true pentru ca ": Romanian Security Team" este optional. --- "()" mai eu o semnificatie cand vreti sa returnati o anumita parte dintr-un pattern in variabila de rezultat. Din exemplul urmator: preg_match( '/\d{1,2} \w+ \d{4}/', '27 decembrie 2013', $rezultat ); Variabila $rezultat va contine un array cu urmatoarele in el: ( [0] => '27 decembrie 2013' ) Dar, daca folosim "()" pentru a grupa elementele din pattern: preg_match( '/(\d{1,2}) (\w+) (\d{4})/', '27 decembrie 2013', $rezultat ); $rezultat va contine: ( [0] => '27 decembrie 2013' [1] => '27' [2] => 'decembrie' [3] => '2013' ) Deci prima optiune va fi mereu rezultatul complet al pattern-ului, iar urmatoarele rezultatele individuale in functie de cate "()" am folosit si la ce. Putem chiar si inlocui anumite parti dintr-un sir pe baza unui pattern: preg_replace( '/(\d{1,2} \w+) \d{4}/', '$1 2014', '27 decembrie 2013' ); Cand folosim replace, tot ce trecem in paranteze primeste o anumita variabila incepand de la "$1" pana la cate paranteze avem. In exemplul de mai sus am grupat ziua si luna si le-am folosit in rezultat prin variabila "$1" alaturi de un nou an. Acea linie de cod va returna "27 decembrie 2014". --- Folosind ce am invatat pana acum, putem imbunatati sistemul nostru de a verifica daca un sir este un URL valid: preg_match( '@^(https?://[a-z0-9\-.]*[a-z0-9\-]+\.[a-z]{2,4}/?).*@i', 'https://rstforum.com/', $rezultat ); Acel "i" de dupa pattern este o optiune speciala prin care precizam ca pattern-ul este 'case insensitive', deci va trata "A-Z" la fel ca "a-z". Asta pentru ca un URL este valid chiar daca este scris cu litere mari sau mici si nu are sens sa mai precizam si noi peste tot si "A-Z" in aditie la "a-z". Incepem prin a folosi alt caracter pentru a delimita pattern-ul pentru ca "/" il folosim in pattern si nu vrem sa le incurcam. '@@i' In continuare vom grupa tot ce scriem pana la ultimul "/" de dupa TLD pentru ca vrem sa-l retinem intr-o variabila separat, posibil il vom folosi mai tarziu undeva in vreun proeict. Dupa grupare adaugam ".*" pentru a selecta tot ce a mai ramas dupa TLD si "/". '@().*@i' Inainte de grupare adaugam caracterul "^" pentru ca un URL nu poate contine nimic inainte de http. '@^().*@i' In grupare incepem sa scriem inceputul fiecarui URL: '@^(http).*@i' Continuam cu "s?" pentru ca nu toate URL-urile sunt secure, deci "s" nu va exista mereu in componenta URL-ului: '@^(https?).*@i' Adaugam "://" care e constant: '@^(https?://).*@i' Acum ne gandim la subdomenii (si "www." se catalogheaza ca fiind subdomeniu in cazul asta), pot avea in componenta aceleasi lucruri ca domeniul. De data asta nu vom pune punctul dupa subdomeniu pentru ca asta ar insemna sa limitam URL-ul la un singur subdomeniu, ceea ce nu ar fi bine, de asta adaugam "." intre "[]" de la subdomeniu. Practic selecteaza tot ce vine dupa "://" si are "[a-z0-9\-.]+" in componenta. Dupa asta adaugam un "*" pentru ca subdomeniul poate lipsi. '@^(https?://[a-z0-9\-.]*).*@i' In continuare avem ce aveam si inainte pentru a manageria domeniul si TLD-ul. '@^(https?://[a-z0-9\-.]*[a-z0-9\-]+\.[a-z]{2,4}).*@i' Iar in cele din urma, adaugam "/?" pentru ca si acest simbol poate lipsi. '@^(https?://[a-z0-9\-.]*[a-z0-9\-]+\.[a-z]{2,4}/?).*@i' Cateva teste si rezolutate ale acestui pattern pe URL-uri reale: #1. Exemplu: preg_match( '@^(https?://[a-z0-9\-.]*[a-z0-9\-]+\.[a-z]{2,4}/?).*@i', 'https://rstforum.com/', $rezultat ); #1. Rezultat: Array ( [0] => https://rstforum.com/ [1] => https://rstforum.com/ ) Primul este rezultatul pattern-ului integ, iar al doilea rezultatul dintre "()". #2. Exemplu: preg_match( '@^(https?://[a-z0-9\-.]*[a-z0-9\-]+\.[a-z]{2,4}/?).*@i', 'https://rstforum.com/forum/', $rezultat ); #2. Rezultat: Array ( [0] => https://rstforum.com/forum/ [1] => https://rstforum.com/ ) #3. Exemplu: preg_match( '@^(https?://[a-z0-9\-.]*[a-z0-9\-]+\.[a-z]{2,4}/?).*@i', 'http://www.g3x0.com', $rezultat ); #3. Rezultat: Array ( [0] => http://www.g3x0.com [1] => http://www.g3x0.com ) #4. Exemplu: preg_match( '@^(https?://[a-z0-9\-.]*[a-z0-9\-]+\.[a-z]{2,4}/?).*@i', 'http://www.g3x0.com/hireme/', $rezultat ); #4. Rezultat: Array ( [0] => http://www.g3x0.com/hireme/ [1] => http://www.g3x0.com/ ) #5. Exemplu: preg_match( '@^(https?://[a-z0-9\-.]*[a-z0-9\-]+\.[a-z]{2,4}/?).*@i', 'http://sub.subdomeniu.g3x0.com/hireme/', $rezultat ); #5. Rezultat: Array ( [0] => http://sub.subdomeniu.g3x0.com/hireme/ [1] => http://sub.subdomeniu.g3x0.com/ ) 6. Elemente avansate pentru grupari 6.1. Elementul "?:" Acest element poate fi folosit pentru a fi ignorate anumite grupuri din rezultate. Exemplul urmator: preg_match( '/(\d{1,2})(\w+)(\d{4})/', '27decembrie2013', $rezultat ); Returneaza: Array ( [0] => 27decembrie2013 [1] => 27 [2] => decembrie [3] => 2013 ) Dar daca nu avem nevoie zi, putem aplica "?:" la inceputul grupului si nu mai apare printre rezultate: preg_match( '/(?:\d{1,2})(\w+)(\d{4})/', '27decembrie2013', $rezultat ); Returneaza: Array ( [0] => 27decembrie2013 [1] => decembrie [2] => 2013 ) Exemplul acesta nu este unul prea bun pentru a demonstra necesitatea unei astfel de instructiuni, pentru ca putem pur si simplu sa omitem prima grupare, astfel: preg_match( '/\d{1,2}(\w+)(\d{4})/', '27decembrie2013', $rezultat ); Iar rezultatul ar fi acelasi. Dar exista si situatii care necesita grupari peste tot, iar atunci veti sti ce sa folositi. 6.2. Elementul "?|" Uneori va trebui sa integrati grupuri in alte grupuri, iar pentru asta va trebui sa folositi "(?|". Exemplul urmator arata o incercare clasica de a folosi operatorul "|" intr-un grup: preg_match( '/(?a|b|c)z/', 'az', $rezultat ); Desi acesta pare in regula, nu este. Acest exemplu va returna o eroare asemanatoare cu: Warning: preg_match() [function.preg-match]: Compilation failed: unrecognized character after (? or (?- at offset 2 on line 1 Iata un exemplu bun care face ceea ce ne dorim: preg_match( '/(?|a|b|c)z/', 'az', $rezultat ); A se observa operatorul "|" in plus, imediat dupa "?". Exista si o parte ciudata aici, totusi. Daca ne uitam la ce returneaza in "$rezultat", vom observa ca nu avem un index separat pentru ce este in "(?|)". Array ( [0] => az ) Pentru a se obliga afisarea un rezultat, va trebui sa grupam elementele invidual in "(?|)": preg_match( '/(?|(a)|(|(c))z/', 'az', $rezultat ); Acum va returna: Array ( [0] => az [1] => a ) De asemenea, nu este necesar ca absolut toate elementele sa fie grupate individual pentru a afisa acel idnex in plus. De fapt, putem sa omitem unele si sa obtinem rezultate interesante, depinde de situatie. Iata cateva exemple: #1. Exemplu: preg_match( '/(?|a|(|(c))z/', 'az', $rezultat ); #1. Rezultat: Array ( [0] => az ) #2. Exemplu: preg_match( '/(?|a|(|(c))z/', 'bz', $rezultat ); #2. Rezultat: Array ( [0] => bz [1] => b ) 6.3. Elementul "?>" (atomic grouping) Acest element este folosit pentru optimizarea unui pattern din punctul de vedere al spatiului de procesare. Considerati exemplul urmator: preg_match( '/\b(romanian|rotten|tomato)\b/', 'romanians', $rezultat ); Regex verifica toate cele trei combinatii pana se da batut. In schimb, cu "(?>": preg_match( '/\b(?>romanian|rotten|tomato)\b/', 'romanians', $rezultat ); Verifica primul "\b", e OK si trece mai departe, apoi verifica prima varianta din grupare si observa ca se potriveste "romanian", in schimb, se impotmoleste la final, la al doilea "\b", pentru ca in string, dupa "romanian", urmeaza "s", nu un non-cuvant ("\d"). Pana aici a facut ce ar face si prima varianta, doar ca spre deosebire de prima varianta, urmatoarele variante nu mai sunt incercate. Aceasta optiune este utila si de nadejde atunci cand variantele sunt foarte diferite una de alta, pentru ca daca ar fi asemanatoare, ar putea sari chiar peste cea buna. De exemplu: preg_match( '/\b(?>romanian|rotten|tomato|romanians)\b/', 'romanians', $rezultat ); Va returna false pentru ca se impotmoleste la primul "\bromanian\b" si renunta la restul gruparii. 6.4. Lookaround 6.4.1. Elementele "?=" si "?!" (positive & negative lookahead) Aceste elemente se folosesc pentru a testa daca dupa charsetul care preceda "(?=)" sau "(?!)" urmeaza cel din aceste grupari. "x(?=y)" returneaza "x" daca este precedat de "y" "x(?!y)" returneaza "x" daca nu este precedat de "y" Exemplu: preg_match( '/rst(?=forums)/', 'rstforums', $rezultat ); Va returna: Array ( [0] => rst ) Iar: preg_match( '/rst(?!forums)/', 'rstforums', $rezultat ); Va returna: Array ( ) Ideea principala de retinut aici este ca nimic dintre "()" nu va fi returnat in output, indiferent de situatie. Ce este acolo exista doar pentru a fi comparat. 6.4.2. Elementele "?<=" si "?<!" (positive & negative lookbehind) Acest element sunt identice cu cele discutate anterior, doar ca vor cauta in stanga charset-ului dat inaintea "()" in loc de dreapta. "(?<=x)y" returneaza "y" daca este succedat de "x" "(?<!x)y" returneaza "y" daca nu este succedat de "x" Exemplu: preg_match( '/(?<=viziteaza )RST/', 'viziteaza RST', $rezultat ); Va returna: Array ( [0] => RST ) Iar: preg_match( '/(?<!viziteaza )RST/', 'viziteaza RST', $rezultat ); Va returna: Array ( ) 7. Referinte pentru grupuri de text din acelasti pattern Am discutat la punctul 5 ca putem folosi rezultatele din regex-uri ce folosesc "()" in replace prin "$1", "$2" etc, dar puteti folosi aceste grupari chiar si in acelasi pattern. Daca aveti o sursa HTML si vrei sa selectati continutul urmatorului tag: $string = '<header id="top-header" class="wrapper" style="clear: both">Continutul care ne intereseaza.</header>'; In loc sa procedam in felul urmator: preg_match( '@<header[^>]*>([^<]+)</header>@', $string, $rezultat ); Am putea astfel: preg_match( '@<(header)[^>]*>([^<]+)</\1>@', $string, $rezultat ); Aceste doua linii sunt echivalente si returneaza acelasi rezultat. A se observa acel "\1" aproape de final. "\1" va fi inlocuit cu continutul din primul grup "()" la momentul executiei. Se poate proceda astfel pana la \99. Desigur ca exemplul dat de mine nu face prea mult sens, dar in functie de cat de lungi aveti pattern-urile voi, se va putea dovedi folositoare aceasta componeneta. 8. Conditii Da, regex suporta conditii. Vreau sa mergeti sa va udati pe fata cu niste apa ca tot ce ati vazut pana acum a fost partea usoara. Sintaxa generala este: "(?(conditie)true|false)", dar se va complica imediat. Sa presupunem urmatorul sir: 'abc' Backstory-ul este ca daca "a" este prima litera, dupa ea urmeaza "b", daca nu, urmeaza "c". preg_match( '/(a)?(?(1)b|c)/', 'abc', $rezultat ); Rezultatul este: Array ( [0] => ab [1] => a ) Iar pentru: preg_match( '/(a)?(?(1)b|c)/', 'bca', $rezultat ); Rezultatul este: Array ( [0] => c ) Conditia intotdeauna este true daca "()" cu numarul dat este indeplinita. In cazul nostru, conditia este sa-l gaseasca pe "a" inaintea tuturor celorlalte litere. Inca un exemplu: Primit de la o aplicatie urmatoarele doua output-uri: 'female: she sucks' sau 'male: he fucks' Ca sa testam treburile astea doua folosindu-ne de conditii, vom proceda in felul urmator: preg_match( '/(fe)?male: (?(1)she|he) \w+/', 'female: she sucks', $rezultat ); Rezultat: Array ( [0] => female: she sucks [1] => fe ) Iar pentru: preg_match( '/(fe)?male: (?(1)she|he) \w+/', 'male: he fucks', $rezultat ); Rezultat: Array ( [0] => male: he fucks ) Practic, daca este gasit "fe" din "female", se indeplineste conditia, pentru ca "$1" va contine "fe", in cazul asta, in continuare, dupa "male: ", va urma "she", si apoi " \w+". --- Cam atat. Probabil voi mai adauga niste puncte pe parcurs. Sper sa va fie de ajutor. Daca vreti sa cititi mai multe: www.regular-expressions.info
  31. 13 points
    Cand am citit titlul credeam ca vii sa ceri sfaturi de gonoree, sifilis, chlamydia, etc.
  32. 13 points
    @M4T3! Nu am vandut niciodata linkuri pe blog, nici nu vand si am grija de trimiterile pe care le fac. Am doar doua site-uri in blogroll: un blogger si RST. Oferta mea: un an de zile, dofollow, index, blogroll, gratis. In semn de multumire ca l-ai ajutat pe tatal meu. Nu v-am uitat, va am in lista. Daca pot sa ajut, ajut. Daca esti de acord, da-mi un mesaj privat cu site-ul. Sunt sigur ca este in regula, insa vreau sa arunc o privire pe el, sa ma asigur eu.
  33. 13 points
    Trebuie sa alegi, Arta sau lautarie. Fotbalul este o ocupatie pentru labagii spargatori de seminte si bautori de bere.
  34. 13 points
    Understand the web application penetration testing methodology and toolkit Interact with web applications using Python and the Requests library Write a web crawler/spider with the Scrapy library Create an HTTP bruteforcer based on Requests Create a Password bruteforcer for Basic, NTLM, and Forms authentication Detect and exploit SQL injections vulnerabilities by creating a script all by yourself Intercept and manipulate HTTP communication using Mitmproxy Download (valabil 7 zile): aHR0cDovL3guY28vNmxnRGQ=
  35. 13 points
    Download : http://capr.ga/11n
  36. 13 points
    Administrez servere linux (orice distributie) cat si FreeBSD. Experienta in domeniu: 20 de ani In mare, din cunostintele ce le am: - Politici de securitate atat pe FreeBSD cat si pe linux - Solutii antispam si solutii de securitate pentru servere de email - Orice arhitectura de server(e) web (content delivery & caching, dual strat, clusters) - MySQL, PostgreSQL, PHP - Tehnici avansate de mitigare atacuri DDoS. - Sisteme de detectie si prevenire a intruziunilor Instalez, configurez si optimizez orice fel de daemon sau aplicatie open source. De asemenea, ofer consultanta pentru necesitati hardware. Pentru cotatii de pret, trimite un email te rog la tex at unixteacher dot org (sau un mesaj privat)
  37. 13 points
    Forumul are un nou Moderator: @aa7670
  38. 13 points
    La naiba, v-ati dat seama... In caz ca nu va puteti da singuri seama care sunt eu din acea poza: Stiu, am facut putina burta, nu va mai luati de mine
  39. 12 points
    Pwnthecode este o platform? educa?ional? care are ca scop dezvoltarea, responsabilizarea ?i antrenarea pasiona?ilor de securitate. Scopul definit al platformei este s? demonstreze cât de periculoase sunt vulnerabilit??ile web dar ?i s? înve?e utilizatorul despre anumite bre?e de securitate pe care acesta, ulterior, va înv??a s? le repare în vederea îmbun?t??irii securit??ii pe pia?a IT. Platforma se adreseaz? în special celor mai pu?in specializa?i în domeniul IT ?i celor care de?in un website sau care activeaz? în domeniul web. Link: Pwnthecode | Proiect despre Securitatea Web Momentan platforma este la la versiunea BETA, urmând ca în scurt timp s? ad?ugam atât un numar mare de tutoriale pentru vulnerabilit??ile existente (în cadrul platformei) cât ?i câteva tipuri de vulnerabilit??i noi. De asemenea, vom mai ad?uga/modifica examene. User control panelul este în dezvoltare deci este posibil s? întâmpina?i unele probleme. Orice fel de problem? v? rog s? mi-o trimite?i prin PM mie sau lui @danyweb09. Cei care dorest s? sus?in? proiectul pot face o dona?ie (g?si?i pe site mai multe detalii). Dac? cineva doreste s? doneze prin alt? metod? decât PayPal, s? imi trimit? PM. Orice sugestie este bine-venit?!
  40. 12 points
    Scriu acest ghid pentru cei care vor dori in viitor ca cineva (individ/grup/companie) sa le faca un website si sper sa le fie util atat lor: pentru a isi da seama ce vor, pentru a reduce riscul de a fi tepuiti, etc. cat si companiei: sa inteleaga contextul, asteptarile, ce trebuie sa livreze, etc. Insa si pentru sunt satul de cei care asteapta ca altii sa le citeasca gandurile. Deci.. inainte de a discuta cu cineva o oferta de pret si alte detalii, ar fi ideal sa asterneti in scris urmatoarele. Evident, se poate adapta dupa nevoi: 1. O foarte scurta introducere: Daca este o firma, cand a luat fiinta, cu ce se ocupa, cati angajati, realizari, etc. Daca este un site personal: detaliile corespunzatoare. Si asa mai departe. Este un site nou sau refacerea unuia existent. 2. Obiectivele: ce vreti sa realizati cu acest website. Se pot imparti eventual pe obiective principale: 3-5 la numar si obiective secundare. Acestea trebuie sa fie realiste. 3. Cui se adreseaza acest site, care ar fi vizitatorul ideal. In functie de obiective, ce fel de vizitator v-ar ajuta sa la atingeti. Ganditi-va la ce ar vrea ei sa faca pe site si la ce ati vrea voi ca ei sa faca pe site si cum acestea pot fi imbinate. Ce vrei sa-i convingi sa faca: sa citeasca ceva, sa urmareasca un clip, sa cumpere ceva, etc. 4. Un schelet al site-ului ideal. Chiar daca acesta va suferi modificari si adaptari dupa consultarea cu cel ce va livra site-ul si chiar daca este cu pixul pe hartie, cum ati vrea sa fie structurat landing page-ul si eventual urmatoarele cateva pagini. Daca folositi un tool de mindmapping (https://bubbl.us/mindmap) veti putea asterne un element grafic extrem de folositor: pentru voi, sa va dati seama de structura potentiala, cat de usor va fi de navigat si sa va asigurati ca nu va scapa nimic din memorie; dar si pentru cei ce lucreaza: sa inteleaga ce vreti sa realizati si sa poata veni cu idei si sugestii. 5. Detaliile tehnice: aceasta lista trebuie sa fie cat mai completa. Unele proiecte mari necesita si luni de zile de lucrat la definirea specificatiilor tehnice. Chiar daca nu le produceti pe toate la inceput, vor fi esentiale pentru cei ce lucreaza sa va poata da un pret estimativ si un timp de livrare. Apoi, inainte de incheierea contractului (un contract nu e neaparat ceva oficial, poate fi contract verbal sau in scris pe Sykpe, etc.) trebuie specificat si confirmat cu exactitate fiecare fiecare detaliu. Un exercitiu recomandat este sa va puneti in pielea vizitatorului si sa navigati mental pe site si sa va ganditi la "user experience" si cum ar putea fi imbunatatit. La urma urmei aceasta este ultima sansa de a adauga cerinte la proiect. Bineinteles ca unii vor fi flexibili insa daca abuzati de bunatatea altora va veti trezi cu neplaceri. De asemenea cine va "mentine" site-ul dupa completare. Este nevoie de un CMS? Sau de training in editarea si updatarea lui? 6. Detalii auxiliare: in afara de cerintele necesare pentru functionarea site-ului, aspecte de design, securitate, viteza, legalitate/compliance, back-ups, integrari, etc. 7. Daca aveti competitie cine este: ce au bun, ce au mai putin bun. Ce puteti folosi ca idee/concept (nu copiat!) si ce puteti imbunatati. Cum ati putea plusa pe slabiciunile lor si cum evitati repetarea greselilor lor? Sunt exemple de site-uri care va plac pe o nisa asemanatoare? Aveti un anume concept in gand? Cat mai multe detalii de genul acesta. 8. Bugetul. Stiu e nasoala treaba cu banii si e greu de multe ori de specificat o suma si mai ales nu vreti din anumite motive sa specificati cati bani aveti alocati pentru asa ceva pentru ca va e frica de faptul ca se va profita de aceasta informatie si intradevar multi o fac si pun preturile in functie de client si de cati bani au. Ca sa evitati aceste lucruri dati niste range-uri cat mai vagi insa realiste si apropiate de realitate ca sa nu va pierdeti nici voi vremea si nici cei cu care luati legatura. Spre exemplu daca aveti un buget de 500 euro puteti spune intre 250 - 800. Daca vi se da un pret de 700, puteti incepe si negocia de la 400 pentru a ajunge apoi la suma dorita insa negocierea este un alt topic de discutie. 9. Deadline-ul. Sa fie cat mai realist, cu obraz insa bine definit. Chestii de genul "cat mai repede", "urgent", etc. sunt penibile. Aici este o oportunitate de a elimina si din riscul pierderii banilor si anume crearea de stagii (milestones): impartiti proiectul pe stagii, si la completarea fiecarei stagiuni cei ce lucreaza vor vedea un procent din suma totala - totul stabilit prin contract. 10. Orice alte detalii, presupuneri, dorinte, chestii de accesibilitate dorite, etc. Bineinteles, in functie de proiect aceste lucruri variaza insa acesta este un punct de plecare pentru: - a nu irosi timpul vostru si al altora - a avea cat mai mari sanse de reusita - a nu fi luati de prosti si tratati (dpdv financiar) ca atare. Succes!
  41. 12 points
    Material Introduction Section 1) Fundamentals Section 2) Malware Techniques Section 3) RE Tools Section 4) Triage Analysis Section 5) Static Analysis Section 6) Dynamic Analysis Sursa: https://securedorg.github.io/RE101/
  42. 12 points
    Hi all, while surfing various IRC Channels, i have come across a list of very useful links, courses to get into hacking URL: https://ghostbin.com/paste/j858d There are courses for computer basics, hacking, programming and many more Good luck in your long journey of learning!
  43. 12 points
    @tjt " De ce sa nu iti dea ? " - Tu daca ai avea firma ta i-ai da unuia care nu a muncit o zi pe ceea ce ai nevoie 5000 RON? Desi omul poate a mai citit cate ceva, daca nu a lucrat macar 1-2 ani cu ceea ce se cere, nu o sa se compare cu unul care a lucrat. De exemplu, cand m-am angajat ca C++ developer acum 6 ani, stiam limbajul extrem de bine. Dar ca sa vezi, nu prea era deajuns. Nu lucrasem cu sockets, multi-threading, STL, semaphores si mai stiu eu ce, pe cand cineva cu experienta probabil se lovise de cel putin o parte dintre ele. Nu cred ca cineva care nu a lucrat la o companie pe ceva anume, indiferent de ce, a petrecut aproape zilnic cateva ore sa isi dezvolte cunostiintele. Un alt exemplu, e ca inainte sa ma angajez prima oara am vrut sa lucrez ca PHP developer. Scrisesem peste 20.000 de linii de cod, aveam ceva proiecte DAR: nu scrisesem cod MVC (evident), nu lucrasem cu OOP (proiecte mici, evident), nu lucrasem cu niciun framework (la fel). Asadar, de ce sa imi dea 5000 RON pe luna cand eu ar trebui sa stau luni de zile sa invat cum trebuie lucrurile astea? " cineva care a investit timpul personal chiar si bani ca sa isi imbunatateasca cunostinte, sa obtina certificari " - Nu a investit nimeni destul din timpul personal pentru a fi la fel de bun ca cineva care a facut acel lucru 8 ore pe zi timp de 1-2 ani. Si nici nu o sa o faca nimeni. Ca mai citesti zilnic cate un articol, ca din cand in cand citesti o carte, e OK, dar nu e de ajuns. Da, dovedeste entuziasm si conteaza mult, dar nu e de ajuns. Pune-te in locul angajatorului. Cat despre HR, sau "Professional Linkedin browser", din pacate, nu au capacitatea de a trece peste anumite lucruri si de a intelege anumite lucruri. Intotdeauna o sa te lovesti de probleme cu ei si poti pierde locuri de munca bune din cauza ca ei vor considera poate ca "nu are facultate de IT, nu poate sa lucreze pe security", pentru ca ei nu inteleg ca nu exista facultate pentru asa ceva de exemplu. @Philip.J.Fry Nu stiu daca RON sau EUR, nu cred ca EUR in Romania. Da, diploma nu ar trebui sa conteze, ca nu stiu pe nimeni sa fi terminat Facultatea de Reverse Engineering si Analiza Malware in Romania, insa fara experienta mi se pare greu de crezut. Adica serios, ai da cuiva 3.7 EUR pe luna in Romania cuiva care probabil are ceva cunostiinte tehnice dobandite in timpul liber, in locul unuia care a facut asta luni de zile la cine stie ce companie care face antivirus? @gigiRoman Acum vreo 4 ani cred, am avut si eu interviu la Avira pe C++ Developer. Am avut de facut o aplicatie client-server, multithreading si cu nu stiu mai ce functionalitati in 3 ore. Am facut-o si a mers foarte bine, si ziceau cei de acolo ca majoritatea nu o fac in cele 3 ore. Apoi am avut o discutie tehnica. Toate bune si frumoase, pana sa vorbim despre antivirus. Le-am zis ca am facut un crypter, un program care ia un fisier detectabil si il face nedetectabil. Au zis ca "nu se poate, antivirusul nostru il prinde". Le-am explicat cum functioneaza si de ce nu l-ar prinde, ca se incarca in memorie bla-bla, dar nu au parut sa inteleaga. Apoi m-au intrebat: "De ce te-am angaja, de unde stim ca avand acces la codul sursa al antivirusului, nu ai dezvolta in continuare astfel de lucruri?". Am inceput sa rad si le-am zis ca nu am nevoie de codul sursa sa fac asa ceva. Nu m-au mai contactat deloc. Asadar, ca idee generala, de care m-am lovit si eu acum vreo 6 ani cand m-am angajat pe 1600 RON: NU va asteptati sa sara cu banii pe voi, pentru ca nu au de ce. In plus, nu sunteti singurele persoane care isi cauta un loc de munca in IT. Desi sunt destule job-uri, pentru pozitiile de inceput sunt foarte multi care aplica. De asemenea, banuiesc ca daca cineva lucreaza la un proiect in timpul personal, sau face ceva ca sa invete, poate mai posteaza si pe aici. Nu am vazut de ani de zile astfel de lucruri postate. Am fost si eu tanar student, si ce crezi, preferam sa stau sa scriu cod, sau sa beau pana picam din picioare?
  44. 12 points
  45. This post cannot be displayed because it is in a forum which requires at least 10 posts to view.
  46. 12 points
    Practical JSONP Injection January 18, 2017 Petre Popescu JSONP injection is a lesser known but quite widespread and dangerous vulnerability and it surfaced in the last years due to the high rate of adoption of JSON, web APIs and the urging need for cross-domain communications. What is JSONP? Assuming everybody knows what JSON is, let’s talk a little about JSONP. JSONP comes from JSON with Padding and it was created in order to bypass common restrictions such as Same-origin Policy which is enforced for XMLHttpRequest (AJAX requests). Let’s take an example. Our online banking application, http://verysecurebank.ro, has implemented an API call that returns the current user’s transactions. An HTTP request to the http://verysecurebank.ro/getAccountTransactions endpoint presents us with the transactions, JSON formatted: If our reports application, accessible at http://reports.verysecurebank.ro wants to get the transaction details, an AJAX call to the page won’t be possible, due to Same-origin Policy being in effect (different host). To get around this problem, JSONP came into play. Since Cross-domain script inclusion (mostly used to externally load JavaScript libraries such as jQuery, AngularJS etc.) is allowed, but not recommended, a smart trick apparently solved the entire equation: prepending the response with a callback. Note: even if it might be obvious, it’s worth mentioning that when including a script cross-domain, it will run in the context of the including application, not in the source’s context. Adding a callback to the API response, wrapped around the JSON formatted data, allows us to load the API response between script tags and get its content by defining our own callback function to handle it. Articol: https://securitycafe.ro/2017/01/18/practical-jsonp-injection/
  47. 12 points
    ba, sunteti cu capul ? trading de bonuri pentru haleala si plati in bitcoiN :)))))))
  48. 12 points
    Buna, am creat urmatoarea aplicatie pentru a veni in ajutorul fiecaruia. Haideti sa ne imaginam ca suntem la lucru sau acasa si nu vrem sa fim prinsi ca nu facem ceea ce trebuie. Indreptam webcam-ul catre usa si cand acesta detecteaza miscare o sa ascunda fereastra pe care o selectam noi. (da se poate folosi si pt cand te uiti la porn xD) https://github.com/meltingice1337/HideNow Orice critica e binevenita.
  49. 12 points
    V-am trimis la mai multi lista, ca am fost bombardat de PM-uri nu costa nimic, le-am dat free, normal. Astept aici un reply daca v-ati descurcat si cum merge. Salutare !
  50. 12 points
    Salut , sunt mai vechi pe rst si pana acum nu m-am prezentat , si am zis sa o faca si pe asta : Ma numesc Razvan , am 25 de ani si sunt iubitor de IT Sa trecem la cunostinte : C/C++,java,php,linux,mysql,js(stadiu de incepator) Cam asta sunt eu , sper sa ne intelegem O zi buna.
×