decriptografa e desarquiva arquivo embutido no script

1

Estou tentando criar um arquivo criptografado de extração automática. Aqui está o código que não funciona para mim:

openssl enc -aes-256-cfb -salt -d -a | tar -x -j <<EOF
U2FsdGVkX19f7pGFSqDXJSREp/oDxJD0oii/FYvJlJpO8fB5ttZ/Qc8vSwIOS2y0
QUlWLocow4S1YWf86615Ji3n16RLvhOIRiy9S8DNGXl9C6ea1FYDdiuy2lA75lME
...
8yQIpRng/gXItWlaGJapqW9z2wx7y2im/lPGM8UrwZN9uY3DuRx3XbpMY5yuRWU0
oArQEvKxBAP/bB689j4P291Oauw1E8++na9phkEUXJY=
EOF

saída:

enter aes-256-cfb decryption password:tar: Unrecognized archive format
tar: Error exit delayed from previous errors.

Os dados da base64 incorporada devem ser descriptografados usando openssl e sua saída deve ser canalizada para tar . openssl deve poder pedir uma senha ao usuário. Se eu remover o tar pipeline:

openssl enc -aes-256-cfb -salt -d -a >outfile <<EOF
...

então tudo funciona bem. Portanto, eu suponho que o openssl pode manipular o prompt de senha e a entrada do terminal sem interferir no stdin / stdout (provavelmente o prompt entra no stderr e a leitura da senha é implementada usando alguma magia tty).

Consegui resolver essa tarefa com a seguinte construção:

{ openssl enc -aes-256-cfb -salt -d -a | tar -x -j; } <<EOF
...

mas não entendo o que há de errado com o primeiro script.

    
por vbezhenar 22.03.2015 / 12:56

1 resposta

1

o fim deste documento deve estar na frente (ou verso de) openssl.

o que você fez:

sed -e s/^/water/ | sed -e s/^/wine/ <<EOF
hello world
EOF

(e você precisa ctrl - d aqui)

dê:

winehello world

apenas segundo trabalho sed (apenas vinho, sem água), o que você deve fazer:

sed -e s/^/water/  <<EOF | sed -e s/^/wine/
hello world
EOF

dê:

winewaterhello world

como você pode ver, hello world foi transformado em waterhello world e, em seguida, em winewaterhello world .

você deve tentar

openssl enc -aes-256-cfb -salt -d -a  <<EOF | tar -x -j
    
por 22.03.2015 / 15:56