YOGYUI

Tistory::notify-Notice_Blog_New 유입링크 해석하기 본문

Software/Etc

Tistory::notify-Notice_Blog_New 유입링크 해석하기

요겨 2021. 10. 29. 01:16
반응형

티스토리 유입 경로를 보면 간혹 다음과 같이 링크로 유입된 경우를 확인하게 된다

 

위 예시의 URL은 다음과 같다

https://yogyui.tistory.com/notify-Notice_Blog_New?aHR0cHM6Ly95b2d5dWkudGlzdG9yeS5jb20vZW50cnkvJUVBJUI0JTkxJUVBJUI1JTkwJUVDJTk1JTg0JUVDJTlEJUI0JUVEJThDJThDJUVEJTgxJUFDLSVFQyU5NyU5OCVFQiVBNiVBQyVFQiVCMiVBMCVFQyU5RCVCNCVFRCU4NCVCMC0lRUQlOTklODglRUQlODIlQjctJUVDJTk3JUIwJUVCJThGJTk5LTEtMg==;n4NRnC9NaQ4RKh+vRtSjrCgg81uCPHnovGhC9+SAIC8= 

 

정작 링크로 접속해보면 

 

존재하지 않는 페이지라고 나온다

 

처음 봤을때는 "뭐지? 내가 올린 글이 링크가 깨진건가?"하고 의심을 했는데, 유입 경로에 자주 나타나는 것을 보고는 한 번 조사해봐야겠다는 생각이 들었다 (고객센터는 공돌이에겐 어울리지 않는 곳이라구!)


거창하게 조사한다고 말은 했는데, 실체는 허무하리만치 쉽게 밝혀졌다

notify-Notice_Blog_New? 뒤에 붙은 암호같은 문자열들 중 처음 나오는 aHR0cHM6 시퀀스는 웹개발을 조금이라도 해본 사람이라면 꽤나 자주 봤을 문자열이 아닐까라고 (개인적으로) 생각한다 ㅎㅎ

바로 "https"문자열이 base64 알고리즘으로 인코딩된 문자열이다!!

결국 뭔가 url-link가 인코딩되어 있는 것이 아닐까?

 

확인을 위해 바로 파이썬의 base64 패키지를 활용해서 디코딩해봤다

import base64

url = "https://yogyui.tistory.com/notify-Notice_Blog_New?aHR0cHM6Ly95b2d5dWkudGlzdG9yeS5jb20vZW50cnkvJUVBJUI0JTkxJUVBJUI1JTkwJUVDJTk1JTg0JUVDJTlEJUI0JUVEJThDJThDJUVEJTgxJUFDLSVFQyU5NyU5OCVFQiVBNiVBQyVFQiVCMiVBMCVFQyU5RCVCNCVFRCU4NCVCMC0lRUQlOTklODglRUQlODIlQjctJUVDJTk3JUIwJUVCJThGJTk5LTEtMg==;n4NRnC9NaQ4RKh+vRtSjrCgg81uCPHnovGhC9+SAIC8="
idx = url.find("?")
b64_encoded = url[idx+1:]
b64_decoded = base64.b64decode(b64_encoded)
In [1]: b64_encoded
Out[1]: 'aHR0cHM6Ly95b2d5dWkudGlzdG9yeS5jb20vZW50cnkvJUVBJUI0JTkxJUVBJUI1JTkwJUVDJTk1JTg0JUVDJTlEJUI0JUVEJThDJThDJUVEJTgxJUFDLSVFQyU5NyU5OCVFQiVBNiVBQyVFQiVCMiVBMCVFQyU5RCVCNCVFRCU4NCVCMC0lRUQlOTklODglRUQlODIlQjctJUVDJTk3JUIwJUVCJThGJTk5LTEtMg==;n4NRnC9NaQ4RKh+vRtSjrCgg81uCPHnovGhC9+SAIC8='

In [2]: b64_decoded
Out[2]: b'https://yogyui.tistory.com/entry/%EA%B4%91%EA%B5%90%EC%95%84%EC%9D%B4%ED%8C%8C%ED%81%AC-%EC%97%98%EB%A6%AC%EB%B2%A0%EC%9D%B4%ED%84%B0-%ED%99%88%ED%82%B7-%EC%97%B0%EB%8F%99-1-2'

bytes 객체인 b64_decoded를 슬쩍 보니 percent-encoded된 것을 알 수 있다

 

이를 다시 일반 문자열로 디코딩하기 위해 urllib 패키지를 사용하도록 한다

from urllib.parse import unquote

b64_decoded_str = b64_decoded.decode(encoding='utf-8')
url_unquoted = unquote(b64_decoded_str)
In [3]: url_unquoted
Out[3]: 'https://yogyui.tistory.com/entry/광교아이파크-엘리베이터-홈킷-연동-1-2'

 

내 블로그의 다음 글이 (percent encoding) - (base64 encoding)되었다는 것을 알게 되었다 ㅎㅎ

https://yogyui.tistory.com/entry/광교아이파크-엘리베이터-홈킷-연동-1-2

 

광교아이파크::엘리베이터 Apple 홈킷 연동 (1)

1. Prepare 신발장을 지나 거실 초입 부근에는 조그마한 월패드 (이하 소형 월패드)가 있다 LCD 패널 (터치는 안됨)에는 날씨 및 현재 시간이 디스플레이된다 아래 제어 패널들로는 집안 전체 조명

yogyui.tistory.com


처음 분석할 때는 notify-Notice_Blog_New 뒤에 인자로 붙어서 뭔가 블로그에 새로운 글을 포스팅하면 다른 사이트에서 참고할 수 있게 하는 서비스인줄 알았는데, 1월 20일에 올린 글이 10월 28일에 위와 같이 유입된 것을 보면 그것도 아닌 것 같다...

 

어떤 원리로 위와 같은 유입 경로가 생성되는지까지는 딱히 조사할 수 있는 수단과 방법, 그리고 무엇보다도 의지가 부족해서 진행하지 않기로 했다 ㅎㅎ 

 

그냥 URL의 정체를 파악한 것으로 만족하기로~

 

P.S)

코드를 직접 구현하기 귀찮은 사람은 디코딩해주는 웹페이지를 방문하면 된다

base64 decode webpage

 

Base64 Decode and Encode - Online

Decode from Base64 format or encode into it with various advanced options. Our site has an easy to use online tool to convert your data.

www.base64decode.org

 

base64 decode 활용 예시

 

url(percent) decode webpage

 

URL Decode and Encode - Online

Decode from URL-encoded format (also known as "percent-encoded") or encode into it with various advanced options. Our site has an easy to use online tool to convert your data.

www.urldecoder.org

 

percent decode 활용 예시

반응형