# OperaTV Store Backdoor



## jgametest

When Tivo announced we were getting Opera TV Store, there was an SDK floating around that would allow you to test internal code if you knew were to find the DEVICE ID. Guess what? Now we do!

http://dev.opera.com/tv/testing-your-app-inside-opera-tv-store/

Today I found a new app above the opera tv store that says "My Opera TV Store Apps" I opened it and sure enough those apps I bookmarked preloaded so what. But what I found caught my attention when you click Menu, About you are given the DEVICE ID

This is a very long lengthy ID that is bound to the TiVo for app testing.
For opera this is controlled by Dragonfly part of the Opera Browser.

Happy Hunting!


----------



## jgametest

Now I will admit this was a challenge, I did not want to write out all those numbers on my screen so I took my phone and captured my device ID.



















As soon as the pair was done Tivo had a message a request to PAIR from user jhilla2014 is requesting Permission Yes or NO. Naturally I said HELL YEA! or yes and then a blue square appeared at the bottom of my screen representing an app that does not exist yet. By the way to make the pair happen, there is a little box for developers to click on the bottom right of your Tivo screen that presents a smaller number. After you registered on the page you enter this little magic number and then magically the long lengthy number appears in your browser to PAIR together.


----------



## ntlord

Unless I'm misunderstanding you, this functionality has been around for a pretty long time. I've been able to pair the tivo to an opera dev account from the get go.


----------



## moyekj

Yes, there's nothing new here.


----------



## jgametest

Yes that part is true, but there was something new added. Go in store, and look to the top left there is a new bar that says "Develop" this is found by moving the cursor to the left which you will find there is a browser called URL Loader that can launch internally now that was not there before I paired the connection. I was able to connect to plex.tv and bing.com but because the handler is not being allowed full access to the streams I get a default error message that the server is not available. I will upload images later kids have my Lumia 520.


----------



## moyekj

Yes I can't say I saw the URL Loader before so that's new. It seems to take any arbitrary URL as well. I was hoping that after pairing that I would be allowed to use MindRPC uiNavigate directly to enter a URL which used to work, but no dice. So we are stuck with primitive way of entering URL through this app. It kind of works with Roamio remote keyboard at least, though everything is uppercase. Also for arbitrary web pages basic navigation works and even pages with videos play which is better than before.

