今天,我在尝试对Twitter的密码生成器进行编码时被捕。
import string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))
90个字符。由于有很多可用空间,因此我决定提高标准并使之也可执行。
echo -e "#!/usr/bin/python\nimport string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))">pg;chmod +x pg;./pg
139个字符。不错,除了在惊叹号上明显的b子声。
badp@delta:~$ echo -e "#!/usr/bin/python\nimport string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))">pg;chmod +x pg;./pg
bash: !/usr/bin/python\nimport: event not found
讨厌的感叹号。“让我们逃脱吧,”我想!我毕竟有一个备用角色。
echo -e "#\!/usr/bin/python\nimport string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))">pg;chmod +x pg;./pg
明显...
badp@delta:~$ echo -e "#\!/usr/bin/python\nimport string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))">pg;chmod +x pg;./pg
./pg: line 2: syntax error near unexpected token `('
./pg: line 2: `import string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))'
badp@delta:~$ cat pg
#\!/usr/bin/python
import string as s,random;print ''.join(random.sample(s.letters+s.digits+s.punctuation,9))
将我的惯性代码放在一边,我无法解释。
使用\!
,感叹号得以逃避,但实际上并没有逃脱,因为它\!
是按原样保留的echo
。
一种解决方案本来可以使用\x21
,但是我不认为这是在bash命令中转义感叹号的正确方法。
tl; dr:您如何正确地在bash命令中转义感叹号?
我几乎每天都使用它(过去20年中的大部分时间),
—
Alexx Roche
!:0
!$
并!^
节省了很多时间和打字。
!event
首先使用语法吗?总是给我带来麻烦。