본문 바로가기

파이썬 Binary 파일값 hex로 다루기 binascii 모듈을 이용해서 파일에서 읽어온 값을 hex 수준에서 다룰 것이다. 보통 파일을 열어 read(4) 후 print 하면 ascii 수준의 값인 "abcd"가 출력된다.이를 hex 수준의 값으로 출력하고 싶다면 binascii.b2a_hex() 함수를 이용하면 된다. 뜻을 풀어보면 다음과 같다.b2a : Binary to Ascii 즉, Binary 값을 Ascii 문자열로 만들건데,_hex() : 16진수 표현식으로 만들거다. ex) 시그니처를 검사한다던지, 파일 헤더값을 참조한다던지 등 hex 값을 이용할 일이 많다. 문자열의 hex 값으로 출력이 잘 된다. binascii.b2a_hex(data)binascii.hexlify(data)Return the hexadecimal repre..
파이썬 한글 인코딩 해결 파이썬 2.7 기준 맨 앞에 주석 한줄을 추가해주면 됨. #-*- coding:utf-8 -*- 이는 아래의 모든 문자열을 UTF-8 형식으로 처리한다는 의미. 파이썬 2.7은 기본적으로 문자열을 Unicode형식으로 처리하므로, 한글 사용 시 위와 같은 인코딩 설정이 필요. --------------------------------------------------------------------------------------------------------------※ 파이썬 3부터는 기본적으로 utf-8을 사용하므로, 위 같은 주석을 쓰지 않아도 됨.
파이썬 입출력 [ 파일 모드 종류 ]r - 읽기모드 (디폴트)w - 쓰기모드, (항상 새로 생성 - 기존 내용 삭제됨.)x - 쓰기모드, (이미 파일 존재 시 오류.)a - 내용추가모드, 파일이 있으면 뒤에 내용을 추가 -- 중간에 추가는 안됨.+ - 읽기쓰기모드t - 텍스트 모드 (default)b - 바이너리 모드, bytes 단위 데이터 처리. +) 알아두기.f = open('file.txt', 'r+t')텍스트 읽기쓰기모드, 맨 앞에서부터 내용을 덮어쓴다. 기존 파일 유지. (파일이 없으면 오류 발생) --> r(읽기모드) 이므로.
ZIP Archive file format [ ZIP Archive file format ]: https://en.wikipedia.org/wiki/Zip_(file_format): https://users.cs.jmu.edu/buchhofp/forensics/formats/pkzip.html [ 구성도 ] ZIP Archive 포맷 구조는 위 그림과 같다. [ Local file header + Data + Data descriptor ] 가 한 세트를 이루어 파일별로 쭉 쓰인다.Data descriptor는 Optional한 헤더로 Flag의 3번째 비트(0x08자리)가 set 된 경우에만 추가되고, 보통은 header+data가 한 세트이다. Central directory file header는 Local file header의 확장으로,..
LOBYTE, BYTE1, BYTE2, BTYE3, HIBYTE IDA에서 Pseudo code로 볼 때, BYTE1() 이런 매크로 함수가 보인다. 이해하기 쉽게 바로 예를 들자면, 0x12345678을 기준으로, LOBYTE = 0x78 (가장 낮은 byte)BYTE1 = 0x56BYTE2 = 0x34BYTE3 = 0x12HIBYTE = 0x12 (가장 높은 byte) 이다.
PotPlayer Audio(.wav) File Vulnerabilitiy PotPlayer Audio(.wav) File Exploit Vulnerability ( Remote Code Execution ) CVE-2018-16797 Tested Version : PotPlayer 1.7.8556 (32bit) - PotPlayer.exe, PotPlayerMini.exe Tested OS : Windows 7 Pro, Windows 7 Home K (reliable 100%) 1. Wav Header This is a Wav File Format and the problematic registers are three. BytesPerSec : used to make PotPlayer use large sized heap buffers (Src&Dst heap) Samples..
windbg 포인터 참조하기 WinDBG 포인터 참조하기 70634b48이라는 메모리 주소에 6e26a330이라는 값이 담겨있습니다. call dword ptr [eax+0Ch] 처럼 어셈블리 명령어에서는 내부의 값을 참조한다는 의미로 [] 대괄호가 사용됩니다.하지만 이를 그대로 메모리창 (Alt+5)에서 확인하려고 똑같이 대괄호를 쓰면 원하는 값이 나오지 않습니다. 어셈블리 명령어 그대로 [eax+0ch]를 입력해보겠습니다.그림에서 보듯이 eax+0ch 와 [eax+0ch] 출력 시 값이 같게 나옵니다. 메모리창에서도 마찬가지구요. 어셈블리에서 쓰이는 값참조의 의미가 아닌 수식을 위한 괄호로 인식하기 때문입니다. 보다 정확하게 보자면 덧셈과 곱셈 연산에 괄호유무에 따라 값이 바뀌는 걸 확인할 수 있습니다. 어셈블리 명령어의 대괄호..
IDA SetColor (색상 입히기) - 7.4이후로는 set_color [ IDA Pro 색상입히기 ] Idapython의 colours.py에 있는 SetColor( where , what, color ) 함수를 통해 원하는 색상을 입힐 수 있습니다. ! 7.4버전 이후로는 set_color where 에는 원하는 주소를, what 에는 색을 입히기를 원하는 것을 (CIC_SEGM, CIC_FUNC, CIC_ITEM) color 에는 원하는 RGB색상코드를 입력해주면 됩니다. [What 종류별로 예] 1. CIC_ITEM ==> 수행한 명령어 SetColor( here(), CIC_ITEM, 0xBB37FF ) here() : 현재 커서가 위치한 곳의 CIC_ITEM : 명령어 하나를 0xBB37FF : 해당 색상으로 칠함. 2. CIC_FUNC ==> 수행한 명령어 Se..