移動存儲安全


當你的U盤,移動硬盤遺失了,被盜了,或者是遺忘在公共場所,里面的資料就會完全被別人窺探,如果涉及一些隱私,機密,那后果是很嚴重的。本課題就是在這樣一個情況下產生的。這里剖析的只是一個最初的演示原型,詳細設計,以及一些細節可以參考源代碼。源代碼在WinXP,VC6.0編譯通過。

[代碼性質] VC完整應用程序代碼
[文件大小] 16K
[下載]     下載文件Jeffrey_mss.rar (15.78 KB , 下載:17次)

摘要:實現對移動存儲設備的加密,保護信息隱蔽,防止隱私泄露。


關鍵字:移動存儲設備加密安全


  當你的U盤,移動硬盤遺失了,被盜了,或者是遺忘在公共場所,里面的資料就會完全被別人窺探,如果涉及一些隱私,機密,那后果是很嚴重的。本課題就是在這樣一個情況下產生的。這里剖析的只是一個最初的演示原型,詳細設計,以及一些細節可以參考源代碼。源代碼在WinXP,VC6.0編譯通過。


1
、訪問注冊表讀取計算機上的移動存儲設備

在注冊表

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Disk\Enum

下面可以看到計算機當前的狀態,這里可以看到所有的存儲設備的情況,包括計算機的硬盤,通過情況下,名稱為0的是計算機硬盤,所以在列出的選擇設備時,會把名稱為0的屏蔽,不然太危險,一旦造成系統的破壞,后果會很麻煩。對注冊表的讀寫:

HKEY hkey;
char sz[256];
DWORD dwtype,sl = 256; 
for(int i=1;i<8;i++)
{
        if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Services\\Disk\\Enum",\
               NULL, KEY_ALL_ACCESS, &hkey)==ERROR_SUCCESS)
        {
               CString id;
               id.Format("%d",i);
               if(RegQueryValueEx(hkey,id,NULL,&dwtype,(LPBYTE)sz,&sl)==ERROR_SUCCESS)
               {
                       CString str=(CString)sz;
                       m_select.AddString(sz);
               }
        }
}
RegCloseKey(hkey); 


2
、對磁盤的扇區的操作

  Windows 操作系統在很大程度上采取了訪問安全保護機制(例如,在Windows操作系統下不能直接訪問物理內存、不能使用各種DOS、BIOS中斷等等),其實Windows在采取“實保護”措施的同時也提供了另外的一種有別于在DOS下訪問硬件設備的方法,即把所有的硬件設備全部看做“文件”,并允許按照對文件的讀寫方式來對其進行數據存取訪問。對于磁盤扇區的讀寫,可以通過C++CreateFile()函數來實現。由MSDN可查詢到該函數原型:

HANDLE CreateFile(
LPCTSTR lpFileName, 
DWORD dwDesiredAccess, 
DWORD dwShareMode, 
LPSECURITY_ATTRIBUTES lpSecurityAttributes, 
DWORD dwCreationDisposition, 
DWORD dwFlagsAndAttributes, 
HANDLE hTemplateFile );


由于訪問的是事實上已經存在的磁盤扇區,因此只能以OPEN_EXISTING標志設置dwCreationDisposition參數指出將要打開已經存在的文件(設備)。至于其他參數的使用與操作普通文件時的用法相同。

使用的時候,如果需要定位到某一個具體的扇區,可以使用SetFilePointer()函數:

DWORD SetFilePointer(HANDLE hFile,LONG lDistanceToMove,PLONG lpDistanceToMoveHigh,DWORD dwMoveMethod);


  在定位到要訪問的扇區開始位置后就可以通過ReadFile()或WriteFile()函數實施相應的讀寫訪問了,具體操作與文件讀寫并沒有什么太大的差別。最后,在完成訪問操作后以CloseHandle()關閉文件句柄釋放資源,從而完成一次完整的磁盤扇區數據訪問操作。

