Reverse Engineering EyeTV (DONE)

Basic info

Network Traffic Analysis

Some kind of hand shaking ?

There is lots of these kinds of handshakes before streaming

GET /live/seed/0 HTTP/1.1
Host: 10.0.1.6:2170
User-Agent: EyeTV/1.2.3 CFNetwork/485.13.9 Darwin/11.0.0
X-Eyeconnect-Client: iPhoneApp1
X-Device-Name: Turska%20iPad
X-App-Uuid: 4afe2d893de24c22ffbbcaccc69d6a57
Accept: */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: keep-alive

HTTP/1.1 200 OK
Content-Type: application/json
Pragma: no-cache
Cache-Control: no-cache
Content-Encoding: gzip
Content-Length: 111

...........VP
.L.tLNN-.,..S.R()*M.QPP*JM./J..K/.NMM.J..((..$V.d.. ....3...Rs`..@bi.e.E.%.(....0}....
...../~...

Tuning command ?

GET /live/tuneto/6/1000/0/1/6/AAAAAOgAAALwBQkQGAAAAQAAAAA=/_IPAD_PLAYER HTTP/1.1
Host: 10.0.1.6:2170
User-Agent: EyeTV/1.2.3 CFNetwork/485.13.9 Darwin/11.0.0
X-Eyeconnect-Token: c1e0d9b6768abfcb9ce98b3a0b54d752
X-Eyeconnect-Client: iPhoneApp1
X-Device-Name: Turska%20iPad
X-App-Uuid: 4afe2d893de24c22ffbbcaccc69d6a57
Accept: */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: keep-alive

HTTP/1.1 200 OK
Content-Type: application/json
Pragma: no-cache
Cache-Control: no-cache
Content-Encoding: gzip
Content-Length: 86

...........VP*.MNN-.V.R()*M.QP.5...
.Q.Rr...t .S.........Em.M..].M.s.3..@Z..j.>u.hN...

Stream start

EGET /live/stream/AAAAAOgAAALwBQkQGAAAAQAAAAA=/4/AE74_main.m3u8 HTTP/1.1
Host: 10.0.1.6:2170
Range: bytes=0-72
Accept: */*
Accept-Encoding: identity
Connection: keep-alive
User-Agent: AppleCoreMedia/1.0.0.8L1 (iPad; U; CPU OS 4_3_5 like Mac OS X; en_us)

HTTP/1.1 206 Partial Content
Content-Type: application/vnd.apple.mpegurl
Pragma: no-cache
Cache-Control: no-cache
Content-Range: bytes 0-72/73
Content-Length: 73

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1264000
AE74_sub_1.m3u8

Actual playing

GET /live/stream/AAAAAOgAAALwBQkQGAAAAQAAAAA=/4/AE74_sub_1.m3u8 HTTP/1.1
Host: 10.0.1.6:2170
Accept: */*
Accept-Encoding: gzip
Connection: keep-alive
User-Agent: AppleCoreMedia/1.0.0.8L1 (iPad; U; CPU OS 4_3_5 like Mac OS X; en_us)
X-Playback-Session-Id: 778F19D4-E737-47DC-BF09-5A077C3B504B

HTTP/1.1 200 OK
Content-Type: application/vnd.apple.mpegurl
Pragma: no-cache
Cache-Control: no-cache
Content-Length: 137

#EXTM3U
#EXT-X-TARGETDURATION:1
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:1,
AE74_sub_1_1.ts
#EXTINF:1,
AE74_sub_1_2.ts
#EXTINF:1,
AE74_sub_1_3.ts
GET /live/stream/AAAAAOgAAALwBQkQGAAAAQAAAAA=/4/AE74_sub_1_1.ts HTTP/1.1
Host: 10.0.1.6:2170
Accept: */*
Accept-Encoding: identity
Connection: keep-alive
User-Agent: AppleCoreMedia/1.0.0.8L1 (iPad; U; CPU OS 4_3_5 like Mac OS X; en_us)
X-Playback-Session-Id: 778F19D4-E737-47DC-BF09-5A077C3B504B

HTTP/1.1 200 OK
Content-Type: video/mp2t
Pragma: no-cache
Cache-Control: no-cache
Content-Length: 9776

You can open link (seen before) http://10.0.1.6/live/stream/AAAAAOgAAALwBQkQGAAAAQAAAAA=/4/AE74_sub_1.m3u8 with ?QuickTimePlayer (in OS X at least). Start ?QuickTime Player -> press cmd + L (Open Location...) -> Give that url to quick time. Url to stream changes everytime (of course).

description
Notes about reversing EyeTV
started
2011-09-26


hacker

turmio


CategoryProjekti