commit
This commit is contained in:
commit
ae37c0319a
143
BrutForce.cpp
Executable file
143
BrutForce.cpp
Executable file
@ -0,0 +1,143 @@
|
||||
#include<iostream>//Ввод вывод
|
||||
#include<fstream>//Работа с файлами
|
||||
#include<string>//Работа со строками
|
||||
#include<vector>//Работа с динамическими массивами
|
||||
#include<algorithm>//Работа с алгоритмами
|
||||
#include<chrono>//Работа с временем
|
||||
#include<thread>//Работа с многопоточностью
|
||||
|
||||
|
||||
std::vector<std::string>usernames;// Храним имена пользователей
|
||||
std::vector<std::string>passwords;// Храним пароли
|
||||
|
||||
void addUserFromFile()// Объявляем функцию добавления пользователей в файл
|
||||
{
|
||||
std::ifstream file("users.txt");// Создаём объект file типа std::ifstream
|
||||
if(!file){//Если файл не открылся
|
||||
std::cout<<"Файл не найден"<<std::endl;//Выводим сообщение об ошибке
|
||||
return ;//Завершаем функцию
|
||||
}
|
||||
|
||||
std::string username, password;// Объявляем переменные типа string для пароля и имени пользователя
|
||||
while (file >> username >> password){//Цикл читает файл до тех пор пока есть сходства
|
||||
usernames.push_back(username);//Добавляем элемент в конец вектора
|
||||
passwords.push_back(password);//Добавляем объект в конец вектора
|
||||
}
|
||||
}
|
||||
|
||||
bool Verifier(const std::string& username, const std::string& password,//Проверка совпадений
|
||||
const std::vector<std::string>& usernames, const std::vector<std::string>& passwords)//Списки логинов и паролей
|
||||
|
||||
{
|
||||
for (size_t i=0; i<usernames.size(); i++)//Проходим по всем логигнам
|
||||
{
|
||||
if(usernames[i] == username && passwords[i] == password){//Если логин и пароль совпадают
|
||||
return true;//Вход разрешён
|
||||
}
|
||||
}
|
||||
return false;//конец проверки
|
||||
}
|
||||
bool userExists(const std::string& username){//Проверяем наличие пользователя
|
||||
for(const auto& existing: usernames){//Перебираем список логинов
|
||||
if(existing == username){//Если логин найден
|
||||
return true;//Пользователь существует
|
||||
}
|
||||
}
|
||||
return false;//Пользователь не найден
|
||||
}
|
||||
void bruteSmart(const std::string& targetPassword, const std::string& charset){//Функция умного подбора пароля
|
||||
std::string current = std::string(targetPassword.length(), '.');//Строка заготовка из точек
|
||||
|
||||
for (size_t i=0; i<targetPassword.length();++i){//Перебираем каждый символ пароля
|
||||
for(char c : charset){//Перебираем каждый символ из набора символов
|
||||
current[i]=c;//Подставляем символ
|
||||
std::cout<<"Пробуем: "<<current<<"\r"<<std::flush;//Вывод текущей попытки
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(30));//Небольшая задержка
|
||||
if(c == targetPassword[i]){//Если символ совпал с оригиналом
|
||||
break;//Переходим к следующему символу
|
||||
}
|
||||
}
|
||||
}
|
||||
std::cout<<"\nПароль подобран: "<<current<<std::endl;//Выводим найденный пароль
|
||||
|
||||
}
|
||||
void bruteForce(const std::string& username){//Запуск брутфорса по логину
|
||||
auto it =std::find(usernames.begin(), usernames.end(), username);//Ищем логин в списке
|
||||
if(it == usernames.end()){//Если не найден
|
||||
std::cout<<"Пользователь не найден"<<std::endl;//Выводим сообщение
|
||||
return;//Выход из функции
|
||||
}
|
||||
|
||||
size_t index = std::distance(usernames.begin(), it);//Получаем индекс пользователя
|
||||
std::string targetPassword = passwords[index];//Получаем его пароль
|
||||
|
||||
const std::string charset = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()-_=+[]{};:'\",.<>?/\\|~";//Допустимые символы
|
||||
|
||||
|
||||
std::cout<<"Запуск брутфорса на пользователя: " << username<<std::endl;//Вывод надписи
|
||||
bruteSmart(targetPassword, charset);//Вызов самого брутфорса
|
||||
}
|
||||
|
||||
int main(){
|
||||
addUserFromFile();//Добавляем пользователя в файл
|
||||
while(true){//Бесконечный цикл для отображения
|
||||
std::cout<<"\n===MENU==="<<std::endl;//Выводим надпись MENU
|
||||
std::cout<<"1. Проверка пользователя"<<std::endl;//Выводим надпись "1. Проверка пользователя"
|
||||
std::cout<<"2. Зарегистрировать нового пользователя"<<std::endl;//Выводим надпись "2.Зарегистрировать пользователя ""
|
||||
std::cout<<"3. Брутфорс"<<std::endl;//Вывод "Брутфорс"
|
||||
std::cout<<"4. Выход"<<std::endl;//Вывод надписи "3.Выход"
|
||||
std::cout<<"Выбери действие: "<<std::endl;//Выводим "Выбери действие"
|
||||
|
||||
int choice;// Переменная хранящаяя выбор пользователя (1 , 2 или 3)
|
||||
std::cin>>choice;//Ввод с клавиатуры
|
||||
std::cin.ignore(); // пропускаем символ новой строки после ввода, чтобы избежать проблем с последующим вводом строк
|
||||
|
||||
if(choice==1){//Условие выбора
|
||||
std::string username;//Переменная хранит имя пользователя и пароль
|
||||
std::cout<<"Введи логин: ";//Запрашиваем логин
|
||||
std::getline(std::cin, username);//Вводим логин с клавиатуры
|
||||
if(userExists(username)){//Если введеные пользователем данные совпадают
|
||||
std::cout<<"Пользователь найден"<<std::endl;//Выводим разрешенный доступ
|
||||
}else{//Иначе
|
||||
std::cout<<"Неверный логин или пароль"<<std::endl;//Выводим ошибку
|
||||
}
|
||||
|
||||
}else if (choice ==2){//Условие выбора
|
||||
|
||||
std::string newUsername, newPassword;//Переменная хранящая новый пароль и логигн для регистрации нового пользователя
|
||||
std::cout<<"Придумай логин: ";//Запрашиваем новыйь
|
||||
std::getline(std::cin, newUsername);//Вводим с клавиатуры
|
||||
std::cout<<"Придумай пароль: ";//Запрашиваем
|
||||
std::getline(std::cin, newPassword);//Вводим новый пароль читая всю строку
|
||||
|
||||
if(userExists(newUsername)){//Если пользователь уже существует
|
||||
std::cout<<"Такой пользователь уже существует"<<std::endl;//Выводим сообщение
|
||||
}else{//Иначе
|
||||
usernames.push_back(newUsername);//Добавляем логин
|
||||
passwords.push_back(newPassword);//Добавляем логин
|
||||
|
||||
std::ofstream outFile("users.txt", std::ios::app);//Открываем файл для записи
|
||||
if(outFile){
|
||||
outFile<<newUsername<<" "<<newPassword<<std::endl;//Сохраняем данные
|
||||
std::cout<<"регистрация успешна"<<std::endl;//Вывод сообщения
|
||||
}else{//Иначе
|
||||
std::cout<<"Ошибка записи в файл"<<std::endl;//Выводим ошибку
|
||||
}
|
||||
}
|
||||
|
||||
}else if(choice == 3){//Если выбор 3
|
||||
std::string username;//Переменная для хранения имени пользователя
|
||||
std::cout<<"Введите имя пользователя для брутфорса: ";//Выводим запрос на ввод
|
||||
std::getline(std::cin,username);//Ввод имени пользователя(с учетом пробелов)
|
||||
bruteForce(username);//Запуск буртфорса
|
||||
}else if(choice ==4){//Если выбор 4
|
||||
std::cout<<"Выход..."<<std::endl;//Выводим надпись
|
||||
break;//Завершение программы
|
||||
}else{//Если введен некорректный пункт меню
|
||||
std::cout<<"Некорректный выбор, попробуй еще раз"<<std::endl;//Ошибка
|
||||
}
|
||||
}
|
||||
|
||||
return 0; //Завершение
|
||||
|
||||
}
|
||||
78
KeyGen.cpp
Executable file
78
KeyGen.cpp
Executable file
@ -0,0 +1,78 @@
|
||||
#include <iostream>//ввод/вывод
|
||||
#include <vector>//хранение символов
|
||||
#include <string>//работа со строками
|
||||
#include <cstdlib>//работа с rand()
|
||||
#include <ctime>//работа со временем
|
||||
|
||||
int main()
|
||||
{
|
||||
std::vector<std::string> 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<std::string> 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<std::string> 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<std::string> 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<std::string> 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<unsigned int>(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;
|
||||
}
|
||||
66
color_detection.cpp
Executable file
66
color_detection.cpp
Executable file
@ -0,0 +1,66 @@
|
||||
#include <opencv2/opencv.hpp>
|
||||
#include <iostream>
|
||||
|
||||
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<std::vector<cv::Point>> 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;
|
||||
}
|
||||
53
face_detection.cpp
Normal file
53
face_detection.cpp
Normal file
@ -0,0 +1,53 @@
|
||||
#include <opencv2/opencv.hpp>
|
||||
#include <iostream>
|
||||
|
||||
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<cv::Rect> 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;
|
||||
}
|
||||
49
hand&arm_detection.cpp
Executable file
49
hand&arm_detection.cpp
Executable file
@ -0,0 +1,49 @@
|
||||
#include <opencv2/opencv.hpp>
|
||||
#include <iostream>
|
||||
|
||||
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<std::vector<cv::Point>> 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;
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user