반응형

파이썬에서 Google Speech to Text를 사용해 보자.

 

SpeechRecognition을 설치한다.

 

마이크 사용을 위해 PyAudio를 설치한다.

 

소스를 입력하고 실행한다.

 

완벽하지는 않지만 꽤 잘 인식한다. ('현'이 아니라 '션'이었다)

 

 

마이크가 아닌 음성 파일을 이용하는 경우 위와 같이 소스를 수정한다.

 

get_XXX_data()를 이용하면 오디오 데이터를 raw, wav, flac 등의 파일로 저장할 수 있다.

 

※ 참고

SpeechRecognition

 

반응형
Posted by J-sean
:

Text To Speech - gTTS

Python 2023. 4. 30. 22:26 |
반응형

파이썬에서 Google Text to Speech를 사용해 보자.

 

gTTS를 설치한다.

 

playsound를 설치한다.

playsound 1.3.0이 정상 작동 하지 않으면 1.2.2를 설치한다.

pip install playsound==1.2.2

 

소스를 입력하고 실행한다.

 

tts.mp3
0.01MB

 

※ 참고

gTTS Documentation

 

반응형
Posted by J-sean
:
반응형

아래 링크를 참조해 WinDbg를 설치한다.

Windows 디버거 설치

 

WinDbg를 실행하고 Settings를 클릭한다.

 

Debugging settings - Debugging paths - Default symbol path:에 위와같이 세팅한다.

심볼 파일이 디버깅 할 파일과 같은 경로에 있거나 path에 지정한 경로(I:\windbgsymbols)에 있으면 된다.

※ 기본 심볼 서버: https://msdl.microsoft.com/download/symbols

※ 기본 캐시 폴더: C:\ProgramData\dbg

 

Symbol path for Windows debuggers

 

디버깅할 파일을 로드하면 관련 심볼 파일도 로드된다.

 

심볼파일(.pdb)을 로드할 때 WinDbg는 타임 스템프 등을 고려한 버전 체크를 하는데 버전이 맞지 않으면 로드하지 않는다. 아래 명령을 사용하면 심볼파일의 버전에 관계없이 로드할 수 있다.

[한 모듈의 심볼파일만 로드]

.reload /i Module_Name

ex) .reload /i myapp.exe

[모든 모듈의 심볼파일 로드]

.reload /i

 

2023.07.02 - [Reverse Engineering] - WinDbg 버전(타임스템프) 일치하지 않는 심볼파일 로드하기

 

반응형
Posted by J-sean
:
반응형

C 코드를 어셈블리 코드로, 어셈블리 코드를 기계 코드로 바꿔보자.

 

콘솔 명령어 CMD를 실행하는 C 코드를 작성하고 빌드한다.

 

실행하면 콘솔 화면이 나타난다.

 

브레이크 포인트를 걸고 디버깅한다.

 

C 코드가 디스어셈블리된 코드를 확인할 수 있다.

 

 

디버거를 이용해 kernel32.dll의 WinExec() 주소를 확인한다. (0x75E3E120)

디버거로 확인한 WinExec() 주소는 재부팅 할 때마다 변경된다.

 

확인한 어셈블리 코드와 WinExec() 주소를 적당히 편집해 어셈블리 코드를 작성한다. 빌드하고 실행하면 콘솔 화면이 실행된다.

 

WinExec() 가 실행되기 전 코드에 브레이크 포인트를 걸고 디버깅한다. 이번엔 기계 코드를 확인한다.

 

DEP(Data Execution Prevention)를 No로 세팅한다.

 

 

기계 코드를 작성하고 빌드한다. 실행하면 콘솔 화면이 실행된다.

 

반응형
Posted by J-sean
:
반응형

기드라에서 디스어셈블되지 않고 Opcode로 표시된 명령을 디스어셈블하고 함수로 등록해 보자.

 

리스트창을 보면 디스어셈블되지 않고 Opcode로만 표시된 부분이 있을 수 있다.

 

