IPTV streams from Orion TV

Orion TV is Serbian iptv app created by Orion Telekom.
It’s been few months since they started the promo period for their mobile iptv app, allowing you to watch all channels for free.

This post will go through api calls needed to get the iptv streams. The app doesn’t use certificate pinning, making it very easy to sniff and replay the traffic.

1. Registering your device
This is the first request made after installation.

1
2
3
4
5
6
7
8
POST /rest/client/users/ticket/oriontv HTTP/1.1
Content-Type: application/x-www-form-urlencoded
maranelo-app-data: 65
Host: mw.maketv.rs
Connection: close
User-Agent: okhttp/3.6.0
password=oriontv&deviceUid=oriontv.b209f6bc-9dc4-93c1-106e-5333f7ab977c&deviceModelId=13&deviceName=HTC%20One%20S

There are 3 parameters in the request, password which is oriontv for all requests, deviceUid - the string “oriontv.” followed by device UUID, deviceModelId - some kind of id, I’m not sure how it’s generated and deviceName - optional parameter, representing the name of the phone.
There is another required header maranelo-app-data. I’m not sure what it represents, but without it, the urls for the streams are not returned.

The response for this call is json file listing the details of the associated user profile. Bellow is sample response from my phone.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
{
"success": true,
"result": {
"ticket": "95623:qmqk6z8nmkfghgbil7mtbcnsa3",
"authServer": "MARANELO",
"userId": 95623,
"deviceId": 9856536,
"config": {
"id": 95623,
"operatorId": 1,
"zoneId": 45,
"subscriberId": 96,
"master": true,
"email": "oriontv",
"name": "Demo User",
"localeId": 1,
"gender": "MALE",
"birthDate": 1438380000000,
"firstLogin": false,
"parentalEnabled": true,
"parentalPolicy": 1,
"parentalExpiration": null,
"parentalLocked": false,
"uiSize": "UNKNOWN",
"settingsProtected": true,
"services": [
{
"id": 1,
"uid": "livetv"
},
{
"id": 4,
"uid": "createdevice"
},
{
"id": 5,
"uid": "cast"
}
],
"zoneFixed": false
}
}
}

2. Getting the channel details
To get the channel info, you need to make request
to /rest/client/users/:userId/zone-channels as demonstrated bellow.

1
2
3
4
5
6
GET /rest/client/users/95623/zone-channels HTTP/1.1
ticket: 95623:qmqk6z8nmkfghgbil7mtbcnsa3
maranelo-app-data: 65
Host: mw.maketv.rs
Connection: close
User-Agent: okhttp/3.6.0

The ticket from the previous response is sent again as header and the userId(95623) is part of the url.
Sample response with 1 tv channel.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
{
"success":true,
"result":[
{
"id":2970,
"zoneId":29,
"type":"V",
"definition":"SD",
"hidden":false,
"adult":false,
"catchupEnabled":true,
"castEnabled":false,
"position":1,
"categories":null,
"header":{
"id":1,
"cid":"rts1",
"type":"CHANNEL",
"genres":null,
"properties":null,
"title":"RTS 1",
"description":null
},
"catchupProperties":{
"ready":"ON_START",
"validFrom":0,
"validTo":259200
},
"pip":false,
"pipUrl":null,
"logoUrl":"https://mw.maketv.rs/resource/client/logos/rts1.png",
"catchupProviderId":4,
"subscribed":true,
"url":"http://ott2.orion.rs:1935/livelowedge2/rts1.stream/playlist.m3u8?v=1&k=0&token=6210fgfdgfdgfdhgfhdghsdkf hsdjh fsdjhb367e&ak=3108160&time=1508712956074",
"profile":12,
"configuration":null,
"representation":{
"id":7987,
"contentProviderId":3,
"url":"http://ott2.orion.rs:1935/livelowedge2/rts1.stream/playlist.m3u8?v=1&k=0&token=6210egfdgffgddg9c646e060dfb989646sb5550162dgfd67e&ak=3108160&time=1508712956074",
"profileId":12,
"validFrom":null,
"validTo":null,
"contentType":"application/x-mpegurl",
"source":"SUBSCRIPTION",
"definition":"SD",
"vast":null
},
"subscription":{
"start":null,
"end":null
}
}
]
}

3. Enjoy the new channels

Last step is to copy the value of url field into vlc or some other play and enjoy the content.

VH1

The quality is not spectacular, only 720x576, but it’s free so.. I’ll take whatever I can.

VH1Q

The complete details about the app can be found at the official website oriontv.rs.