int ReadDisk(CString driver,unsigned char *Buf,long addr)
{
        HANDLE hDevice;
        BOOL bResult;
        DWORD bytesread; 
        
        hDevice=CreateFile(driver,GENERIC_READ|GENERIC_WRITE,
               FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL); 
        if(hDevice==INVALID_HANDLE_VALUE)
        { 
               AfxMessageBox("Error!");
               return 0;
        }
        if(addr!=0)
        {
               SetFilePointer(hDevice,512*addr,NULL,NULL);
        }
        
        bResult=ReadFile(hDevice,Buf,512,&bytesread,NULL);
        if((bResult==FALSE)||(bytesread<512)) 
        { 
               AfxMessageBox("Error!");
               return 0;
        }
        CloseHandle(hDevice);
        return 1;
}


3
、用RC4加密算法對磁盤加密。

/* RC4加密,KEY是密鑰,此處Key[]="MobileStorageSecurity",后期可以用戶輸入的密碼作為密鑰 */
RC4_KEY rc4_key;
build_rc4_key(Key,strlen((char*)Key),&rc4_key);
rc4_handler(MBRBuf,strlen((char*)MBRBuf),&rc4_key);


4
、U盤插入計算機時的自動感知

LRESULT CRawDiskDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
        if ( WM_DEVICECHANGE == message && FALSE == bCopy )
        {
               //刷新設備列表
        }
        return CDialog::WindowProc(message, wParam, lParam);
}


后期改進

  1. 這樣就必須要求在電腦上有這個程序,所以在后期采用同樣的原理,將這個程序放在U盤里,在加密的時候實現對自身的屏蔽,這樣大大提高程序的易用性。
  2. 可以讓用戶輸入密碼,將密碼作為密鑰去加密和解密。

  3.這個只是對一個磁盤最初的512字節加密,后期可以通過對扇區的定位和計算,對目錄表及數據加密。

不要密碼也能進入win2003

1.當Win2003啟動到出現登錄提示界面時,可以按住鍵盤上的Ctrl+Shift復合鍵,將輸入法調出來;

2.用鼠標右鍵單擊輸入法工具條,從隨后出現的快捷菜單中,選擇“幫助”菜單項,再從下級菜單中執行“操作指南”命令;

3.在隨后出現的“輸入法操作指南”界面中,可以執行“打印”命令,這樣就能彈出一個標題為“打印主題”的窗口;在這里,我們可以選中其中的“打印選定主題”選項,再用鼠標單擊一下“確定”按鈕;這樣系統又會打開一個打印界面,選中該界面中的“常規”標簽,在對應的標簽頁面中,用鼠標雙擊“添加打印機”圖標;

4.在接著打開的打印機添加向導設置界面中,繼續單擊“下一步”按鈕,在隨后出現的畫面中,將“網絡打印機”選項選中,并繼續執行“下一步”命令;

5.將隨后界面中的“輸入打印機名,或者單擊下一步,瀏覽打印機”選項選中,然后在對應的文本框中輸入網絡打印機的具體名稱,例如“HP”,繼續用鼠標單擊“下一步”按鈕;

6.接著,屏幕上會出現一個“連接到打印機”的提示界面,該界面提示我們系統無法連接到指定打印機,此時我們可以用鼠標單擊該提示界面中的“幫助”按鈕;

7.在其后出現的Win2003系統窗口中,在執行“Web幫助”命令,并在打開的幫助界面的右邊子窗口中,單擊其中的一個超級鏈接,可以任意選擇;

8.單擊以后,系統就會自動彈出一個標題為“無法連接到服務器”的窗口,將鼠標移動到該窗口的地址欄中,刪除掉以前的信息,并直接輸入“C:”符號,單擊一下回車鍵;