디스어셈블 하고 싶은 부분의 첫 명령어에서 우클릭 - Disassemble을 클릭한다.

Disassemble(Restricted), Disassemble(Static)은 한 줄(혹은 블럭으로 지정된 부분)만 디스어셈블한다.

 

Opcode로만 표시되던 명령어가 디스어셈블되었다.

 

함수 전체가 디스어셈블 되지 않고 Opcode로만 표시되었다.

 

 

첫 코드에서 우클릭 - Disassemble을 클릭한다.

 

디스어셈블 되었으면 다시 우클릭 - Create Function을 클릭한다.

 

디스어셈블된 부분이 함수로 등록되었다.

 

반응형
Posted by J-sean
:
반응형

Ghidra로 패치한 파일을 저장해 보자.

 

패치할 프로그램을 임포트한다.

 

WindowsPE x86 Propagate External Parame... 옵션을 선택하고 분석한다.

 

패치가 필요한 코드에서 우클릭 - Patch Instruction을 선택한다.

 

어셈블리 명령을 수정한다.

 

 

수정이 완료되었다.

 

File - Export Program...을 선택한다.

 

Format은 PE로 바꾸고 Output File을 적당히 지정하고 OK를 클릭한다.

 

Export 결과가 표시된다.

 

 

패치된 파일을 실행해본다.

 

반응형
Posted by J-sean
:
반응형

아두이노와 지문 인식 센서를 사용해 보자.

 

AS608 칩을 사용한 지문 인식 센서다.

 

핀맵은 왼쪽부터 아래와 같다. (D- D+는 USB 연결 시 사용한다)

D- D+ UA TCH GND RX TX VCC(3.3V)

제품마다 다를 수 있다.

 

아래와 같이 연결한다.

VCC - 3.3V

TX - D2

RX - D3

GND - GND

 

Arduino IDE - Library Manager - fingerprint를 검색하고 Adafruit Fingerprint Sensor Library를 설치한다.

 

 

File - Examples - Adafruit Fingerprint Sensor Library - enroll 을 선택한다.

 

컴파일하고 아두이노에 업로드한다.

 

시리얼 모니터를 확인하면 지문인식 센서가 인식되고 ID 입력을 기다린다.

 

127개의 지문을 인식할 수 있다. 처음 이므로 1을 입력하면 첫 번째 지문 등록 대기상태로 들어간다.

 

 

손가락을 대면 지문이 인식되고 뗐다 다시 대면 첫 번째 지문이 등록 된다. 2를 입력하고 동일한 방법으로 두 번째 지문을 등록한다.

 

이번엔 fingerprint 예제를 불러온다.

 

컴파일하고 업로드한다.

 

지문인식 센서가 인식되고 대기상태에 들어간다. 센서에 2개의 지문(템플릿)이 있다고 표시된다.

 

 

첫 번째 등록한 손가락을 대면 ID 1과 매치된다.

 

두 번째 손가락을 대면 ID 2와 매칭된다.

 

반응형
Posted by J-sean
:
반응형

WMware 리눅스(우분투)와 윈도우 폴더를 공유해 보자.

 

가상머신의 세팅 옵션에서 Folder sharing을 enable하고 공유할 윈도우 폴더를 지정한다.

 

리눅스에서 공유에 사용할 디렉토리를 생성하고 아래 명령으로 마운팅 한다.

/usr/bin/vmhgfs-fuse .host:/ ~/shares -o subtype=vmhgfs-fuse,allow_other

위 그림과 같이 allow_other 옵션 때문에 에러가 발생한다면 아래 내용을 진행한다. (아니면 명령 앞에 sudo를 붙여준다)

 

/etc/fuse.conf 파일을 에디터로 오픈 한다.

 

user_allow_other 명령의 주석을 해제한다.

 

 

다시 마운팅 명령을 실행하면 문제 없이 마운팅 된다.

재부팅하면 다시 마운팅해야 한다.

 

※ 참고

Using Shared Folders

 

반응형
Posted by J-sean
: