기본 콘텐츠로 건너뛰기

추천 가젯

리눅스 홈서버 알림용 텔레그램 봇(Telegram Bot) 연동 및 쉘 스크립트 구축 가이드

개인 홈서버를 운영하다 보면 백업 완료 여부나 시스템 에러 같은 단방향 알림을 스마트폰으로 빠르게 받아보고 싶어집니다. 외부 메일 서버나 복잡한 SMTP 설정을 거치지 않고, 가장 확실하고 가볍게 쓸 수 있는 텔레그램 봇을 이용한 홈서버 알림 구축 방법 을 정리합니다. 1단계: 텔레그램 봇 생성하기 (BotFather) 텔레그램 앱을 켜고 상단 검색창에 BotFather 를 검색하여 공식 봇(파란색 체크마크 확인)을 엽니다. 대화창에 아래 명령어를 입력하여 새로운 봇을 만듭니다. Plaintext /newbot 봇의 이름(Name)을 입력합니다. (예: My Home Server Bot ) 봇의 아이디(Username)를 입력합니다. (반드시 영문이며 끝에 bot 또는 _bot 으로 끝나야 합니다. 예: my_home_backup_bot ) 생성이 완료되면 HTTP API 토큰(Token)이 발급됩니다. 이 토큰을 안전하게 보관합니다. 2단계: 내 Chat ID(채팅방 고유 번호) 확인하기 텔레그램은 보안상 사용자가 먼저 봇에게 말을 걸어야 메시지를 받을 수 있으며, 봇이 나에게 메시지를 보내려면 고유 Chat ID 가 필요합니다. 텔레그램 검색창에 userinfobot 을 검색하여 들어갑니다. 하단의 [시작하기] 버튼을 누르면 내 계정의 정보와 함께 Id (숫자) 값을 알려줍니다. 이 숫자를 복사해 둡니다. [중요] 1단계에서 만든 내 봇의 아이디(예: @my_home_backup_bot )를 검색해서 대화창을 열고, [시작] 버튼을 누르거나 아무 메시지나 먼저 한 번 전송해 둡니다. 3단계: 리눅스 쉘 스크립트 작성 및 테스트 서버(터미널)에서 환경변수를 설정하고 curl 명령어를 통해 테스트 메시지를 보낼 수 있습니다. 특히 인자값이 없을 때를 대비해 기본값 처리를 해두면 유용합니다. 아래 내용을 포함하는 쉘 스크립트 파일(예: send_telegram.sh )을 작성합니다. Bash #!/bin/bash # 환경변수 설정 (실제 토큰과 C...

[리버싱 일기/리메이크] 랑그릿사 2 PC판 마법 메커니즘 분석 (데미지 및 지형 파괴)

필자가 직접 기드라(Ghidra)를 통해 랑그릿사 2 PC판의 바이너리를 헤쳐나가며 정리한 두 번째 리메이크 원고입니다. 이번 편은 게임의 핵심인 마법 데미지 산출 공식과 지형 파괴 로직을 중심으로 다룹니다.


[리버싱 일기/리메이크] 랑그릿사 2 PC판 마법 메커니즘 분석 (데미지 및 지형 파괴)

랑그릿사 2의 마법 시스템은 겉보기보다 단순하면서도, 포팅 과정에서 발생한 것으로 보이는 기묘한 수치 불균형이 존재합니다. 오프셋 0041012c와 0040ffd3를 중심으로 그 내부를 들여다보았습니다.

1. 마법 적용 전처리: 마법 방어력(MDF)의 확정

데미지를 계산하기 전, 유닛의 최종 마방을 결정하는 전처리 단계가 선행됩니다.

  • 레지스트(Resist) 체크: 마법 플래그가 활성화되어 있으면 MDF 기본값을 50으로, 없으면 0으로 설정합니다.

  • 지휘관: 착용 아이템의 마방 효과 합계를 구하여 기본값에 더합니다. (슬롯 제한을 무시한 강제 착용 시에도 로직은 작동합니다.)

  • 부대원: 클래스별 고정 MDF에 아뮬렛 착용 여부(+15)를 더합니다.

  • 디클레인(Decline): 해당 마법이 걸려 있다면 MDF에서 15를 감산합니다.

  • 고정(Clamping): 최종 수치가 99를 넘어가면 100으로 고정하여 마법 면역 상태를 만듭니다.

2. 공격 마법의 데미지 공식 (MLv와 SP)

랑그릿사 2의 데미지 공식에는 시전자의 레벨을 2로 나눈 **MLv(Lv >> 1)**와 클래스 티어에 따른 **SP(Spell Power)**가 핵심 변수로 사용됩니다.

주요 마법별 기본 데미지(Damage) 산출

마법명공식 (기초 데미지)특이 사항
매직 에로우SP + (MLv * 2)가장 기본적인 단일 공격
파이어볼MLv + SP마법의 표준 수치
블라스트18 + MLv + SP고위력 단일 마법
메테오6 + MLv + SP범위 마법의 표준
썬더1 + MLv + SP수중 타일 대상 시 보너스 데미지 +1
토네이도(MLv + SP) * 2비병 대상 시 방어 무시 데미지 +1 (버그성 강력함)

분석 결과, 토네이도, 블리자드, 어스퀘이크는 모두 파이어볼의 2배 공식을 공유하는 동일 코드로 확인되었습니다. 특히 토네이도는 배우기 어려운 대신 비병 특효까지 겹쳐 유닛 중심 마법 중 가장 파괴적인 위력을 발휘합니다.

3. 지형 파괴 로직: 메테오와 어스퀘이크

마법 번호(메테오: 0x4, 어스퀘이크: 0x8)를 비교하여 지형 변조 함수를 호출합니다.

  • 메테오 (오프셋 00411cee): 마법 시전 좌표의 지형 속성이 '파괴 금지(0xff)'가 아닐 경우, 지형 1(스프라이트)과 지형 2(원본 데이터)를 교체하여 지형 붕괴를 표현합니다.

  • 어스퀘이크: 맵 전체를 스캔하여 범위 내 지형의 1/4 갯수만큼 랜덤하게 파괴합니다. 동일 장소가 중복 선택될 수 있는 구조라, 실제 파괴 효율은 기대값보다 낮게 나타납니다.

4. 힐(Heal) 마법의 메커니즘

힐은 공격 마법보다 단순하게 작동하지만, 경험치 획득 방식에서 특징이 보입니다.

  • 힐 1: (10 - 현재 HP)로 회복량을 구하며, 최대 3까지만 회복 가능하도록 하한선(Bound)이 설정되어 있습니다. (힐 2는 이 제한이 없습니다.)

  • 경험치: 회복량과 상관없이 함수 호출 시마다 전역 변수를 조작하여 경험치를 1씩 증가시킵니다. 즉, 적은 양을 자주 채우는 것이 레벨업에 유리한 구조입니다.

5. 리버싱의 핵심: 랜덤 함수(RNG)의 발견

분석 중 0x41C64E6D와 같은 거대한 상수를 사용하는 루틴을 발견했습니다. 이는 전형적인 선형 합동 생성기(LCG) 방식의 랜덤 함수입니다. 유저의 조작이 개입하지 않는 '확률의 영역'을 추적하기 위해서는 이 RNG 호출지를 쫓는 것이 향후 리버싱의 핵심 이정표가 될 것입니다.

댓글