2011年12月3日 星期六

Mac批次縮放照片

首先將要縮圖的檔案全部以預覽程式開啟,
側邊欄會出現圖片的目錄,全選之(⌘ + A)。
點選工具列的 工具 \ 調整大小…
然後就可以自行輸入想要的大小了。
若是有勾選 依比例縮放,那寬度跟高度就只能選一個來做更改,這樣才不會扭曲圖像。
縮放完畢後,儲存記得要選 全部儲存,不然只會儲存第一張喔。
另外儲存的方式是以覆蓋的方式做存檔,所以若是想要另外保留原檔案,別忘了要另外備份喔。

2011年11月26日 星期六

[教學] 網路命令一覽表(DOS)

Ping 

      Ping是個使用頻率極高的實用程式,用於確定本地主機是否能與另一台主機交換(發送與接收)資料報。根據返回的資訊,你就可以推斷TCP/IP參數是否設置得正確以及運行是否正常。需要注意的是:成功地與另一台主機進行一次或兩次數據報交換並不表示TCP/IP配置就是正確的,你必須執行大量的本地主機與遠端主機的資料報交換,才能確信TCP/IP的正確性。 

      簡單的說,Ping就是一個測試程式,如果Ping運行正確,你大體上就可以排除網路訪問層、網卡、MODEM的輸入輸出線路、電纜和路由器等存在的故障,從而減小了問題的範圍。但由於可以自定義所發資料報的大小及無休止的高速發送,Ping也被某些別有用心的人作為DDOS(拒絕服務攻擊)的工具,前段時間Yahoo就是被駭客利用數百台可以高速接入互聯網的電腦連續發送大量Ping資料報而癱瘓的。 

      按照缺省設置,Windows上運行的Ping命令發送4個ICMP(網間控制報文協定)回送請求,每個32位元組資料,如果一切正常,你應能得到4個回送應答。 

      Ping能夠以毫秒為單位顯示發送回送請求到返回回送應答之間的時間量。如果應答時間短,表示資料報不必通過太多的路由器或網路連接速度比較快。Ping還能顯示TTL(Time To Live存在時間)值,你可以通過TTL值推算一下資料包已經通過了多少個路由器:源地點TTL起始值(就是比返回TTL略大的一個2的乘方數)-返回時TTL值。例如,返回TTL值為119,那麼可以推算資料報離開源位址的TTL起始值為128,而源地點到目標地點要通過9個路由器網段(128-119);如果返回TTL值為246,TTL起始值就是256,源地點到目標地點要通過9個路由器網段。 

通過Ping檢測網路故障的典型次序 

      正常情況下,當你使用Ping命令來查找問題所在或檢驗網路運行情況時,你需要使用許多Ping命令,如果所有都運行正確,你就可以相信基本的連通性和配置參數沒有問題;如果某些Ping命令出現運行故障,它也可以指明到何處去查找問題。下面就給出一個典型的檢測次序及對應的可能故障: 

ping 127.0.0.1——這個Ping命令被送到本地電腦的IP軟體,該命令永不退出該電腦。如果沒有做到這一點,就表示TCP/IP的安裝或運行存在某些最基本的問題。 

ping 本機IP——這個命令被送到你電腦所配置的IP位址,你的電腦始終都應該對該Ping命令作出應答,如果沒有,則表示本地配置或安裝存在問題。出現此問題時,局域網用戶請斷開網路電纜,然後重新發送該命令。如果網線斷開後本命令正確,則表示另一台電腦可能配置了相同的IP位址。 

ping 局域網內其他IP——這個命令應該離開你的電腦,經過網卡及網路電纜到達其他電腦,再返回。收到回送應答表明本地網路中的網卡和載體運行正確。但如果收到0個回送應答,那麼表示子網路遮罩(進行子網分割時,將IP位址的網路部分與主機部分分開的代碼)不正確或網卡配置錯誤或電纜系統有問題。 

ping 閘道IP——這個命令如果應答正確,表示局域網中的閘道路由器正在運行並能夠作出應答。 

ping 遠端IP——如果收到4個應答,表示成功的使用了缺省閘道。對於撥號上網用戶則表示能夠成功的訪問Internet(但不排除ISP的DNS會有問題)。 