9.隨后瀏覽界面就自動“變臉”為資源管理器界面了,單擊該界面右邊的下拉按鈕,從下拉列表中單擊“控制面板”選項,這樣就能將系統的控制面板窗口打開了;

10.找到該窗口的“用戶和密碼”圖標,并用鼠標雙擊之,在隨后的窗口中選中“用戶”標簽,并在對應的標簽頁面中,將其中的“Administrator”選項選中,再用鼠標單擊一下“設置密碼”按鈕;

11.在彈出的密碼設置框中,重新輸入一個容易記憶的密碼,最后單擊“確定”按鈕,就可以使密碼生效了。最后使用該密碼重新登錄試試.

Q:急:我的超級用戶密碼忘記了,求解決辦法

A:啟動/關機腳本:_(1)如果故障計算機使用FAT/FAT32文件系統,那可直接使用Win98引導盤引導.如果使用NTFS文件系統,可將故障計算機上的硬盤取下,以從盤模式掛接到其它的Win2000計算機上.下面的操作以后一種情況為準,假設現在故障計算機的system分區(通常是C:)在新的計算機上成為分區E:.

(2)編寫一個能恢復管理員密碼的批處理文件admin.bat,內容只需要一條"net user"命令即可.如下:

net user administrator 12345678

這兒我們假設當前的管理員是administrator,將它的密碼恢復為"12345678".將文件admin.bat保存到"E:\winnt\system32\GroupPolicy\Machine\Scripts\Startup"下,也就是故障計算機原來的"C:\winnt\system32\GroupPolicy\Machine\Scripts\Startup"下.

(3)編寫一個啟動/關機腳本配置文件scripts.ini,這個文件名是固定的,不能改變.內容如下:

[Startup]
0CmdLine=admin.bat
0Parameters=

將文件scripts.ini保存到"E:\winnt\system32\GroupPolicy\Machine\Scripts"下,也就是故障計算機原來的"C:\winnt\system32\GroupPolicy\Machine\Scripts"下.

(4)將硬盤恢復為主盤,接回原來的計算機,重新啟動,等待啟動腳本運行.啟動腳本運行結束管理員administrator的密碼就被恢復為"12345678".

(5)如果要新建一個管理員賬號,admin.bat文件的內容可以修改為:

net user admin 12345678 /add
net localgroup administrators admin /add

這樣一個名為"admin",密碼是"12345678"的管理員賬號就建立了.

這個方法不僅可以恢復獨立服務器上本地管理員密碼,也可以恢復Win2000域中域管理員的密碼.

WINDOWS程序,架構

   進行Windows程序設計,實際上是在進行一種對象導向的程序設計(OOP)。這一點在Windows中使用得最多的對象上表現最為明顯。這種對象正是Windows之所以命名為「Windows」的原因,它具有人格化的特征,甚至可能會在您的夢中出現,這就是那個叫做「窗口」的東西。


  桌面上最明顯的窗口就是應用程序窗口。這些窗口含有顯示程序名稱的標題列、菜單甚至可能還有工具列和滾動條。另一類窗口是對話框,它可以有標題列也可以沒有標題列。

  裝飾對話框表面的還有各式各樣的按鍵、單選按鈕、復選框、清單方塊、滾動條和文字輸入區域。其中每一個小的視覺對象都是一個窗口。更確切地說,這些都稱為「子窗口」或「控件窗口」或「子窗口控件」。


  作為對象,使用者會在屏幕上看到這些窗口,并通過鍵盤和鼠標直接與它們進行交互操作。更有趣的是,程序寫作者的觀點與使用者的觀點極其類似。窗口以「消息」的形式接收窗口的輸入,窗口也用消息與其它窗口通訊。對訊息的理解將是學習如何寫作Windows程序所必須越過的障礙之一。


  這有一個Windows的消息范例:我們知道,大多數的Windows程序都有大小合適的應用程序窗口。也就是說,您能夠通過鼠標拖動窗口的邊框來改變窗口的大小。通常,程序將通過改變窗口中的內容來響應這種大小的變化。您可能會猜測(并且您也是正確的),是Windows本身而不是應用程序在處理與使用者重新調整窗口大小相關的全部雜亂程序。由于應用程序能改變其顯示的樣子,所以它也「知道」窗口大小改變了。


  應用程序是如何知道使用者改變了窗口的大小的呢?由于程序寫作者習慣了往常的文字模式程序,操作系統沒有設置將此類消息通知給使用者的機制。問題的關鍵在于理解Windows所使用的架構。當使用者改變窗口的大小時,Window給程序發送一個消息指出新窗口的大小。然后程序就可以調整窗口中的內容,以響應大小的變化。

「Windows給程序發送消息。」我們希望讀者不要對這句話視而不見。它到底表達了什么意思呢?我們在這里討論的是程序代碼,而不是一個電子郵件系統。操作系統怎么給程序發送消息呢?

  其實,所謂「Windows給程序發送消息」,是指Windows呼叫程序中的一個函數,該函數的參數描述了這個特定消息。這種位于Windows程序中的函數稱為「窗口消息處理程序」。

  無疑,讀者對程序呼叫操作系統的做法是很熟悉的。例如,程序在打開磁盤文件時就要使用有關的系統呼叫。讀者所不習慣的,可能是操作系統呼叫程序,而這正是Windows對象導向架構的基礎。

  程序建立的每一個窗口都有相關的窗口消息處理程序。這個窗口消息處理程序是一個函數,既可以在程序中,也可以在動態鏈接庫中。Windows通過呼叫窗口消息處理程序來給窗口發送消息。窗口消息處理程序根據此消息進行處理,然后將控制傳回給Windows。


  更確切地說,窗口通常是在「窗口類別」的基礎上建立的。窗口類別標識了處理窗口消息的窗口消息處理程序。使用窗口類別使多個窗口能夠屬于同一個窗口類別,并使用同一個窗口消息處理程序。例如,所有Windows程序中的所有按鈕均依據同一個窗口類別。這個窗口類別與一個處理所有按鈕消息的窗口消息處理程序(位于Windows的動態鏈接庫中)聯結。

  在對象導向的程序設計中,對象是程序與數據的組合。窗口是一種對象,其程序是窗口消息處理程序。數據是窗口消息處理程序保存的信息和Windows為每個窗口以及系統中那個窗口類別保存的信息。


    窗口消息處理程序處理給窗口發送消息。這些消息經常是告知窗口,使用者正使用鍵盤或者鼠標進行輸入。這正是按鍵窗口知道它被「按下」的奧妙所在。在窗口大小改變,或者窗口表面需要重畫時,由其它消息通知窗口。

  Windows程序開始執行后,Windows為該程序建立一個「消息隊列」。這個消息隊列用來存放該程序可能建立的各種不同窗口的消息。程序中有一小段程序代碼,叫做「消息循環」,用來從隊列中取出消息,并且將它們發送給相應的窗口消息處理程序。有些消息直接發送給窗口消息處理程序,不用放入消息隊列中。

  如果您對這段Windows架構過于簡略的描述將信將疑,就讓我們去看看在實際的程序中,窗口、窗口類別、窗口消息處理程序、消息隊列、消息循環和窗口消息是如何相互配合的。這或許會對您有些幫

