반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- hacking
- windows kernel debugging
- 개발 환경 준비
- vcruntime.dll
- apphelp.dll
- 시스템해킹
- pwnable
- vcruntime140.dll
- 윈도우 커널 드라이버
- Windows
- Msvcrt.dll
- Windows Kernel
- 해킹
- 포너블
- pcap packet
- pcap packet capture
- 개발하기
- Windows Kernel Driver
- Network Byte Order
- 윈도우 커널 디버깅
- Windows Kernel Debug
- 윈도우 커널
- HackCTF
- 네트워크 바이트 오더
- packet capture
- arudino
- ucrtbase.dll
- C언어 패킷캡쳐
- IAT Hooking
- 바이트 오더
Archives
- Today
- Total
미친해커
[C] Serial Monitor Step 1 - 통신수단을 알아보자 본문
반응형
해당 모듈은 위 깃헙에 커밋할 예정이다.
우선 아두이노는 시리얼 포트를 사용한다. 다른말로 COM 포트라고도 하는거 같다. 또 COM 포트는 각각 번호가 부여되어 있어서 COM1 ~ COM255까지 unsigned char의 범위 값 만큼 생성가능 한 것으로 보인다. (아마 USB랑 비슷한 취급인 것 같다) 먼저 아두이노를 컴퓨터에 연결하고 장치 관리자를 실행해준다.
많은 탭 중에 포트(COM & LPT) 탭을 열게되면 위와 같이 연결되어 통신할 수 있는 시리얼 포트들이 보이는데 USB-SERIAL CH340(COM3)이 나의 아두이노 시리얼 포트 번호이다. (COM3이니 번호는 3이다) 나는 아두이노 우노를 사용하는데 정품이 아니라 호환보드를 구매했기 때문에 CH340이라 표시되는것 같다. 우선 시리얼 포트가 몇 번인지는 확인했다.
그런데 어떻게 통신할 수 있을까?
인터넷을 검색해보니 다음과 같이 예제가 있었다.
#include <stdio.h>
#include <windows.h>
int main(int argc, char *argv[])
{
HANDLE hComm = CreateFileA("\\\\.\\COM3", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hComm == INVALID_HANDLE_VALUD)
{
printf("CreateFileA Failed\n");
printf("GetLastError : %d\n", GetLastError());
return -1;
}
CloseHandle(hComm);
}
CreateFile 함수를 사용해 Handle을 가져오는거 보니 하나의 Windows Kernel Object로 보인다. 그래서 WinObj로 해당 오브젝트를 확인해보았다.
WinObj로 해당 오브젝트를 확인해보니 '\Device\Serial + number' 로 심볼릭 링크가 Global 하게 걸려있었다. 즉 '\\.\COM3' 는 '\Device\Serial2' 와 같은 오브젝트라는 것이다.
이렇게 시리얼 포트와 통신할 수 있는 수단을 C언어로 얻어내는 방법을 알게되었다.
반응형
'C > Serial Monitor' 카테고리의 다른 글
[C] Serial Monitor Step 4.5 - CommTimeouts (0) | 2021.12.27 |
---|---|
[C] Serial Monitor Step 4 - 데이터 쓰기 (0) | 2021.12.27 |
[C] Serial Monitor Step 3 - 데이터 읽기 (0) | 2021.12.27 |
[C] Serial Monitor Step 2 - Baud Rate 설정 (0) | 2021.12.26 |
[C] Serial Monitor Step 0 - 자작 Serial Monitor 모듈 만들기 (0) | 2021.12.26 |
Comments