2013-11-01 3 views
1

나는 프로그래밍 클래스를위한 쉘 코드를 생성하기 위해 파이썬 스크립트를 만들고있다. 프로그램은 포맷되지 않은 쉘 코드 "aabbccdd"를 취하여 2 문자 목록 항목으로 분리하고 각 바이트에 \ x를 삽입합니다. 문제는 리틀 엔디안 프로세서에있는 것이므로 목록 항목 4 개를 역으로해야합니다. 이 작업을 수행하는 가장 쉬운 방법은 목록에 문자열을 결합하고 인수로 "\ x"를 사용하는 string.split을 사용하는 것이라고 생각했지만, 한 번에 4 개를 수행하는 방법을 알아낼 수는 없습니다. 별도의 목록에 있으므로 각 목록에서 list.reverse를 사용하여 함께 결합한 다음 다시 인쇄 할 문자열로 사용할 수 있습니다. 내 접근 방식은 clunky 것 같아요. 나는 그것을 작동시키는 법을 알아낼 수 없으며, 여러분 중 한 분께 도움을 청할 것입니다.목록을 파이썬에서 4 개의 항목 목록으로 분리 하시겠습니까?

편집 - 알아 냈습니다. 실제로 쉘 코드를 인코딩 할 때, 실제로 두 가지 문제가있는 것으로 생각했습니다. NX Byte가 켜져 있었고, SUN을 채우기 위해 정크 바이트 대신에 쉘 코드의 마지막 부분으로 SFP를 채 웁니다. 이로 인해 SFP가 실행 가능하지 않기 때문에 쉘 코드가 완전히 실행되기 전에 종료되었습니다. 답변 주셔서 감사합니다!

+5

이미 시작한 코드를 입력하십시오. – Ashalynd

+0

당신의 의도에 대해 잘 모르겠지만'r '\ x'.join (역으로 된 (your_string [:: 2]))와 같은 것을 시도하십시오. –

+2

@SaulloCastro :'\ x' 만 넣을 것입니다. 중에서. –

답변

2

이미 내장 (파이썬 2) :

>>> s = "aabbccdd" 
>>> s.decode("hex") 
'\xaa\xbb\xcc\xdd' 

내가 정확히 "4 개 항목 청크 목록 항목을 반전"에 의해 아직 당신이 무슨 뜻인지 이해가 안 돼요.

+0

나는 진지하게 몇 시간 동안 수색했으나 그것을 발견 할 수 없었다. 스택에 리틀 엔디안 /로드를 위해 리버스 할 필요가있었습니다. 하지만 스택이 FILO라는 것을 깨달았습니다. little endian이 아니라 각각의 개별 단어를 뒤집을 수 있습니다. –

관련 문제