글

Python music21.stream.Stream().repeatAppend()

이미지
사용 버전: Python 3.6.8 사용 프로그램: Atom 1.38.2 x64 ​ 파이썬 music21.stream.Stream().repeatAppend()에 대해서 알아보겠습니다. 괄호 안에는 'note'와 '반복 횟수'가 들어갑니다. ​ music21.stream.Stream().repeatAppend()는 같은 음을 여러 번 반복해서 넣을 때 사용합니다. 같은 음 4 개를 손쉽게 넣었습니다. ​ ​ 끝. 카테고리: Python, music21

Chrome 다운로드 차단 해제

이미지
사용 버전: Chrome 75.0.3770.100(64비트) ​ Chrome 다운로드 차단 해제에 대해서 알아보겠습니다. ​ 정말 받아야 하는 파일이 있는데, 가끔 차단당하는 경우가 있습니다. 그럴 때에는 설정으로 들어갑니다. 고급을 눌러줍니다. 동기화 및 Google 서비스를 누릅니다. 세이프 브라우징(사용자와 사용자의 기기를 위험한 사이트로부터 보호)를 해제해줍니다. ​ ​ 이제 다운로드가 될 겁니다. ​ 끝. 카테고리: network

함수 호출 규약(cdecl, stdcall)

함수 호출 규약에 대해서 알아보겠습니다. ​ 함수 호출 규약은 크게 두 가지가 있습니다. 함수를 호출 한 쪽에서 스택을 정리하는 cdecl 방식과 함수 내부에서 스택을 정리하는 stdcall 방식입니다. ​ cdecl 방식의 경우, 보통 C 언어에서 사용합니다. CALL 함수 뒤에, 'ADD ESP, 4' 식으로 스택을 정리합니다. ​ stdcall 방식의 경우, 보통 Win32 API에서 사용합니다. 함수를 빠져나가기 전에 'RETN 4' 식으로 스택을 정리합니다. 'RETN 4'는 'ESP + 4'라고 보셔도 됩니다. ​ ​ 끝. ​ 카테고리: Reversing

Python music21.stream.Stream().append()

이미지
사용 버전: Python 3.6.8 사용 프로그램: Atom 1.38.2 x64 ​ 파이썬 music21.stream.Stream().append()에 대해서 알아보겠습니다. 괄호 안에는 Music21 오브젝트(Note, Stream 등)가 들어갑니다. ​ music21.stream.Stream().append()는 Stream 오브젝트에 괄호 안의 내용을 추가합니다. ​ '솔-미-파'를 Stream 오브젝트에 추가해보겠습니다. 끝. 카테고리: Python, music21

Python music21.stream.Stream()

이미지
사용 버전: Python 3.6.8 사용 프로그램: Atom 1.38.2 x64 ​ 파이썬 music21.stream.Stream()에 대해서 알아보겠습니다. 괄호 안에는 아무것도 들어가지 않습니다. ​ music21.stream.Stream()은 stream 오브젝트를 만듭니다. Stream 오브젝트에는 여러 음표들을 넣을 수 있습니다. ​ 끝. 카테고리: Python, music21 ​

Python copy.deepcopy()

이미지
사용 버전: Python 3.6.8 사용 프로그램: Atom 1.38.2 x64 ​ 파이썬 copy.deepcopy()에 대해서 알아보겠습니다. 괄호 안에는 복사할 오브젝트가 들어갑니다. ​ copy.deepcopy()는 기존의 배열을 깊은 복사(deep copy) 합니다. copy.copy()[얕은 복사(shallow copy)]와 다른 점은 원본 데이터를 수정하지 않습니다. 끝. 카테고리: Python, copy

Python copy.copy()

이미지
사용 버전: Python 3.6.8 사용 프로그램: Atom 1.38.2 x64 ​ 파이썬 copy.copy()에 대해서 알아보겠습니다. 괄호 안에는 복사할 오브젝트가 들어갑니다. ​ copy.copy()는 얕은 복사(shallow copy)입니다. 복합 배열을 수정할 경우에는 원본 데이터와 복사한 데이터가 같이 변경됩니다. ​ 리스트 원소가 아닌 곳에 원소 추가하기.(한 쪽만 변경) 리스트 원소에 원소 추가하기.(양쪽 변경) 리스트 원소 전체 변경하기.(한 쪽만 변경) 리스트 원소 내부 원소 변경하기.(양쪽 변경) 리스트 안에 리스트가 있는 복합적인 배열을 얕은 복사하게 된다면, 내부 데이터 수정에 조심해야 합니다. 끝. 카테고리: Python, copy

Python id()

이미지
사용 버전: Python 3.6.8 사용 프로그램: Atom 1.38.1 x64 ​ 파이썬 id()에 대해서 알아보겠습니다. 괄호 안에는 변수 이름이 들어갑니다. ​ id()는 해당 변수의 저장 주소를 보여줍니다. 신기하게도, 파이썬은 단일한 같은 값을 가진 변수는 같은 주소를 가지는군요. ​ ​ 리스트 등의 배열의 경우에는 주소가 달라집니다. 끝. 카테고리: Standard Library, Python

음악 셋온음(tritone)

이미지
사용 프로그램: MuseScore 3 ​ 음악 셋온음(tritone)에 대해서 알아보겠습니다. ​ 셋온음은 온음 세 개가 더해진 음정입니다. 예) 도-파# 셋온음에는 재미있는 사실이 있습니다. 중세시대 유럽에서는 셋온음이 긴장을 불러일으키거나, 듣기에 좋지 않아 Diabolus in musica("The Devil in music") 음악속 악마라고 불렸습니다. ​ ​ 끝. 카테고리: Music

리버싱 abex crackme 2 시리얼 부분

이미지
사용 프로그램: x32dbg Mar 10 2019 abex crackme 2에서 시리얼(serial) 부분을 리버싱해봅시다. 이름에는 'Jaehwa'를 입력하고 'Check'를 눌러줍니다. ​ ​ 'Check'시 Serial 키를 비교하고 메시지 박스를 내보내므로, 먼저 'Check' 버튼의 이벤트 핸들러를 찾습니다. 일단 그냥 'Check'를 눌렀을 때 나오는 메시지 박스 문구를 찾습니다. 'Please enter at least 4 chars as name!' 여기서 위로 쭉쭉 올라갑니다. 올라가다 보면, NOP이 나오고, 그다음 스택이 생성되는 곳이 있습니다. 여기가 'Check' 버튼의 핸들러입니다. 여기에 breakpoint를 걸어주고, 'Check' 버튼을 누르면 EIP가 저기에서 멈춥니다. ​ ​ 쭉쭉 진행하다 보면, 어느 순간 주석문에 우리가 입력한 'Jaehwa'가 나타납니다. 여기서 'ebp-0x88'에 우리가 입력한 'Jaehwa'가 들어간 것을 확인할 수 있습니다. 쭉 내려가봅시다. 내려가다 보면, 반복되는 구간이 있습니다. '00403197'에서 '004032A0'구간입니다. 문자열을 하나씩 불러오면서 암호화하는 구간으로 예상됩니다. ​ ​ '004031F7'주소를 지나면, EAX에 'J'가 들어간 것으로 보아, 'CALL <&rtcAnsiValueBstr>'에서 문자를 읽어오는 것으로 예상됩니다. 반복문 한 바퀴를 돌면, 'EBP-94'에 'AE'가 들어간 것을 볼 수 있습니다. ​ ​ ​ 한 바퀴를 또 돌면, 'EBP-94'에 AEC5가 들어간 것을 볼 수 있습니다. ...