私は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からのコメント
'name = name.replace( '\ x27'、 '')'を使用するだけですか? –
変更なし - binName = binName.replace( '\ x27'、 '') –
'' \ x27 ''はESC charではなく、一重引用符char '' 'aka' chr(39) 'です。 ESCは_decimal_27で、16進数で ''\ x1B' 'です。 –