ping localhost——localhost是個作系統的網路保留名,它是127.0.0.1的別名,每太電腦都應該能夠將該名字轉換成該位址。如果沒有做到這一帶內,則表示主機檔(/Windows/host)中存在問題。 

ping www.yahoo.com——對這個功能變數名稱執行Ping命令,你的電腦必須先將功能變數名稱轉換成IP位址,通常是通過DNS伺服器 如果這裏出現故障,則表示DNS伺服器的IP位址配置不正確或DNS伺服器有故障(對於撥號上網用戶,某些ISP已經不需要設置DNS伺服器了)。順便說一句:你也可以利用該命令實現功能變數名稱對IP位址的轉換功能。 

如果上面所列出的所有Ping命令都能正常運行,那麼你對你的電腦進行本地和遠端通信的功能基本上就可以放心了。但是,這些命令的成功並不表示你所有的網路配置都沒有問題,例如,某些子網路遮罩錯誤就可能無法用這些方法檢測到。 

Ping命令的常用參數選項 

ping IP -t——連續對IP位址執行Ping命令,直到被用戶以Ctrl+C中斷。 

ping IP -l 2000——指定Ping命令中的資料長度為2000位元組,而不是缺省的32位元組。 

ping IP -n——執行特定次數的Ping命令。 

Netstat 

Netstat用於顯示與IP、TCP、UDP和ICMP協定相關的統計資料,一般用於檢驗本機各埠的網路連接情況。 

如果你的電腦有時候接受到的資料報會導致出錯資料刪除或故障,你不必感到奇怪,TCP/IP可以容許這些類型的錯誤,並能夠自動重發資料報。但如果累計的出錯情況數目占到所接收的IP資料報相當大的百分比,或者它的數目正迅速增加,那麼你就應該使用Netstat查一查為什麼會出現這些情況了。 

Netstat的一些常用選項: 

netstat -s——本選項能夠按照各個協定分別顯示其統計資料。如果你的應用程式(如Web流覽器)運行速度比較慢,或者不能顯示Web頁之類的資料,那麼你就可以用本選項來查看一下所顯示的資訊。你需要仔細查看統計資料的各行,找到出錯的關鍵字,進而確定問題所在。 

netstat -e——本選項用於顯示關於乙太網的統計資料。它列出的專案包括傳送的資料報的總位元組數、錯誤數、刪除數、資料報的數量和廣播的數量。這些統計資料既有發送的資料報數量,也有接收的資料報數量。這個選項可以用來統計一些基本的網路流量)。 

netstat -r——本選項可以顯示關於路由表的資訊,類似於後面所講使用route print命令時看到的 資訊。除了顯示有效路由外,還顯示當前有效的連接。 

netstat -a——本選項顯示一個所有的有效連接資訊列表,包括已建立的連接(ESTABLISHED),也包括監聽連接請求(LISTENING)的那些連接。 

netstat -n——顯示所有已建立的有效連接。 

Netstat的妙用 

經常上網的人一般都使用ICQ的,不知道你有沒有被一些討厭的人騷擾得不敢上線,想投訴卻又不知從和下手?其實,你只要知道對方的IP,就可以向他所屬的ISP投訴了。但怎樣才能通過ICQ知道對方的IP呢?如果對方在設置ICQ時選擇了不顯示IP位址,那你是無法在資訊欄中看到的。其實,你只需要通過Netstat就可以很方便的做到這一點:當他通過ICQ或其他的工具與你相連時(例如你給他發一條ICQ資訊或他給你發一條資訊),你立刻在DOS Prompt下輸入netstat -n或netstat -a就可以看到對方上網時所用的IP或ISP功能變數名稱了。甚至連所用Port都完全暴露了,如果你想給他一些教訓,這些資訊已經足夠…… 

IPConfig 

      IPConfig實用程式和它的等價圖形用戶介面——Windows 95/98中的WinIPCfg可用於顯示當前的TCP/IP配置的設置值。這些資訊一般用來檢驗人工配置的TCP/IP設置是否正確。但是,如果你的電腦和所在的局域網使用了動態主機配置協定(Dynamic Host Configuration Protocol,DHCP——Windows NT下的一種把較少的IP位址分配給較多主機使用的協定,類似於撥號上網的動態IP分配),這個程式所顯示的資訊也許更加實用。這時,IPConfig可以讓你瞭解你的電腦是否成功的租用到一個IP位址,如果租用到則可以瞭解它目前分配到的是什麼位址。瞭解電腦當前的IP位址、子網路遮罩和缺省閘道實際上是進行測試和故障分析的必要專案。 

最常用的選項: 

ipconfig——當使用IPConfig時不帶任何參數選項,那麼它為每個已經配置了的介面顯示IP位址、子網路遮罩和缺省閘道值 

ipconfig /all——當使用all選項時,IPConfig能為DNS和WINS伺服器顯示它已配置且所要使用的附加資訊(如IP位址等),並且顯示內置於本地網卡中的物理位址(MAC)。如果IP地址是從DHCP伺服器租用的,IPConfig將顯示DHCP伺服器的IP位址和租用地址預計失效的日期(有關DHCP伺服器的相關內容請詳見其他有關NT伺服器的書籍或詢問你的網管),其輸出資訊見圖6的下半部分。 

ipconfig /release和ipconfig /renew——這是兩個附加選項,只能在向DHCP伺服器租用其IP位址的電腦上起作用。如果你輸入ipconfig /release,那麼所有介面的租用IP位址便重新交付給DHCP伺服器(歸還IP位址)。如果你輸入ipconfig /renew,那麼本地電腦便設法與DHCP伺服器取得聯繫,並租用一個IP地址。請注意,大多數情況下網卡將被重新賦予和以前所賦予的相同的IP位址。 

      如果你使用的是Windows 95/98,那麼你應該更習慣使用winipcfg而不是ipconfig,因為它是一個圖形用戶介面,而且所顯示的資訊與ipconfig相同,並且也提供發佈和更新動態IP位址的選項 如果你購買了Windows NT Resource Kit(NT資源包),那麼Windows NT也包含了一個圖形替代介面,該實用程式的名字是wntipcfg,和Windows 95/98的winipcfg類似。 

ARP(位址轉換協定) 

      ARP是一個重要的TCP/IP協議,並且用於確定對應IP位址的網卡物理位址。實用arp命令,你能夠查看本地電腦或另一台電腦的ARP快取記憶體中的當前內容。此外,使用arp命令,也可以用人工方式輸入靜態的網卡物理/IP位址對,你可能會使用這種方式為缺省閘道和本端伺服器等常用主機進行這項作,有助於減少網路上的信息量。 

      按照缺省設置,ARP快取記憶體中的專案是動態的,每當發送一個指定地點的資料報且快取記憶體中不存在當前專案時,ARP便會自動添加該項目。一旦快取記憶體的專案被輸入,它們就已經開始走向失效狀態。例如,在Windows NT網路中,如果輸入專案後不進一步使用,物理/IP位址對就會在2至10分鐘內失效。因此,如果ARP快取記憶體中項目很少或根本沒有時,請不要奇怪,通過另一台電腦或路由器的ping命令即可添加。所以,需要通過arp命令查看快取記憶體中的內容時,請最好先ping 此台電腦(不能是本機發送ping命令)。 

常用命令選項: 

arp -a或arp -g——用於查看快取記憶體中的所有項目。-a和-g參數的結果是一樣的,多年來-g一直是UNIX平臺上用來顯示ARP快取記憶體中所有專案的選項,而Windows用的是arp -a(-a可被視為all,即全部的意思),但它也可以接受比較傳統的-g選項。 

arp -a IP——如果你有多個網卡,那麼使用arp -a加上介面的IP位址,就可以只顯示與該介面相關的ARP緩存項目。 

arp -s IP 物理位址——你可以向ARP快取記憶體中人工輸入一個靜態專案。該專案在電腦引導過程中將保持有效狀態,或者在出現錯誤時,人工配置的物理位址將自動更新該項目。 

arp -d IP——使用本命令能夠人工刪除一個靜態專案。 

 


      看到這裏,你也許已經有些累了……其實對於一般用戶來說也已經足夠——你可以用ipconfig和ping命令來查看自己的網路配置並判斷是否正確、可以用netstat查看別人與你所建立的連接並找出ICQ使用者所隱藏的IP資訊、可以用arp查看網卡的MAC位址——這些已足已讓你丟掉菜鳥的頭銜。

