From ae37c0319afe34f23bb3855dd382b7b2d0d6e822 Mon Sep 17 00:00:00 2001 From: DE Date: Sun, 17 May 2026 02:56:32 +0300 Subject: [PATCH] commit --- BrutForce.cpp | 143 +++++++++++++++++++++++++++++++++++++++++ KeyGen.cpp | 78 ++++++++++++++++++++++ color_detection.cpp | 66 +++++++++++++++++++ face_detection.cpp | 53 +++++++++++++++ hand&arm_detection.cpp | 49 ++++++++++++++ 5 files changed, 389 insertions(+) create mode 100755 BrutForce.cpp create mode 100755 KeyGen.cpp create mode 100755 color_detection.cpp create mode 100644 face_detection.cpp create mode 100755 hand&arm_detection.cpp diff --git a/BrutForce.cpp b/BrutForce.cpp new file mode 100755 index 0000000..6d500de --- /dev/null +++ b/BrutForce.cpp @@ -0,0 +1,143 @@ +#include//Ввод вывод +#include//Работа с файлами +#include//Работа со строками +#include//Работа с динамическими массивами +#include//Работа с алгоритмами +#include//Работа с временем +#include//Работа с многопоточностью + + +std::vectorusernames;// Храним имена пользователей +std::vectorpasswords;// Храним пароли + +void addUserFromFile()// Объявляем функцию добавления пользователей в файл +{ + std::ifstream file("users.txt");// Создаём объект file типа std::ifstream + if(!file){//Если файл не открылся + std::cout<<"Файл не найден"<> username >> password){//Цикл читает файл до тех пор пока есть сходства + usernames.push_back(username);//Добавляем элемент в конец вектора + passwords.push_back(password);//Добавляем объект в конец вектора + } +} + +bool Verifier(const std::string& username, const std::string& password,//Проверка совпадений + const std::vector& usernames, const std::vector& passwords)//Списки логинов и паролей + +{ + for (size_t i=0; i?/\\|~";//Допустимые символы + + + std::cout<<"Запуск брутфорса на пользователя: " << username<>choice;//Ввод с клавиатуры + std::cin.ignore(); // пропускаем символ новой строки после ввода, чтобы избежать проблем с последующим вводом строк + + if(choice==1){//Условие выбора + std::string username;//Переменная хранит имя пользователя и пароль + std::cout<<"Введи логин: ";//Запрашиваем логин + std::getline(std::cin, username);//Вводим логин с клавиатуры + if(userExists(username)){//Если введеные пользователем данные совпадают + std::cout<<"Пользователь найден"<//ввод/вывод +#include //хранение символов +#include //работа со строками +#include //работа с rand() +#include //работа со временем + +int main() +{ + std::vector allowedChars; + + char useLetters, useDigits, useSpecials;//переменные символьного типа + int caseChoice = 0;//переменные целочисленного типа + int passwdLength = 0;//переменная для длинны пароля + + std::cout << "=== Генератор паролей ===" << std::endl;//Типо заголовок + + std::cout << "Использовать буквы? (y/n): ";//Запрашиваем использование букв + std::cin >> useLetters;//Ввод с клавиатуры + + if (useLetters == 'y' || useLetters == 'Y') { + std::cout << "Выбери регистр:" << std::endl; + std::cout << "1 - Заглавные" << std::endl; + std::cout << "2 - Строчные" << std::endl; + std::cout << "3 - Оба" << std::endl; + std::cout << "Твой выбор: "; + std::cin >> caseChoice;//Выбор регистра + + if (caseChoice == 1 || caseChoice == 3) {//если выбор заглавный регистр то (1) если оба то (3) + std::vector engUpper = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"}; + allowedChars.insert(allowedChars.end(), engUpper.begin(), engUpper.end());//копируем буквы из engUpper + } + if (caseChoice == 2 || caseChoice == 3) {//Если выбрал строчный реггистр то (2) + std::vector engLower = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"}; + allowedChars.insert(allowedChars.end(), engLower.begin(), engLower.end());//снова копируем + } + } + + std::cout << "Использовать спецсимволы? (y/n): ";//Запрашшиваем использование символов + std::cin >> useSpecials;//Ввод с клавиатуры + + if (useSpecials == 'y' || useSpecials == 'Y') {//Если используем вводим 'y' + std::vector specials = {"!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "-", "_", "=", "+", "[", "]", "{", "}", ";", ":", ",", ".", "<", ">", "/", "?"}; + allowedChars.insert(allowedChars.end(), specials.begin(), specials.end());//копируем и добавляем символы из specials в allowedChars + } + std::cout << "Использовать цифры? (y/n): ";//Запрашиваем использование цифр? + std::cin >> useDigits;//Ввод с клавиатуры + + if (useDigits == 'y' || useDigits == 'Y') { //{Если используем вводим 'y' + std::vector digits = {"0","1","2","3","4","5","6","7","8","9"}; + allowedChars.insert(allowedChars.end(), digits.begin(), digits.end());//копируем и добавляем цифры из digits.begin в allowedChars + } + + std::cout << "Введи желаемую длину пароля: ";//Запрашиваем длинну пароля + std::cin >> passwdLength;//Вводим + if (allowedChars.empty()) {//Если выбранных символов нет то: + std::cout << "Ошибка: не выбран ни один тип символов. Генерация невозможна." << std::endl;//ошибка + return 1; + } + + if (passwdLength <= 0 || passwdLength>15) {//если длинна пароля меньше ноля и больше 10 то: + std::cout << "Ошибка: длина пароля должна быть положительным числом но не больше 15 символов." << std::endl;//ошибка + return 1; + } + + std::srand(static_cast(std::time(nullptr)));//Задаем генератору стартовое значение + std::cout << "\nСгенерированные пароли:" << std::endl;//Надпись "Сгенерированные пароли: " + + for (int p = 0; p < 3; ++p) {//Генерация продолжается пока паролей не будет 3 + std::string password = "";//Пустая строка для паролей + for (int i = 0; i < passwdLength; ++i) {//создается длинна пароля + int index = std::rand() % allowedChars.size();//генерируем целое число неограниченое по размерам. от нуля до размера(allowedChars -1) + password += allowedChars[index];//формируется пароль по одному символу из allowedChars + } + std::cout << password << std::endl;//вывод пароля + } + + return 0; +} diff --git a/color_detection.cpp b/color_detection.cpp new file mode 100755 index 0000000..bb78f22 --- /dev/null +++ b/color_detection.cpp @@ -0,0 +1,66 @@ +#include +#include + +int main() { + cv::VideoCapture cap(0); + + if (!cap.isOpened()) { + std::cout << "Не удалось открыть камеру\n"; + return -1; + } + + cv::Mat frame, hsv, mask1, mask2, mask; + + while (true) { + cap >> frame; + if (frame.empty()) break; + + cv::cvtColor(frame, hsv, cv::COLOR_BGR2HSV); + + + cv::Scalar lower_red1(0, 120, 70); + cv::Scalar upper_red1(10, 255, 255); + + cv::Scalar lower_red2(170, 120, 70); + cv::Scalar upper_red2(180, 255, 255); + + cv::inRange(hsv, lower_red1, upper_red1, mask1); + cv::inRange(hsv, lower_red2, upper_red2, mask2); + + cv::bitwise_or(mask1, mask2, mask); + + + cv::GaussianBlur(mask, mask, cv::Size(7,7), 0); + + + std::vector> contours; + cv::findContours(mask, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE); + + for (const auto &c : contours) { + if (cv::contourArea(c) > 1000) { + + cv::Rect r = cv::boundingRect(c); + cv::rectangle(frame, r, cv::Scalar(0, 255, 0), 2); + + + cv::Moments m = cv::moments(c); + if (m.m00 > 0) { + int cx = m.m10 / m.m00; + int cy = m.m01 / m.m00; + + cv::circle(frame, cv::Point(cx, cy), 8, cv::Scalar(0, 0, 255), -1); + } + } + } + + cv::imshow("Red Tracking", frame); + cv::imshow("Mask", mask); + + if (cv::waitKey(1) == 27) break; + } + + cap.release(); + cv::destroyAllWindows(); + + return 0; +} \ No newline at end of file diff --git a/face_detection.cpp b/face_detection.cpp new file mode 100644 index 0000000..fee4cdf --- /dev/null +++ b/face_detection.cpp @@ -0,0 +1,53 @@ +#include +#include + +int main() { + cv::VideoCapture cap(0); + + if (!cap.isOpened()) { + std::cout << "Не удалось открыть камеру\n"; + return -1; + } + + cv::CascadeClassifier face_cascade; + + std::string path = "/usr/share/opencv4/haarcascades/haarcascade_frontalface_default.xml"; + + if (!face_cascade.load(path)) { + std::cout << "Ошибка загрузки каскада\n"; + return -1; + } + + cv::Mat frame, gray; + + while (true) { + cap >> frame; + if (frame.empty()) break; + + cv::cvtColor(frame, gray, cv::COLOR_BGR2GRAY); + + std::vector faces; + + face_cascade.detectMultiScale( + gray, + faces, + 1.1, + 5, + 0, + cv::Size(30, 30) + ); + + for (const auto &f : faces) { + cv::rectangle(frame, f, cv::Scalar(0, 255, 0), 2); + } + + cv::imshow("Face Detection", frame); + + if (cv::waitKey(1) == 27) break; + } + + cap.release(); + cv::destroyAllWindows(); + + return 0; +} \ No newline at end of file diff --git a/hand&arm_detection.cpp b/hand&arm_detection.cpp new file mode 100755 index 0000000..32e5678 --- /dev/null +++ b/hand&arm_detection.cpp @@ -0,0 +1,49 @@ +#include +#include + +int main() { + cv::VideoCapture cap(0); + + if (!cap.isOpened()) { + std::cout << "Не удалось открыть камеру\n"; + return -1; + } + + cv::Mat frame, hsv, mask; + + while (true) { + cap >> frame; + if (frame.empty()) break; + + + cv::cvtColor(frame, hsv, cv::COLOR_BGR2HSV); + + + cv::Scalar lower(0, 30, 60); + cv::Scalar upper(20, 150, 255); + + cv::inRange(hsv, lower, upper, mask); + + cv::GaussianBlur(mask, mask, cv::Size(7,7), 0); + + std::vector> contours; + cv::findContours(mask, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE); + + for (const auto &c : contours) { + if (cv::contourArea(c) > 8000) { + cv::Rect r = cv::boundingRect(c); + cv::rectangle(frame, r, cv::Scalar(255, 0, 0), 2); + } + } + + cv::imshow("Hand Tracking", frame); + cv::imshow("Mask", mask); + + if (cv::waitKey(1) == 27) break; + } + + cap.release(); + cv::destroyAllWindows(); + + return 0; +} \ No newline at end of file