大學生IT創業計劃書

   若干年前,我們憧憬IT業,因為IT業神圣的,很多硅谷的故事給我們很多啟迪,IT業不僅可以創造無數富豪,而且其中很多都是年輕的學生,那時候IT就是一個神話……
    
    若干年后,我們進入IT業,發現原來IT沒有那么神秘。確實IT創造了很多神話,Yahoo!,Microsoft等是早期IT的神話,現在Google來了,中國的Baidu也上市了,造就了很多百萬富翁。中國納斯達克上市公司很多了,最早的是網易、新浪、搜狐,然后是前程無憂、攜程網、空中網、TOM、e龍、掌上靈通、金融界、分眾傳媒、德信無線、中芯國際、亞信科技、九城軟件、CDC(china doc com),現在的baidu。中國目前有18個納市上市公司,明年還有更多。這樣看的話現在的IT業前途是很光明,或許IT業在走向成熟。但是成熟的背后寓意著什么,一個不成熟的行業往往能造就很多天才,一旦這個行業走向成熟,那天才不好容易誕生了,想白手起家什么的,也困難。說到這里都沒有圍繞題目在轉,因為我想先把文章的背景說明下,然后再說明下自己一不是研究這個領域的專家,也不是搞互聯網的老手,自己只是一個個人站長,或者說還是一名本科大學生,在這里寫這篇文章,唯一一點就是自己還算在互聯網里學習了幾年,有了一點對IT業,互聯網行業自己的一點看法,于是就寫下來,大家可以看下,不知道有沒有可取之處。 大學生創業網


    現在搞真的很難了,如果你是學生的話,我不是在唬你。你以前可能聽說一個加拿大的小學生,9歲左右的時候,就靠互聯網掙了不少的財富,2000年他還隨加拿大總理訪華了,這個小孩子能不能成為比爾·蓋次第二我們這里不討論。這么小的孩子可以成為富翁,只有IT才能成就,但是現在在中國,你說可能嗎?反正暫時我沒有聽說過,以前有一個黑龍江漠河的神童,現在也不說了,結果怎么樣我也不知道。剛才說到搞IT難是因為現在IT需要的起點高了,我就拿互聯網一個方面說明,2000年以前的時候,做1-2張靜態網頁就可以掙2-3萬,會個動態網頁那是非常牛的。加拿大的那個小孩子就是靠做網頁掙錢的,阿里巴巴的馬云最初積累資金我覺得也是做網頁掙的,但是現在有了做網頁的工具了,不用一行一行寫代碼了。而且會做網頁的中國人太多了,會ASP、PHP、CGI、JPS、ASP.NET的都大有人在,中國現在有個人網站的人都數不勝數?,F在做網站門檻很低,但是很少能成功的。門檻低,但是需要的起點高。本身現在大學生自主創業追者眾成者寡,大學生創業很不容易。但是事在認為,相對而言,我感覺大學生如果要創業的話,選擇IT業的一些東西,起點是高了,對技術要求是很高,但是只要把握好方向后,堅持不懈還是能成功的。新東方的周承剛,很多喜歡新東方的同學都應該知道,他說了一句話我至今難忘,他說為什么俞敏洪成功了,前提是俞敏洪是當時他們班成績最差的,而現在原來他們班成績最好的幾個都給他打工,因為在這十年中俞敏洪一直在做同一件事情;百度成功了因為李彥宏一直堅持在做同一件事情,ChinaRen創始人陳一舟再次創業創辦“空中網”,然后也成功了。成功學的秘訣就是堅持。所以我覺得大學生IT創業,即使丁磊這樣的前輩都不贊成大學生創業,我還是覺得很有好處的。 大學生創業網


    先舉幾個例子,我自己身邊的朋友,他們有的現在已經畢業了,有的現在還是學生,但是起步都是從大學開始的,做的事業都是互聯網方面。雖然不是非常成功,但是還是值得我們廣大大學生IT創業借鑒的。個人網站站長開始建站的時候肯定喜歡在源碼下載站上轉悠,都知道中國站長站,我的朋友不是該站站長,但是也是源碼下載站,一個是源易網的站長(杭商院),一個是下吧的站長,現在網絡開始火了,這些代碼下載站也火了,流量也不小,網站收入也不少,肯定能養活站長。FlashKu的站長:碧落洞仙和納米,陜西的兩個學生,網站排名不錯,收入也可以。還有商務零八的岳貴,西南交大的,據說他發了,掙錢不少,廈門的站長大會他也去了,也算在圈子還是有一點的知名度的。還有華中科大學生創辦的5Q地帶,很多大學生朋友都知道。還有2000年清華大學的三位博士、三位碩士創辦的蔚藍書店。這些都算是值得我們學習的前輩。大學生IT創業是行得通的,但是還是應該注意下問題,下面我就談談個人的看法:

