0 / 0 / 1
Регистрация: 13.11.2014
Сообщений: 34
1

Программа "Переборщик паролей" не отвечает

22.12.2015, 20:27. Показов 606. Ответов 1
Метки нет (Все метки)

День добрый. Было задание написать программу, которая считывает пароль, введенный пользователем, запоминает его, а потом подбирает его, используя все коды символов ASCII. В общем-то оно всё есть, но есть проблема - работает только при длине пароля 3 символа или меньше. Если больше, то просто зависает, ничего не происходит, никаких ошибок и исключений не выдает, в диспетчере статус "не отвечает". И вторая проблема - не срабатывает первый return из variadic_loop. То есть в if (pass==givenPass) заходит, cout срабатывает, а return - нет, то есть при найденном верном пароле продолжает крутиться до упора, поэтому, например, время работы приходится считать внутри функции.

MyForm.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
#pragma once
#include <ctime>
#include <iostream>
#include <string>
#include <stdlib.h>
#include <string.h>
#include <msclr\marshal_cppstd.h>
using namespace std;
using namespace System::Runtime::InteropServices;
 
char* FormPass(int j, char* interPass, char* givenPass);
bool TryPass(char* possPass, char* givenPass);
char * and_SysStringToChar(System::String^ string);
string variadic_loop(size_t i, size_t n, int *t, int v, char ascii[], string givenPass);
System::String^  and_CharToSysString(char* ch);
 
unsigned int start_time;
unsigned int end_time;
 
 
namespace ProjectName {    // here
 
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
 
    
 
    /// <summary>
    /// Сводка для MyForm
    /// </summary>
    public ref class MyForm : public System::Windows::Forms::Form
    {
    public:
        MyForm(void)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
        }
 
    protected:
        /// <summary>
        /// Освободить все используемые ресурсы.
        /// </summary>
        ~MyForm()
        {
            if (components)
            {
                delete components;
            }
        }
    private: System::Windows::Forms::TextBox^  textBox1;
    private: System::Windows::Forms::Button^  button1;
    private: System::Windows::Forms::Label^  label1;
    private: System::Windows::Forms::Label^  label2;
    private: System::Windows::Forms::Label^  label3;
    protected:
 
    private:
        /// <summary>
        /// Требуется переменная конструктора.
        /// </summary>
        System::ComponentModel::Container ^components;
 
#pragma region Windows Form Designer generated code
        /// <summary>
        /// Обязательный метод для поддержки конструктора - не изменяйте
        /// содержимое данного метода при помощи редактора кода.
        /// </summary>
        void InitializeComponent(void)
        {
            this->textBox1 = (gcnew System::Windows::Forms::TextBox());
            this->button1 = (gcnew System::Windows::Forms::Button());
            this->label1 = (gcnew System::Windows::Forms::Label());
            this->label2 = (gcnew System::Windows::Forms::Label());
            this->label3 = (gcnew System::Windows::Forms::Label());
            this->SuspendLayout();
            // 
            // textBox1
            // 
            this->textBox1->Location = System::Drawing::Point(42, 43);
            this->textBox1->Name = L"textBox1";
            this->textBox1->PasswordChar = '*';
            this->textBox1->Size = System::Drawing::Size(100, 20);
            this->textBox1->TabIndex = 0;
            // 
            // button1
            // 
            this->button1->Location = System::Drawing::Point(167, 41);
            this->button1->Name = L"button1";
            this->button1->Size = System::Drawing::Size(75, 23);
            this->button1->TabIndex = 1;
            this->button1->Text = L"button1";
            this->button1->UseVisualStyleBackColor = true;
            this->button1->Click += gcnew System::EventHandler(this, &MyForm::button1_Click);
            // 
            // label1
            // 
            this->label1->AutoSize = true;
            this->label1->Location = System::Drawing::Point(42, 94);
            this->label1->Name = L"label1";
            this->label1->Size = System::Drawing::Size(48, 13);
            this->label1->TabIndex = 2;
            this->label1->Text = L"Пароль:";
            // 
            // label2
            // 
            this->label2->AutoSize = true;
            this->label2->Location = System::Drawing::Point(96, 94);
            this->label2->Name = L"label2";
            this->label2->Size = System::Drawing::Size(19, 13);
            this->label2->TabIndex = 3;
            this->label2->Text = L"***";
            // 
            // label3
            // 
            this->label3->AutoSize = true;
            this->label3->Location = System::Drawing::Point(42, 122);
            this->label3->Name = L"label3";
            this->label3->Size = System::Drawing::Size(43, 13);
            this->label3->TabIndex = 4;
            this->label3->Text = L"Время:";
            // 
            // MyForm
            // 
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(284, 261);
            this->Controls->Add(this->label3);
            this->Controls->Add(this->label2);
            this->Controls->Add(this->label1);
            this->Controls->Add(this->button1);
            this->Controls->Add(this->textBox1);
            this->Name = L"MyForm";
            this->Text = L"MyForm";
            this->ResumeLayout(false);
            this->PerformLayout();
 
        }
#pragma endregion
 
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
    
