互聯(lián)網(wǎng)三維展示越來越流行,關(guān)注的朋友們也越來越多,。許多朋友知道玄科,也知道玄科沒有采用WebGL技術(shù),,不禁問道:“你們的技術(shù)比WebGL強在哪,?”,我們給出的答案之一是“保密性”,。因為WebGL是不能夠進(jìn)行三維原始數(shù)據(jù)保密的,,從它的理論基礎(chǔ)就無法做到。
于是我們覺得應(yīng)該寫一篇文章,,給大家講解一下,,為什么WebGL不能保護(hù)模型數(shù)據(jù),并且我們挑選了一個世界最著名的WebGL網(wǎng)站——sketchfab.com,,作為模型破解案例來給大家講解一下,。
WebGL的本質(zhì)就是一個基于瀏覽器的OpenGL調(diào)用標(biāo)準(zhǔn),制定這個標(biāo)準(zhǔn)的原因是希望在瀏覽器里面進(jìn)行基于本地設(shè)備的三維渲染,,也就是把瀏覽器當(dāng)做傳統(tǒng)的桌面版三維軟件使用,。在使用過程中會產(chǎn)生兩個步驟:
第一, 瀏覽器會下載原始三維模型到本地電腦,;
第二,, 瀏覽器會在本地電腦渲染模型。
原始模型都下載到用戶本地電腦里面了,,保密工作還能進(jìn)行嗎,?有的網(wǎng)站說,我們的數(shù)據(jù)加密了,,不怕下載,。有的客戶說,這些都是國際大公司,,保密工作肯定做得好,。那么今天,我們就避免“口說無憑”,,用實例給大家講解一下破解WebGL原始模型的方法,。
首先要說明的是,WebGL模型是不是可以加密,?是的,,可以加密,只是解密算法還是要在用戶本地的瀏覽器執(zhí)行,。那網(wǎng)站再對解密算法進(jìn)行包裝混淆,,是不是就可以了?
答案是,我們不關(guān)心,。
因為我們不會去碰模型下載這個過程,。我們的目標(biāo)是第二個步驟——模型渲染,繞過第一個步驟,,直接在渲染過程中抓取數(shù)據(jù),。
前面提到了,WebGL的本質(zhì)還是OpenGL標(biāo)準(zhǔn),,既然是標(biāo)準(zhǔn),,那就是公開的,有參考的,,統(tǒng)一的,。不管模型如何加密,解密算法如何復(fù)雜,,終究還是要將全部的原始數(shù)據(jù),,送給WebGL在本地渲染。
只是這次,,我們在瀏覽器里,,添加了用于截取WebGL數(shù)據(jù)的鉤子程序。這就相當(dāng)于漁夫利用鸕鶿抓魚,,WebGL就是鸕鶿,,鉤子程序就是漁夫在鸕鶿脖子上打的結(jié)。對于漁夫來說,,鸕鶿抓的魚都會被攔截,,并且完整的取出來。
我們在sketchfab.com的Staff Picks里面,,選擇了一個模型,,叫Destroyed Vampire Body,看起來挺嚇人的樣子,,一會兒我們就把他搬到玄科的三維展示平臺上,。
這是sketchfab模型的網(wǎng)址二維碼和鏈接:
https://sketchfab.com/models/f64 ... op=0&ui_watermark=0
瀏覽器下載好模型之后,就開始渲染,。我們在Chrome里安裝了的鉤子程序,,于是就看到了這些:
這些就是寫到WebGL里面的數(shù)據(jù),每個Buffer就代表一部分模型,。在Contents里面的,,就是頂點坐標(biāo)信息。不用再多說了吧,,數(shù)據(jù)全部在這里,。
當(dāng)然,還有貼圖:
此外,還有Shader的源代碼:
以及他們之間的調(diào)用順序:
基礎(chǔ)數(shù)據(jù)有了,,我們又寫了程序把這些內(nèi)容自動拼接成OBJ文件,,到這里為止,鸕鶿抓的魚已經(jīng)被漁夫完整的回收了,。
至此,,模型破解工作就完成了。因為口說無憑嘛,,我們就把這個模型放到了我們的平臺上,大家掃描下面這個二維碼,,如果在微信里的話,,就可以長按圖片,識別二維碼再打開也可以,。
http://www.xuantech.cn/3d?name=demo/crack/sketchfab-zombie
下面就是這個模型放到玄科展示平臺的效果:
寫這篇“科普”文章的目的是給大家講解和闡釋一下WebGL的理論,,數(shù)據(jù)保密這件事,WebGL真是做不了,。我們只是拿sketchfab作為一個例子,,實際上所有的WebGL網(wǎng)站都可以用同樣的方式破解,不管加不加密,。
玄科的平臺技術(shù)沒有采用WebGL方案,,在使用過程中不存在任何的模型下載和模型渲染。朋友們?nèi)绻涯P头旁谶@里,,就不用擔(dān)心保密性的問題了,。
點擊“閱讀原文”可以查看破解后的三維模型展示效果。
閱讀原文
|