大學生創業網


一、找準目標 大學生創業網


    做IT互聯網的,很容易迷失自己,我從余世維老師那里聽到這樣一個比喻“中國的中關村建設是很失敗的,中關村其實就是一個村,因為里面的IT公司小農意識太強了:看到別人賣電腦好,大家都賣電腦;看到別人做通訊設備,大家都做通訊設備”,其實我們這個IT互聯網大圈子不也是一個村嗎?看到門戶網站成功了,無數人都想做門戶;看到音樂網站成功了,很多音樂網站就浮現;看到HAO123成功了,無數“HAO123”也跟著上來;現在網絡游戲很火,國內制作網絡游戲的公司大面積的出現。當然我所說的是一個大環境,不要說個人了,大公司都不好把握方向。對于個人或者大學生團隊,應該量力而行,什么能做,什么適合自己去做。若干年前我也失敗過,我看到黑龍江幾個大學生創辦了一個校園電子商務網站,是局域網內的,做盒飯生意,做得有聲有色的。我覺得我在技術方面各方面都不會比他們差哪里去的,于是我和同學合作,一起做起了校園電子商務網—巴巴哈,情況怎么樣呢?第一年還可以,不過確實很辛苦,因為從進貨到整理定單到發貨,全部的工作都是自己在做,而且很多交易都是網下進行的,商品的利潤也不是很高。到后來問題更嚴重,時間上已經不允許我再經營,很多外地訂單都不能及時送出。最后我總結了下,電子商務特別是B2C電子商務還是前衛的人士玩的東西,在我大學所在地區還沒有達到那種程度,一個學校里很少人愿意網上買東西,很少人會利用網絡來服務生活的。這是電子商務的困惑,也是互聯網的困惑,同時也是中國網民素質、網絡教育的困惑。大學生做事情最容易理想化,所以相當然的做事情的也很多,大學生創業失敗幾率大也是因為這個原因。

