YoutubeIE: add algo for length 90 (closes #1064)
Order the cases from higher to lower length.
This commit is contained in:
		
							parent
							
								
									2aea08eda1
								
							
						
					
					
						commit
						444b116597
					
				
					 3 changed files with 18 additions and 8 deletions
				
			
		| 
						 | 
					@ -8,6 +8,9 @@ tests = [
 | 
				
			||||||
    # 92 - vflQw-fB4 2013/07/17
 | 
					    # 92 - vflQw-fB4 2013/07/17
 | 
				
			||||||
    ("qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={[]}|:;?/>.<'`~\"",
 | 
					    ("qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={[]}|:;?/>.<'`~\"",
 | 
				
			||||||
     "mrtyuioplkjhgfdsazxcvbnq1234567890QWERTY}IOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={[]\"|:;"),
 | 
					     "mrtyuioplkjhgfdsazxcvbnq1234567890QWERTY}IOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={[]\"|:;"),
 | 
				
			||||||
 | 
					    # 90
 | 
				
			||||||
 | 
					    ("qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={[]}|:;?/>.<'`",
 | 
				
			||||||
 | 
					     "mrtyuioplkjhgfdsazxcvbne1234567890QWER[YUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={`]}|"),
 | 
				
			||||||
    # 88
 | 
					    # 88
 | 
				
			||||||
    ("qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={[]}|:;?/>.<",
 | 
					    ("qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={[]}|:;?/>.<",
 | 
				
			||||||
     "J:|}][{=+-_)(*&;%$#@>MNBVCXZASDFGH^KLPOIUYTREWQ0987654321mnbvcxzasdfghrklpoiuytej"),
 | 
					     "J:|}][{=+-_)(*&;%$#@>MNBVCXZASDFGH^KLPOIUYTREWQ0987654321mnbvcxzasdfghrklpoiuytej"),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,6 +18,16 @@ class TestYoutubeSig(unittest.TestCase):
 | 
				
			||||||
        right = '931EA22157E1871643FA9519676DED253A342B0C.4E95A5DBD2F1F511DCC1209DF56CB77693CE0EAE'
 | 
					        right = '931EA22157E1871643FA9519676DED253A342B0C.4E95A5DBD2F1F511DCC1209DF56CB77693CE0EAE'
 | 
				
			||||||
        self.assertEqual(sig(wrong), right)
 | 
					        self.assertEqual(sig(wrong), right)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_92(self):
 | 
				
			||||||
 | 
					        wrong = "F9F9B6E6FD47029957AB911A964CC20D95A181A5D37A2DBEFD67D403DB0E8BE4F4910053E4E8A79.0B70B.0B80B8"
 | 
				
			||||||
 | 
					        right = "69B6E6FD47029957AB911A9F4CC20D95A181A5D3.A2DBEFD67D403DB0E8BE4F4910053E4E8A7980B7"
 | 
				
			||||||
 | 
					        self.assertEqual(sig(wrong), right)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_90(self):
 | 
				
			||||||
 | 
					        wrong = "qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={[]}|:;?/>.<'`"
 | 
				
			||||||
 | 
					        right = "mrtyuioplkjhgfdsazxcvbne1234567890QWER[YUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={`]}|"
 | 
				
			||||||
 | 
					        self.assertEqual(sig(wrong), right)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_88(self):
 | 
					    def test_88(self):
 | 
				
			||||||
        wrong = "qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={[]}|:;?/>.<"
 | 
					        wrong = "qwertyuioplkjhgfdsazxcvbnm1234567890QWERTYUIOPLKJHGFDSAZXCVBNM!@#$%^&*()_-+={[]}|:;?/>.<"
 | 
				
			||||||
        right = "J:|}][{=+-_)(*&;%$#@>MNBVCXZASDFGH^KLPOIUYTREWQ0987654321mnbvcxzasdfghrklpoiuytej"
 | 
					        right = "J:|}][{=+-_)(*&;%$#@>MNBVCXZASDFGH^KLPOIUYTREWQ0987654321mnbvcxzasdfghrklpoiuytej"
 | 
				
			||||||
| 
						 | 
					@ -58,10 +68,5 @@ class TestYoutubeSig(unittest.TestCase):
 | 
				
			||||||
        right = "urty8ioplkjhgfdsazxcvbqm1234567e90QWERTYUIOPLKHGFDSnZXCVBNM!@#$%^&*(-+={[};?/>."
 | 
					        right = "urty8ioplkjhgfdsazxcvbqm1234567e90QWERTYUIOPLKHGFDSnZXCVBNM!@#$%^&*(-+={[};?/>."
 | 
				
			||||||
        self.assertEqual(sig(wrong), right)
 | 
					        self.assertEqual(sig(wrong), right)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_92(self):
 | 
					 | 
				
			||||||
        wrong = "F9F9B6E6FD47029957AB911A964CC20D95A181A5D37A2DBEFD67D403DB0E8BE4F4910053E4E8A79.0B70B.0B80B8"
 | 
					 | 
				
			||||||
        right = "69B6E6FD47029957AB911A9F4CC20D95A181A5D3.A2DBEFD67D403DB0E8BE4F4910053E4E8A7980B7"
 | 
					 | 
				
			||||||
        self.assertEqual(sig(wrong), right)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if __name__ == '__main__':
 | 
					if __name__ == '__main__':
 | 
				
			||||||
    unittest.main()
 | 
					    unittest.main()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -179,7 +179,11 @@ class YoutubeIE(InfoExtractor):
 | 
				
			||||||
    def _decrypt_signature(self, s):
 | 
					    def _decrypt_signature(self, s):
 | 
				
			||||||
        """Turn the encrypted s field into a working signature"""
 | 
					        """Turn the encrypted s field into a working signature"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if len(s) == 88:
 | 
					        if len(s) == 92:
 | 
				
			||||||
 | 
					            return s[25] + s[3:25] + s[0] + s[26:42] + s[79] + s[43:79] + s[91] + s[80:83]
 | 
				
			||||||
 | 
					        elif len(s) == 90:
 | 
				
			||||||
 | 
					            return s[25] + s[3:25] + s[2] + s[26:40] + s[77] + s[41:77] + s[89] + s[78:81]
 | 
				
			||||||
 | 
					        elif len(s) == 88:
 | 
				
			||||||
            return s[48] + s[81:67:-1] + s[82] + s[66:62:-1] + s[85] + s[61:48:-1] + s[67] + s[47:12:-1] + s[3] + s[11:3:-1] + s[2] + s[12]
 | 
					            return s[48] + s[81:67:-1] + s[82] + s[66:62:-1] + s[85] + s[61:48:-1] + s[67] + s[47:12:-1] + s[3] + s[11:3:-1] + s[2] + s[12]
 | 
				
			||||||
        elif len(s) == 87:
 | 
					        elif len(s) == 87:
 | 
				
			||||||
            return s[62] + s[82:62:-1] + s[83] + s[61:52:-1] + s[0] + s[51:2:-1]
 | 
					            return s[62] + s[82:62:-1] + s[83] + s[61:52:-1] + s[0] + s[51:2:-1]
 | 
				
			||||||
| 
						 | 
					@ -195,8 +199,6 @@ class YoutubeIE(InfoExtractor):
 | 
				
			||||||
            return s[36] + s[79:67:-1] + s[81] + s[66:40:-1] + s[33] + s[39:36:-1] + s[40] + s[35] + s[0] + s[67] + s[32:0:-1] + s[34]
 | 
					            return s[36] + s[79:67:-1] + s[81] + s[66:40:-1] + s[33] + s[39:36:-1] + s[40] + s[35] + s[0] + s[67] + s[32:0:-1] + s[34]
 | 
				
			||||||
        elif len(s) == 81:
 | 
					        elif len(s) == 81:
 | 
				
			||||||
            return s[6] + s[3:6] + s[33] + s[7:24] + s[0] + s[25:33] + s[2] + s[34:53] + s[24] + s[54:81]
 | 
					            return s[6] + s[3:6] + s[33] + s[7:24] + s[0] + s[25:33] + s[2] + s[34:53] + s[24] + s[54:81]
 | 
				
			||||||
        elif len(s) == 92:
 | 
					 | 
				
			||||||
            return s[25] + s[3:25] + s[0] + s[26:42] + s[79] + s[43:79] + s[91] + s[80:83];
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            raise ExtractorError(u'Unable to decrypt signature, key length %d not supported; retrying might work' % (len(s)))
 | 
					            raise ExtractorError(u'Unable to decrypt signature, key length %d not supported; retrying might work' % (len(s)))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue