Página 1 de 6 123 ... ÚltimoÚltimo
Resultados 1 a 10 de 55
  1. #1
    Moderador Avatar de _Guga_
    Data de Ingresso
    Apr 2006
    Localização
    Salvador - BA
    Posts
    2.118

    Postem suas obras primas aqui

    Pessoal, criei este tópico para vcs postarem qualquer programa que estão desenvolvendo, tanto em C quanto em C++, tanto dificeis quanto fíceis, tanto úteis quanto inuteis, o que importa é o aprendizado, flws!

    Pode ser qualquer tranqueira =D

    eu pelo menos vou postar o meu hehe:


    Gerador de nicks:

    Código:
    #include <string> 
    #include <iostream> 
    #include <cctype>
    using namespace std; 
    
    char tipo1(char caractere)
    { 
    	switch(caractere)
    	{ 
    	case 'a': 
    	case 'A': 
    		return '@'; 
    	case 'e': 
    	case 'E': 
    		return '&'; 
    	case 'i': 
    	case 'I': 
    		return '!'; 
    	case 'o': 
    	case 'O': 
    		return '0'; 
    	default: 
    		return caractere; 
    	} 
    } 
    string tipo2(string r) 
    { 
       for(int i=0;i< r.length(); i++) 
          r[i] = i % 2 == 0 ? toupper(r[i]) : tolower(r[i]); 
    
       return r;    
    } 
    int main()
    { 
    	string nome, tipoum, tipodois; 
    	cout << "Digite seu primeiro nome: "; 
    	getline(cin, nome); 
    	for (int cont = 0; nome[cont] != '\0'; cont++)
    	{ 
    		tipoum += tipo1(nome[cont]); 
    	} 
    	tipodois=tipo2(nome);
    	cout << "Seus nicks: " << endl << endl;
    	cout << "tipo 1: " << tipoum << endl << "tipo 2: " << tipodois << endl;
    	cin.sync();
    	cin.get();
    	return 0; 
    }

    Função que eu mesmo criei para calcular potencias, sem ter q apelar para cmath usando a pow

    Código:
    #include <iostream>
    using namespace std;
    double potencia(const double base, const int exp) 
    { 
       double resul = 1.0; 
       int expaux = exp > 0 ? exp : -exp; 
    
       for (int i = 0; i < expaux; i++) 
          resul *= base; 
    
       return exp > 0 ? resul : 1 / resul; 
    } 
    int main()
    {
        double base, r;
        int expoente;
        cout << "Digite a base:\n";
        cin>>base;
        cout << "Digite o expoente:\n";
        cin>>expoente;
        r=potencia(base, expoente);
        cout << endl << r << endl;
        cin.sync();
        cin.get();
        return 0;
    }
    Postem, vai ser muito útil para mim e para todos!


    I must not fear. Fear is the mind killer.

  2. #2
    Hacker Avatar de blackwinner
    Data de Ingresso
    Dec 2006
    Localização
    Aqui
    Posts
    1.273
    Eu estava desenvolvendo um md5 cracker simples por bruteforce para o meu parcero do hackone, mas vo ter que ficar fora da net por um bom tempo por causa do trabalho, acho.. então jí que eu não vou poder terminar tão cedo, vo deixar o código aqui para quem quiser completa-lo..

    Download:http://rapidshare.com/files/99872863/HashC.zip.html
    (o código fica mais arrumado no file)

    -----CPP-----
    Código:
    /*-------
        Coder: B.L.A.C.K.W.I.N².E.R
        Contato: deadlyconcience57@hotm~
                                    --------*/
    
    #include "hashmd5.h"
    
    /*|-Variaveis-|*/
     MD_FIVE mFive;            //obj MD_FIVE declarado em hashmd5.h
     unsigned short int resp; //Resposta do usuírio ao set de opções
     
     
     
     
    /****  Protótipos
                      ****/
    void Show_Credits();
    
    
      
      
      //-----------------------------------------------------//
     //------------------MAIN-BEGIN-------------------------//
    //-----------------------------------------------------//
    
    
    int  WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance,
                                      LPSTR lpszArgument, int nFunsterStil)
    {
     
     while(1)
     {
     
     
      /*----->Tàtulo/referencias e etc*/       
      SetConsoleTitle("*-----HashCracker------*");
      cout << "*********************\n";
      cout << "*   BLACKWINNER     *\n";
      cout << "*********************\n\n\n";
    
     
     
     /*------>Set de opções*/
      cout << "1- Criar hash \n";
      cout << "2- Quebrar hash \\HeavyMode\n";
      cout << "3- Quebrar hash \\SoftMode\n";
      cout << "4- Gerar word list \\HeavyMode\n";
      cout << "5- Gerar word list \\SoftMode\n";
      cout << "6- Sair\n";
      cout << "7- Sair\n";
     
      cin >> resp;
      
      switch(resp)
      {
       case 1:
                mFive.Call_Create();
                break;
       case 2:
                break;
       case 3:
                break;
       case 4:
                mFive.wList_Heavy();
                break;
       case 5:
                mFive.wList_Soft();
                break;
       case 6:
                break;         
       case 7:
                Show_Credits();
                goto fim_do_programa;
                break;
       
                
      }
      
      
    
      system("cls");
     }
    
        
    fim_do_programa:;
    
    }
    
      //-----------------------------------------------------//
     //------------------MAIN-END---------------------------//
    //-----------------------------------------------------//
    
    
    
    
    
    
    void Show_Credits()
    {
         system("cls");
         cout << "Special Thanks to: "
              << "blackfalcon,"
              << " Gadu,"
              << " Jessy.\n\n";
         
         cout << "Me encontre em: "
              << "\nhttp://www.hack-one.org/phpbb\n\n";
              
         cout << "Encontre ajuda para desenvolver seu software: "
              << "\nhttp://www.hazardsource.com/forum/\n\n";
            
         
         system("pause");
                    
    }
    -------hashmd5.h--------
    Código:
    //--------/*/    HEADERS   /*/--------//
                                         //
    #include <windows.h>                //
    #include <Wincrypt.h>              //
    #include <fstream>                //
    #include <stdlib.h>              //
    #include <iostream>             //
    #include <string>              //
                                  //
                                 //
    using namespace std;        //
                               //
                              //
    ///////////////////////////
    
    
    
    
    //--------------------/*/    CLASSES    /*/------------------------//|
                                                                       //|
    class A_Chars                                                      //|
    {                                                                  //|
     public:                                                           //|
      BYTE A_Char[1024];                                               //|
    };                                                                 //|
                                                                       //|
    //=================================================================//|
                                                                       //|
    class MD_FIVE                                                      //|
     {                                                                 //|
      public:                                                          //|
             MD_FIVE();                                                //|
             ~MD_FIVE();                                               //|
             void CREATE(BYTE*);                                       //|
             void wList_Heavy();                                       //|
             void Call_Create();                                       //|
             int Ta_Tudo_Certo(int);                                   //|
             void wList_Soft();                                        //|
      private:                                                         //|
              friend DWORD WINAPI wList_Softhread(LPVOID);             //|
              friend DWORD WINAPI wList_Softhread2(LPVOID);            //|
              HANDLE *Threader;                                        //|
              DWORD *ThreadID;                                         //|
              string O_STRING;                                         //|
              HCRYPTPROV hProv;                                        //|
              DWORD cbHash;                                            //|
              HCRYPTHASH hHash;                                        //|
              CHAR HexDig[16];                                         //|
              fstream File__, File__2;                                 //|
              BYTE A_Char[95];                                         //|
              A_Chars A_Char2, A_Char3;                                //|
              unsigned short int x , y, yy;                            //|
     };                                                                //|
                                                                       //|
    /*-----------------------------------------------------------------*/
    
    
    
    
    
    
    MD_FIVE :: MD_FIVE()
    {
     hProv = 0;
     cbHash = 16;
     hHash = 0;
     HexDig[0] = '0';
     HexDig[1] = '1';
     HexDig[2] = '2';
     HexDig[3] = '3';
     HexDig[4] = '4';
     HexDig[5] = '5';
     HexDig[6] = '6';
     HexDig[7] = '7';
     HexDig[8] = '8';
     HexDig[9] = '9';
     HexDig[10] = 'a';
     HexDig[11] = 'b';
     HexDig[12] = 'c';
     HexDig[13] = 'd';
     HexDig[14] = 'e';
     HexDig[15] = 'f';
     
     
      
     for (unsigned short int i = 32; i < 127; i++)
     {
      A_Char[i-32] = (char) i;
     }
    }//construtor
      
    MD_FIVE :: ~MD_FIVE()
    {
     if (File__.is_open())
     {
      File__.close();
     } 
     File__2.open("HeaderFile", ios_base :: binary | ios_base :: out);
     File__2.write((char *) &x, sizeof(x));
     File__2.write((char *) &y, sizeof(y));
     File__2.write((char *) &A_Char3, sizeof(A_Char3));
     File__2.close();
     
    } //destrutor
      
    void MD_FIVE :: CREATE(BYTE *overRR)
    {   
    
        
        CryptAcquireContext(&hProv,
                            NULL,
                            NULL,
                            PROV_RSA_FULL,
                            CRYPT_VERIFYCONTEXT); 
        
        
                        
        CryptCreateHash(hProv, 0x00008003, 0, 0, &hHash);
        
        
        O_STRING = (const char *)overRR;
        CryptHashData(hHash, overRR, O_STRING.size(), 0);
        CryptGetHashParam(hHash, HP_HASHVAL, overRR, &cbHash, 0);
        
        
        for (int i = 0; i < cbHash; i++)
            {               
                File__ << HexDig[overRR[i] >> 4]
                       << HexDig[overRR[i] & 0xf];         
            }
        File__ << " String:" << O_STRING << endl;
    
     
        CryptDestroyHash(hHash);
        CryptReleaseContext(hProv, 0);
        
     
    
    
    } //CREATE
    
    void MD_FIVE :: Call_Create()
    {
      ZeroMemory(A_Char2.A_Char,sizeof(A_Char2.A_Char));
      cout << "Digite a string: ";
      cin >> A_Char2.A_Char;
      this->CREATE(A_Char2.A_Char);
      ZeroMemory(A_Char2.A_Char,sizeof(A_Char2.A_Char));
    } //Call create
    
    
    void MD_FIVE :: wList_Heavy()
    {
     
      
    
     
      File__2.open("HeaderFile", ios_base :: binary | ios_base :: in);
      File__2.seekg(0, ios :: end);
      if(File__2.tellg() > 0)
      {
       File__2.seekg(0, ios :: beg);                  
       File__2.read((char *) &x, sizeof(x));
       File__2.read((char *) &y, sizeof(y));
       File__2.read((char *) &A_Char3, sizeof(A_Char3));
      }
      else
      {
       y = 0;
       yy = 0;
       x = 0;
        
      }    
    
      File__2.close();
      File__2.clear();
      
      
      
    
      File__.open("wList.txt",  ios_base :: app | ios_base :: out);
      if(y > 0)
      {
       yy = y;
       goto Ja_to_dentro;
      }
      while(1)
      {
       while (1)
       {
        A_Char2 = A_Char3;   
        A_Char2.A_Char[0] = A_Char[x - ((x/95)*95)];
         
        
        /*algoritmo de transição*/
        if((x%95 == 0) && (y > 0))
         {
          testa_novamente:
          if(A_Char2.A_Char[yy] == (BYTE) '~' && yy > 0)
           {                     
            A_Char2.A_Char[yy] = A_Char[0];
            yy--;
            goto testa_novamente;
           }
          else if (yy > 0)
          {
           A_Char2.A_Char[yy] = (int)A_Char2.A_Char[yy] + 1;
          }
          if (yy == 0)
           yy = y+1;
          else 
          yy = y;
         }   
       
        /*gera o hash*/
        A_Char3 = A_Char2;
        this->CREATE(A_Char2.A_Char);  
        ZeroMemory(A_Char2.A_Char,sizeof(A_Char2.A_Char));
        
        /*controle de loops*/
        x++;
        
        Ja_to_dentro:;
        if (A_Char3.A_Char[0] == (BYTE) '~' && y == 0)   
         break;  
        
        if ((y > 0) && this->Ta_Tudo_Certo(y))
         break;
       }//while(1)
       y++;
       yy = y;
       for (int cont = 0; cont <= y; cont++)
        A_Char3.A_Char[cont] = 32;
       A_Char3.A_Char[y] = 31; 
      }//while(coluna)
      
     File__.close();
     
    } //gerador de heavy wList
    
    
    int MD_FIVE :: Ta_Tudo_Certo(int cont)
    {
        for(int i = 0; i <= cont; i++)
         if(A_Char3.A_Char[i] < 126)
          return 0;
    
        return 1;  
    } //verificador
    
    
    void MD_FIVE :: wList_Soft()
    {
     Threader = new HANDLE [sizeof(HANDLE) * 2];
     ThreadID = new DWORD [sizeof(DWORD) * 2];
     Threader[0] = CreateThread(0,0,wList_Softhread,(void *) this,0, &ThreadID[0]);
     Threader[1] = CreateThread(0,0,wList_Softhread2,(void *) this,0, &ThreadID[1]);
     
     WaitForMultipleObjects(2,Threader,1,INFINITE);
     
     TerminateThread(Threader[0],0);
     CloseHandle(Threader[0]);
     
     TerminateThread(Threader[1],0);
     CloseHandle(Threader[1]);
    
     
     delete [] Threader;
     delete [] ThreadID;
    }
    
    
    
    
    
    
    /*-----
             Threads
                     ------*/
                     
                     
    DWORD wList_Softhread(LPVOID valor)
    {      
     MD_FIVE *another = (MD_FIVE *)valor;      
     MessageBox(0,"Testando","ST1",0x40);
     cout << another->HexDig[10];
     return 0;
    }
    
    
    DWORD wList_Softhread2(LPVOID valor)
    {      
     MD_FIVE *another = (MD_FIVE *)valor;      
     MessageBox(0,"teste","ST2",0x40);
     cout << another->HexDig[11];
     return 0;
    }
    
    //66
    //76
    //65
    //67
    //75
    //87
    //73
    //78
    //78
    //69
    //82

  3. #3
    Moderador Avatar de _Guga_
    Data de Ingresso
    Apr 2006
    Localização
    Salvador - BA
    Posts
    2.118

    Re: Postem suas obras primas aqui

    pena q a API do windows somente funciona NO windows, serí que existe uma lib que faz tudo o q a API do windows faz, só q multiplataforma? parabéns blackwinner ^^


    I must not fear. Fear is the mind killer.

  4. #4
    Moderador Avatar de _Guga_
    Data de Ingresso
    Apr 2006
    Localização
    Salvador - BA
    Posts
    2.118
    só uma dica blackwinner, ñ use goto, pois quebra o layuot do código ^^


    I must not fear. Fear is the mind killer.

  5. #5
    Hacker Avatar de blackwinner
    Data de Ingresso
    Dec 2006
    Localização
    Aqui
    Posts
    1.273
    Pow, o primeiro goto que eu usei que é o fim_do_programa eu usei porque eu realmente achei que ia melhorar o código estéticamente :S

    O segundo, foi pra não ter que usar outra estrutura com comparações porque eu so pão duro mesmo lolz
    Tava poupando tudo que podia(até esqueci de tirar umas variíveis inúteis e aquele zeromemory la)

    e o ultimo que é o Ja_to_Dentro, eu usei porque eu precisava de um jumper pra perto do final do segundo while.
    E como eu so burro d+ pra achar outra solução, dale goto =]

    Quanto a winapis, é impossàvel achar algo que faça tudo globalmente, mas você pode usar um ifdef WIN32 para saber se o programa esta rodando em uma plataforma windows ou em uma *nix.. ai você usa as apis do nix ou do windows.. só que ai tu vai escreve 2 códigos, um pra cada SO :S
    Eu so preguiçoso de mais pra isso.. mas pelo menos funciona para fazer o programa rodar em ambas as plataformas.

    E só pra explicar as threads, agora que eu percebi, elas seriam da seguintes forma.. no heavy mode a wordlist é gerada pela aplicação principal, mas no softmode, as threads seriam setadas em low priority, e como estão em low priority, eu usaria 2, uma para os caracteres ASCII impares e outro para os pares, gerando 2 wlists diferentes e no final juntando-as.. assim o softmode seria potencialmente mais rípido do que o heavy mode mas não arriscaria causar instabilidade no pc da pessoa que usasse, diferentemente se fosse em high priority.. quem for completar, jí sabe o porque desses heavy mode e soft mode.. e lógico, rodando em softmode, a aplicação ficaria na notification bar.

    Eu devo voltar pra net daqui a um mes ou um pouco mais e por isso tive que desistir desse projeto \=
    Assim que eu voltar, vou começar a codar uma botnet com a jessy e o ruyther.. se alguem quiser ajudar, só não posso garantir que o código serí liberado jí que os ultimos 2 que fizemos juntos não foram \=


    Haa, vo postar mais um código aqui, dessa vez um bem simples, ele recebe um inteiro e devolve um obj da classe string.. eu fiz a muito tempo, mas as vezes eu ainda uso ele pra não precisar declarar bibliotecas a mais, tomara que ajude mais alguem:
    PS: novamente eu e meus gotos lolz

    Código:
    #include <iostream>
    #include <string>
    
    
    using namespace std;
    
    
    
    
    string conversion(int conv)
    {
     string numeros;
     int conv2 = conv;
     
     
     
     testes:
                   
     for (;conv2 >= 10; conv2-=10);
      
     
     testes2:
     switch(conv2)
     {
                               
      case 0:
            numeros += "0";
            break;            
      case 1:
            numeros += "1";
            break;
      case 2:
            numeros += "2";
            break;
      case 3:
            numeros += "3";
            break;
      case 4:
            numeros += "4";
            break;
      case 5:
            numeros += "5";
            break;
      case 6:
            numeros += "6";
            break;
      case 7:
            numeros += "7";
            break;
      case 8:
            numeros += "8";
            break;
      case 9:
            numeros += "9";
            break;
                   
     }
     
     conv = (conv - conv2) / 10;
     conv2 = conv;
     if (conv < 10 && conv > 0)
      goto testes2;
     if (conv >= 10)
      goto testes;
     
     if (!conv)
      {
       string numeros2;
       numeros2 = numeros;
       numeros.clear();
       for (int lol = numeros2.size() - 1; lol >= 0; lol--)
       {
        numeros += numeros2[lol];
        
       }
       return numeros;  
      }
     
           
    }
    
    int main()
    {
         
        for (int i = 0; i<=200; i++)
          cout << conversion(i) << endl;
    
     
        
        while(1);
    }

  6. #6
    Moderador Avatar de _Guga_
    Data de Ingresso
    Apr 2006
    Localização
    Salvador - BA
    Posts
    2.118
    qaunto à multiplataforma, é um pouco complicado de se mecher, por exemplo, para se limpar a tela, nas épocas pré-Windows-95 tinham formas muito bacanas de se fazer isso sem ter que apelar para o sistema operacional, você podia acionar uma interrupção do computador que fazia a limpeza da tela ou ainda escrever diretamente na memória de vàdeo, se não me engano no endereço 0xB000 ou 0xB800 (pura nostalgia), mas hoje em dia não sei nem se o sistema operacional vai te deixar fazer isso.
    Por interrupção:

    void clear_screen()
    {
    /* BIOS service routine to clear console window. */
    asm("mov $0x00, %ah\n\t"
    "mov $0x03, %al\n\t"
    "int $0x10");
    }
    segundo relatos que li, esse código funcionou em Windows, compilado com DJGPP. Daew, vc se vê obrigado hoje em dia a apela para o SO, então, se como eu faria para fazer um programa tanto para windows quanto para linux? o jeito parece q é fazer do jeito q o blackwinner falou, mas ñ se desespere, a interrupção:

    código assembly em formato Intel:

    mov ah, 0x00
    mov al, 0x03
    int 0x10

    codigo format o AT&T


    mov $0x00, ah
    mov $0x03, al
    int $0x10

    pode funcionar, o único problema é q você nao vai conseguir executar esta interrupção em um programa Windows. Vc vai ter que compilar com outro complilador que gere uma aplicação independente. Mas na minha opinião, é mais seguro fazer:

    Código:
    #ifdef _WIN32 
      #define Cls system("cls"); 
    #else // codigo linux 
      #define Cls system("clear");
    #endif
    flw


    I must not fear. Fear is the mind killer.

  7. #7
    Moderador Avatar de _Guga_
    Data de Ingresso
    Apr 2006
    Localização
    Salvador - BA
    Posts
    2.118
    Seria demasiado interessante se algum guest do tópico postasse mais sources, vamos encher


    I must not fear. Fear is the mind killer.

  8. #8
    Hacker Avatar de blackwinner
    Data de Ingresso
    Dec 2006
    Localização
    Aqui
    Posts
    1.273
    Acho que você não percebeu.. mas eu estou entre os dois únicos programadores de C++ nesse forum.. e adivinha? você é o segundo lol

    Se você quiser achar outros programadores que utilizem C++, só em foruns especializados \=
    Não existem muitos C++ programmers hoje em dia espalhados por foruns. \=

  9. #9
    Moderador Avatar de _Guga_
    Data de Ingresso
    Apr 2006
    Localização
    Salvador - BA
    Posts
    2.118
    Mas, sempre tem um que passa por aqui, sinto falta do dark_side =(


    I must not fear. Fear is the mind killer.

  10. #10
    Hacker Avatar de blackwinner
    Data de Ingresso
    Dec 2006
    Localização
    Aqui
    Posts
    1.273
    :|
    O dark era o cara.. acho que ele ainda frequenta o darkers ou o uni dev..

Tópicos Similares

  1. Postem suas dúvidas relacionadas a Webdesign
    Por yeyeh no fórum WebDesign
    Respostas: 46
    Último Post: 13 Nov 2011, 20:50
  2. Postem suas obras primas aqui
    Por Tecno-Java no fórum Java
    Respostas: 18
    Último Post: 26 Jan 2009, 11:48

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • Você não pode enviar respostas
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •