반응형 Research 아프리카TV 프로그램 분석 (3) - P2P 패킷 구조 분석 요즘 프로그램 분석하는게 취미가 된것마냥, 여가 시간이 나면 계속 분석만 하고 있네요 ㅎㅎ 벌써 아프리카TV 프로그램 분석 주제로 세번째 포스팅을 하게 되었습니다! 이번 포스팅의 주제는 P2P 패킷에 대해 분석한 내용을 다루었습니다. 나름의 Handshake 과정이 있었으며, 이번 분석으로 실제 미디어 파일을 받기까지 어떠한 작업이 이루어졌는지 알 수 있었는데요. 프로그램이 좀 방대하지만 이 포스팅에서는 720p 영상에 한하여 분석한 내용이 있으니 참고하셔서 봐주세요 :D 1. 통신 순서 이 프로그램에서 P2P 통신을 할 때 나름의 명칭이 있었는데요.(물론, 다른 P2P에서도 동일한 네이밍을 쓸수도 있음) 데이터를 요청하는 시청자를 Child, 영상 데이터를 제공해주는 시청자를 Parent라고 합니다. .. 2023.12.21 아프리카TV 프로그램 분석 (2) - Grid Network 지난 포스팅에 이어서 고화질 스트리머 프로그램 분석글을 작성하겠습니다. 이 전 포스팅에서는 스트리밍 데이터를 받기 전에 어떠한 작업들이 이루어지는지 알아보았는데요. 이번 포스팅에서는 영상 데이터를 어디서 받아오는지를 중심으로 내용을 구성해보았습니다. 또한 Frida로 바이너리를 후킹하여 원하는 정보를 쉽게 받아오는 스크립트도 함께 소개드리겠습니다.1. Client와 Center 서버간의 통신이 전 포스팅에서 afreecastreamer.exe를 실행하고, 실시간 방송을 재생하면 Center로 불리는 아프리카 서버 (TCP PORT:19000)로 연결되는 것을 확인하였습니다. 이 Center와 연결한 후에는 다양한 작업을 하지만, 눈에 띄는 몇 가지만 나열해보면 아래와 같습니다.1) Client -> Ce.. 2023.12.13 아프리카TV 프로그램 분석 (1) - 초기 네트워크 설정 오늘은 갑자기 호기심이 생긴 아프리카TV의 프로그램을 분석해보았습니다. 좀 더 정확히 말하자면, 아프리카TV의 영상을 1080P 고화질로 볼 수 있도록 하는 고화질 스트리머라는 프로그램인데요. 이 고화질 스트리머라는 것은 그리드 딜리버리 프로그램이라고 하여, 사용자들간의 데이터를 교류하며 딜레이 및 화질을 개선하기 위한 프로그램이라고 하는데요. 과연 어떤식으로 수행되는지 궁금하여 분석을 좀 시도해보았습니다. 최종 목표는 바이너리 분석까지 진행하고 내부에서 어떤 일이 일어나는지 작성하는 것이었으나, 아무래도 본업이 있는지라 많은 시간을 투자하진 못했구요. 프로세스 상태와 네트워크 변화들을 중심으로 분석한 내용들이니 참고하여 재밌게 봐주세요. (+기술적인 내용은 별로 없음..) 1. 프로세스 가장 먼저 프로.. 2023.12.08 more QEMU 를 이용한 AVR 바이너리 분석하는 방법 1. 환경 host: macOS target: ELF 32-bit LSB executable, Atmel AVR 8-bit, 2. QEMU 설치 brew 를 사용한 install brew install qemue apt 를 사용한 install apt install qemu 3. AVR 바이너리(ELF) 파일 실행 참고 https://qemu.readthedocs.io/en/latest/system/target-avr.html 예제 qemu-system-avr -machine arduino-duemilanove -bios atme.elf -s -S 4. avr-gdb 설치 First, make sure you have xcode command line developer tools installed wit.. 2022.01.23 [Kinght CTF] Fix It Felix! writeup Problem Atmega 32 ELF 파일 Circuit board ( Atmega & 8x8 LED matrix ) Analysis Binary (ELF) INFO user@bk-mac:~/ctf $ file atme.elf atme.elf: ELF 32-bit LSB executable, Atmel AVR 8-bit, version 1 (SYSV), statically linked, with debug_info, not stripped Analysis main() user@bk-mac:~/ctf $ cat dump.asm 0x00000092 : ldi r24, 0xFF ; 255 0x00000094 : out PORT_A, r24 ; 26 0x00000096 : out PORT_B, r24 ; 20.. 2022.01.23 [exploit] 2016 33c3 CTF - babyfengshui #!/usr/bin/env python import socket import struct import telnetlib p = lambda x: struct.pack( " 2016.12.30 [crypto] 2016 SecconCTF - Vigenere writeups [문제] Vigenere k: ???????????? p: SECCON{???????????????????????????????????} c: LMIG}RPEDOEEWKJIQIWKJWMNDTSR}TFVUFWYOCBAJBQ k=key, p=plain, c=cipher, md5(p)=f528a6ab914c1ecf856a1d93103948fe [풀이] import md5 p = "SECCON{???????????????????????????????????}" c = 'LMIG}RPEDOEEWKJIQIWKJWMNDTSR}TFVUFWYOCBAJBQ' m = "ABCDEFGHIJKLMNOPQRSTUVWXYZ{}" a = [] for i in range(len(p[:7])): for j in range.. 2016.12.12 [exploit] 2016 SecconCTF - jmper writeups (exploit only) #!/usr/bin/env python import socket import telnetlib import struct from collections import deque p = lambda x: struct.pack( " 2016.12.11 more Virtualization | 가상화 [WSL2] WSL2에서 GPU 가속화 사용하기 A. 환경 정보Host: Windows 10 (version: 21H2, build: 19044.1766)Guest: Ubuntu 20.04 (WSL version2)GPU: NVIDIA GeForce GTX 1050B. 환경 구축하기1. WSL 버전 확인cmd.exe에서 아래 명령어 입력하기 wsl --list -v실행결과 C:\ >wsl --list -v NAME STATE VERSION * Ubuntu-20.04 Running 2WSL 버전이 1일 경우, 해당 사이트를 참고하여 Update 를 해주세요.2. WSL 에 적합한 Windows vGPU Driver 설치하기참고가상 GPU 를 사용하려면 특정의 드라이버가 필.. 2022.07.01 WSL(Windows Subsystem Linux)로 출시된 DirectX (GPU-PV) 참고 : 아래 글은 Micro Soft의 블로그에 작성된 포스트를 한글로 작성한 글입니다. WSL(Windows Subsystem Linux)로 출시된 DirectX Microsoft는 GPU 하드웨어 가속화가 Linux 2용 Windows Subsystem(WSL 2)으로 온다고 발표했다. (build 2020) WSL 이란?WSL은 사용자가 Windows PC에서 Linux 애플리케이션을 실행할 수 있는 환경이다. 이러한 리눅스 애플리케이션과 도구는 이제 GPU 가속화의 혜택을 받을 수 있다. GPU 가상화 소개 "WDDM GPU 반가성화" 또는 "GPU-PV" 란, WDDM (Windows Display Driver Model) 에 통합되며 모든 WDDMv2.5 이상 드라이버는 GPU 가상화를 기본.. 2022.05.24 Hyper-V 분석하기 위한 환경설정 하는 방법 들어가기에 앞서.. 해당 포스트는 MSRC(Microsoft Security Response Center) 블로그에 작성된 First Step Hyper-V Research 내용을 토대로 작성하였습니다. Debugging Environment 1) Intro 이 글에서 작성할 환경 설정은 nested(중첩) VM을 생성하고 이 내부에서 Hyper-V guest의 하이퍼바이저와 루트 파티션의 커널을 디버깅하기 위함입니다. Hyper-V는 하이퍼바이저 중에서도 Type-1 방식이기 때문에 Host 에서는 커널과 하이퍼바이저를 디버깅할 수 없습니다. 이를 위해 게스트를 만들고 그 안에 Hyper-V를 활성화(nested vm)하고 모든 것을 구성하여 디버깅을 할 것입니다. 다행히도 Hyper-V는 이 방식에서.. 2021.12.22 more Programming | 컴퓨터언어 Miniconda 설치하기: 다양한 운영 체제에서의 단계별 설명 1. Miniconda 란? Python을 사용하는 방법은 매우 다양하다. local system에 python을 설치한 후 그냥 실행을 한다거나, venv를 실행한다거나, anaconda를 사용하거나. 이 중에서 Miniconda라는 프로그램을 사용하는 방법도 존재한다. 하여 Miniconda란, anaconda 를 최소화한 프로그램으로써 작업하고자하는 프로젝트별로 python의 버전을 설정할 수 있으며, 모듈 또한 각 프로젝트 환경에 종속되어 설치할 수 있다. 이러한 기능으로 프로젝트별 모듈 관리하기가 편하며, 간단한 명령어를 이용하여 project switching 하기도 용이하다. 2. Miniconda 설치법 2.1) 설치 스크립트 다운로드 다운로드 사이트에서 설치하고자 하는 환경을 다운로드받으.. 2023.09.18 [github] GitHub Push 실패? 권한 에러 해결하는 방법 1. Intro github에서는 August 13, 2021부로 패스워드 인증 방식을 제거한다고 발표하였습니다. (공지 링크) 이후부터 원격지(ssh)에서 git push 및 기타 작업을 할 때 권한이 없다는 에러가 발생하고 있는데요. 개발자에게는 아주 중요한 부분이라, 이러한 에러를 어떻게 해결할 수 있을지 step-by-step으로 정리를 해보았습니다. 에러 요약 fatal: Authentication failed for 'https://github.com/___/_____.git/' 에러 전체 blackcon.github.io git:(master) ✗ git push origin master Username for 'https://github.com': Password for 'https://b.. 2022.08.12 [Tistory 운영] 오일남: 내가.. 어디까지.. 봤더라? (feat. 스크롤 상태표시줄Progress bar 설정) 1. 주절주절 요즘 시대에는 Blog, Tistory, Wiki 등 방대한 정보가 쏟아져 나오고 있습니다. 하나의 정보글(또는 포스팅)은 짧게는 몇 줄, 길게는 몇 페이지 이상의 긴 글이 존재하고 있죠. 사용자 입장에서는 이렇게 긴 글을 접했을 때 현재까지 어느 정도 읽었고 앞으로 얼마나 남았는지 궁금할 때가 있더라구요. 그러한 상태표시줄(Progress Bar)을 이용하여 현재 상태를 확인할 수 있도록 Tistory blog를 수정해보도록 하겠습니다. (오일남: 내가,,, 어디까지,,, 봤더라? ) 2. 설정 방법 2-1. [스킨편집]: 블로그 관리자 페이지 > 꾸미기:스킨 편집 1) 하단에 있는 이미지와 같이 관리페이지에 있는 스킨편집을 클릭합니다. 2) 새로운 탭이 뜨고 해당 창에는 스킨편집을 할 .. 2022.08.03 more