Jump to content

nedo

Active Members
  • Posts

    2065
  • Joined

  • Last visited

  • Days Won

    11

Posts posted by nedo

  1. Dupa cum au spus Xander si gwydion, folositi dns-urile google si nu aveti probleme.

    Povestea e in felul urmator. Niste baieti au facut un virus care infecteaza calculatoarele si schimba dns-urile de pe calculatoare cu alte dns-uri detinute de "Hackeri". Pentru a repara daunele (pentru ca ar fi necesara formatarea a aproximativ 500.000 de calculatoare-cifra estimativa a numarului de calculatoare infectate cu acel virus) FBI-ul a "preluat" acele dns-uri si au inlocuit datele malitioase- cu date corecte. Ceea ce se presupune ca vor face pe 8 martie, este ca vor opri aceste dns-uri. Iar cei care au calculatoarele infectate cu acest virus nu se vor mai putea conecta la internet deoarece dns-urile prin care o adresa de genul "www. rst center . com" este atribuita unui ip nu va mai exista.

    Solutia? Devirusarea calculatorului respectiv si reintroducerea unor adrese dns corecte.

  2. depinde cum e implementat.

    Nu cred ca e cineva atat de ... neinspirat sa implementeze un program care sa genereze numere random de la inceput, si sa le foloseasca dupa.

    Cel mai probabil generarea numarului random se genereaza punctual atunci cand trebuie "aruncate zarurile". Totusi acesti algoritmi pot fi nu tocmai random. Eu am observat in c++ ca uneori daca execut de mai multe ori rand() atunci se intampla sa am un anumit tipar in felul in care sunt generate numerele. Acelasi lucru poate fii si in jocul respectiv de table.

  3. Nu exista ceva realmente random. Algoritmurile care sunt postate pe net, sunt de fapt pseudo random number generators.

    Cea mai buna solutie a ta eset sa folosesti un random number generator care foloseste un seed(samanta), adica pleaca de la un numar(de cele mai multe ori timp-ul) si in baza unui algoritm genereaza un numar.

    Altfel singura sansa de random reala este datul cu zarul :))

  4. Linia numarul 12 este

    strcpy_s(pnume, n);

    Spune ce anume eroare iti da.

    Daca am gasit eu referinta corecta pentru strcpy_s ai nevoie ca al 2-lea argument sa fie numarul de caractere ce trebuie copiate.

    Adica

    strcpy_s(pnume, (sizeof(n)/sizeof(n[0])), n)

    prin (sizeof(n)/sizeof(n[0]) poti afla numarul de elemente dintr-un char array.

    Totusi pentru corectitudine te rog sa postezi eroarea.

  5. Observand ca gotroot e banat, va postez mai jos versiunea creata de mine, folosind libraria map din stl.

    Aceasta versiune i-am trimis-o lui gotroot acum 2 zile pentru a vedea cum pot fi folosite hash-urile.

    Pe un fisier cu 15000 de linii programul ocupa doar 1.5 mb.


    #include <iostream>
    #include <fstream>
    #include <map>
    #include <string>

    using namespace std;

    int main(int argc, char* argv[])
    {
    if(argc < 3)
    {
    cout << "Utilizare: " << argv[0] << " fisierIntrare fisierIesire " << endl;
    }
    else
    {
    ifstream fin(argv[1]);
    ofstream fout(argv[2]);
    map<string, int> buffer; // cheia este stringul pentru ca aceasta trebuie sa fie mereu diferita
    int index = 0;
    if(fin.is_open() && fout.is_open())
    {
    while(fin.good())
    {
    string linie;
    getline(fin, linie);
    buffer[linie] = index;
    }
    for(map<string, int>::iterator it = buffer.begin(); it != buffer.end();it++)
    {
    fout << (*it).first << endl;
    }
    }
    else
    {
    cout << "Nu am putut deschide " << argv[1] << " sau " << argv[2] << endl;
    fin.close();
    fout.close();
    }
    }

    return 0;
    }

    Daca se doreste si o versiune cu gui, postati aici si voi incerca sa fac o versiune cu gui in c++ cu wxwidgets.

  6. Citeam zilele trecute solicitarea cuiva pentru un word list.

    M-am gandit sa fac eu unul.

    Programul este scris in c++ iar pentru interfata grafica este utilizat wxWidgets, deci pentru cei care vor sa si-l compileze singuri(aveti atasat proiectul code::blocks) aveti nevoie de librariile wxwidgets.

    Va avertizez totusi ca atunci cand genereaza wordlist-ul interfata se v-a bloca, nu il inchideti pana cand nu termina. Va va anunta printr-un message box.

    De asemenea luati aminte ca wordlisturile sunt enorme, spre exemplu pentru toate combinatiile de 6 caractere cu un folosind doar literele de la a la z, fara majuscule a generat un fisier de 1.9 gb.

    Il folositi pe propria raspundere. De asemenea daca cineva are o varianta mai eficienta pentru generarea cuvintelor decat aceasta:


    void WordlistMakerFrame::makeWordlist(std::string& word, std::string& charSet, int wordSize, std::ofstream& fOut)
    {
    if(wordSize == 0)
    {
    for(unsigned int i = 0; i < charSet.size(); i++)
    {
    word[wordSize] = charSet[i];
    fOut << word << std::endl;
    }
    word[0] = charSet[0];
    }
    else
    {
    for(unsigned int i = 0; i < charSet.size(); i++)
    {
    word[wordSize] = charSet[i];
    makeWordlist(word, charSet, (wordSize - 1), fOut);

    }
    }
    }

    Sa imi spuna si mie. Mi-am batut capul cateva ore bune pentru a gasii o functie recursiva cat de cat eficienta si corecta.(E scrisa de mine).

    Sper sa va placa.

    Le: Pentru paranoici link scan pe virus total al versiunii de release

    click

    Edit 24.03.2012

    Am revenit cu o noua versiune, oarecum imbunatatita + un link de download nou deoarece cel vechi se pare ca a fost sters.

    In aceasta versiune generarea wordlistului se face intr-un thread separat interfata ne mai fiind blocata.

    Momentan threadul nu poate fii oprit decat prin iesirea din aplicatie deoarece threadul invoca o functie recursiva, cea de mai sus, si aceasta nu se poate opri inainte sa isi termine executia. Voi incerca sa rezolv aceasta problema ... probabil trebuie sa fac executia altfel in interiorul clasei threadului. Eventual o sa incerc sa folosesc mai multe threaduri.

    In acest moment aplicatia pe un dual core foarte slab a generat aproximativ 8 milioane de combinatii de 5 caractere cu un charset a-z in cateva minute.

    Sper sa va foloseasca, si daca mai aveti vreo sugestie va stau la dispozitie.

    Link catre proiectul codeblocks aici

    In folderele bin/debug si bin/release aveti cele 2 versiuni ale aplicatiei cu cele 2 dll-uri necesare rulari lui.

    • Upvote 1
  7. am facut mici experimente inainte sa dau raspunsul respectiv, cu structuri cu cate 2-3 membri si de acolo am ajuns la concluzia respectiva. AM citit apoi despre offsets si despre cum sunt stocate im memorie variabilele intr-un struct si am inteles de ce da 40 in cazul meu(x64) si 32 pe x86.

    Guess there still is a lot for me to learn ....

    We keep going.

  8. Pentru un system pe 32 de biti presupunem ca db ocupa 4 bytes;

    sizeof(group) va afisa marimea lui db x fiecare variabila din struct, pentru short[3] fiecare valoarea va avea tot marimea de 4 bytes.

    Deci pentru aceasta marime am avea 36.

×
×
  • Create New...