Tracert 

      當資料報從你的電腦經過多個閘道傳送到目的地時,Tracert命令可以用來跟蹤資料報使用的路由(路徑)。該實用程式跟蹤的路徑是源電腦到目的地的一條路徑,不能保證或認為資料報總遵循這個路徑。如果你的配置使用DNS,那麼你常常會從所產生的應答中得到城市、位址和常見通信公司的名字。Tracert是一個運行得比較慢的命令(如果你指定的目標位址比較遠),每個路由器你大約需要給它15秒鐘 
      
Tracert的使用很簡單,只需要在tracert後面跟一個IP位址或URL,Tracert會進行相應的功能變數名稱轉換的。Tracert一般用來檢測故障的位置,你可以用tracert IP在哪個環節上出了問題,雖然還是沒有確定是什麼問題,但它已經告訴了我們問題所在的地方,你也就可以很有把握的告訴別人——某某出了問題。 

Route 

      大多數主機一般都是駐留在只連接一台路由器的網段上。由於只有一台路由器,因此不存在使用哪一台路由器將資料報發表到遠端電腦上去的問題,該路由器的IP地址可作為該網段上所有電腦的缺省閘道來輸入。 

      但是,當網路上擁有兩個或多個路由器時,你就不一定想只依賴缺省閘道了。實際上你可能想讓你的某些遠端IP位址通過某個特定的路由器來傳遞,而其他的遠端IP則通過另一個路由器來傳遞。 

      在這種情況下,你需要相應的路由資訊,這些資訊儲存在路由表中,每個主機和每個路由器都配有自己獨一無二的路由表。大多數路由器使用專門的路由協定來交換和動態更新路由器之間的路由表。但在有些情況下,必須人工將專案添加到路由器和主機上的路由表中。Route就是用來顯示、人工添加和修改路由表項目的。 

一般使用選項: 

route print——本命令用於顯示路由表中的當前項目,在單路由器網段上的輸出結果如圖12,由於用IP位址配置了網卡,因此所有的這些項目都是自動添加的。 

route add——使用本命令,可以將信路由項目添加給路由表。例如,如果要設定一個到目的網路209.98.32.33的路由,其間要經過5個路由器網段,首先要經過本地網路上的一個路由器,器IP為202.96.123.5,子網路遮罩為255.255.255.224,那麼你應該輸入以下命令:

route add 209.98.32.33 mask 255.255.255.224 202.96.123.5 metric 5 

route change——你可以使用本命令來修改資料的傳輸路由,不過,你不能使用本命令來改變資料的目的地。下面這個例子可以將資料的路由改到另一個路由器,它採用一條包含3個網段的更直的路徑: 

route add 209.98.32.33 mask 255.255.255.224 202.96.123.250 metric 3 

route delete——使用本命令可以從路由表中刪除路由。例如:route delete 209.98.32.33


NBTStat 

      NBTStat(TCP/IP上的NetBIOS統計資料)實用程式用於提供關於關於NetBIOS的統計資料。運用NetBIOS,你可以查看本地電腦或遠端電腦上的NetBIOS名字表格。 

常用選項: 

nbtstat -n——顯示寄存在本地的名字和服務程式 

nbtstat -c——本命令用於顯示NetBIOS名字快取記憶體的內容。NetBIOS名字快取記憶體用於寸放與本電腦最近進行通信的其他電腦的NetBIOS名字和IP位址對。 

nbtstat -r——本命令用於清除和重新載入NetBIOS名字快取記憶體。 

nbtstat -a IP——通過IP顯示另一台電腦的物理位址和名字列表,你所顯示的內容就像對方電腦自己運行nbtstat -n一樣 

nbtstat -s IP——顯示實用其IP位址的另一台電腦的NetBIOS連接表。 

Net 

      Net命令有很多函數用於實用和核查電腦之間的NetBIOS連接。這裏我只介紹最常用的兩個:net view和net use。 

net view UNC——運用此命令,你可以查看目標伺服器上的共用點名字。任何局域網裏的人都可以發出此命令,而且不需要提供用戶ID或口令。UNC名字總是以\\開頭,後面跟隨目標電腦的名字。例如,net view \\lx就是查看主機名為lx的電腦的共用點(見圖15)。 