NOTE: Instant replay button acts like browser "back" button which is useful.
Also new is that my simple javascript key code tester now responds to most buttons on the remote (before some buttons didn't work):


Code:


<!DOCTYPE HTML>
<HTML>
 <HEAD>
  <TITLE>Keypress detector</TITLE>
 </HEAD>
 <BODY style="background-color: #000000;">
  <HEADER><p style="color: #FFFF00">Press a key to show keycode</p></HEADER>   
  <SECTION style="border-style: solid; border-width: 2px; width: 100px; color: #FFFF00">
   <CANVAS id="textarea" tabindex="1" width="10" height="10"></CANVAS>
   <label id="label1">LAB1</label>
  </SECTION>
  <SCRIPT type="text/javascript">
      var label = document.getElementById("label1");
      var count = 1;
      document.onkeydown=doKeyDown;
      function doKeyDown(evt) {
         evt = evt || window.event;
         label.innerHTML = "" + count + " " + evt.which;
         count++;
      };
   </SCRIPT>   
 </BODY>
</HTML>

For video support, it doesn't seem much better than before - I couldn't get H.264 + AC3 audio in mp4 container to work, and webm and ogg videos didn't play.
EDIT: I did get H.264 video in TS container to play though aspect ratio was all wrong and AC3 audio in it wasn't audible, but I don't believe TS container was working previously so that's interesting...


----------



## jgametest

Since the Plex stream failed, attempting another 3rd party test from AirPlayIT it allows a personal local connection that works in conjunction with the mobile app. Will post results in few moments. Nope that didn't work either. So I'm coming to the conclusion this is mainly for testing out personal apps before submitting to the store to see if your feature will work in the mainstream of services. It handles basic loading of websites like bing pretty decently did image searching without a problem. Video playback, no so much luck. The one thing that seems to be missing yet tells us it's there in our information is the lack of FlashPlayer. Yet when you look up your TiVo settings it says a Flash Player is installed. So I'm guessing that player has been put to rest or disabled from our use.


----------



## telemark

moyekj said:


> For video support, it doesn't seem much better than before - I couldn't get H.264 + AC3 audio in mp4 container to work


I pulled a random stream from the Opera Store:


Code:


GET /30/items/MIT6.851S12/MIT6_851S12_lec01_300k.mp4 HTTP/1.1
Host: ia601000.us.archive.org
Accept: */*

HTTP/1.1 200 OK
Server: nginx/1.1.19
Date: Sun, 03 Aug 2014 15:12:51 GMT
Content-Type: video/mp4
Content-Length: 304171974
Last-Modified: Thu, 31 Oct 2013 16:59:15 GMT
Connection: keep-alive
Expires: Sun, 03 Aug 2014 21:12:51 GMT
Cache-Control: max-age=21600
Accept-Ranges: bytes

VLC reports it as H.264 & AAC.

Other apps used:
GET ...m3u8
Content-Type: application/vnd.apple.mpegurl

GET ...ts
Content-Type: video/mp2t

GET ...mp3 
Content-Type: audio/mpeg


----------



## moyekj

Yes, the TiVo Opera browser has always played mp4 container with H.264 + AAC audio with no problems, but that's not a very interesting format. AC3 audio and TS container would be much more useful (because you can transcode to that on the fly) but it seems like the TiVo Opera browser doesn't support AC3 audio at all. I haven't tried yet but I would guess TS container with H.264 video + AAC audio may work.


----------



## telemark

moyekj said:


> I would guess TS container with H.264 video + AAC audio may work.


I did see a .ts in that combination so ya, should work.

Dev.Opera also lists H264 + MPEG audio layer 3 within .mp4 as supported.


----------



## ntlord

Which app uses "m3u8"? That is HLS...


----------



## telemark

Looks like it's DailyMotion backed apps...
"Indie Game HQ"
"YALLWIRE"

The UI's look about the same.



Code:


GET /cdn/manifest/video/x162w1u.m3u8?auth=...&default=720 HTTP/1.1
http://proxy-37.dailymotion.com/sec(975fa2e34cd4e1d56fda4c95de44e4db)/video/227/876/70678722_mp4_h264_aac_hd_2.m3u8
http://proxy-14.dailymotion.com/sec(975fa2e34cd4e1d56fda4c95de44e4db)/video/227/876/70678722_mp4_h264_aac_hd_2.m3u8
http://proxy-37.dailymotion.com/sec(4e8242fccc7629857dae0b096ab367ec)/video/227/876/70678722_mp4_h264_aac_ld_2.m3u8
http://proxy-14.dailymotion.com/sec(4e8242fccc7629857dae0b096ab367ec)/video/227/876/70678722_mp4_h264_aac_ld_2.m3u8
http://proxy-37.dailymotion.com/sec(a2dfb60ccab7108de0f8450c3fbc01b3)/video/227/876/70678722_mp4_h264_aac_2.m3u8
http://proxy-14.dailymotion.com/sec(a2dfb60ccab7108de0f8450c3fbc01b3)/video/227/876/70678722_mp4_h264_aac_2.m3u8
http://proxy-37.dailymotion.com/sec(ac32c5da119c73da0f6d3693e3a119f4)/video/227/876/70678722_mp4_h264_aac_hq_2.m3u8
http://proxy-14.dailymotion.com/sec(ac32c5da119c73da0f6d3693e3a119f4)/video/227/876/70678722_mp4_h264_aac_hq_2.m3u8


----------



## telemark

Daily Motion Apps are created by Opera TV Snap:
http://www.operasoftware.com/press/releases/devices/2013-07-11
http://www.operasoftware.com/products/tv-snap

There's going to be a lot of these little apps, it's like a templated app generator.

Does the HLS test page function correctly?
http://www.jwplayer.com/html5/hls/


----------



## ntlord

Check out the Plex thread. I got HLS working. It just needs to be .ts with h264 for video and aac for audio.


----------

