วันนี้ฉันถูกจับ redhanded ในขณะที่พยายามรหัสกอล์ฟกำเนิดรหัสผ่านสำหรับ 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 ตัวอักษร ดียกเว้นเห็นได้ชัดว่าทุบตีโช้คที่เครื่องหมายอัศเจรีย์
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))
ออกจากการเล่นกอล์ฟรหัส asinine ของฉัน - ฉันไม่สามารถอธิบายได้
ด้วย\!
เครื่องหมายอัศเจรีย์ได้หลบหนียกเว้นว่ามันไม่ได้เป็นอย่างนั้นจริง ๆ เพราะ\!
ถูกทิ้งให้อยู่ตาม - echo
เพื่อรับ
วิธีหนึ่งอาจใช้\x21
แทน แต่ฉันไม่มั่นใจว่าเป็นวิธีที่เหมาะสมในการหลีกเลี่ยงเครื่องหมายอัศเจรีย์ในคำสั่ง bash
tl; dr: คุณจะหนีจุดอัศเจรีย์ได้อย่างถูกต้องในคำสั่ง bash อย่างไร
!:0
!$
และ!^
ประหยัดเวลาและการพิมพ์มาก
!event
ไวยากรณ์ในสถานที่แรก? มันทำให้ฉันมีปัญหาเท่านั้น