2008年10月22日 星期三

Linux Date 指令運用

利用date 指令來取得,格式如下 
date "+%Y %m %d %H:%M:%S"

Display the current time in the given FORMAT, or set the system date.
-d, --date=STRING
              display time described by STRING, not `now'

FORMAT controls the output:
%Y     year (1970...)
%m     month (01..12)
%d     day of month (01..31)
%H     hour (00..23)
%M     minute (00..59)
%S     second (00..60); the 60 is necessary to accommodate a leap  second 

當天
date +%Y%m%d
前一天

# date --date='1 days ago' +%Y%m%d
# date -d '1 days ago' +%Y%m%d
# date -d yesterday +%Y%m%d
明天
# date --date='1 days' +%Y%m%d
# date -d '1 days' +%Y%m%d
# date -d tomorrow +%Y%m%d

2008年10月19日 星期日

網路設定備份與啟動

快速切換IP組態


網路設定檔備份

netsh -C interface dump>C:\Office_AP1.txt

/*****************備份出來的內容_開始*************/
#=========
# 介面設定
#=========
pushd interface

reset all

popd
# 介面設定結束

#=========
# 介面設定
#=========
pushd interface ipv6

uninstall

popd
# 介面設定結束

# ----------------------------------
# ISATAP 設定
# ----------------------------------
pushd interface ipv6 isatap

popd
# ISATAP 設定結束

# ----------------------------------
# 6to4 設定
# ----------------------------------
pushd interface ipv6 6to4

reset

popd
# 6to4 設定結束

#========================
# 連接埠 Proxy 設定
#========================
pushd interface portproxy

reset

popd
# 連接埠 Proxy 設定結束

# ---------------------------------- 
# 介面 IP 設定         
# ---------------------------------- 
pushd interface ip

# "無線網路連線" 的介面 IP 設定

set address name="無線網路連線" source=static addr=172.16.1.2 mask=255.255.255.0
set address name="無線網路連線" gateway=172.16.1.1 gwmetric=0
set dns name="無線網路連線" source=static addr=168.95.1.1 register=PRIMARY
add dns name="無線網路連線" addr=168.95.192.1 index=2
set wins name="無線網路連線" source=static addr=none

popd
# 介面 IP 設定結束
/*****************備份出來的內容_結束*************/


文字檔載入變更IP組態

netsh -f C:\Office_AP1.txt


這樣就不用每次手工去改IP,不過如果是不同無線基地台的話還是得手動去切換基地台才可以...

2008年10月12日 星期日

JMail 開發紀錄(2-3) - mail.cfg backup 功能新增

新增郵件備份機制 backup=true/false
當備份機制啟動時,在工作目錄下會新增一個backup資料夾,裡面會有每個帳號(日期分類)的個別備份檔案
例如:
sender_smtp15985.jmail
receiver_pop15986.jmail
兩種類型檔案,其中 sender為寄件者備份 / receiver為收件者備份

2008年10月11日 星期六

JMail 開發紀錄(2-2) - mail.cfg NIC.Check 名稱變更

#This option rejects mail sent from domains that do not have an entry in DNS.
#Fully qualified domain name check
#Default option=true

原為
NIC.Check=true

現在變更為
FQDN.Check = true

功能無異動只有名稱修改

2008年10月9日 星期四

JMail 開發紀錄(2-1) - mail.cfg BlockDomain功能新增

新增
#Blocked.Domain
Blocked.domain=gmail.com

這樣只要是由gmail.com或是rv-out-0708.google.com或是xxxxx.gmail.com來的信都會被封鎖

JMail 開發紀錄(4) - 使用外部套件說明

log紀錄
1.commons-logging-1.1.1.jar
2.commons-logging.jar
3.log4j-1.2.15.jar
4.log4j.jar

2.dns查詢
dnsjava-2.0.6.jar
這個套件要是檢查NIC與RBL與XBL所必須使用的,因為要反查IP.....

JMail 開發紀錄(3-1) - user.cfg 增加Alias別名

剛剛用了點時間把alias的功能加入

alias 別名使用格式

alias$jason@java2.tw=mssql@java2.tw,oracle@java2.tw,h2db@java2.tw


這樣只要是寄給

mssql@java2.tw,oracle@java2.tw,h2db@java2.tw

的信會轉給jason@java2.tw



2008年10月8日 星期三

JMail 開發紀錄(3) - user.cfg 說明

所有的使用者都是記錄在這個檔案 ./config/user.cfg
本來想比照Unix帳號管理,後來想想還是簡單一點就好...
說明:如果有一個新帳號jason,密碼:123456789要加入則在user.cfg檔案裡新增一筆資料如下

email$jason@java2.tw=123456789

user.cfg裡的檔案裡密碼方面有經過java.security.MessageDigest處理,本來Message Digest驗證資料是否被竄改,不過在這裡是做類似密碼的加密

後記:
1.目前user.cfg只是單一帳號的管理,我有想過跟H2 Database結合,或是選定任一種資料庫....
這樣就可以直接跟公司的人事系統結合,甚至EMAIL 上的群組都有人事單位的一個預設通訊錄...
不過這要花時間去完成.....而且效益好像也不是很大...
2.之後會先將Email的別名加入....


2008年10月3日 星期五

JMail 開發紀錄(2) - mail.cfg 說明

#mail.cfg
####################################
#######此設定檔為基本參數設定#######
####################################

#Domain Name
#JMail所在的網域
domain=java2.tw

#POP3 PORT
pop3port=110

#SMTP PORT
smtpport=25

#SMTP 與 POP3 SERVICE Thread數量,可以依主機信件工作量與USER數量來微調來調整
#此參數只在程式一開始啟動時抓取,如果在運行時更改mail.cfg並不會即時異動執行緒數量
POP3Threads=5
SMTPThreads=10

#信件重複寄送的最大嘗試次數
#可重複遞送的次數
#第一次重複遞送 2^1    (分鐘)
#第二次重複遞送 2^2    (分鐘)
#第三次重複遞送 2^3    (分鐘)
#第10次重複遞送 2^10   (分鐘)
#最後遞送失敗時會通知寄件者失敗原因
smtpdelivery.LimitTimes=5


#MAIL遞送程式間隔時間(秒)
#此參數為幾秒為週期來檢查待寄送工作夾是否有信件等待寄送
smtpdelivery.interveal=60


#SPAM Mail相關參數

#拒絕來自沒有在NIC註冊網域所發送出來的郵件
#This option rejects mail sent from domains that do not have an entry in DNS.
#Fully qualified domain name check
#Default option=true
#20081012 名稱異動
FQDN.Check = true

#RBL黑名單
#外部黑名單,或稱為DNSBLs或者RBLs,是潛在垃圾郵件的Internet郵件的IP列表.
#可以用於阻擋潛在的垃圾郵件進入您的MAIL SERVER
#如果發現Console有出現RBL Deny的訊息即表示對方為RBL BlackList信件將不會進入JMail SERVER

##JMail所使用的RBL SERVER
#The Spamhaus Block List
#[sbl.spamhaus.org]
RBL.Check=true

##JMail所使用的XBL SERVER
#列出被 crack 當作跳板的機器
#The Spamhaus Exploits Block List
#[xbl.spamhaus.org]
XBL.Check=true

#Blocked IP
#Blocked.IP=127.0.0.*

#Blocked.Domain
#20081009 功能新增
#Blocked.Domain=gmail.com


#Relay 相關設定
#Outbound/Relay Setup

#當relay.Server=true時,凌駕於所有relay的設定
relay.Server=false

#允許Relay的EmailAddress
trusted.Relay.Address=ajax.chien@gmail.com

#允許Relay的IP
#黑名單執行順序高於此Relay的IP
#Example:
#deny.IP=127.0.0.*
#trusted.Relay.IP=127.0.0.*
#還是會Drop 來自127.0.0.* 網段的IP
trusted.Relay.IP=127.0.0.*

#允許relay的Domain
#trusted.Relay.Domain=java2.tw

#郵件備份機制
#20081013 功能新增
backup=true

JMail 開發紀錄(1) - 相關檔案說明

起源......
一開始是想寫一個簡單的Mail Server來發公司的顧客邀請電子函(類垃圾郵件),寫到後來功能一直增加最後變成一個滿完整的Mail Server,現在其實基本的功能已經具備,我有在想要把Bayesian filtering加入JMail的功能裡,網路上有一個java 套件Classifier4J已經有實做出貝氏分析
,不過中文好像有點問題....中文會Error....所以這一塊要看能不能去翻Classifier4J的程式出來看

JMail SERVER 安裝與介紹
JMail 是用JAVA JDK1.5所編程的一套Mail Server提供SMTP與POP3功能
目前版本 1.0

已經測試的POP3 Client 軟體
1.Outlook
2.Mozilla Thunderbird


#環境設定與安裝
1.安裝 Java Runtime Environment (JRE) 
2.java -jar "JMail.jar

#設定檔說明
#主要環境設定(mai.cfg)
#人員帳號設定(user.cfg)
#LOG紀錄設定(log.cfg)

#檔案位置說明
在工作資料夾下共有四個子資料夾
1.config
放置主要設定檔 mail.cfg,user.cfg,log.cfg
2.lib
JMal所會使用到的library
3.smtp
為等待寄送的暫時工作區(寄送失敗等待重複寄送也在此)
4.users
此資料夾為每個使用者的收件區,等待使用者收件
5.log
log記錄檔
6.failed
寄送次數超過
smtpdelivery.LimitTimes=3時,會將信件移至此資料夾並通知寄件者失敗訊息..
7.db
目前未使用,之後如果DATABASE加入的話為此目錄

2008年9月21日 星期日

netBeans 的字體設定

netBeans這套工具是我接觸Java來唯一使用的IDE工具
一句話!!好用!!!!

Output的字體設定
"C:\Program Files\NetBeans 6.1\bin\netbeans.exe" --fontsize 12 --laf javax.swing.plat.metal.MetalLookAndFeel

2008年7月5日 星期六

SQL INJECTION

SQL 指令植入式攻擊,但我覺得滿像填字遊戲..
SQL INJECTION並不是針對資料庫或是OS本身的漏洞來攻擊,會造成SQL INJECTION的得逞主要的原因是未做好輸入驗證Input Validation,所以說會造成DB的癱瘓最主要的原因就是程式設計師或軟體開發者的疏忽所產生的!!

舉個例子:
一般最基本的網站登入的驗證SQL Statement


SELECT * FROM DBO.USER WHERE ID = 'AJAX' AND PW = '密碼'

上面的SQL Statement應該是最基本的帳號驗證程式碼,看起來程式應該沒有什麼多大的問題...

但是如果使用者將帳號的輸入欄位改成:
AJAX --->> ' OR 1=1;--
則上面的登入驗證程式會改變成

SELECT * FROM DBO.USER WHERE ID = '' OR 1=1;--' AND PW = '密碼


這樣就會是一個很大的漏洞...

更嚴重的如果登入帳號在DB上有更大權限時....
AJAX --->> ' ;TRUNCATE TABLE DBO.USER --

SELECT * FROM DBO.USER WHERE ID = '' ;TRUNCATE TABLE DBO.USER --' AND PW = '密碼


AJAX --->> ' ;DROP Database (DB Name) --

SELECT * FROM DBO.USER WHERE ID = '' ;DROP Database (DB Name) -- ' AND PW = '密碼

或是嫌DB主機礙眼
AJAX --->> ' ;SHUTDOWN --

SELECT * FROM DBO.USER WHERE ID = '' ;SHUTDOWN -- ' AND PW = '密碼


我想這樣的後果大家應該都可以想像的到..!!!OH MY GOD!!!!!
所以說不管使用ASP.JSP.PERL.PHP等等...只要後端DB是使用SQL標準語法,都會有這種SQL INJECTION的危險!!
所以回過頭來說防範SQL INJECTION最簡單的方法還是 input validation
1.過濾所有可能的字串,例如ESCAPE(\).註解(--).分隔號(;)等等....
2.限制登入者身分的最小可存取之權限
3.將檢查放在Server端,而非Client端(不要輕易相信JAVASCRIPT的檢查結果)
4.使用SQL PROCEDURE來完成SQL Statement....

SQL INJECTION的防範最主要大概就是如此...
網路上有一些SQL INJECTION的檢測工具,大家去GOOGLE找一下應該就有了..

2008年7月3日 星期四

Jad(描述檔)與Manifest.mf(清單檔) 說明

1.描述檔Jad的作用很簡單, 只是單純地讓Java Application Manager 能夠在下載Jar 之前先做些檢查,確定手機上的VM符合Jar檔所需要。
2.根據MIDP 規格的規定,代表MIDlet Suite 的Jar 檔的內部要有一個清單檔(manifest.mf),
而且在檔案裡的屬性是不能重複的,順序性則是隨便沒有限制


以下為MIDP預先定義的一些屬性

MIDlet-Name:MIDlet Suite 的名稱。
MIDlet-Version:格式(主要號碼.次要號碼.最小號碼),這個屬性值是讓手機上的Java Application Manager來判斷版本的新舊。(都是兩位數)
MIDlet-Vendor:廠商名稱。
MIDlet-Icon:此MIDlet Suite 的圖示檔。
MIDlet-Description:描述MIDlet Suite 的相關訊息。
MIDlet-Info-URL:描述此MIDlet Suite 之相關資訊的URL 位址。
MIDlet-n:「應用程式名稱,圖示,類別名稱」
當一個MIDlet Suite裡有一個以上的MIDLet,決定當你啟動該程式集的排列先後順序
說明:
MIDlet-1: HONDA,HONDA.png,init.HONDA
MIDlet-2:HYUNDAI,HYUNDAI.png,init.HYUNDAI
所以當我啟動此程式集時HONDA排第一、HYUNDAI排第二
MIDlet-Jar-URL:當Java Application Manager要去下載JAR時的URL位置。
MIDlet-Jar-Size:Jar的大小byte為單位。
MIDlet-Data-Size:永久資料儲存區(persistent data)的大小?搞不太懂...
MicroEdition-Profile:說明MIDP-1.0、MIDP-2.0,如果該手機VM不支援的話就裝不起來了
MicroEdition-Configuration:性質同上
MIDlet-Delete-Confirm:要砍掉MIDlet Suite時提示的文字訊息


這些屬性都可以在執行時使用javax.microedition.mdilet.MIDlet.getAppProperty()


根據規定Jar描述檔裡至少要有下列幾項屬性:
MIDlet-Name
MIDlet-Version
MIDlet-Vendor
MIDlet-Jar-URL
MIDlet-JAR-Size

根據規定manifest.mf檔案裡至少要有下列幾項屬性:
MIDlet-Name
MIDlet-Version
MIDlet-Vendor
MIDlet-n
MicroEdition-Profile
MicroEdition-Configuration

我們可以發現至少在這兩個檔案裡至少都要有MIDlet-Name、MIDlet-Version、MIDlet-Vendor
不過我平常將程式送到手機的主要方式都是使用Bluetooth,因此Jar描述檔對我而言是可有可無的...

手機相關名詞說明...(持續增加中)

SIMSubscriber Identity Module(用戶身份模組)
A small smart card which contains both programming and information.

MIDlet Suite : 一個或是一個以上的MIDlet 所構成的集合。
MIDlet :一個可以執行的手機應用程式之基本單位。
JAR:包住MIDlet Suite 的File。
JADJava Application Descriptor(描述檔)

2008年7月2日 星期三

Sony Ericsson Java Platform Versions

Java Platform 1(JP1)
MIDP 1.0 、CLDC 1.0、JSR-135 (MMAPI)
Java Platform 2(JP2)
MIDP 2.0、CLDC 1.1、JSR-185、JSR-120 (WMA)、JSR-135 、(MMAPI)、Nokia UI API 1.1
Java Platform 3(JP3)
MIDP 2.0、CLDC 1.1、JSR-185、JSR-120 (WMA)、JSR-135 、(MMAPI)、Nokia UI API 1.1、JSR-184 (Mobile 3D)、Mascot Capsule V3
Java Platform 4(JP4)
MIDP 2.0、CLDC 1.1、JSR-185、JSR-120 (WMA)、JSR-135 、(MMAPI)、Nokia UI API 1.1、JSR-184 (Mobile 3D)、Mascot Capsule V3
Java Platform 5(JP5)
MIDP 2.0、CLDC 1.1、JSR-185、JSR-120 (WMA)、JSR-135 、(MMAPI)、Nokia UI API 1.1、JSR-184 (Mobile 3D)、Mascot Capsule V3、JSR-75 (File/PIM)、JSR-82 (Bluetooth)
Java Platform 6(JP6)
MIDP 2.0、CLDC 1.1、JSR-185、JSR-120 (WMA)、JSR-135 、(MMAPI)、Nokia UI API 1.1、JSR-184 (Mobile 3D)、Mascot Capsule V3、
JSR-75 (File/PIM)、JSR-82 (Bluetooth)、JSR-172 (Webservices)、JSR-205 (WMA 2.0)
Java Platform 7(JP7)
MIDP 2.0、CLDC 1.1、JSR-185、JSR-120 (WMA)、JSR-135 、(MMAPI)、Nokia UI API 1.1、JSR-184 (Mobile 3D)、Mascot Capsule V3、JSR-75 (File/PIM)、JSR-82 (Bluetooth)、JSR-172 (Webservices)、JSR-205 (WMA 2.0)、JSR-234 (AMS, Camera capabilities only)
Java Platform 8(JP8)
MIDP 2.0、CLDC 1.1、JSR-185、JSR-120 (WMA)、JSR-135 (MMAPI)、Nokia UI API 1.1、JSR-184 1.1 (Mobile 3D)、Mascot Capsule V3、JSR-75 (File/PIM)、JSR-82 (Bluetooth)、JSR-172 (Webservices)、JSR-205 (WMA 2.0)、JSR-234 (AMS)、JSR-248 (MSA)、JSR-226 (SVG)、JSR-177 (Security & Trust)、JSR-179 (Location)、JSR-180 (SIP)、JSR-211 (Content Handler)、
JSR-229 (Payment)、JSR-238 (Internationalization)、JSR-239 (OpenGL ES)、JSR-256 (Mobile Sensor)

我的k600i 是屬於Java Platform 5(JP5)

2008年6月30日 星期一

J2ME 閒聊

高中時如果有B.B.Call的話,走起路來都有風啊......尤其是在上課上到一半一定要響一下感覺事業做的比學業還要大,如果是情侶的話還會打一些五四三的520/530/1314的一些鬼東西,後來有陣子流行2哥大但是收訊似乎不是很好,到開始090開頭的號碼時就是水壺機(磚頭機),看到大人們拿磚頭或水壺在講電話真是羨慕啊..但是在那個時候誰會想到!!!啥?電腦嘛ㄟ會挑土豆喔??手機也可以看電視喔??短短的10年多,科技已經進步到了這個地步,所以我想再過十年後我應該可以跟銀河另一邊的那美克星人(比克)使用電話來聊聊近況吧...

回歸正題:
MIDP 1.0(JSR 37)是在2000年09月Release
MIDP 2.0(JSR 118)是在2002年11月Release 。

Volatile memory for the Java runtime所需的記憶體
MIDP 1.0 = 32k,MIDP 2.0 = 128KB
Non-volatile, in addition to what CLDC requires所需的記憶體
MIDP 1.0 = 128k,MIDP 2.0 = 256KB

其中2.0多了一些東西
javax.microedition.lcdui.game 圖形翻轉、碰撞偵測、按鍵處理等功能
javax.microedition.media 多媒體播放等功能
javax.microedition.pki (Public Key Infrastructure) 公開金鑰

那美星人 介紹:
生活在那美剋星上的住民,身高1.3-1.9米之間,沒有體毛。頭部有兩個觸角
,用於感光。皮膚綠色,具有類似植物光合作用的功能,他們只要喝水,利
用光 合作用產生澱粉滿足生理機能需要。古那美剋星人曾經擁有過極其發達
的科技,甚至不惜以犧牲環境為代價,因此那美剋星曾經污染嚴重,二氧化
碳保護層被破壞, 宇宙射線的放射性殺傷使那美剋星成為一顆死星,那美克
星人也幾乎因此滅絕。好在發達的宇宙航行科技使少數人在外星球度過了一
段艱苦的歲月,後來返回了那美剋星,他們痛定思痛,大量培植綠色植物,
以保護二氧化碳氣壁。(另有一說是那美剋星人由於塞亞人的進攻而滅絕,
待考證!

J2ME 簡單介紹(3)

傳統 Java 程式執行程序:
1.編譯階段 : Go.java> Go.class
2.執行階段 : 類別載入器> Byte Code審核器> JVM> Runtime> 硬體設備

非J2ME的Java 程式因為安全的考量,只要是進入執行環境的類別檔,都必須先經過Byte Code
審核器(Byte code verifier)的驗證,來防止程式在遭到惡意的修改,造成程式在執行時對系統造
成破壞,經過審核之後,該類別檔才能開始被Java 虛擬機器所執行。


J2ME Java 程式執行程序:
1.編譯階段 : Go.java> Go.class>預先審核 > Go.class
2.執行階段 : 類別載入器 > 輕量Byte Code審核器 > KVM> Runtime > 硬體設備

J2ME 簡單介紹(2)

再來看看J2ME的架構:

optional packages
|
Profiles
|
configurations


optional packages :
廠商選擇性實作部份 例如: JDBC FOR CDC(JSR169)、Bluetooth API(JSR 82)等......

Profiles:
建構在configurations上,定義了與特定嵌入式裝置非常相關的擴充類別函式庫

1.Mobile Information Device ProfileThe Wireless Messaging APIInformation Module Profile
2Foundation Profile、Personal Basis Profile、Personal Profile...

configurations:
規範描述至少要符合的運算能力、供電能力、記憶體大小等與實作在特定類型的裝置上的J2ME平台所應提供的基本函式庫

分成兩大類CDC、CLDC
CDC(Connected DeviceConfiguration):
includes specific packages that are subsets of the J2SE equivalent:
java.lang
java.util
java.net
java.io
java.text
java.security

CLDC(Connected Limited Device Configuration):
includes specific packages that are subsets of the J2SE equivalent:
java.io
java.lang
java.util
javax.microedition.io

J2ME 簡單介紹(1)

J2ME (Java 2 Platform, Micro Edition)是Sun Microsystems是針對一般小型設備進行程式
開發的工具(套件),由於這些消費性產品(手機、PDA、
互動式電視機上盒 Set-top Box(STB)/Set-top unit(STU)等相關小型設備的差異性過大,因此將這些設備分為兩大類
(
Configuration):一種是(CLDC)運算功能有限、電力供應也有限的嵌入式裝置,另一種
(CDC)
是運算能力相對較佳、並在電力供應上相對比較充足的嵌入式裝置。

所以說手機CELL PHONE應該是屬於(CLDC)這一類的,不過有些人的手機是一直插著
充電,而且現在手機的運算能力越來越好,那手機到底算是哪一類?其實CLDC與CDC
的區分只要還是要看該設備是否有支援CDC...

例如:
SonyEricsson
M600i 與P1i 都有支援 CLDC 1.1 與 CDC 1.0
k600 只支援
CLDC 1.1(我的手機),所以看來應該是越貴的手機支援的東西越多

手邊只有一隻
SonyEricsson k600的手機,所以重點都只能放在CLDC上......
有人要送我一隻有支援CDC的手機嗎?.......Orz

擷取自
Java Technolory Concept Map 一段話
Java 2 Platform Micro Edition is intended to run on devices with limited computing power
, such as cell phones or PDAs.J2ME has reduced processor and memory requirements.
It is based on subsets of J2SE with additional components for market segments such as
hand-held devices.