2016年8月29日 星期一

2016年夏 - 伴隨義工工作營體驗的-羅馬假期「Camp8」

經過上年的柬埔寨工作營和今年的意大利工作營,我想下年應該不會再參加這類義工旅行了。旅行完的時候有那種『已經足夠了』的感覺。大概之後更想要自主度更高,不再是參加者的身份去做事。

今次乘搭的是俄羅斯航空旗下的Aeroflot,又是Boeing轉Airbus的兩程機,全程17小時(連2小時莫斯科轉機),向西飛,算有點適應到這種長途航程。時差方面大概因為要生理時鐘推遲是比較容易。打著草稿的這一刻在莫斯科往羅馬的機上,意大利下午六點半大約是香港晚上十點幾,還未算很眼訓。第一程機雖然要9小時,但在機上的兩餐和一套「死侍」打發時間,換上提供的拖鞋眼罩也可以睡一睡,時間還算好過。在莫斯科等轉機時打算放適量歐元進銀包,才發覺自己沒有帶那裝錢的信封,只有等到羅馬時提取那大背包中的50歐羅.....第二班機的登機閘口從29號轉到了28號,之前沒有留意到通知,一直在29號閘口前等候上機,突然看到電子板的登機提示的時候還有點猶豫,還好就在28號閘口向準備上機的職員問過,就被指示上機了。人未到埗,但在機上看風景,己經感到高空的景色很不一樣,香港有的是城市大厦,尚記得到柬埔寨的河岸,中國的黃土山地;歐洲就比較有印象中的小鎮的面貌,大片的農地原來也和稻田看起來起不一樣。


2016年8月7日 星期日

[Excel] 偷看加密的VBA Project Code

因為剛剛放假去了一趟意大利旅遊而沒有更新。回到香港已經兩個星期了,本來打算回來就寫這次的遊記,但才寫到第2天的事,很多都還在整理當中。回港當日一下機就帶著行李直接回Office,不過那星期就在工作上遇到一個特別的發現,值得先記下來充撐充撐⋯⋯話說之前一項專案找了 IT Team寫了一個Excel的工具來做一項數據處理的工序。最近隨著這項目的更新,我們需要另外加入新的運算程序。在同事研究該怎樣做的時候,發現了原來可以輕易破解加密了的Excel VBA Project。就算無意自己去改動IT的出品,對「原來有這辦法」就感到很有趣。日後也是一個好機會去了解下別人的專業角度如何寫Code。

大致上:這方法是用十六進制編輯器-Hex Editor 去打開檔案,找尋並修改檔案中特定的識別字串,就可在打開檔案時除掉加密保護。(這方法是試在辦公室的Window機Office2013。而現在用自家電腦準備以下圖片時知道,Mac機的Office 2011在打開最後那個修改過的檔案時,有不同的處理,所以偷看不到。)

  • 常見帶Macro的Excel 會存成 xls 或 xlsm 副檔名的檔案,而這方法用在xls檔上。因為我手上的是xlsm,所以要做一個另存新檔的步驟,存成xls檔。
  •  用Hex Editor打開檔案,若是自家電腦可以找Notepad++的外掛,工作的電腦可以抓網上的Online Hex Editor (如 https://hexed.it/)。找尋"DBP"並修改為"DBx"。然後匯出檔案。
  • 這時打開剛修改過的檔案,過程中會出現錯誤訊息,可以選擇略過錯誤。然後進入VB Editor,會發現已經可以檢視程式碼(Office 2011只能選擇"開啟並修復",打開後Module部份不見了)。這時最好也重新設定/解除VBA Project的加密,並另行存檔。

後話:在嘗試這方法時,也想起的當年的PC遊戲-三國志曹操傳,就有使用十六進制編輯器的修改法。