2015年1月5日 星期一
VB6 CommonDialog issue
Bug: 在開發VB6的應用程式時遇到一個怪異現象,當我用完CommonDialog 時再去呼叫DLL會出現DLL找不到這一個錯誤訊息。
解法:加一行 "CommonDialog1.Flags = cdlOFNNoChangeDir"就ok惹~
看來是CommonDialog不知道哪裡去改到程式路徑導致DLL找不到。
Reference:
http://yes.nctu.edu.tw/vb/3_Property/Flags_ShowOpenSave.htm
2014年12月28日 星期日
解決TortoiseGit( 版本: 1.8.12.0 ) 的commit功能無法正常運作的問題
原來TortoiseGit (版本:1.8.12.0) 的commit功能在XP及server 2003底下會無法正常運作。要去官網 http://download.tortoisegit.org/tgit/1.8.12.0/TortoiseGit-1.8.12.0-WindowsXP-fix.zip 下載更新檔(其實這也不算是更新檔,但一時想不到更好的字眼),解壓縮後手動取代掉TortoiseGitProc.exe這一個執行檔問題就解決了。
2014年10月26日 星期日
linker script 說明
Linker Script (LD Script) 的目的是提供Linker針對編譯後的Object檔案做位置安排的設定
VMA = Virtual Memory Address
LMA = Load Memory Address
.text = program code
.rodara = read-only data
.data = read-write initialized data
.bss = read-write uninitialized data
SECTIONS
{
. = 0x10000; /* 設定記憶體位址(VMA or LMA?)為0x10000 */
.text : { *(.text) } /* 將所有輸入文件的.text section 合併成一個 .text section */
. = 0x8000000; /* 設定記憶體位址(VMA or LMA?)為0x8000000 */
.data : { *(.data) } /* 將所有輸入文件的.data section 合併成一個 .data section */
.bss : { *(.bss) } /* 將所有輸入文件的.bss section 合併成一個 .bss section */
}
說明:
'.' : 原文為"location counter",代表目前擺放的位址。
Reference:
http://www.scoberlin.de/content/media/http/informatik/gcc_docs/ld_3.html
To be continue...
VMA = Virtual Memory Address
LMA = Load Memory Address
.text = program code
.rodara = read-only data
.data = read-write initialized data
.bss = read-write uninitialized data
SECTIONS
{
. = 0x10000; /* 設定記憶體位址(VMA or LMA?)為0x10000 */
.text : { *(.text) } /* 將所有輸入文件的.text section 合併成一個 .text section */
. = 0x8000000; /* 設定記憶體位址(VMA or LMA?)為0x8000000 */
.data : { *(.data) } /* 將所有輸入文件的.data section 合併成一個 .data section */
.bss : { *(.bss) } /* 將所有輸入文件的.bss section 合併成一個 .bss section */
}
說明:
'.' : 原文為"location counter",代表目前擺放的位址。
Reference:
http://www.scoberlin.de/content/media/http/informatik/gcc_docs/ld_3.html
To be continue...
2014年9月30日 星期二
Open SSL 加密指令簡介
本篇文章的指令需再open SSL下執行
1. DES ECB
可參考附錄 A。
建立明文檔案,檔名為 test_data.txt,檔案內容為
Now is the time for all
(all後面有一個空白)
加密
指令:
openssl enc -des-ecb -in test_data.txt -out des_cipher.txt -nosalt -K 0123456789ABCDEF
產生出的密文為:
3F A4 0E 8A 98 4D 48 15 6A 27 17 87 AB 88 83 F9
89 3D 51 EC 4B 56 3B 53 08 6F 9A 1D 74 C9 4D 4E
(由於明文長度只有 24 bytes,所以密文只有前24 bytes才是真正有用的部分。)
解密
指令:
openssl enc -des-ecb -d -in des_cipher.txt -out plain.txt -nosalt -K 0123456789ABCDEF
2. Triple DES ECB
可參考附錄 B。
建立明文檔案,檔名為 des3_test_plain.txt,檔案內容為
The qufck brown fox jump
加密
指令:
openssl enc -des-ede3 -nosalt -K 0123456789ABCDEF23456789ABCDEF01456789ABCDEF0123 -in des3_test_plain.txt -out des3_encipher.txt
產生出的密文為:
A8 26 FD 8C E5 3B 85 5F CC E2 1C 81 12 25 6F E6
68 D5 C0 5D D9 B6 B9 00 83 28 46 B5 2F 9E 21 3D
(由於明文長度只有 24 bytes,所以密文只有前24 bytes才是真正有用的部分。)
解密
指令:
openssl enc -des-ede3 -d -nosalt -K 0123456789ABCDEF23456789ABCDEF01456789ABCDEF0123 -in des3_encipher.txt -out des3_recover_plain.txt
指令:
openssl enc -des-ede -K 0123456789ABCDEF23456789ABCDEF01 -nosalt -in des3_test_plain.txt -out des3_encipher.txt
解密
指令:
openssl enc -des-ede -d -nosalt -K 0123456789ABCDEF23456789ABCDEF01 -in des3_encipher.txt -out des3_recover_plain.txt
參考網址
A. FIPS 8: http://csrc.nist.gov/publications/fips/fips81/fips81.htm
B. NIST Pub 800-67: http://csrc.nist.gov/publications/nistpubs/800-67-Rev1/SP-800-67-Rev1.pdf
To be continue.....
1. DES ECB
可參考附錄 A。
建立明文檔案,檔名為 test_data.txt,檔案內容為
Now is the time for all
(all後面有一個空白)
加密
指令:
openssl enc -des-ecb -in test_data.txt -out des_cipher.txt -nosalt -K 0123456789ABCDEF
產生出的密文為:
3F A4 0E 8A 98 4D 48 15 6A 27 17 87 AB 88 83 F9
89 3D 51 EC 4B 56 3B 53 08 6F 9A 1D 74 C9 4D 4E
(由於明文長度只有 24 bytes,所以密文只有前24 bytes才是真正有用的部分。)
解密
指令:
openssl enc -des-ecb -d -in des_cipher.txt -out plain.txt -nosalt -K 0123456789ABCDEF
2. Triple DES ECB
可參考附錄 B。
建立明文檔案,檔名為 des3_test_plain.txt,檔案內容為
The qufck brown fox jump
Three key triple DES EDE in ECB mode
加密
指令:
openssl enc -des-ede3 -nosalt -K 0123456789ABCDEF23456789ABCDEF01456789ABCDEF0123 -in des3_test_plain.txt -out des3_encipher.txt
產生出的密文為:
A8 26 FD 8C E5 3B 85 5F CC E2 1C 81 12 25 6F E6
68 D5 C0 5D D9 B6 B9 00 83 28 46 B5 2F 9E 21 3D
(由於明文長度只有 24 bytes,所以密文只有前24 bytes才是真正有用的部分。)
解密
指令:
openssl enc -des-ede3 -d -nosalt -K 0123456789ABCDEF23456789ABCDEF01456789ABCDEF0123 -in des3_encipher.txt -out des3_recover_plain.txt
Two key triple DES EDE in ECB mode
指令:
openssl enc -des-ede -K 0123456789ABCDEF23456789ABCDEF01 -nosalt -in des3_test_plain.txt -out des3_encipher.txt
解密
指令:
openssl enc -des-ede -d -nosalt -K 0123456789ABCDEF23456789ABCDEF01 -in des3_encipher.txt -out des3_recover_plain.txt
參考網址
A. FIPS 8: http://csrc.nist.gov/publications/fips/fips81/fips81.htm
B. NIST Pub 800-67: http://csrc.nist.gov/publications/nistpubs/800-67-Rev1/SP-800-67-Rev1.pdf
To be continue.....
2013年11月30日 星期六
在 Ubuntu 下安裝 Bugzilla
Bugzilla是一套bug追蹤軟體,有許多知名的公司有使用bugzilla來收集並解決bug(如:Mozilla, Linux Kernel, Eclipse等等),基於好奇心之下來研究一下bugzilla如何安裝以及使用,安裝過程還真的一堆地雷阿... 以下紀錄bugzilla的安裝過程。
- 安裝環境
Bugzilla 版本:4.5.1
- 安裝步驟
Step 1:安裝MySQL
Step 1.1: 安裝 mysql-server
輸入指令# apt-get install mysql-server
在安裝過程中會要求使用者輸入密碼,要記得密碼後面會用到。
Step 1.2: 安裝 mysql-client-core-5.5
輸入指令# apt-get install mysql-client-core-5.5
Step 2:安裝 Apache
輸入指令# apt-get install apache2
Step 3: 安裝 sendmail
輸入指令# apt-get install sendmail
Step 4: 檢查 Perl 版本
輸入指令# perl -v
一般 ubuntu 都已經自動安裝好 perl,所以這一步可以省略。
Step 5:安裝 Bugzilla
Step 5.1: 下載 bugzilla 壓縮檔
# wget http://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-4.5.1.tar.gz
(P.S 當初下載bugzilla-4.4.1,可是perl會要求DBI的版本至少要1.614以上,可是我安裝的版本明明是1.63但perl卻認為是無效的版本,後來發現這是bugzilla在版本辨識上有bug,搞了很久還是沒法解決,後來換成bugzilla-4.5.1版後就沒這個問題。)
Step 5.2: 解壓縮 bugzilla 到路徑 /var/www
# tar -C /var/www/ -xvf bugzilla-4.5.1.tar.gzStep 5.3: 更改 bugzilla 資料夾名稱
# cd /var/www# mv bugzilla-4.5.1 bugzilla
Step 5.4: 編譯bugzilla
進入到 bugzilla 資料夾# cd /var/www/bugzilla
執行 checksetup.pl
# ./checksetup.pl
這裡應該是問題最多的地方,應該會列出一堆必要元件還沒安裝,perl 會提示缺少的元件可以透過一個指令一次安裝完全,指令如下。
# /usr/bin/perl install-module.pl --all
但是理想 情況是一次就全部安裝,可惜天不從人願,還是會有一些漏網之魚沒有安裝,這時候就請google大神吧,就我的經驗缺少的元件基本上都可以透過指令 apt-get 來下載安裝,以下舉幾個例子。如果缺少元件 Template-Toolkit 的話可以透過下面的指令來安裝。
# apt-get install libtemplate-perl
如果缺少元件 Email-Send的話
# apt-get install libemail-send-perl
在必要的元件都安裝完成之後再執行一次 checksetup.pl# ./checksetup.pl
如果執行完後有出現文件 localconfig 的話就代表成功了。
接著修改 localconfig 的內容
# vim /var/www/bugzilla/localconfig
將 $webservergroup 這一個設定改成 $webservergroup = 'www-data'
儲存後離開。
接著建立 mysql 資料庫
# mysql -u root -p
接著就會進入 mysql 的介面,接著輸入以下指令建立資料庫
mysql> grant all on *.* to bugs@localhost identified by '';
mysql> flush privileges;
mysql> create database bugs;
接著就可以離開 mysql 介面(輸入exit)
然後修改 apache 的設定檔
# vim /etc/apache2/site-availibles/default
將以下的設定加入檔案 default 裡
<Directory /var/www/bugzilla>
AddHandler cgi-script .cgi
Options +Indexes +ExecCGI +FollowSymLinks
DirectoryIndex index.cgi
AllowOverride None
Order allow,deny
Allow from all
</Directory>
接著回到路徑 /vat/www 裡
# cd /var/www
然後執行以下指令
# chown www-data:www-data bugzilla
然後再回到資料夾 bugzilla 裡
# cd /var/www/bugzilla
再執行一次 checksetup.pl
# ./checksetup.pl
這樣 bugzilla 就算建置完成了。
Step 6:重新啟動 Apache 和 MySQL
重新啟動 apache# /etc/init.d/apache2 restart
重新啟動 mysql
# /etc/init.d/mysql restart
Step 7:驗證 bugzilla 是否安裝成功
終於到了最後一步了,首先查看主機的 IP 位址,假設為192.168.999.999
那麼隨便開啟一個瀏覽器,然後在地址欄裡輸入 http://192.168.999.999/bugzilla
如果有出現 bugzilla 的首頁那就代表安裝成功啦!接著就可以使用bugzilla的各種功能。
2013年11月29日 星期五
Ubuntu 啟動帳號 root
作業系統:Ubuntu 13.04
假設現在登入的帳號是oscar
Step 1: 設定root密碼
# sudo passwd root
輸入 oscar 的密碼
輸入 root 的新密碼
再一次輸入新密碼
這樣就可以用root登入,可以用以下的指令試看看 root 有沒有設定成功
# su root
Step 2: 在開機時的登入畫面可以用root登入
編輯檔案
# vim /etc/lightdm/lightdm.conf
將下列的指令加入到 lightdm.conf 裡
greeter-show-manual-login=true
然後重新開機就可以在登入畫面用root直接登入。
2013年3月29日 星期五
如何在Windows環境下安裝OpenSSL
然在網路上有在Windows下安裝OpenSSL的教學,但很多都有看沒有懂,所以乾脆自己記錄一下這次自己安裝的流程以備日後可以回頭查閱。
2. 進入到解壓縮的OpenSSL資料夾。
(Ex:假如OpenSSL的資料夾是放在D槽,並且資料夾名稱叫TestOpenSSL,那麼先打 D: 再打 cd TestOpenSSL)
3. 進入到OpenSSL的資料夾後,輸入指令
perl Configure VC-WIN32 --prefix=c:\some\openssl\dir
(P.S. c:\some\openssl\dir是指說要將OpenSSL安裝到這一個路徑,所以如果你想放到自訂的資料夾內,譬如c槽的UserOpenssl資料夾,那就將c:\some\openssl\dir 改成c:\UserOpenssl)
4. 輸入指令
ms\do_nasm
5.輸入指令
nmake -f ms\ntdll.mak
(P.S. 如果沒將NASM加入到環境變數這裡就會compile失敗,如果已經加入但還是失敗的話,那就重開機再試一次)
6. 輸入指令
nmake -f ms\ntdll.mak test
(P.S. 如果前一個步驟通過的話那這一個可以略過,因為這一個步驟只是Test前一個步驟是否有正確安裝)
7. 輸入指令
nmake -f ms\ntdll.mak install
以上步驟全都完成之後,如果沒有更改步驟3的安裝路徑的話,就可以進入到c:\some\openssl\dir\bin 裡有一個執行檔名為openssl,點兩下就會出現命令視窗,就可以進行OpenSSL所提供的指令,至於有那些指令以及參數可用請參考OpenSSL的網站 http://www.openssl.org/
安裝環境
- 作業系統:Win 7 32-bit
- OpenSSL版本:openssl-1.0.1e.tar.gz
需事先安裝的軟體
- Perl 編譯工具:http://www.activestate.com/ActivePerl
- NASM編譯工具:http://nasm.sourceforge.net/
- Visual C++(我是使用2010版)
- 解壓縮OpenSSL(使用7-zip,解壓縮後會有許多檔案,其中INSTALL.W32是安裝OpenSSL的教學,如果安裝過程有疑問可以查看這一個檔案)
將NASM加入到環境變數
- 安裝完NASM後預設的路經應該為C:\Program Files (x86)\NASM。
- 點選 電腦 -> 系統內容 -> 進階系統設定 -> 環境變數,在系統變數欄位裡有一個變數名為Path,快速點兩下。
- 在變數值欄位裡的最後面先加一個分號 ";",在分號後面加入NASM資料夾的路徑
C:\Program Files (x86)\NASM
安裝流程
- 點選桌面的開始 -> 所有程式 -> Microsoft Visual Studio 2010 Express ->Visual Studio 命令提示字元 (2010),就會跳出命令視窗如下圖。
2. 進入到解壓縮的OpenSSL資料夾。
(Ex:假如OpenSSL的資料夾是放在D槽,並且資料夾名稱叫TestOpenSSL,那麼先打 D: 再打 cd TestOpenSSL)
3. 進入到OpenSSL的資料夾後,輸入指令
perl Configure VC-WIN32 --prefix=c:\some\openssl\dir
(P.S. c:\some\openssl\dir是指說要將OpenSSL安裝到這一個路徑,所以如果你想放到自訂的資料夾內,譬如c槽的UserOpenssl資料夾,那就將c:\some\openssl\dir 改成c:\UserOpenssl)
4. 輸入指令
ms\do_nasm
5.輸入指令
nmake -f ms\ntdll.mak
(P.S. 如果沒將NASM加入到環境變數這裡就會compile失敗,如果已經加入但還是失敗的話,那就重開機再試一次)
6. 輸入指令
nmake -f ms\ntdll.mak test
(P.S. 如果前一個步驟通過的話那這一個可以略過,因為這一個步驟只是Test前一個步驟是否有正確安裝)
7. 輸入指令
nmake -f ms\ntdll.mak install
以上步驟全都完成之後,如果沒有更改步驟3的安裝路徑的話,就可以進入到c:\some\openssl\dir\bin 裡有一個執行檔名為openssl,點兩下就會出現命令視窗,就可以進行OpenSSL所提供的指令,至於有那些指令以及參數可用請參考OpenSSL的網站 http://www.openssl.org/
訂閱:
文章 (Atom)
