手拆TS加密ES(二)

2021-10-01 13:31:00 字數 1524 閱讀 8093

這裡需要簡單描述一下ts檔案的結構, ts包大小固定為

188位元組,

ts層分為三個部分:

ts header

、adaptation field

、payload

。ts header固定4

個位元組;

adaptation field

可能存在也可能不存在,主要作用是給不足

188位元組的資料做填充;

payload

是pes

資料。ts header結構

sync_byte

8bit

同步位元組,固定為

0x47

transport_error_indicator

1bit

傳輸錯誤指示符,表明在

ts頭的

adapt

域後由乙個無用位元組,通常都為

0,這個位元組算在

adapt

域長度內

payload_unit_start_indicator

1bit

負載單元起始標示符,乙個完整的資料報開始時標記為1

transport_priority

1bit

傳輸優先順序,

0為低優先順序,

1為高優先順序,通常取0

pid

13bit

pid值(packet id

號碼,唯一的號碼對應不同的包)

transport_scrambling_control

2bit

傳輸加擾控制,

00表示未加密

adaptation_field_control

2bit

是否包含自適應區,

『00』

保留;『01』

為無自適應域,僅含有效負載;

『10』

為僅含自適應域,無有效負載;

『11』

為同時帶有自適應域和有效負載。

continuity_counter

4bit

遞增計數器,從

0-f,起始值不一定取

0,但必須是連續的

我們就是通過

ts header中的pid

來判斷payload

是否為我們所需的

es資料,通過payload_unit_start_indicator來判斷乙個完整pes包的起始。為什麼要關心pes包的起始呢?因為我們加密es資料是以幀為單位的,而每個pes包都是一幀資料。

提取es資料還涉及到乙個加密的策略問題,要把ts檔案中的所有幀資料都提取出來再加密嗎?這樣做的話,如果原始ts檔案較大,那麼加密時占用的記憶體也會比較大;而且加密的單位是幀,即使全部幀資料都提取出來也要一幀一幀的加密。所以我決定在提取es資料時,每湊齊一幀資料就進行一次加密。

定義類,用於提取、加密es資料,並重新封裝ts

class cpesinfo;

class cremainesinfo;

class ctsprocess;

Logstash跟es加密通訊

前提條件,es集群內部各節點已開啟https訪問,集群也已開啟x pack安全功能,並設定了系統預設的使用者密碼等,具體操作詳見 方法二 使用 kibana dev tools kibana 開發工具 標籤卡中的 api 建立 post security role logstash write ro...

手遊 率土之濱 美術資源加密分析

有個讓我幫忙分析一下這個遊戲的資源加密方式,分析後.發現只是簡單的異或加密 0x00 資源中大部分png加密了 game目錄下的lua檔案加密了 音效檔案沒加密只是打包了成了.fsb fev 用fsbextractor解壓就好了 0x01 在ida中反彙編 lib armeabi libcocos2...

手遊 童話大冒險 美術資源加密分析

這是一款q萌橫版街機冒險闖關手遊,使用的引擎是cocos2dx lua 0x00 先用winhex看看遊戲資源 所有的資源檔案都被加密了,而且是同一種加密方式,加密後的檔案以 gf 開頭 經過逆向分析後知道 前8個位元組是檔案頭,9 12位元組是解壓後的大小,13 16位元組是壓縮前的大小,17 2...