python exploit 코드들에서 자주 나오는 lambda 사용법으로 인한 pack 에 대한 이해
Lambda 표현식은 C언어의 메크로 함수와 비슷한 역할을 하는 것 같다.
g = lambda x,y : x*y
>> g(2,3)
6
>> g(3,4)
12
>>
p = lambda x : pack("<L" , x)
" < " : little endian
" > " : big endian
L : Unsigned Long 형태 (32bit 에서 자주쓰임)
Q : Unsinged Long Long 형태 (64bit에서 자주 쓰임)
p(0x08040552) 하면 little endian 으로 Long 형태로 변환되어 packing 된다.
Format C Type Python
x pad byte no value
c char string
b signed char integer
B unsigned char integer
? _Bool bool
h short integer
H unsigned short integer
i int integer
I unsigned int integer or long
l long integer
L unsigned long long
q long long long
Q unsigned long long
f float float
d double float
s char[] string
p char[] string
P void * long
Character Byte order Size and alignment
@ native native
= native standard
< little-endian standard
> big-endian standard
! network (= big-endian) standard
thanks for 충호~
'Python' 카테고리의 다른 글
[Python 2.7] Parallel Python 으로 분산처리 테스트 (0) | 2013.08.06 |
---|---|
[python2.7] Multi-Thread 와 Multi-Processing 차이와 예제코드 (0) | 2013.08.04 |
python2.7 thread 예제 코드 (0) | 2013.05.30 |
문자열 조합 방법 (brute forcing) (0) | 2013.04.07 |
[python]ZIP 파일 크랙 python 코드 (0) | 2013.03.26 |