    {
                 string dispPass;
                 if (textBox1->Text != "")
                 {
                     textBox1->BackColor = SystemColors::Window;
 
                     start_time = clock(); // начальное время
 
                     int asciitotal = 256;
                     char ascii[256];
                     for (int i = 0; i < asciitotal; i++)
                     {
                         ascii[i] = i;
                     }
 
                     string givenPass;
                     givenPass = msclr::interop::marshal_as<std::string>(textBox1->Text);
 
                     int len = textBox1->Text->Length;
 
                     cout << givenPass<<endl;
 
                     int *t = new int[len];
                     t[len] = { 0 };
 
                     dispPass=variadic_loop(0, len, t, asciitotal, ascii, givenPass);
 
                    // cout << foundPass;
 
                     label2->Text = gcnew String(dispPass.c_str());
 
                    
                     unsigned int search_time = end_time - start_time; // искомое время
                     this->label3->Text = "Время: " + search_time / 1000 + " с";
                 }
 
                 else
                 {
                     textBox1->BackColor = Color::Salmon;
                 }
    }
};
}
 
string foundPass="";
string variadic_loop(size_t i, size_t n, int *t, int v, char ascii[], string givenPass)
{
    //char* foundPass = new char[n];
    //char* pass = new char[n];
 
    string pass="";
    for (int x = 0; x < n;x++)
        pass.append("x");
 
    for (t[i] = 32; t[i] < v; t[i]++)
    {
        if (n == i + 1)
        {
            for (int x = 0; x < n; x++)
                pass[x] = ascii[t[x]];
            //cout << pass << endl;
            if (pass==givenPass)
            {
                end_time = clock(); // конечное время
                foundPass = "";
                foundPass = foundPass.append(pass);
                cout << "yes"<<endl;
                cout << foundPass << endl;
                //break;
                return foundPass;
 
            }
            continue;
        }
        variadic_loop(i + 1, n, t, v, ascii, givenPass);
    }
 
 
    //cout << "no" << endl;
    //
    return foundPass;
}
MyForm.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "MyForm.h" // here
 
using namespace ProjectName; // here
 
[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
 
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false);
 
    Application::Run(gcnew MyForm()); // here
 
 
    return 0;
}
MS Visual Studio 2013, если важно
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.12.2015, 20:27
Ответы с готовыми решениями:

Кнопки "Свернуть" "Развернуть" "Закрыть"
Подскажите, как определить, что была нажата одна из кнопок &quot;Свернуть&quot;, &quot;Развернуть&quot;, &quot;Закрыть&quot;, из...

Почему "не отвечает" программа при выполнении "in"?
Почему у меня программа вылетает если я выполняю &quot;in&quot; на 60h порт? Пробовал программу запустить...

При автозапуске программы через реестр программа "не отвечает"
Доброго времени. Добавил свою программу в автозапуск в реестре. Программа сама скрытая (это такая...

Переборщик паролей
Очень интересует как написать скрипт который будет перебирать пароли ... Хотя бы чтобы перебирал...

1
0 / 0 / 0
Регистрация: 31.05.2014
Сообщений: 24
29.12.2015, 21:38 2
в твоем случае проще задать вопрос в теме про C# / .NET

P.S.
Если юзаешь .NET, то проще уже шарпом пользовацо.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.12.2015, 21:38

"Программа не отвечает" (сложные расчеты)
Приложение выполняет сложные длительные расчеты. Кликнул - ждешь 2-4 минуты. Я прилепил внизу окна...

Как сделать полный перебор паролей от "A" до "Z" включая цифры?
Здравствуйте. У меня возник такой вопрос: как сделать полный перебор паролей от &quot;A&quot; до &quot;Z&quot; включая...

Программа "Не отвечает"
Программа выполняет сложные расчеты в одном методе. После 10секунд благополучного(по прогресбару)...

Как написать регулярное выражение для выдергивания английских букв и символов: "+", ",", ":", "-", " ", "!", "?" и "."
Не могу ни как собразить как написать регулярное выражение для выдергивания английских букв и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.