Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (2): [1] 2 »   

> Без описания
Zireael
Отправлено: 08 Января, 2025 - 20:32:41
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4597
Дата рег-ции: Нояб. 2017  
Репутация: 595




Длл позволяет выполнять команды PowerShell.
https://drive.google.com/file/d/...view?usp=sharing
Пароль на архив: 1111. Длл закинуть в папку с кибор.
Работает в Win10, Win11. В системе должен быть разрешён запуск сценариев PoweShell.
Для этого можно запустить Windows PowerShell или Windows PowerShell ISE от администратора, выполнить эти строки:
CODE:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine -Force

Длл возвращает 1 если какие-то данные были возвращены, иначе 0.

Пример использования:
CODE:
external(INT, "PS_Command", "PS_Command", "PowerShell.dll");
char Result[99999];
// получить список папок на диске C:
int res = PS_Command("(Get-ChildItem -Path C:\ -Directory).Name", address(#Result[0]), sizearray(Result));
if(res) messagebox(format(#Result[0]));
else messagebox("res = 0");

CODE:
external(INT, "PS_Command", "PS_Command", "PowerShell.dll");
char Result[99999];
// узнать количество дней между датами
int res = PS_Command("([DateTime]::Parse(^"25.02.2025^") - [DateTime]::Parse(^"10.01.2025^")).Days", address(#Result[0]), sizearray(Result));
if(res) messagebox(format(#Result[0]));
else messagebox("res = 0");


Можно выполнить код из файла.
Сохранить этот код в файл с именем и расширением: GetProcess.ps1, закинуть файл в папку с кибор.
CODE:
try{
$prc = Get-Process Kibor
}
catch [Microsoft.PowerShell.Commands.ProcessCommandException]{
$PSItem.Exception
return
}
@{
'Handle' = $prc[0].MainWindowHandle
'StartTime' = $prc[0].StartTime.ToString("dd.MM.yy HH:mm:ss")
'PID' = $prc[0].Id
}|ConvertTo-Json

Запустить код в кибор:
CODE:
external(INT, "PS_File", "PS_File", "PowerShell.dll");
char Result[99999];
// выполнить код из файла
int res = PS_File(pathfolder()+"GetProcess.ps1", address(#Result[0]), sizearray(Result));
if(res)
{
messagebox(format(#Result[0]));
parserjson(Json, format(#Result[0]));
messagebox("Хендл: " + Json.Handle);
messagebox("Время запуска: " + Json.StartTime);
messagebox("PID: " + Json.PID);
}
else messagebox("res = 0");

Данный скрипт найдёт процесс кибор и вернёт его хендл, время запуска и pid в виде json.
 
 Top
neba2101
Отправлено: 10 Августа, 2025 - 12:17:19
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 199
Дата рег-ции: Февр. 2017  
Репутация: 4




Приветствую! Можно пример как должен выглядеть код ниже в GetProcess.ps1 и в Кибор вывести значение decrypted? Спасибо!

Просто в PowerShell код работает как надо, но не пойму как получить значение decrypted в Кибор.

CODE:
Add-Type -AssemblyName System.Security
$encrypted = "AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAASyDqgb2CE24Rv3n9c7toAAAAAACAAAAAAAQZgAAAAEAACAAAAAGMhJknBN0yub6l/vHQwiPQj9QkmiVnP0ccGytg7bmrgAAAAAOgAAAAAIAACAAAADLCYtB9IBWNzJjrh18cGNb964GKLEmyY1+axY2GUgx6yAAAAAbfyOLx3rZqkt97T1NzuLvC2iyZwNR8+2fv32xhdJVwEAAAAATHTjxsekAf15NE2/YQivXAlFn+GaUWl63FOfpMe/z7asyNLj2hOTNJWz8v4Wz3Fw4DqyGWTyseOiclZEhXwCY"
$bytes = [Convert]::FromBase64String($encrypted)
$decrypted = [System.Security.Cryptography.ProtectedData]::Unprotect($bytes, $null, [System.Security.Cryptography.DataProtectionScope]::CurrentUser)
[System.Text.Encoding]::UTF8.GetString($decrypted)


И, если нетрудно, как зашифровать строку таким способом. Спасибо!
 
 Top
Zireael
Отправлено: 10 Августа, 2025 - 13:13:46
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4597
Дата рег-ции: Нояб. 2017  
Репутация: 595




 Цитата:
как должен выглядеть код ниже в GetProcess.ps1

CODE:
try{
Add-Type -AssemblyName System.Security
$scope = [System.Security.Cryptography.DataProtectionScope]::CurrentUser
$text = [System.Text.Encoding]::UTF8.GetBytes("Text to encrypt")
$protected = [System.Security.Cryptography.ProtectedData]::Protect($text, $null, $scope)
$protectedBase64 = [Convert]::ToBase64String($protected)
$textProtected = [Convert]::FromBase64String($protectedBase64)
$unprotected = [System.Security.Cryptography.ProtectedData]::Unprotect($textProtected, $null, $scope)
$protectedBase64 # зашифрованный текст в формате base64
[System.Text.Encoding]::UTF8.GetString($unprotected) # расшифрованный текст
}
catch [Microsoft.PowerShell.Commands.ProcessCommandException]{
$PSItem.Exception
return
}
 
 Top
neba2101
Отправлено: 12 Августа, 2025 - 23:23:39
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 199
Дата рег-ции: Февр. 2017  
Репутация: 4




 Zireael пишет:
 Цитата:
как должен выглядеть код ниже в GetProcess.ps1

CODE:
try{
Add-Type -AssemblyName System.Security
$scope = [System.Security.Cryptography.DataProtectionScope]::CurrentUser
$text = [System.Text.Encoding]::UTF8.GetBytes("Text to encrypt")
$protected = [System.Security.Cryptography.ProtectedData]::Protect($text, $null, $scope)
$protectedBase64 = [Convert]::ToBase64String($protected)
$textProtected = [Convert]::FromBase64String($protectedBase64)
$unprotected = [System.Security.Cryptography.ProtectedData]::Unprotect($textProtected, $null, $scope)
$protectedBase64 # зашифрованный текст в формате base64
[System.Text.Encoding]::UTF8.GetString($unprotected) # расшифрованный текст
}
catch [Microsoft.PowerShell.Commands.ProcessCommandException]{
$PSItem.Exception
return
}


При вызове
CODE:
external(INT, "PS_File", "PS_File", "PowerShell.dll");
char Result[99999];

int res = PS_File(pathfolder()+"GetProcess.ps1", address(#Result[0]), sizearray(Result));
if(res)
{
messagebox(format(#Result[0]));
}
else messagebox("res = 0");


Возвращает res = 0

При запуске в PowerShell норм отрабатывает.
Как должен выглядеть код в Кибор или что я не так делаю?
 
 Top
Zireael
Отправлено: 13 Августа, 2025 - 13:29:00
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4597
Дата рег-ции: Нояб. 2017  
Репутация: 595




 Цитата:
Возвращает res = 0

А любой другой код из файла вообще работает?
 
 Top
konctantin777
Отправлено: 13 Августа, 2025 - 14:07:04
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1266
Дата рег-ции: Окт. 2017  
Откуда: Архангельск
Репутация: 7




День добрый.
Приведённые примеры работают. Правильно ли понимаю, что можно вставлять любой код в
CODE:
int res = PS_Command(тут код)

Пытаюсь вставить большой типа: (часть кода)
CODE:
Преобразуем строку в хеш-таблицу
$ownershipMap = @{}
if (-not [string]::IsNullOrEmpty($ownershipMapStr)) {
$pairs = $ownershipMapStr -split ';'
foreach ($pair in $pairs) {
if (-not [string]::IsNullOrEmpty($pair)) {
$key, $value = $pair -split ':', 2
$ownershipMap[$key] = $value
}
}
}

# Проверяем возможность
function Test-PropertyPurchase {
param(
[string]$playerName,
[string]$propertyToBuy,
[hashtable]$ownershipMap,
[hashtable]$boardDefinition
)

Пока не получается...
(Добавление)
Кибор воспринимает код как "свой". Надо как то делать через string, чтобы весь код в кавычках был ?
 
 Top
Zireael
Отправлено: 13 Августа, 2025 - 14:23:43
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4597
Дата рег-ции: Нояб. 2017  
Репутация: 595




 Цитата:
Надо как то делать через string, чтобы весь код в кавычках был ?

Да, все спец. символы придётся экранировать.
Большой код проще выполнить из файла.
 
 Top
neba2101
Отправлено: 13 Августа, 2025 - 17:54:36
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 199
Дата рег-ции: Февр. 2017  
Репутация: 4




 Zireael пишет:
 Цитата:
Возвращает res = 0

А любой другой код из файла вообще работает?


Нет, возвращает res = 0
 
 Top
sedoi
Отправлено: 13 Августа, 2025 - 18:05:24
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 85
Дата рег-ции: Апр. 2016  
Репутация: 5




 neba2101 пишет:
 Zireael пишет:
 Цитата:
Возвращает res = 0

А любой другой код из файла вообще работает?


Нет, возвращает res = 0


Вот этот код работает
CODE:
external(INT, "PS_Command", "PS_Command", "PowerShell.dll");
char Result[99999];
// получить список папок на диске C:
int res = PS_Command("(Get-ChildItem -Path C:\ -Directory).Name", address(#Result[0]), sizearray(Result));
if(res) messagebox(format(#Result[0]));
else messagebox("res = 0");
 
 Top
neba2101
Отправлено: 14 Августа, 2025 - 22:19:10
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 199
Дата рег-ции: Февр. 2017  
Репутация: 4




Из файла не получилось.

Вот так выдаёт только первый символ декодированного текста
CODE:
external(INT, "PS_Command", "PS_Command", "PowerShell.dll");
char Result[99999];
string rn=formatic(13)+formatic(10);

string MyTextProtected = "AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAASyDqgb2"+
"CE24Rv3n9c7toAAAAAACAAAAAAAQZgAAAAE"+
"AACAAAAAGMhJknBN0yub6l/vHQwiPQj9Qkm"+
"iVnP0ccGytg7bmrgAAAAAOgAAAAAIAACAAA"+
"ADLCYtB9IBWNzJjrh18cGNb964GKLEmyY1+"+
"axY2GUgx6yAAAAAbfyOLx3rZqkt97T1NzuL"+
"vC2iyZwNR8+2fv32xhdJVwEAAAAATHTjxse"+
"kAf15NE2/YQivXAlFn+GaUWl63FOfpMe/z7"+
"asyNLj2hOTNJWz8v4Wz3Fw4DqyGWTyseOiclZEhXwCY";

string sss ="Add-Type -AssemblyName System.Security"+rn+
"$scope = [System.Security.Cryptography.DataProtectionScope]::CurrentUser"+rn+
"$bytes = [Convert]::FromBase64String(^"" + MyTextProtected + "^")"+rn+
"$unprotected = [System.Security.Cryptography.ProtectedData]::Unprotect($bytes, $null, $scope)"+rn+
"[System.Text.Encoding]::UTF8.GetString($unprotected)";

int res = PS_Command(sss, address(#Result[0]), sizearray(Result));
if(res) messagebox(format(#Result[0]));
else messagebox("res = 0");


Как вывести весь декодированный текст? Спасибо!
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Связка Кибор с другими программами »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by