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