由於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...