簡體   English   中英

帶有中文字符的 Python 代碼 exec()

[英]Python code with Chinese characters exec()

exec(bytes('㵮湩⡴湩異⡴⤩瀊楲瑮嬨畳⡭慭⡰湩ⱴ瑳⡲⩮㈪⤩Ⱙ⩮㈪孝污⡬╮潦⁲湩爠湡敧㈨測⤩⥝','u16')[2:])

這究竟是做什么的? 在 Codingame.com 上,人們定期提交這樣的 Python 代碼。

我的猜測是他們以某種方式分解了他們的 Python 代碼,使這些字符代表他們的代碼並執行它(這是在網站上贏得“最短模式”比賽的一種黑客方式)。

中文字符串是python代碼,用UTF-8編碼,解碼為UTF-16

解碼的 Python 代碼

 n=int(input())
 print([sum(map(int,str(n**2))),n**2][all(n%m for m in range(2,n))])  

為什么?

您可以用更少的字符填充相同的信息,以便在字符數很重要的“代碼高爾夫”比賽中獲得優勢。

如何?

這是一些生成該字符串的python代碼:

>>> code = 'n=int(input())\nprint([sum(map(int,str(n**2))),n**2][all(n%m for m in range(2,n))])'
>>> print(code.encode('u8').decode('u16'))
㵮湩⡴湩異⡴⤩瀊楲瑮嬨畳⡭慭⡰湩ⱴ瑳⡲⩮㈪⤩Ⱙ⩮㈪孝污⡬╮潦⁲湩爠湡敧㈨測⤩⥝

可以擴展為任何代碼:

>>> code = 'print(\'hello World!!\')'.encode('u8').decode('u16')
>>> print(code)
牰湩⡴栧汥潬圠牯摬℡⤧

測試一下

我們可以運行這個命令來“解包”並執行:

>>> exec(bytes("牰湩⡴栧汥潬圠牯摬℡⤧","u16")[2:])
hello World!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM