SlideShare uma empresa Scribd logo
1 de 84
Baixar para ler offline
카카오톡으로 여친 만들기
김태훈
나이 : 22
carpedm20
카카오톡으로 여친 만들기
카카오톡으로 여친 만들기
카카오톡?
카카오톡?
모바일 인스턴트 메신저
Mobile instant messenger
모바일 인스턴트 메신저
카카오톡?
HTTP
2011.11 이전
모바일 인스턴트 메신저
카카오톡?
모바일 인스턴트 메신저
카카오톡?
겁나 빠른 황소 프로젝트
2011.11 이후
모바일 인스턴트 메신저
카카오톡?
겁나 빠른 황소 프로젝트 = LOCO 프로토콜
2011.11 이후
LOCO 프로토콜
카카오톡으로 여친 만들기
여친?
카카오톡으로 여친 만들기
여친?
신화 속에서나 등장하는 상상의 동물
ASKY
여친?
신화 속에서나 등장하는 상상의 동물
목표 : 여친을 만들자 (X)
가상의 여친을 만들자 (O)
Imaginary girlfriend
여친?
신화 속에서나 등장하는 상상의 동물
‘가상의 여친’, 조건 2가지
여친?
신화 속에서나 등장하는 상상의 동물
‘가상의 여친’, 조건 2가지
1. 나의 말을 들을 수 있다.
여친?
신화 속에서나 등장하는 상상의 동물
‘가상의 여친’, 조건 2가지
1. 나의 말을 들을 수 있다.
2. 나의 말에 대한 대답을 할 수 있다.
여친?
신화 속에서나 등장하는 상상의 동물
‘가상의 여친’, 조건 2가지
1. 나의 메시지를 읽을 수 있다.
2. 나의 메시지에 대한 답장을 할 수 있다.
카카오톡에 살고 있는
해킹을 시작해 봅시다
Let’s start hacking
해킹을 시작해 봅시다
우리에게 필요한 것?
# include <stdio.h>
int kakaoTalk()
{
sendMessage(“카카오톡으로 여친 만들기”);
return 0;
}
해킹을 시작해 봅시다
우리에게 필요한 것?
해킹을 시작해 봅시다
우리에게 필요한 것?
카카오톡 ≠ 오픈 소스
Life is short, you need HeXA
해킹을 시작해 봅시다
우리에게 필요한 것?
디컴파일
Decompile
해킹을 시작해 봅시다
우리에게 필요한 것?
카카오톡 초기 버전 어플리케이션
KakaoTalk application in 2006
해킹을 시작해 봅시다
우리에게 필요한 것?
우리를 환영하는 “소스 코드 난독화”
Source code obfuscation
해킹을 시작해 봅시다
우리에게 필요한 것?
읽어볼 테면 읽어봐
<- 카카오톡 소스 코드의 공격
Java
.apk
Objective C
.ipa
C#
.xap
Java
.jar
해킹을 시작해 봅시다
우리에게 필요한 것?
Java
상대적으로 구하기 쉬움
C#
상대적으로 분석하기 쉬움
해킹을 시작해 봅시다
우리에게 필요한 것?
어떻게 구하지?
해킹을 시작해 봅시다
해킹을 시작해 봅시다
어떻게 구하지?
해킹을 시작해 봅시다
어떻게 구하지?
해킹을 시작해 봅시다
어떻게 구하지?
해킹을 시작해 봅시다
어떻게 구하지?
그렇게 아무 일도 일어나지 않았다...
검색에 왕도는 없었다...
해킹을 시작해 봅시다
어떻게 구하지?
by carpdm20
해킹을 시작해 봅시다
어떻게 구하지?
결국... 성공!
Reversing
소스코드를 읽어 봅시다
해킹을 시작해 봅시다
해킹을 시작해 봅시다
소스코드를 읽어 봅시다
얘네는 뭐지? C#, Java 인건 알겠는데...
해킹을 시작해 봅시다
소스코드를 읽어 봅시다
그냥 zip 파일
해킹을 시작해 봅시다
소스코드를 읽어 봅시다
해킹을 시작해 봅시다
소스코드를 읽어 봅시다
음...
해킹을 시작해 봅시다
소스코드를 읽어 봅시다
찾음ㅋ
해킹을 시작해 봅시다
소스코드를 읽어 봅시다
.Net Reflector
0
<- 우왕! 코드가 보여요
해킹을 시작해 봅시다
소스코드를 읽어 봅시다
TCP 통신
보내는이 IP
받는이 IP
메시지 : 안녕
Socket
소켓을 통해서 서로 데이터를 교환하는 통로
(가상의) 여친한테 “안녕"이라고 보내줘
ㅇㅋ 보냈음
나
(가상의)
여친
…
해킹을 시작해 봅시다
소스코드를 읽어 봅시다
 LOCO 서버와 TCP 소켓이 연결되어 있는지 확인
- 그렇지 않다면 재 접속 시도
 현재 커맨드에 해당하는 패킷 생성 ( FillBuffer() )
- 커맨드 : 패킷이 메세징 과정에서 하는 역할
 if(isSecureMode)
- True & Login : handshake 패킷 생성 후 암호화된 커맨드 패킷 앞에
붙이고 전송
- True & !Login : 커맨드 패킷을 암호화 하고 전송
- False: 그대로 전송
Network flow
해킹을 시작해 봅시다
소스코드를 읽어 봅시다
 ADDMEM
 NOTIREAD
 LEAVE
 READ
 BUY
 CWRITE
 LOGIN
 PING
 WRITE
 BLOCK
 NCHATLIST
 CHATON
 CHATOFF
 UPDATECHAT
 UNBLOCK
 UPSEEN
 CHATLIST
 WRITE
커맨드 종류
해킹을 시작해 봅시다
소스코드를 읽어 봅시다
해킹을 시작해 봅시다
소스코드를 읽어 봅시다
FillBuffer 함수를 통해 현재 커맨드에
해당하는 패킷 생성
True & Login : handshake 패킷 생성 후 암호
화된 커맨드 패킷 앞에 붙이고 전송
LOCO 서버에 대한 TCP 소켓이 연결되어 있는지 확인
해킹을 시작해 봅시다
소스코드를 읽어 봅시다
 가장 기본이 되는 패킷
 Packet ID : 패킷 번호
 Status Code : 보통 0
 Method = 커맨드
Ex) LOGIN, ADDMEM , ACHATLIST
 Body Type : 0
 Body Length
 Body Contents
- bson 형태로 전송됨
출처 : http://www.bpak.org/
{ msg : “안녕”,
time : 20131012,
to : “(가상의) 여친” }
LocoPacket
해킹을 시작해 봅시다
소스코드를 읽어 봅시다
출처 : http://www.bpak.org/
해킹을 시작해 봅시다
소스코드를 읽어 봅시다
커맨드 종류
해킹을 시작해 봅시다
소스코드를 읽어 봅시다
BUY
Encrypted
LOGIN
Handshake
WRITE
loco.kakao.com
Host
port
Host:port
AES key
(랜덤 생성됨)
Encrypted
AES key
public key로
RSA encryptLOGIN
AES
12
6
7
3
45
서버 측에서는 Private key로 RSA decrypt
Network
패킷패킷패킷 실제로 어떻게 생겼을까?
해킹을 시작해 봅시다
해킹을 시작해 봅시다
패킷패킷패킷 실제로 어떻게 생겼을까?
Wireshark
해킹을 시작해 봅시다
패킷패킷패킷 실제로 어떻게 생겼을까?
Wireshark
HTTP Request
HTTP Response
해킹을 시작해 봅시다
패킷패킷패킷 실제로 어떻게 생겼을까?
 LOCO 서버 정보 및 소켓 요청
 non-secure 모드
- 암호화 되지 않고 LocoPacket 형태로 그대로 전송됨
BUY 커맨드
해킹을 시작해 봅시다
패킷패킷패킷 실제로 어떻게 생겼을까?
Handshake
with RSA
encrypted
AES key
AES
Encrypted
Login
AES
Encrypted
Response
Handshake + LOGIN 커맨드
이제 남은건?
카카오톡으로 여친 만들기
po코딩wer
카카오톡으로 여친 만들기
이제 남은건?
이제 남은건?
po코딩wer
이제 남은건?
po코딩wer
이제 남은건?
po코딩wer
끗
And?
LINE으로 여친 만들기
뭐부터 하지?
LINE 초기 버전 어플리케이션
LINE application in 2008(?)
뭐부터 하지?
뭐부터 하지?
LINE 초기버전 어플리케이션
성공!
뭐부터 하지?
LINE 초기버전 어플리케이션
찾음ㅋ
뭐부터 하지?
LINE 초기버전 어플리케이션
Code & packet reversing
소스코드를 읽고 패킷을 분석해봅시다
뭐부터 하지?
LINE auth에 이용된다고 추측되는 URL : gm.line.naver.jp/S3
뭐부터 하지?
소스코드를 읽고 패킷을 분석
.Net Reflector
뭐부터 하지?
소스코드를 읽고 패킷을 분석
Wireshark
#!/usr/bin/python
# -*- coding: utf-8 -*-
__author__ = 'carpedm20'
import urllib2
def send():
url = 'http://gm.line.naver.jp/S3'
headers = { 'POST' : '/S3',
'X-Line-Application' : 'WINPHONE.1.7.0.71.WindowsPhone.7.10.7720',
'Referer' : 'file:///Applications/Install/???/Install/',
'Accept-Encoding' : 'identity',
'Content-Type' : 'application/x-thrift',
'Accept' : 'application/x-thrift',
'X-Line-Access' : '???',
'Connection' : 'Keep-Alive',
'User-Agent' : 'WindowsPhone 1.7.0.71',
'HOST' : 'gm.line.naver.jp',
'Cache-Control' : 'no-cache'}
data='x80x01x00x01 ...생략... x0ex00x00x00'
request = urllib2.Request(url, data, headers)
response = urllib2.urlopen(request)
print "[*] Result "
data = response.read()
print data
#data = json.loads(data ,encoding='utf-8')
send()
뭐부터 하지?
소스코드를 읽고 패킷을 분석
성공!
뭐부터 하지?
소스코드를 읽고 패킷을 분석
사실 평문으로 보이므로 어렵지 아니합니다
패킷을 좀더 자세히 분석해봅시다
뭐부터 하지?
소스코드를 읽고 패킷을 분석
1. 커맨드로 보이는 sendMessage가 적나라하게 보임
2. 평문( 1234567… )이 ( 카카오톡과는 다르게 ) 확연히 눈에 보임
세션키로 보이며 Base64 로 인코딩 되어 있음 (iat 와 바이트 코드로 구성)
카카오 톡처럼 bson 형태라 생각했으나 아니었음
뭐부터 하지?
소스코드를 읽고 패킷을 분석
보내지는 파라미터 확인
뭐부터 하지?
소스코드를 읽고 패킷을 분석
아까 봤던 커맨드 확인
뭐부터 하지?
소스코드를 읽고 패킷을 분석
보내지는 파라미터 확인
data = 'x80x01x00x01'
data += 'x00x00x00x0b' # length of function
data += 'sendMessage‘
## Message information for static message ##
data += 'x00x00x00x00'
data += 'x08x00x01x00'
data += 'x00x00x00x0c'
data += 'x00x02x0bx00'
# x01x00x00x00 : from
# x02x00x00x00 : to
data += 'x02x00x00x00' # to
data += '????' # chat id to send message
data += 'x0bx00x0a' # ChatId footer
message = raw_input(">> ")
## Length of message ##
data += struct.pack('>I',len(message))
data += message
## Message footer ##
data += 'x02x00x0ex00x00x00'
뭐부터 하지?
소스코드를 읽고 패킷을 분석
+ =
#!/usr/bin/python#
-*- coding: utf-8 -*-
__author__ = 'carpedm20’
import urllib2
import struct
url = 'http://gm.line.naver.jp/S3‘
headers = { 'POST' : '/S3',
'X-Line-Application' : 'WINPHONE.1.7.0.71.WindowsPhone.7.10.7720',
'Referer' : 'file:///Applications/Install/A18DAAA9-9A1C-4064-91DD-794644CD88E7/Install/',
'Accept-Encoding' : 'identity',
'Content-Type' : 'application/x-thrift',
'Accept' : 'application/x-thrift',
'X-Line-Access' : '????';
'Connection' : 'Keep-Alive',
'User-Agent' : 'WindowsPhone 1.7.0.71',
'HOST' : 'gm.line.naver.jp',
'Cache-Control' : 'no-cache'}
def send():
data = 'x80x01x00x01x00x00x00x0b‘
data += 'sendMessage‘
data += 'x00x00x00x00x08x00x01x00x00x00x00x0cx00x02x0bx00x02x00x00x00‘
data += '????' # chat id to send message
data += 'x0bx00x0a‘
message = raw_input(">> ")
data += struct.pack('>I',len(message))
data += message
data += 'x02x00x0ex00x00x00‘
request = urllib2.Request(url, data, headers)
response = urllib2.urlopen(request)
print "[*] Result “
data = response.read()
for d in data:
print "%#x" % ord(d)
def read():
data = 'x80x01x00x01' # TBinaryProtocol.VERSION_1 | type
data += 'x00x00x00x0f‘
data += 'fetchOperations‘
data += 'x00x00x00x00x0a‘
data += 'x00x02x00x00x00x00x00x00x00xf9x08x00x03x00x00x00x14x00‘
request = urllib2.Request(url, data, headers)
response = urllib2.urlopen(request)
print "[*] Result “
data = response.read()
for d in data:
print "%#x" % ord(d),
print
print data
while 1:
send()
뭐부터 하지?
소스코드를 읽고 패킷을 분석
카카오 톡과는 다르게 스티커를 마음대로 쓸 수 없었다... 주륵
Demo
역시 세미나의 지루함은 데모로 날려버려야 제맛!
이제 남은건?
po코딩wer
끝
End!

Mais conteúdo relacionado

Mais procurados

Scaling Django with gevent
Scaling Django with geventScaling Django with gevent
Scaling Django with gevent
Mahendra M
 

Mais procurados (20)

고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
 
상상을 현실로 만드는, 이미지 생성 모델을 위한 엔지니어링
상상을 현실로 만드는, 이미지 생성 모델을 위한 엔지니어링상상을 현실로 만드는, 이미지 생성 모델을 위한 엔지니어링
상상을 현실로 만드는, 이미지 생성 모델을 위한 엔지니어링
 
Momenti Seminar - 5 Years of RosettaStone
Momenti Seminar - 5 Years of RosettaStoneMomenti Seminar - 5 Years of RosettaStone
Momenti Seminar - 5 Years of RosettaStone
 
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
 
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
 
Scaling Django with gevent
Scaling Django with geventScaling Django with gevent
Scaling Django with gevent
 
개발자를 위한 (블로그) 글쓰기 intro
개발자를 위한 (블로그) 글쓰기 intro개발자를 위한 (블로그) 글쓰기 intro
개발자를 위한 (블로그) 글쓰기 intro
 
golang과 websocket을 활용한 서버프로그래밍 - 장애없는 서버 런칭 도전기
golang과 websocket을 활용한 서버프로그래밍 - 장애없는 서버 런칭 도전기golang과 websocket을 활용한 서버프로그래밍 - 장애없는 서버 런칭 도전기
golang과 websocket을 활용한 서버프로그래밍 - 장애없는 서버 런칭 도전기
 
PHPの今とこれから2021
PHPの今とこれから2021PHPの今とこれから2021
PHPの今とこれから2021
 
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
 
Why Task Queues - ComoRichWeb
Why Task Queues - ComoRichWebWhy Task Queues - ComoRichWeb
Why Task Queues - ComoRichWeb
 
신입 SW 개발자 취업 준비
신입 SW 개발자 취업 준비신입 SW 개발자 취업 준비
신입 SW 개발자 취업 준비
 
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
 
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
 
새해 일어난 일
새해 일어난 일새해 일어난 일
새해 일어난 일
 
신입 개발자 생활백서 [개정판]
신입 개발자 생활백서 [개정판]신입 개발자 생활백서 [개정판]
신입 개발자 생활백서 [개정판]
 
HTML5と WebSocket / WebRTC / Web Audio API / WebGL 技術解説
HTML5と WebSocket / WebRTC / Web Audio API / WebGL 技術解説HTML5と WebSocket / WebRTC / Web Audio API / WebGL 技術解説
HTML5と WebSocket / WebRTC / Web Audio API / WebGL 技術解説
 
フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう
フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃうフレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう
フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう
 
C++11やemscriptenと付き合って1年間の振り返り
C++11やemscriptenと付き合って1年間の振り返りC++11やemscriptenと付き合って1年間の振り返り
C++11やemscriptenと付き合って1年間の振り返り
 

Mais de Taehoon Kim

강화 학습 기초 Reinforcement Learning an introduction
강화 학습 기초 Reinforcement Learning an introduction강화 학습 기초 Reinforcement Learning an introduction
강화 학습 기초 Reinforcement Learning an introduction
Taehoon Kim
 

Mais de Taehoon Kim (12)

LLM에서 배우는 이미지 생성 모델 ZERO부터 학습하기 Training Large-Scale Diffusion Model from Scr...
LLM에서 배우는 이미지 생성 모델 ZERO부터 학습하기 Training Large-Scale Diffusion Model from Scr...LLM에서 배우는 이미지 생성 모델 ZERO부터 학습하기 Training Large-Scale Diffusion Model from Scr...
LLM에서 배우는 이미지 생성 모델 ZERO부터 학습하기 Training Large-Scale Diffusion Model from Scr...
 
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017
 
알아두면 쓸데있는 신기한 강화학습 NAVER 2017
알아두면 쓸데있는 신기한 강화학습 NAVER 2017알아두면 쓸데있는 신기한 강화학습 NAVER 2017
알아두면 쓸데있는 신기한 강화학습 NAVER 2017
 
Differentiable Neural Computer
Differentiable Neural ComputerDifferentiable Neural Computer
Differentiable Neural Computer
 
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
 
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
 
강화 학습 기초 Reinforcement Learning an introduction
강화 학습 기초 Reinforcement Learning an introduction강화 학습 기초 Reinforcement Learning an introduction
강화 학습 기초 Reinforcement Learning an introduction
 
Continuous control with deep reinforcement learning (DDPG)
Continuous control with deep reinforcement learning (DDPG)Continuous control with deep reinforcement learning (DDPG)
Continuous control with deep reinforcement learning (DDPG)
 
Dueling network architectures for deep reinforcement learning
Dueling network architectures for deep reinforcement learningDueling network architectures for deep reinforcement learning
Dueling network architectures for deep reinforcement learning
 
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
 
Deep Reasoning
Deep ReasoningDeep Reasoning
Deep Reasoning
 
영화 서비스에 대한 생각
영화 서비스에 대한 생각영화 서비스에 대한 생각
영화 서비스에 대한 생각
 

Último

Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
Wonjun Hwang
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
Wonjun Hwang
 

Último (6)

MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 

카카오톡으로 여친 만들기 2013.06.29