2016-12-29 19 views
1
나는 잠시 동안 프로젝트를 진행했습니다

, 여기에 내 코드 예를 들어다중 행 문자열의 암호를 해독하기 위해 python XOR을 얻으려면 어떻게해야합니까?</p> <pre><code>code = """ def mymath(number): return number + 2 print mymath(5) """ print code exec(code) </code></pre> <p>작품 좋아, 그러나, 나는 암호화 정보 :

, 내 코드 인 경우에 무슨 일이 일어나고 있는지의 파이썬은 한 줄의 코드만을 인쇄/실행합니까?

code = """NikTUSIgBxwMFB5aSSkaLDApB1h1THk= 
cmxVUSE0HhYKB1ISQXViSw== 
X0Y= 
Ij4cHzthHhUbHRFYDSRHcntBfw== 
""" 
print decrypt(code) 
exec(decrypt(code)) 

이것은 단순히 인쇄 :

from Crypto.Cipher import XOR 
import base64 

def encrypt(plaintext): 
    cipher = XOR.new('RLuqOAstour9aGoA') 
    return base64.b64encode(cipher.encrypt(plaintext)) 

def decrypt(ciphertext): 
    cipher = XOR.new('RLuqOAstour9aGoA') 
    return cipher.decrypt(base64.b64decode(ciphertext)) 


#Code stores the encrypted information 
code = """NikTUSIgBxwMFB5aSSkaLDApB1h1THk= 
cmxVUSE0HhYKB1ISQXViSw== 
X0Y= 
Ij4cHzthHhUbHRFYDSRHcntBfw== 
""" 
print decrypt(code) 
exec(code) 

을 나는 파이썬이 작업을 수행 할 수 있습니다 방법 :

마지막으로
==== RESTART: 
def mathcalc(number): 


>>> 

당신이 그것을 볼 필요가있는 경우, 여기 내 브로큰 전체 코드입니다 모든 코드 줄을 가지고? 잘하면 exec() 함수를 사용하여 실행할 수 있기를 바랍니다.

+0

'XOR'의 정의는 무엇입니까? 문제를 재현하는 완전한 작동 예제를 제공해주십시오. 올바른 수입을 포함하십시오. –

+0

관련 수입을 추가했습니다. 죄송합니다. 암호 패키지 –

답변

1

code을 만들 때 파이썬 코드 조각을 한 줄씩 base64로 인코딩 한 것으로 보입니다. 그러지 마. base64 encoding은 조각 단위로 작업하기위한 것이 아니라 전체 데이터 블록을 하나의 단위로 인코딩하기 때문에 각 행의 끝에 나타나는 = 심볼을 디코더가 볼 때 끝까지 도달했다고 생각합니다. 아무것도 남기지 않았다.

이 문제를 해결하는 적절한 방법은 원래 코드로 돌아가서 전체 문자열을 한 번에 한 줄 씩베이스 64 인코더로 전달하는 것입니다. code에 사용하십시오. 마지막에는 등호 만 가져야합니다. key가 어디

[XOR.new(key).decrypt(base64.b64decode(e)) for e in code.splitlines()] 

:이 상황에서 자신을 발견하고 원본 데이터를 가지고 있지 않은 경우

그러나,이 같은 base64로 디코딩 및 라인으로 해독 라인, 뭔가를 적용 할 수 암호화 키.

+0

에서 "한 번에 한 행만이 아니라 전체 문자열을 Base64 인코더로 전달하십시오."라고 말하면됩니다. 무슨 소리 야? –

+0

신경 쓰지 마라, 나는 모든 것을 암호화했고, 올바르게 인쇄했다. 그러나 exec()는 현재 작동하지 않고 "None"을 반환합니다. –

+0

아, 걱정 마라. 내가 exec와 eval을 잘못 사용하고있는 것처럼 보인다. 어리석은 실수! –