net use 本地盤符 目標電腦共用點——本命令用於建立或取消到達特定共用點的映射驅動器的連接(如果需要,你必須提供用戶ID或口令)。例如,你輸入net use f: \\lx\mp3就是將映射驅動器F:連接到\\lx\mp3共用點上,今後你直接訪問F:就可以訪問\\lx\mp3共用點,這和你右擊“我的電腦”選擇映射網路驅動器類似

微軟語音TELLME&蘋果 SIRI

微軟的 Tellme 和 Siri 比較起來,根本差得遠了透過以下這段影片可以證明其中的差異… (直接從 0:29 開始看就好)



“Create a meeting tomorrow at 10 am” 微軟聽成 “Create a meeting tomorrow teen anal ”
“Send a text to Simone” 微軟聽成 “Stain detector simo” (什麼鬼?)
“What time is it in Perth?” 微軟聽成 “What time is it impo”
“Play artist Skrillex” 微軟聽成 “Play artist screamworks”

2011年11月23日 星期三

資料庫隱碼攻擊

SQL資料隱碼攻擊與防堵方法
作者:李忠憲
一、前言
資料隱碼攻擊約在一年多以前就被發現,當時筆者在系管師研習班的 ASP 課程裡,曾經對參與研習的學員提出說明,隨著時間推移,這個漏洞已經被進一步運用並發展成較為複雜的攻擊程序,也因此其危險性也與日俱增,身為系管師的我們實在不能大意。寫這篇文章的用意是想幫助系管師好好檢查自己的主機是否有被攻擊的可能性,並儘速採取因應對策,以免災害發生時無挽回的餘地。
二、資料隱碼攻擊的成因
在 ANSI SQL 語法裡,單引號被定義為字串的標示符號,例如底下的語法中,ABC 和 123 被視為字串
select * from mydatabase where id='ABC' and passwd='123'
一般在 WEB 應用程式裡,ABC 和 123 這些字串經常是透過表單或查詢字串來輸入,這時候就可能被駭客利用為敲開牆壁的第一塊磚頭,例如在瀏覽器網址列輸入:
login.asp?id=ABC&passwd='%20or%201=1%20or%201='
其中 %20 經過 WEB Server 解譯為空格,而參數帶入 SQL 語法中,變成下面這個恆為真的式子:
select * from mydatabase where id='ABC' and passwd='' or 1=1 or 1=''
這會使得原本讀資料庫判別使用者的程式,被執行結果欺騙而誤以為驗證成功。
這個弱點根源於寫程式的人,沒有將安全防範措施做好,然而利用這個弱點,加上系統上的其他的漏洞,可以發展出一些更為致命的攻擊,例如在瀏覽器網址列輸入:
login.asp?id=ABC&passwd='%20and%20drop%20database%20(select%20XXX%20from%20master.sysdatabases)
參數帶入 SQL 語法中,將會變成:
select * from mydatabase where id='ABC' and passwd='' or drop database (select XXX from master.sysdatabases)
這道命令一旦執行會將除了系統資料庫以外所有的資料庫移除,當然要能如願這樣做還必須有其他條件的配合,例如:存取 mydatabase 的使用者必須擁有 master 資料庫的讀取權限......等等,而根據伺服器的預設值,這些條件經常都能獲得滿足。
運用這個方法,除了可以直接攻擊資料庫外,也可以間接攻擊作業系統的弱點,例如底下這個語法:
select * from mydatabase where id='ABC' and passwd='' or execute master.XXX.xp_cmdshell 'net user test test123 /ADD'
這道命令會要求 SQL 伺服器執行作業系統 net user 指令,在系統上建立駭客入侵用的帳號,而配合其他指令,駭客可以為此帳號配置一些必須的權限。要讓這件事成為可行,首先必須以長字串造成 SQL 伺服器緩衝區溢位而取得 administrator 權限,一旦如此,伺服器甚至整個網路系統就會被駭客予取予求了。
使用非 Windows 平台的 SQL 伺服器也無法倖免於難,因為在 SQL 伺服器的設計上,除了從 WEB 去執行外,也可以透過 NFS、RPC 等其他機制來設計應用程式,因此 SQL 伺服器是允許呼叫系統程式來執行的,Windows 是如此,Linux 也是如此。因此將諸如 rm -rf 等系統命令內嵌於 SQL 語法中來執行的情形也就可以被利用作為駭客破壞系統的手段,例如:
spool test.sh select 'rm -rf ' || XXX from sys.dba_data_files /
三、伺服器 PATCH
針對 SQL 資料隱碼攻擊,微軟公司已經數度推出 SQL PATCH ,最新的 PATCH 必須先安裝 SQL2k sp2,然後下載編號 Q316333 PATCH 檔,SQL 7.0 的用戶則須下載 Q318268 PATCH 檔,同時這些修正也將會包含在 SQL sp3  裡面。
特別要注意的是,這些修正只是解決了長字串導致緩衝區溢位的問題,使得 Administrator 的權限更難以取得,然而運用資料隱碼攻擊,駭客仍然得以 Domain User 的權限恣意使用作業系統資源。因此並非 PATCH 過後就沒有問題了。
如前所述由於 SQL 伺服器設計的目的,無法將 command shell 的呼叫完全屏除,也無法在權限上給予更多的限制,因此要應付變化繁多的 SQL 資料隱碼攻擊,在 SQL伺服器上下工夫作用並不大,還是需要程式設計師自己多做些 check 的動作。
四、程式安全檢查
以程式設計的觀點來看,將表單或查詢字串直接帶入 SQL 語法,是一切弊病的源頭,要徹底排除 SQL 資料隱碼攻擊,必須從根源對症下藥。也就是必須在取得表單資料後,針對單引號進行過濾,然後再組合為 SQL 語法,例如:
sql_cmd = "select * from mydatabase where id='" & Request("id") & "' and passwd='" & Request("passwd") & "'"
應該改為
myid = Replace(Request("id"),"'","'+chr(34)+'")
mypwd = Replace(Request("passwd"),"'","'+chr(34)+'")
sql_cmd = "select * from mydatabase where id='" & myid & "' and passwd='" & mypwd & "'"
經過如此修改後,原本會造成危害的 SQL 隱碼,就會被套入單引號中,被 SQL 伺服器當成普通字串來處理,而不會去執行它,這樣就可以避免受到資料隱碼攻擊。
select * from mydatabase where id='ABC' and passwd='' or execute master.XXX.xp_cmdshell 'net user test test123 /ADD'
變成
select * from mydatabase where id='ABC' and passwd=''+chr(34)+' or execute master.XXX.xp_cmdshell '+chr(34)+'net user test test123 /ADD'+chr(34)+''
使用 PHP 或其他語言的程式,也必須比照上述方式修改,預估需要修改的程式不在少數,系管師應該盡速進行補修。
而需修改的程式,包括處理表單傳回值的程式以及接受查詢字串的程式,特別是後者經常被程式設計師忽略,然而使用查詢字串來傳回參數的程式,由於可以在網址列直接進行操弄,所以通常是駭客的最愛,這絕對是大意不得的。
如果您曾經從石牌國小下載 web 校務行政系統或者班級經營套件,則除了帳號認證程式已經加以防範以外,其餘程式仍然需要自行手動修改。也就是說,只要是擁有帳號的合法使用者,在通過驗證後就能接觸到其他尚未經過安全修改的程式,從而有機會使用資料隱碼攻擊自己校內的主機,目前估計這樣的危險性應該是不高,無論如何在下一個版本裡,將會徹底解決這個問題。
五、後記
基於安全理由,原本要附上的幾張螢幕抓圖,因為擔心駭客會從中獲得進一步的攻擊靈感,因此決定不附了,文中所提及的攻擊手法也隱去一些內容,然而有經驗的人依然得以拼出全貌,為了要讓眾多的程式設計師了解問題的成因與防堵的方法,冒這點風險畢竟是不可避免的,文中如果有不清楚的地方請當面與我討論,筆者不準備針對前述內容回覆 email 或電話諮詢,敬請見諒!

2011年11月22日 星期二

USB傳輸效能測試

HD Tune Pro 5.0


HD Tune Pro是一套相當知名的硬碟測試及掃描工具,各種硬碟、SSD、USB隨身碟幾乎都會用這套軟體來測試,目前最新的版本是5.0版。
官方網站:http://www.hdtune.com/