스크립트에 포함된 파일을 해독하고 추출합니다.

스크립트에 포함된 파일을 해독하고 추출합니다.

자동 추출 암호화된 아카이브를 만들려고 합니다. 이것은 나에게 작동하지 않는 코드입니다.

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

산출:

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

내장된 base64 데이터는 복호화를 사용하여 복호화되어야 하며 openssl해당 출력은 사용자에게 비밀번호를 요청할 수 있어야 합니다 tar. 파이프를 openssl제거하면 :tar

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

그러면 모든 것이 잘 작동합니다. 그래서 저는 openssl이 stdin/stdout을 방해하지 않고 터미널에서 비밀번호 프롬프트와 입력을 처리할 수 있다고 가정합니다(어쩌면 프롬프트가 stderr로 이동하고 비밀번호 읽기가 일부 tty 매직을 사용하여 구현될 수도 있음).

나는 다음 구조로 이 작업을 해결했습니다.

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

하지만 첫 번째 스크립트의 문제점을 이해하지 못합니다.

답변1

여기서 문서의 끝은 openssl 이전(또는 이후)이어야 합니다.

당신은 무엇을 했나요:

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

(당신은 필요합니다 ctrl- d여기)

주다:

winehello world

두 번째 sed가 작동하는 경우에만(물은 없고 와인만) 수행해야 할 작업은 다음과 같습니다.

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

주다:

winewaterhello world

보시다시피 는 , 그 다음에는 hello world로 바뀌었습니다 .waterhello worldwinewaterhello world

당신은 시도해야

openssl enc -aes-256-cfb -salt -d -a  <<EOF | tar -x -j

관련 정보