执行加密脚本Bash

问题描述 投票:0回答:1

请问如何在加密后执行脚本(bash)而不解密它?

我想只授予对脚本的执行访问权限并使其不可读。

我用它来加密我的脚本

openssl enc -aes-256-cbc -salt -in test.sh -out test.sh.enc -k $Password

bash
1个回答
0
投票

编写你的秘密 bash 脚本:

secret.sh

#!/usr/bin/env bash
printf 'Hello the world from my secret encrypted bash script!\n'

加密您的

secret.sh
:

openssl enc -aes-256-cbc -salt -in secret.sh -out secret.sh.enc -k "$Password"

编写一个能够解码并执行嵌入的加密 bash 脚本的加载器:

secret-loader.sh

#!/usr/bin/env bash
read -rsp 'Enter password: ' password
echo
{
    IFS= read -rd '' # Read through launcher and leave binary blob
    if ! openssl enc -d -aes-256-cbc -k "$password" > /dev/null 2>&1; then
        printf 'Invalid password!\n' >&2
        exit 1
    fi
} < "${BASH_SOURCE[0]}"
{
    IFS= read -rd ''
    openssl enc -d -aes-256-cbc -k "$Password" 2> /dev/null | bash
} < "${BASH_SOURCE[0]}"
exit

结合加载器和加密的有效负载:

{ cat secret-loader.sh; printf '\0'; cat secret.sh.enc;} > encripted
chmod +x encrypted

现在运行新的加密 bash 脚本:

./encrypted
© www.soinside.com 2019 - 2024. All rights reserved.