6학년 때 접한 코딩
텍스트 코딩을 처음 접한건 21년 초반 초등학교 6학년 겨울방학쯤이었던거 같다
코로나로 6학년을 거친 나는 방학동안 할 게 없었고 그 타이밍에 들어가있던 오픈채팅방에서 카톡, 디스코드 봇에 대한 이야기가 나왔었다
봇이 자동으로 채팅을 감지해서 답장해주는게 너무 흥미로웠던 나는 무작정 봇을 만들어보기로 했다
시작은 복붙이었다. 코드란게 뭔지도 몰랐었고 어디선가 가져온 봇 프로젝트의 배치파일을 더블클릭해서 봇을 돌리는게 다였다
옾챗에서 알던 사람들 + 코딩하는 사람들이 모여서 작은 규모의 방이 만들어지게 되었고 나도 거기 속했다
그 사람들의 봇에는 더 다양한 기능들이 있었고 나도 그런걸 만들어보고 싶었다
그렇게 자바스크립트 코드를 처음 열게 되었다
처음 1년?정도는 VSC가 편하다는걸 딱히 못느껴 노트패드++로 코딩했었다
같이 개발하던 사람들은 이미 실력이 꽤 있었고 나는 이제야 변수가 뭔지 막 알게된 뉴비였다
내 코드짜는 실력이 심각했던지라 진짜 많이 혼났다
그때 내가 짰던 코드의 일부를 첨부하겠다
function setsetasg(){
유저 += message.author.user.id
유저 += message.author.user.username
유저 += message.author.user.tag
유저 += message.author.user.displayAvatarURL()
유저 += message.author.user.bot
}
변수 선언, 올바른 함수명, 들여쓰기, 영문 변수명 사용 등 진짜 기본중의 기본도 안지킨 코드였다
오류가 날 때마다 이런 코드를 캡쳐해서 질문하다보니 코드 더럽다고 욕을 다발로 먹기 시작했다
근데 그 와중에도 알려줄건 알려주고 욕해서 확실히 공부하는데 도움은 되었다. 지금 생각해보면 그냥 고맙다.
이때까지 난 깔끔한 코드가 뭔지 몰랐다. 저 사람의 코드나 내 코드나 비슷한거 같았고, 돌아가기만 하면 된다고 생각했다.
중1을 보내며 1년동안은 이런 마인드로 코딩했다. 하지만 확실히 잘하는 코더들의 코드를 매일 같이 보다보니 나도 저런 클린코드를 짜며 개발하고 싶다고 생각했고 이때부터 코드의 깔끔함에 강박을 가지기 시작했다 이러면서 내 전체적인 코딩 실력이 향상되었다
내가 한 노력들은 아래와 같다
1. 단톡방에 공유되는 모든 코드들을 캡쳐해 앨범에 저장
2. 하루종일 인터넷 뒤져가며 코드 디자인 패턴 공부
3. 단톡방에서의 채팅 중 모르는 단어 출현시 캡쳐해 앨범에 저장
4. 저장한 코드, 용어들 짬날때마다 보며 머릿속으로 어떤상황에서 어떻게 사용할지 생각해보기
5. 내가 짠 코드들 전부 리팩터링하기

처음 저장했던 사진이다
이땐 api가 뭔지, Post 요청이 뭔지, 어태치가 뭔지도 몰랐었고 그냥 저 사람이 저런 채팅을 칠 수 있다는게 멋있어보였다
이거처럼 모르는 단어나 맥락이 나올때마다 전부 저장해서 매일매일 봤다
매일 이 루틴을 반복하다보니 중2 중반쯤부터는 확실히 코드가 깔끔해지기 시작했다. index.js 하나에만 때려박던 코드들도 모듈화하고 뭔지도 모르는 객체지향으로 코드 써보니 가독성도 좋아지고 그랬다
문제는 이제 질리기 시작한다는거였다
카톡, 디코봇이라는 주제로만 1~2년을 만들다보니 컨텐츠도 떨어지고 재미가 없어졌다
그래서 시작한게 웹개발과 해킹이었다
웹개발
웹개발은 진짜 대부분의 사람들이 하는거 처럼 똑같이 배운거 같다
html, css를 공부하고 게시판을 처음에 만들었다
지인한테 만들고 자랑했더니 친절하게 xss 취약점을 터트려서 내 계정을 빼가는걸 보여줬고 이를 기점으로 해킹에 관심을 가지게 되었다
해킹 얘기는 좀 이따 더 하는걸로 하고 개발을 주제로 좀 더 끌고가보자면
생 html, js로만 코딩하다보니 확실히 칠 코드가 많았고 어질어질했다
백엔드도 정상은 아니었다 json + no sql injection이 팡팡 터지는 코드들이 많았다
이대론 안 되겠다 싶어서 봇 개발 할 때 키운 코드 변태 기질을 살려서 몇개월동안 또 api 디자인 패턴이랑 리액트를 배웠고
이번엔 restful 한 api에 대한 강박이 생겼다 뭐 이건 딱히 나쁘지 않은 강박인거 같다
요즘은 리액트 ts 좀 더 깊게 파보고 nestjs 배워보려고 노력중이다
해킹
처음에는 별거 없었다
내가 지금까지 열심히 봇을 만들었으니, 이 봇들이 어떻게 작동하는지 궁금해졌고 discord js 모듈을 뜯고 카톡앱을 분석하기 시작했다
discord js 분석은 함수 몇 번 보다가 어영부영 끝났고 좀 오래 잡은게 카톡이었다
중2 겨울방학 때 부터 bpak 블로그와 논문 몇 개, 인터넷에 있는 카카오톡 프로토콜 분석 글들을 보며 찾아보기 시작했다
처음 몇 달 간은 진짜 하나도 이해하지 못했다
"어디서 tcp 연결을, 어디서 http 연결을 하는지", "어떤 정보가 패킷에 들어가고 그 정보는 어디서 받아오는지" 감도 못잡았다
포기하지않고 무작정 인터넷 뒤지면서 1년정도 잡고 조금씩 조금씩 했다
이거때문에 네트워킹 공부, 기초 암호학, 기초 컴퓨터 아키텍쳐 공부등을 했다
결국 고등학교 가기 직전에 카톡 구현체를 완성했고 이를 기반으로 찾은 취약점을 카카오에 제보해 2023 카카오 명예의 전당에 올라가게 되었다
(카카오에서 아무리 버바여도 위조클라이언트 사용은 좀 그렇다고해서 이후로 구현체 개발 및 사용은 접었다)
마무리
갑자기 삘 받아서 쓴 글인데 내 필력이 진짜 딸리는거 같긴하다
맞춤법이랑 오타검사 같은건 한 번도 안했기에 이상한게 있었을 수 있다
이 이후부터는 정보보안도 많이 배우고 있다
보안과 관련된건 내 블로그 다른 글에 있으니까 그걸 보도록 하자