Программа для подбора пароля - C (СИ)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by GVIG, 5 Dec 2015.

  1. GVIG

    GVIG New Member

    Joined:
    14 Oct 2015
    Messages:
    9
    Likes Received:
    1
    Reputations:
    0
    Доброго времени суток!
    Пытаюсь написать программу для подбора пароля. Брут форс[​IMG]
    Сейчас пытаюсь написать программу для подбора значений, которые ввел пользователь.
    То есть пользователь вводит 8 символов (пароль) и программа путём перебора значений в массиве ищет совпадения.
    Вот что у меня вышло. Но не может же быть так просто! Пожалуйста подскажите что не так.

    Code:
     /***************************************************/
    /* Подбор символов, которые вводит пользователь    */
    /***************************************************/
    
    #include <stdio.h>
    #include <stdlib.h>
    #define NUM 94 // размер массива
    void fctArr(char a[NUM]); // введение и подбор значений
    int main(void)
    {
            char arrSym[NUM] = {'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', // массив
                                'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'z',
                                'x', 'c', 'v', 'b', 'n', 'm', 'Q', 'W', 'E', 'R',
                                'T', 'Y', 'U', 'I', 'O', 'P', 'A', 'S', 'D', 'F',
                                'G', 'H', 'J', 'K', 'L', 'Z', 'X', 'C', 'V', 'B',
                                'N', 'M', '`', '~', '!', '@', '#', '$', '%', '^',
                                '&', '*', '(', ')', '-', '_', '=', '+', '{', '}',
                                '[', ']', '"', '|', '\\', '/', '?', ',', '.', '<',
                                '>', ':', ';', '1', '2', '3', '4', '5', '6', '7',
                                '8', '9', '0'
                               };
        fctArr(arrSym); // вызов функции для введения и подбора значений
        return 0;
    }
    
    void fctArr(char a[NUM])
    {
            char sym_0, sym_1, sym_2, sym_3, sym_4, sym_5, sym_6, sym_7;
            int i;
        printf("Enter 8 symbol:\n");
        scanf("%c%c%c%c%c%c%c%c", &sym_0, &sym_1, &sym_2, &sym_3, &sym_4, &sym_5, &sym_6, &sym_7);
    
        for(i = 0; i < NUM; i++) // перебирает для введенного значения значение с массива
            {
                if(sym_0 == a[i])
                {
                  printf("\n1 symbol [%c] = [%d]", a[i], i);
                  break;
                }
            }
    
        for(i = 0; i < NUM; i++)
        {
            if(sym_1 == a[i])
                {
                  printf("\n2 symbol [%c] = [%d]", a[i], i);
                  break;
                }
        }
    
        for(i = 0; i < NUM; i++)
        {
            if(sym_2 == a[i])
                {
                  printf("\n3 symbol [%c] = [%d]", a[i], i);
                  break;
                }
        }
    
        for(i = 0; i < NUM; i++)
        {
            if(sym_3 == a[i])
                {
                  printf("\n4 symbol [%c] = [%d]", a[i], i);
                  break;
                }
        }
    
        for(i = 0; i < NUM; i++)
        {
            if(sym_4 == a[i])
                {
                  printf("\n5 symbol [%c] = [%d]", a[i], i);
                  break;
                }
        }
    
        for(i = 0; i < NUM; i++)
        {
            if(sym_5 == a[i])
                {
                  printf("\n6 symbol [%c] = [%d]", a[i], i);
                  break;
                }
        }
    
        for(i = 0; i < NUM; i++)
        {
            if(sym_6 == a[i])
                {
                  printf("\n7 symbol [%c] = [%d]", a[i], i);
                  break;
                }
        }
    
        for(i = 0; i < NUM; i++)
        {
            if(sym_7 == a[i])
                {
                  printf("\n8 symbol [%c] = [%d]", a[i], i);
                  break;
                }
        }
        printf("\n\n");
        system("pause");
    }
    
     
    CKAP likes this.
  2. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    _________________________
    GVIG and CKAP like this.
  3. pravdaru

    pravdaru Member

    Joined:
    5 Dec 2015
    Messages:
    176
    Likes Received:
    47
    Reputations:
    0
    Алгоритм подбора заведомо кривой.
    У тебя подбор идет по символьно, такого в природе нет.
     
    #colorblind likes this.
  4. GVIG

    GVIG New Member

    Joined:
    14 Oct 2015
    Messages:
    9
    Likes Received:
    1
    Reputations:
    0
    Спасибо за совет!
    Я просто новичок. Только начал изучать СИ.
    То есть?
    А как должен идти подбор?
     
  5. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    637
    Likes Received:
    246
    Reputations:
    42
    Сам подумай, если ты будешь в своей программе сравнивать пароли, ты будешь делать это посимвольно, выводя результат верно-неверно для каждого символа?
     
  6. pravdaru

    pravdaru Member

    Joined:
    5 Dec 2015
    Messages:
    176
    Likes Received:
    47
    Reputations:
    0
    Надо подставлять не по символьно, а слово целиком. И тупой перебор, лучше не использовать.
    Лучше сгенерировать словари и комбинировать слова выражения и цифры с ними.

    Сам ты не сможешь сразу нормально сделать. Качай исходники из интернета и разбирайся, в каждой строчке зачем так сделали. Сложится общее представление и понимание.
     
    GVIG likes this.
  7. Раrаdох

    Раrаdох Elder - Старейшина

    Joined:
    30 Jan 2014
    Messages:
    95
    Likes Received:
    140
    Reputations:
    33
    1. Как говорили выше, брутить посимвольно пароль заведомо неверно в большинстве случаев. Однако, например при слепой SqlInjection можно значения подбирать именно посимвольно, поэтому, в общем то, закроем на это глаза.
    2. Какой смысл создавать массив с пачкой символов, если можно просто брать код символа и переводить его в соответственно символ? Ведь коды идут последовательно для каждой буквы. Таким образом, можно с помощью цикла перебрать все буквы, не создавая никаких массивов.
    3. Нет предела совершенству. Твой код ещё пилить и пилить, но для начала недурно :)
     
    GVIG likes this.
  8. GVIG

    GVIG New Member

    Joined:
    14 Oct 2015
    Messages:
    9
    Likes Received:
    1
    Reputations:
    0
    Спасибо за советы!
    Буду разбираться:)
     
Loading...
Similar Threads - Программа подбора пароля
  1. Peja
    Replies:
    0
    Views:
    2,639