2017-01-24 2 views
2

私はiPhoneに接続してmy_app.appをプルするPythonプログラムを持っていますが、別の場合もあるのでバイナリ名を見つけるために.appフォルダも探っています。 my_app.appは、バイナリがmy_appと呼ばれるわけではありません。挫折。Ascii 27(ESC)がPythonのエラーを引き起こす

私はバイナリの名前をつかんで、仕事に使っていた自分のプログラムが突然動作を停止し、iPhoneのバイナリ名をMacに戻したときにESC文字またはASCII char 27が最初に挿入されたようですバイナリ文字列の終わり。私はこれをstr[1:-1]で解決できると思ったが、まだ問題がある。

これを削除したり、それを変換したり、適切な文字に置き換えて削除する方法はありますか?

例:iPhoneからバイナリファイルを取得すると、fileを実行しますが、最後にESC charが存在するため、シェルはファイルを見つけることができません。

EDIT:私は上記のパスをコピーして、入力端子とプレスにfile [path]を入力する場合には、それはしかし

#grabbing the binary name 
binName = dlg.actListBox.GetStringSelection() 
binName = binName.replace('\x27', '') 
binName = binName[1:-1] 

#trying to run file 
cmd = "file " + appBinPath + "/" + binName 
p = subprocess.Popen(cmd, shell=True,stdout=subprocess.PIPE) 
stdout = p.communicate()[0] 
self.progressBox.AppendText(stdout) 


#output I get in program is: 
/Users/p/Documents/ios/output/myapp/myapp_decrypt/Payload/myapp.app/myapp: cannot open `/Users/p/Documents/ios/output/myapp/myapp_decrypt/Payload/myapp.app/myapp' (No such file or directory) 

ESCチャーないさらなるトラブルシューティングのための追加されたいくつかのコード、最初のI (私はASCIIの27文字のために推測している)しかし、2番目のプレスでfileコマンドが完璧なので、そのパスが間違いなく正しいですビープ音を受信します。

#manual file cmd with same path as used by program 
file /Users/p/Documents/ios/output/myapp/myapp_decrypt/Payload/myapp.app/myapp 

/Users/p/Documents/ios/output/myapp/myapp_decrypt/Payload/myapp.app/myapp: Mach-O 64-bit executable 

を解決しよう:私たちは、文字列であったものを見ることが許可されたコメントで下記に概説repr()機能を使用します。 ESCが\x1bであり、標準.replace()がこれを解決したPM2Ringからのコメント

+0

'name = name.replace( '\ x27'、 '')'を使用するだけですか? –

+0

変更なし - binName = binName.replace( '\ x27'、 '') –

+2

'' \ x27 ''はESC charではなく、一重引用符char '' 'aka' chr(39) 'です。 ESCは_decimal_27で、16進数で ''\ x1B' 'です。 –

答えて

1

ESC文字は16進数で0x1BのASCII 27です。だから、マルタインピータースは、それはあなたが特にシェルの機能を必要としない限り、shell=Truesubprocess中のコールを避けるために、一般的に、より良いのコメントで述べたように、あなたが

binName = binName.replace('\x1b', '') 

を行うことができますbinName文字列からESCの文字を削除します。その代わりに、コマンド名とコマンドargsを文字列のリストとして渡してshell=Falseを使用するか、またはshell argを渡すのをやめてください。Falseがデフォルトです。詳細については、Actual meaning of 'shell=True' in subprocessおよびそのページからリンクされている質問をご覧ください。

+0

素晴らしいコミュニケーションと私はreprについて学んだ!ありがとう –

関連する問題