手動清除chcp.exe病毒 保護MSN的安全

  隨著即時通訊工具的強大,木馬病毒也加快了腳本,MSN早就成為了其通向第三方計算機感染跳越的平臺。在好友圈中,只要盜取一個MSN好友帳號或感染一臺用戶計算機,病毒即會伸出罪惡之手,將會在用戶MSN聊天時發送病毒信息。

    病毒分析
    該病毒屬于MSN蠕蟲變種,被感染的計算機會自動向MSN聯系人發送誘惑文字消息和帶毒壓縮包,當對方接收并打開帶毒壓縮包中的病毒文件時,系統即成為新的受害者,并因此嘗試感染另一臺計算機。病毒大小為434,176 字節,通過MSN聊天工具進行傳播。

    被感染的計算機,病毒首先會在系統目錄 %Windows%下生成含帶病毒源體的F0538_jpg.zip壓縮包,隨后病毒自身開始在計算機中的%Windows%目錄下創建副本chcp.exe 可執行文件,并在注冊表[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]分支下建立"chcp.exe"="%Windows%\chcp.exe"自啟動項目,然后病毒開始修改注冊分支[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]下的"SFCDisable"=dword:ffffff9d  和"SFCScan"=dword:00000000值,進行關閉系統文件保護,并且更改  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control]分支下的 "WaitToKillServiceTimeout"=的值為"7000",達到更改自動關閉進程等待時間的效果。

    完成上述后,病毒仍沒有安靜的等待,而是查找被感染的計算機中是否存在FTP目錄,如果有則將原正常程序改名為backup.ftp、backup.tftp并復制到%System%\microsoft目錄下,隨后在系統目錄%System%下寫入ftp.exe、tftp.exe、dllcache\tftp.exe、dllcache\ftp.exe可執行程序,做完一系列的手腳,病毒開始向MSN聯系人發送誘惑型文字消息,并夾帶毒包F0538_jpg.zip欺騙用戶打開。

   清除方法
    中了此毒的用戶也不要緊張,在了解了生存原理后要想清除該病毒也非難事,只要按照以下幾個步驟實施即可將病毒清除出界,讓系統中的MSN正常運行。

    一、首先要進入注冊表分支[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]下,將"chcp.exe"="%Windows%\chcp.exe"自建的隨機啟動項刪除,完成后重啟計算機。

    二、進入%Windows%\目錄下將病毒源體文件chcp.exe及F0538_jpg.zip壓縮包刪除。

    三、將目錄%System%下的FTP破壞代替程序ftp.exe、tftp.exe、dllcache\tftp.exe、dllcache\ftp.exe刪除,并將%System%\microsoft目錄下的backup.ftp、backup.tftp改回到目錄%System%下。

    四、刪除注冊表分支[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]下的"SFCDisable"=dword:00000000鍵值,恢復系統文件保護。

    五、最后將注冊表[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control]分支下的"WaitToKillServiceTimeout"=改為"20000" 從而恢復系統自動關閉進程等待時間的默認配置。
           
    筆者按:在MSN病毒中變體有很多種如:MSN機器人、MSN小丑、MSN性感相冊等,其原理都是利用MSN作為平臺在同聊友溝通的同時發送病毒信息,通過MSN好友關系欺騙用戶點擊,然后再次傳播,從而形成強大的傳播途徑。為了更好的處理此類病毒,這里建議用戶加強計算機的先期保護如:開啟殺軟定時升庫,安裝安全類軟件,不定期打入系統補丁等,并且多了解每日病毒動態,即時作好防范工作即可,一但用戶被感染時應立即作出回應,利用手工刪除或下載相應的專殺工具進行清理,以免讓更多的用戶成為受害者。

用PHP輸出靜態頁面的兩種方法

        用PHP輸出靜態頁面的方法,就我所知道的,有2種,一種是利用模板技術,另一種是用ob系列函數。兩種方法,看起來都差不多,但是實際上,卻是不同的。

第一種:利用模板。目前PHP的模板可以說是很多了,有功能強大的smarty,還有簡單易用的smarttemplate等。它們每一種模板,都有一個獲取輸出內容的函數。我們生成靜態頁面的方法,就是利用了這個函數。用這個方法的優點是,代碼比較清晰,可讀性好。

這里我用smarty做例子,說明如何生成靜態頁

<?php
require('smarty/Smarty.class.php');
$t = new Smarty;
$t->assign("title","Hello World!");
$content = $t->fetch("templates/index.htm");
//這里的 fetch() 就是獲取輸出內容的函數,現在$content變量里面,就是要顯示的內容了
$fp = fopen("archives/2005/05/19/0001.Html", "w");
fwrite($fp, $content);
fclose($fp);
?>
第二種方法:利用ob系列的函數。這里用到的函數主要是 ob_start(), ob_end_flush(), ob_get_content(),其中ob_start()是打開瀏覽器緩沖區的意思,打開緩沖后,所有來自PHP程序的非文件頭信息均不會發送,而是保存在內部緩沖區,直到你使用了ob_end_flush().而這里最重要的一個函數,就是ob_get_contents(),這個函數的作用是獲取緩沖區的內容,相當于上面的那個fetch(),道理一樣的。代碼:

<?php
ob_start();
echo "Hello World!";
$content = ob_get_contents();//取得php頁面輸出的全部內容
$fp = fopen("archives/2005/05/19/0001.html", "w");
fwrite($fp, $content);
fclose($fp);
?>