2016-06-25 6 views
1

Unicodeエスケープシーケンスを使用してPythonスクリプトを難読化したいと思っています。例えばUnicodeエスケープシーケンスでPythonスクリプトの難読化

、Unicodeエスケープシーケンスで

print("Hello World") 

がある:私が作成しました

$ python3 -c \x70\x72\x69\x6e\x74\x28\x22\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64\x22\x29 
Hello World 

:私のコマンドラインから

\x70\x72\x69\x6e\x74\x28\x22\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64\x22\x29 

、私はこれを達成することができますソースコードとして "Hello World" Unicodeのエスケープシーケンスを挿入します。

しかし、私はそれを実行したときに、私が取得:

$ python3 sample.py 
SyntaxError: unexpected character after line continuation character 

は、どのように私は自分のソースコードにUnicodeエスケープシーケンスを使用することができます。

+0

、Pythonはそれを文字列として読み込むので、あなたは 'のexec(ユニコード)を実行するときや' 'OS .system( "python -c" + unicode) '、私は同じエラーを返します。文字列であるため、ユニコードに" "を追加します。 – kingspp

+0

あなたの主張は間違っているようです: '$ python3 -c \ x70 \ x72 \ x69 \ x6e \ x74 \ x28 \ x22 \ x48 \ x65 \ x6c \ x6c \ x6f \ x20 \ x57 \ x6f \ x72 \ x6c \ x64 \ X22 \ X29 トレースバック(最新の呼び出しの最後): NameErrorで ファイル「」、行1、:名「x70x72x69x6ex74x28x22x48x65x6cx6cx6fx20x57x6fx72x6cx64x22x29」私はあなたの前提を理解していないいずれの場合も – Bakuriu

+0

をdefined'されていません。 'Hello World' **はすでにutf-8 **です。 Utf-8は7ビットASCIIのスーパーセットです。 – Bakuriu

答えて

2

あなたがソースコードを符号化することで書かれているのPythonに指示PEP 263ヘッダを使用することができ

フォーマットは次のとおり。

# coding=<encoding name> 

https://docs.python.org/3/library/codecs.htmlから選択される)unicode_escapeコーデックを使用して、 Pythonは最初に文字列をエスケープします。

sample.py

# coding=unicode_escape 
\x70\x72\x69\x6e\x74\x28\x22\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64\x22\x29 

結果:問題がある

$ python3 sample.py 
Hello World 
+0

私はコーディング=ユニコードを試みました。ありがとうございます – kingspp

+0

上記の1つのライナーの作品。 'import os \ n print(os.getcwd())'エラーが発生しました: 'SyntaxError: 'unicodeescape'コーデックはバイトをデコードできません:切り詰められた\ xXXエスケープ' – kingspp

+0

答えは複数の行で機能します。エスケープシーケンスを間違って作成しています。.join( "" \\ x0%x "my_codeのiの%ord(i))" –