[SPOILER= Essentials]
[SPOILER= Cryptogarphy]
AES
Статический класс для работы с AES-шифрованием и MD5-хешированием. Предоставляет методы для шифрования и расшифровки текста с использованием алгоритма AES, а также создания MD5-хешей.
Методы
EncryptAES
Возвращает: string - зашифрованная строка в HEX-формате
Шифрует текст с использованием алгоритма AES. По умолчанию ключ автоматически хешируется через MD5 для обеспечения правильной длины.
Параметры:
phrase(string) - текст для шифрованияkey(string) - ключ для шифрованияhashKey(bool) - если true, ключ будет хеширован через MD5 (по умолчанию true)
Пример использования: [CODE=csharp] string text = “Мой секретный текст”; string password = “mypassword123”;
//шифруем текст с автоматическим хешированием ключа string encrypted = AES.EncryptAES(text, password); project.SendInfoToLog($“Зашифрованный текст: {encrypted}”);
//шифруем с готовым 32-символьным ключом без хеширования string hexKey = “1234567890abcdef1234567890abcdef”; string encrypted2 = AES.EncryptAES(text, hexKey, false); [/CODE]
DecryptAES
Возвращает: string - расшифрованный текст
Расшифровывает текст, зашифрованный методом EncryptAES. Важно использовать тот же ключ и настройку hashKey, что и при шифровании.
Параметры:
hash(string) - зашифрованная строка в HEX-форматеkey(string) - ключ для расшифровкиhashKey(bool) - если true, ключ будет хеширован через MD5 (по умолчанию true)
Пример использования: [CODE=csharp] string encryptedText = “A1B2C3D4…”; //зашифрованный текст string password = “mypassword123”;
//расшифровываем с тем же ключом string decrypted = AES.DecryptAES(encryptedText, password); project.SendInfoToLog($“Расшифрованный текст: {decrypted}”);
//если шифровали без хеширования ключа, то и расшифровывать нужно так же string hexKey = “1234567890abcdef1234567890abcdef”; string decrypted2 = AES.DecryptAES(encryptedText, hexKey, false); [/CODE]
HashMD5
Возвращает: string - MD5-хеш в HEX-формате
Создает MD5-хеш от переданной строки. Полезно для создания фиксированных ключей для AES-шифрования или проверки целостности данных.
Параметры:
phrase(string) - строка для хеширования
Пример использования: [CODE=csharp] string password = “mypassword123”;
//получаем MD5-хеш пароля string hash = AES.HashMD5(password); project.SendInfoToLog($“MD5 хеш: {hash}”);
//можно использовать как ключ для AES без дополнительного хеширования string text = “секретные данные”; string encrypted = AES.EncryptAES(text, hash, false); [/CODE]
Bech32
Статический класс для работы с адресами в формате Bech32. Обеспечивает конвертацию между HEX-адресами и Bech32-адресами с префиксом “init”, что используется в некоторых блокчейн-системах.
Методы
Bech32ToHex
Возвращает: string - HEX-адрес с префиксом “0x”
Конвертирует Bech32-адрес в HEX-формат. Проверяет корректность формата, префикса “init” и контрольной суммы.
Параметры:
bech32Address(string) - адрес в формате Bech32 с префиксом “init”
Пример использования: [CODE=csharp] string bech32Addr = “init1qw508d6qejxtdg4y5r3zarvary0c5xw7k8a9xz2e”;
try { //конвертируем Bech32 в HEX string hexAddr = Bech32.Bech32ToHex(bech32Addr); project.SendInfoToLog("HEX адрес: {hexAddr}"); } catch (Exception ex) { project.SendErrorToLog(“Ошибка конвертации: {ex.Message}”); } [/CODE]
HexToBech32
Возвращает: string - адрес в формате Bech32
Конвертирует HEX-адрес в формат Bech32 с указанным префиксом. По умолчанию используется префикс “init”.
Параметры:
hexAddress(string) - HEX-адрес (с префиксом “0x” или без)prefix(string) - префикс для Bech32-адреса (по умолчанию “init”)
Пример использования: [CODE=csharp] string hexAddr = “0x1234567890abcdef1234567890abcdef12345678”;
try { //конвертируем HEX в Bech32 с префиксом по умолчанию string bech32Addr = Bech32.HexToBech32(hexAddr); project.SendInfoToLog($“Bech32 адрес: {bech32Addr}”);
//можно указать свой префикс
string customAddr = Bech32.HexToBech32(hexAddr, "custom");
project.SendInfoToLog($"С префиксом custom: {customAddr}");
} catch (Exception ex) { project.SendErrorToLog($“Ошибка конвертации: {ex.Message}”); } [/CODE][/SPOILER] [SPOILER= Init]
Класс Init
Описание
Этот класс представляет собой центральный инициализатор для проектов ZennoPoster. Он упрощает создание и настройку автоматизированных задач, работая с браузерами, базами данных, аккаунтами и социальными сетями. В целом работает как фабрика для инициализации всех компонентов проекта: получает список аккаунтов для работы, настраивает браузер, подключает социальные сети и кошельки, а затем запускает основной скрипт проекта.
Конструкторы
Init(IZennoPosterProjectModel project, Instance instance, bool log = false)
- Описание: Создает экземпляр инициализатора с указанным проектом, экземпляром браузера и настройкой логирования.
- Параметры:
project- модель проекта ZennoPosterinstance- экземпляр браузераlog- включить/выключить подробное логирование (по умолчанию false)
- Пример: [CODE=csharp] var init = new Init(project, instance, true); project.SendInfoToLog(“Инициализатор создан с логированием”, false); [/CODE]
Init(IZennoPosterProjectModel project, bool log = false)
- Описание: Создает экземпляр инициализатора только с проектом (без браузера).
- Параметры:
project- модель проекта ZennoPosterlog- включить/выключить подробное логирование
- Пример: [CODE=csharp] var init = new Init(project, false); project.SendInfoToLog(“Инициализатор создан без браузера”, false); [/CODE]
Публичные методы
InitProject(string author = “w3bgr3p”, string[] customQueries = null, bool log = false)
- Описание: Выполняет полную инициализацию проекта - подготавливает базу данных, создает список аккаунтов для работы и настраивает все необходимые компоненты.
- Параметры:
author- имя автора скрипта для отображения в логахcustomQueries- дополнительные SQL-запросы для выборки аккаунтовlog- включить подробное логирование
- Пример: [CODE=csharp] string[] queries = { “SELECT id FROM accounts WHERE status = ‘active’” }; init.InitProject(“myusername”, queries, true); project.SendInfoToLog(“Проект инициализирован”, false); [/CODE]
PrepareProject()
- Описание: Подготавливает проект к выполнению - выбирает аккаунт для работы, проверяет фильтры (блокчейн, социальные сети) и настраивает экземпляр браузера.
- Пример: [CODE=csharp] try { init.PrepareProject(); project.SendInfoToLog(“Проект готов к работе”, false); } catch (Exception ex) { project.SendErrorToLog($“Ошибка подготовки: {ex.Message}”, false); } [/CODE]
PrepareInstance()
- Описание: Настраивает экземпляр браузера - запускает браузер, устанавливает прокси, загружает cookies и настраивает профиль.
- Пример: [CODE=csharp] try { init.PrepareInstance(); project.SendInfoToLog(“Браузер настроен и готов”, false); } catch (Exception ex) { project.SendErrorToLog($“Ошибка настройки браузера: {ex.Message}”, false); } [/CODE]
LoadSocials(string requiredSocial)
- Возвращает: string - список загруженных социальных сетей или “noBrowser” если браузер не запущен
- Описание: Загружает и авторизует указанные социальные сети в браузере (Google, Twitter, Discord, GitHub).
- Пример: [CODE=csharp] string result = init.LoadSocials(“Google,Twitter,Discord”); if (result == “noBrowser”) { project.SendWarningToLog(“Браузер не запущен”, false); } else { project.SendInfoToLog($“Загружены соц.сети: {result}”, false); } [/CODE]
LoadWallets(string walletsToUse)
- Возвращает: string - список загруженных кошельков или “noBrowser” если браузер не запущен
- Описание: Подключает и настраивает указанные криптовалютные кошельки (Backpack, Zerion, Keplr).
- Пример: [CODE=csharp] string result = init.LoadWallets(“Backpack,Zerion”); if (result == “noBrowser”) { project.SendWarningToLog(“Браузер не запущен для кошельков”, false); } else { project.SendInfoToLog($“Кошельки подключены: {result}”, false); } [/CODE]
RunProject(List additionalVars = null, bool add = true)
- Возвращает: bool - успешность выполнения проекта
- Описание: Запускает основной скрипт проекта с передачей всех необходимых переменных.
- Параметры:
additionalVars- дополнительные переменные для передачи в скриптadd- добавить к стандартным переменным (true) или заменить их (false)
- Пример:
[CODE=csharp]
var extraVars = new List
{ “customVariable”, “mySpecialSetting” }; bool success = init.RunProject(extraVars, true); if (success) { project.SendInfoToLog(“Проект выполнен успешно”, false); } else { project.SendErrorToLog(“Проект завершился с ошибкой”, false); } [/CODE][/SPOILER] [SPOILER= ISAFU]
SAFU (Simple Authentication and Functional Utilities)
SAFU - это утилитарный класс для шифрования и дешифрования данных с привязкой к аппаратным характеристикам системы. Класс предоставляет простые методы для безопасного хранения конфиденциальной информации в проектах ZennoPoster с использованием AES-шифрования и аппаратного ключа на основе серийного номера материнской платы.
Публичные методы
Initialize
Возвращаемое значение: void
Описание: Инициализирует систему SAFU, регистрируя функции шифрования в глобальном хранилище. Метод автоматически определяет доступные реализации и использует базовую версию SimpleSAFU по умолчанию.
Параметры:
project(IZennoPosterProjectModel) - экземпляр проекта ZennoPoster
Пример использования: [CODE=csharp] //инициализация SAFU перед использованием SAFU.Initialize(project); [/CODE]
Encode
Возвращаемое значение: string
Описание: Шифрует переданную строку с использованием PIN-кода из переменной проекта cfgPin. Если PIN-код не задан, возвращает исходную строку без изменений.
Параметры:
project(IZennoPosterProjectModel) - экземпляр проекта ZennoPostertoEncrypt(string) - строка для шифрованияlog(bool, необязательный) - флаг логирования (по умолчанию false)
Пример использования: [CODE=csharp] //шифрование пароля string password = “mySecretPassword”; string encryptedPassword = SAFU.Encode(project, password); project.SendInfoToLog($“Пароль зашифрован: {encryptedPassword}”); [/CODE]
Decode
Возвращаемое значение: string
Описание: Расшифровывает переданную строку с использованием PIN-кода из переменной проекта cfgPin. Если PIN-код не задан, возвращает исходную строку. В случае ошибки расшифровки отправляет предупреждение в лог.
Параметры:
project(IZennoPosterProjectModel) - экземпляр проекта ZennoPostertoDecrypt(string) - строка для расшифровкиlog(bool, необязательный) - флаг логирования (по умолчанию false)
Пример использования: [CODE=csharp] //расшифровка пароля string encryptedPassword = “зашифрованная_строка”; string originalPassword = SAFU.Decode(project, encryptedPassword); project.SendInfoToLog($“Пароль расшифрован: {originalPassword}”); [/CODE]
HWPass
Возвращаемое значение: string
Описание: Генерирует аппаратный пароль на основе серийного номера материнской платы и значения переменной acc0. Используется для создания уникального ключа, привязанного к конкретному компьютеру.
Параметры:
project(IZennoPosterProjectModel) - экземпляр проекта ZennoPosterlog(bool, необязательный) - флаг логирования (по умолчанию false)
Пример использования: [CODE=csharp] //получение аппаратного пароля string hardwarePassword = SAFU.HWPass(project); project.SendInfoToLog($“Аппаратный пароль: {hardwarePassword}”); [/CODE][/SPOILER] [SPOILER= Logger]
Logger
Класс для удобного логирования в ZennoPoster с расширенными возможностями форматирования, цветовой разметки и отправки отчетов в Telegram. Позволяет настраивать отображение дополнительной информации (аккаунт, время выполнения, использование памяти) и автоматически определять цвет сообщений по содержимому.
Конструкторы
Logger(IZennoPosterProjectModel project, bool log = false, string classEmoji = null)
Создает новый экземпляр логгера с базовыми настройками.
Параметры:
project- проект ZennoPoster для отправки логовlog- принудительно включить логирование (по умолчанию false)classEmoji- эмодзи для отображения перед каждым сообщением
Пример: [CODE=csharp] // создание базового логгера var logger = new Logger(project);
// логгер с включенным отображением и эмодзи var logger = new Logger(project, true, ”🔧”); project.SendInfoToLog(“Логгер создан”); [/CODE]
Публичные методы
Send(string toLog, [CallerMemberName] string callerName = "", bool show = false, bool thr0w = false, bool toZp = true, int cut = 0, bool wrap = true)
Возвращает: void
Отправляет сообщение в лог с автоматическим определением цвета и типа на основе содержимого.
Параметры:
toLog- текст сообщения для логированияcallerName- имя вызывающего метода (заполняется автоматически)show- принудительно показать сообщение независимо от настроекthr0w- выбросить исключение после записи в логtoZp- отправить в основной лог ZennoPostercut- максимальное количество строк (0 = без ограничений)wrap- использовать обертку с заголовком
Пример: [CODE=csharp] var logger = new Logger(project, true);
// обычное сообщение logger.Send(“Операция выполнена успешно”);
// предупреждение (автоматически оранжевым цветом) logger.Send(“!W Внимание: низкий баланс”);
// ошибка с исключением logger.Send(“!E Критическая ошибка”, thr0w: true);
// принудительное отображение logger.Send(“Важная информация”, show: true); [/CODE]
SendToTelegram(string message = null)
Возвращает: void
Отправляет отчет о выполнении проекта в Telegram. Использует данные из базы данных проекта для получения токена бота и настроек чата.
Параметры:
message- дополнительное сообщение для включения в отчет
Пример: [CODE=csharp] var logger = new Logger(project);
// отправка базового отчета logger.SendToTelegram();
// отчет с дополнительным сообщением logger.SendToTelegram(“Обработано 150 элементов”);
// настройка токена в БД (выполняется заранее) project.DbSet(“_api”, “tg_logger”, “apikey, extra”, “YOUR_BOT_TOKEN|CHAT_ID/TOPIC_ID”); [/CODE]
Настройка конфигурации:
Логгер считывает настройки из переменной cfgLog, которая может содержать флаги через запятую:
acc- показывать аккаунтport- показывать порт инстансаtime- показывать время выполненияmemory- показывать использование памятиcaller- показывать вызывающий методwrap- использовать обертку заголовкаforce- принудительное отображение всех сообщений
[CODE=csharp] // настройка отображения времени и памяти project.Variables[“cfgLog”].Value = “time,memory,caller”;
var logger = new Logger(project, true); logger.Send(“Тест с расширенной информацией”); [/CODE][/SPOILER] [SPOILER= Time]
Time - Утилиты работы со временем
Статический класс для работы со временем в проектах ZennoPoster. Предоставляет методы для получения текущего времени, расчета времени выполнения, установки таймаутов и задержек.
Статические методы
Now
Возвращает: string
Получает текущее время в указанном формате.
Параметры:
format(string, по умолчанию “unix”) - формат времени: “unix”, “iso”, “short”, “utcToId”
Пример: [CODE=csharp] //получить время в unix формате string unixTime = Time.Now(); project.SendInfoToLog($“Unix время: {unixTime}”);
//получить время в ISO формате string isoTime = Time.Now(“iso”); project.SendInfoToLog($“ISO время: {isoTime}”); [/CODE]
Cd
Возвращает: string
Рассчитывает время до конца дня или добавляет указанное время к текущему моменту.
Параметры:
input(object, по умолчанию null) - количество минут для добавления или строка времени, null для конца дняo(string, по умолчанию “iso”) - формат вывода: “unix” или “iso”
Пример: [CODE=csharp] //время до конца дня string endOfDay = Time.Cd(); project.SendInfoToLog($“До конца дня: {endOfDay}”);
//добавить 30 минут к текущему времени string futureTime = Time.Cd(30, “unix”); project.SendInfoToLog($“Через 30 минут: {futureTime}”); [/CODE]
Методы-расширения для IZennoPosterProjectModel
TimeElapsed
Возвращает: int
Вычисляет количество секунд, прошедших с момента начала сессии.
Параметры:
varName(string, по умолчанию “varSessionId”) - имя переменной с временем начала сессии
Пример: [CODE=csharp] //узнать сколько секунд прошло с начала сессии int elapsed = project.TimeElapsed(); project.SendInfoToLog($“Прошло секунд: {elapsed}”); [/CODE]
Age
Возвращает: T
Получает возраст сессии в указанном типе данных.
Пример:
[CODE=csharp]
//получить возраст сессии как строку
string ageString = project.Age
//получить возраст как TimeSpan
TimeSpan ageTimeSpan = project.Age
TimeOut
Проверяет, не превышен ли глобальный таймаут выполнения. Выбрасывает исключение при превышении.
Параметры:
min(int, по умолчанию 0) - лимит времени в минутах, если 0 - берется из переменной “timeOut”
Пример: [CODE=csharp] //проверить таймаут в 60 минут project.TimeOut(60);
//проверить таймаут из переменной timeOut project.TimeOut(); [/CODE]
Deadline
Устанавливает дедлайн или проверяет его превышение.
Параметры:
sec(int, по умолчанию 0) - лимит времени в секундах, если 0 - устанавливает начальное время
Пример: [CODE=csharp] //установить начальное время для дедлайна project.Deadline();
//проверить дедлайн в 300 секунд project.Deadline(300); [/CODE]
Sleep
Приостанавливает выполнение на указанное время.
Параметры:
min(int, по умолчанию 0) - минимальное время задержки в секундахmax(int, по умолчанию 0) - максимальное время задержки в секундах, если 0 - используется значение из “cfgDelay”
Пример: [CODE=csharp] //задержка из настройки cfgDelay project.Sleep();
//случайная задержка от 5 до 10 секунд project.Sleep(5, 10); [/CODE]
StartSession
Инициализирует новую сессию, устанавливая текущее время в переменную “varSessionId”.
Пример: [CODE=csharp] //начать новую сессию project.StartSession(); project.SendInfoToLog(“Сессия запущена”); [/CODE][/SPOILER] [/SPOILER]