[vlc-commits] youtube.lua: handle inlined function in descrambling javascript

Pierre Ynard git at videolan.org
Sun Sep 22 04:38:39 CEST 2013


vlc/vlc-2.1 | branch: master | Pierre Ynard <linkfanel at yahoo.fr> | Sun Sep 22 04:29:47 2013 +0200| [81a0a27cdb25608db3c8e3c4aa16af2832fdc132] | committer: Pierre Ynard

youtube.lua: handle inlined function in descrambling javascript

(cherry picked from commit 7b4e90a54dd2d66ca0a979a2fbb028f7313a0faa)
Signed-off-by: Pierre Ynard <linkfanel at yahoo.fr>

> http://git.videolan.org/gitweb.cgi/vlc/vlc-2.1.git/?a=commit;h=81a0a27cdb25608db3c8e3c4aa16af2832fdc132
---

 share/lua/playlist/youtube.lua |    6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/share/lua/playlist/youtube.lua b/share/lua/playlist/youtube.lua
index 5778adb..30da2f8 100644
--- a/share/lua/playlist/youtube.lua
+++ b/share/lua/playlist/youtube.lua
@@ -128,6 +128,12 @@ function js_descramble( sig, js_url )
         -- characters:
         -- function jj(a,b){var c=a[0];a[0]=a[b%a.length];a[b]=c;return a}
         local idx = string.match( rule, "=..%([^,]+,(%d+)%)" )
+        -- This swapping function may also appear inlined:
+        -- var b=a[0];a[0]=a[59%a.length];a[59]=b;
+        -- In that case we only catch one of the three rules.
+        if not idx then
+            idx = string.match( rule, ".%[(%d+)%]=." )
+        end
         if idx then
             idx = tonumber( idx )
             if not idx then idx = 0 end



More information about the vlc-commits mailing list