Python實現迅雷看看xv格式轉換為flv格式

2022-03-09 19:13:49 字數 1716 閱讀 7015

由於flv格式資料最開始的3個二位十六進製制資料為:46 4c 56,對應的ascii碼分別為flv,設第乙個二位十六進製制資料0x46為newmagicnum。xv格式從0x200000開始的資料不一定,但都是按照一定的金鑰加密的,就是flv從0到0x400的所有資料分別加上金鑰的值,設第乙個二位十六進製制資料為oldmagicnum。則金鑰magicnum就是newmagicnum減去oldmagicnum。

例子:flv格式資料為:46 4c 56

xv格式資料為:62 68 72

由於0x46比0x62小,所以金鑰為:0x46+0x100-0x62

解密的過程為:刪除xv檔案0到0x200000之間的資料。0x200000到0x200400之間的資料分別加上magicnum,如果結果資料大於0xff,則減去0x100。後邊新增上所有未加密資料。

**如下,使用方法為建立乙個python檔案,放在要轉碼的xv格式所在資料夾,程式會遍歷資料夾內的xv格式的資料,然後新建乙個「轉碼後檔案」的資料夾,轉碼後的檔案都在「轉碼後檔案」資料夾內:

1

#-*- coding: utf-8 -*-

2importos3

4 oldfileslist=os.listdir(os.getcwd())

5 os.mkdir('

轉碼後檔案')

67for oldfilename in

oldfileslist:

8 filename=os.path.splitext(oldfilename)

9if filename[1]!='

.xv':10

continue

11 oldfile = open(oldfilename,'rb'

)12 newfilename = '

轉碼後檔案\\

'+filename[0]+'

.flv

'13 newfile = open(newfilename,'wb'

)1415 temp=oldfile.read()

16 tempfile=temp[0x00200000:]

17 tempfile1=tempfile[:0x400]

1819 oldmagic=ord(tempfile1[0])

20 newmagic=0x46

2122

if newmagic23 newmagic += 0x100

24 magicnum=newmagic-oldmagic

2526

for i in range(0,0x400):

27 tempnum=ord(tempfile1[i])+magicnum

28if tempnum>0xff:

29 tempnum -= 256

30 tempfile1=tempfile1[:i]+chr(tempnum)+tempfile1[i+1:]

3132 tempfile=tempfile1+tempfile[0x400:]

33newfile.write(tempfile)

3435

newfile.close()

36oldfile.close()

37print

'%s 已經完成

'% filename[0]

格雷編碼(python實現)

題目描述 格雷編碼是乙個二進位制數字系統,在該系統中,兩個連續的數值僅有乙個位數的差異。給定乙個代表編碼總位數的非負整數 n,列印其格雷編碼序列。格雷編碼序列必須以 0 開頭。示例 1 輸入 2 輸出 0,1,3,2 解釋 00 0 01 1 11 3 10 2 對於給定的 n,其格雷編碼序列並不唯...

格雷編碼python實現

格雷編碼是乙個二進位制數字系統,在該系統中,兩個連續的數值僅有乙個位數的差異。給定乙個代表編碼總位數的非負整數 n,列印其格雷編碼序列。格雷編碼序列必須以 0 開頭。示例 1 from typing import list class solution def graycode self,n int...

python插補法 Python實現拉格朗日插值法

已知sinx的一組x,y對應關係,用拉格朗日插值法估計sin 0.3367 的值.xx0.32 0.34 0.36 y0.314567 0.333487 0.352274 class interpolation def init self,x,y self.x x self.y y def func...