2010/08/30

C語言巨集macro 介紹與幾個sample寫法

例: 常見的 ## (連接), #@ (字元化), # (字串化)

1. x ## y :表示x連接y, 注意x與y需同一型態
2. #@ x :據說可以字元化, 但這是不常用的語法, 而且我編譯會出現error: ‘#’ is not followed by a macro parameter
3. # x :表示將x字串化

#define beConn(x, y)	x ## y//#define ToChar(x)       #@ x   #define beStr(x)		# xint main(void) {	int num = beConn(12, 34);	printf("beConn(12, 34) : %d \n", num); //	char c = ToChar(1);  //	printf("beChar(1) : %c \n", c);		printf("beStr(I am string) : %s \n", beStr(I am string));	return 0;}

輸出:
beConn(12, 34) : 1234
beStr(I am string) : I am string

例: 透過 #define 可以變成 function

定義更美觀易讀的語法,    ” \” 表示視為同一行

#define ATK_CHK(list, cb, skb, dir)        \{        \int atk;        \\for (atk = 0 ; list[dir][atk] != EMPTY_VALUE ; atk++) {        \if(cb[list[dir][atk]] && cb[list[dir][atk]](skb, (struct iphdr *)skb->nh.iph) == IS_ATTACK)        \return AEGIS_BLOCK;            \}        \}

例: 透過 #define 與內嵌X()變化, 做出enum與之字串化

延伸閱讀:
C語言巨集macro: 將enum的integer變數 印出變成string

1. 假設這段程式碼可用於pwr_state.h檔案 當作宣告 stringify_PWR_state_t()

#pragma once#define PWR_STATES \X(PWR_STATE_ENABLED, 0) \X(PWR_STATE_DISABLED_REBOOT_REQUIRED, 1) \X(PWR_STATE_DISABLED_MANUAL_ENABLE, 2) \X(PWR_STATE_DISABLED, 3) \X(PWR_STATE_PSW_NOT_AVAILABLE, 4) \X(PWR_STATE_UNKNOWN, -1)#define X(x_state, x_value) x_state = x_value,typedef enum { PWR_STATES } pwr_state_t;#undef Xconst char* stringify_pwr_state_t(pwr_state_t state);

2. 然後更改一下x()的定義, 假設在pwr_state.c檔案

#include #define X(x_state, x_value) case x_state: return # x_state;const char* stringify_pwr_state_t(pwr_state_t state){    switch (state) {        PWR_STATES    default:        return "Unknown state.";    };}#undef X

ubuntu沒有root帳號密碼

點選工具列的 系統>管理>登錄畫面,然後點選標籤 – “安全性” ,然後找到 “允許本地端系統管理員登入”,並勾選
接下來開啟”終端機”,輸入sudo su,輸入您自己密碼,在輸入passwd root,設定您想要的密碼,就可以登入root帳戶了!!

駭客攻擊行為的特徵分析及反攻擊技術

駭客攻擊行為的特徵分析及反攻擊技術

要想更好的保護網路不受駭客的攻擊,就必須對駭客的攻擊方法、攻擊原理、攻擊過程有深入的、詳細的瞭解,只有這樣才能更有效、更具有針對性的進行主動防護。下面通過對駭客攻擊方法的特徵分析,來研究如何對駭客攻擊行為進行檢測與防禦。

一、反攻擊技術的核心問題

反攻擊技術(入侵檢測技術)的核心問題是如何截獲所有的網路資訊。目前主要是通過兩種途徑來獲取資訊,一種是通過網路偵聽的途徑(如 Sniffer,Vpacket等程式)來獲取所有的網路資訊(資料包資訊,網路流量資訊、網路狀態資訊、網路管理資訊等),這既是駭客進行攻擊的必然途 徑,也是進行反攻擊的必要途徑;另一種是通過對作業系統和應用程式的系統日誌進行分析,來發現入侵行為和系統潛在的安全漏洞。

二、駭客攻擊的主要方式

駭客對網路的攻擊方式是多種多樣的,一般來講,攻擊總是利用“系統配置的缺陷”,“作業系統的安全漏洞”或“通信協議的安全漏洞”來進行的。到目前為 止,已經發現的攻擊方式超過2000種,其中對絕大部分駭客攻擊手段已經有相應的解決方法,這些攻擊大概可以劃分為以下六類:

1.拒絕服務攻擊:

一般情況下,拒絕服務攻擊是通過使被攻擊物件(通常是工作站或重要伺服器)的系統關鍵資源超載,從而使被攻擊物件停止部分或全部服務。目前已知的拒絕 服務攻擊就有幾百種,它是最基本的入侵攻擊手段,也是最難對付的入侵攻擊之一,典型示例有SYN Flood攻擊、Ping Flood攻擊、Land攻擊、WinNuke攻擊等。

2.非授權訪問嘗試:

是攻擊者對被保護檔案進行讀、寫或執行的嘗試,也包括為獲得被保護訪問許可權所做的嘗試。

3.預探測攻擊:

在連續的非授權訪問嘗試過程中,攻擊者為了獲得網路內部的資訊及網路周圍的資訊,通常使用這種攻擊嘗試,典型示例包括SATAN掃描、埠掃描和IP半途掃描等。

4.可疑活動:

是通常定義的“標準”網路通信範疇之外的活動,也可以指網路上不希望有的活動,如IP Unknown Protocol和Duplicate IP Address事件等。

5.協議解碼:
協議解碼可用於以上任何一種非期望的方法中,網路或安全管理員需要進行解碼工作,並獲得相應的結果,解碼後的協定資訊可能表明期望的活動,如FTU User和Portmapper Proxy等解碼方式。

6.系統代理攻擊:

這種攻擊通常是針對單個主機發起的,而並非整個網路,通過RealSecure系統代理可以對它們進行監視。

三、駭客攻擊行為的特徵分析與反攻擊技術

入侵檢測的最基本手段是採用模式匹配的方法來發現入侵攻擊行為,要有效的進反攻擊首先必須瞭解入侵的原理和工作機理,只有這樣才能做到知己知彼,從而有效的防止入侵攻擊行為的發生。下面我們針對幾種典型的入侵攻擊進行分析,並提出相應的對策。

1.Land攻擊

攻擊類型and攻擊是一種拒絕服務攻擊。

攻擊特徵:用於Land攻擊的資料包中的源位址和目標位址是相同的,因為當作業系統接收到這類資料包時,不知道該如何處理堆疊中通信源位址和目的地址相同的這種情況,或者迴圈發送和接收該資料包,消耗大量的系統資源,從而有可能造成系統崩潰或死機等現象。

檢測方法:判斷網路資料包的源位址和目標位址是否相同。

反攻擊方法:適當配置防火牆設備或過濾路由器的過濾規則就可以防止這種攻擊行為(一般是丟棄該資料包),並對這種攻擊進行審計(記錄事件發生的時間,源主機和目標主機的MAC位址和IP位址)。

2.TCP SYN攻擊

攻擊類型:TCP SYN攻擊是一種拒絕服務攻擊。

攻擊特徵:它是利用TCP客戶機與伺服器之間三次握手過程的缺陷來進行的。攻擊者通過偽造源IP位址向被攻擊者發送大量的SYN資料包,當被攻擊主機 接收到大量的SYN資料包時,需要使用大量的緩存來處理這些連接,並將SYN ACK資料包發送回錯誤的IP位址,並一直等待ACK資料包的回應,最終導致緩存用完,不能再處理其他合法的SYN連接,即不能對外提供正常服務。

檢測方法:檢查單位時間內收到的SYN連接否收超過系統設定的值。

反攻擊方法:當接收到大量的SYN資料包時,通知防火牆阻斷連接請求或丟棄這些資料包,並進行系統審計。

3.Ping Of Death攻擊

攻擊類型ing Of Death攻擊是一種拒絕服務攻擊。

攻擊特徵:該攻擊資料包大於65535個位元組。由於部分作業系統接收到長度大於65535位元組的資料包時,就會造成記憶體溢出、系統崩潰、重啟、內核失敗等後果,從而達到攻擊的目的。

檢測方法:判斷資料包的大小是否大於65535個位元組。

反攻擊方法:使用新的補丁程式,當收到大於65535個位元組的資料包時,丟棄該資料包,並進行系統審計。

4.WinNuke攻擊

攻擊類型:WinNuke攻擊是一種拒絕服務攻擊。

攻擊特徵:WinNuke攻擊又稱帶外傳輸攻擊,它的特徵是攻擊目標埠,被攻擊的目標埠通常是139、138、137、113、53,而且URG位設為“1”,即緊急模式。

檢測方法:判斷資料包目標埠是否為139、138、137等,並判斷URG位是否為“1”。
反攻擊方法:適當配置防火牆設備或過濾路由器就可以防止這種攻擊手段(丟棄該資料包),並對這種攻擊進行審計(記錄事件發生的時間,源主機和目標主機的MAC位址和IP位址MAC)。

帶外傳輸: out-of-band

11

ref: 用異常行為偵測以防禦無線隨意網路上的蟲洞攻擊

URG(Urgent):若為 1 則代表該封包為緊急封包, 接收端應該要緊急處理

5.Teardrop攻擊
攻擊類型:Teardrop攻擊是一種拒絕服務攻擊。

攻擊特徵:Teardrop是基於UDP的病態分片資料包的攻擊方法,其工作原理是向被攻擊者發送多個分片的IP包(IP分片資料包中包括該分片資料 包屬於哪個資料包以及在資料包中的位置等資訊),某些作業系統收到含有重疊偏移的偽造分片資料包時將會出現系統崩潰、重啟等現象。

檢測方法:對接收到的分片資料包進行分析,計算資料包的片偏移量(Offset)是否有誤。
反攻擊方法:添加系統補丁程式,丟棄收到的病態分片資料包並對這種攻擊進行審計。

6.TCP/UDP埠掃描

攻擊類型:TCP/UDP埠掃描是一種預探測攻擊。

攻擊特徵:對被攻擊主機的不同埠發送TCP或UDP連接請求,探測被攻擊物件執行的服務類型。

檢測方法:統計外界對系統埠的連接請求,特別是對21、23、25、53、80、8000、8080等以外的非常用埠的連接請求。

反攻擊方法:當收到多個TCP/UDP資料包對異常埠的連接請求時,通知防火牆阻斷連接請求,並對攻擊者的IP位址和MAC位址進行審計。

對於某些較複雜的入侵攻擊行為(如分散式攻擊、組合攻擊)不但需要採用模式匹配的方法,還需要利用狀態轉移、網路拓撲結構等方法來進行入侵檢測。

四、入侵檢測系統的幾點思考

從性能上講,入侵檢測系統面臨的一個矛盾就是系統性能與功能的折衷,即對資料進行全面複雜的檢驗構成了對系統即時性要求很大的挑戰。

從技術上講,入侵檢測系統存在一些亟待解決的問題,主要表現在以下幾個方面:

1.如何識別“大規模的組合式、分散式的入侵攻擊”目前還沒有較好的方法和成熟的解決方案。從Yahoo等著名ICP的攻擊事件中,我們瞭解到安全問 題日漸突出,攻擊者的水準在不斷地提高,加上日趨成熟多樣的攻擊工具,以及越來越複雜的攻擊手法,使入侵檢測系統必須不斷跟蹤最新的安全技術。

2.網路入侵檢測系統通過匹配網路資料包發現攻擊行為,入侵檢測系統往往假設攻擊資訊是明文傳輸的,因此對資訊的改變或重新編碼就可能騙過入侵檢測系統的檢測,因此字串匹配的方法對於加密過的資料包就顯得無能為力。

3.網路設備越來越複雜、越來越多樣化就要求入侵檢測系統能有所定制,以適應更多的環境的要求。

4.對入侵檢測系統的評價還沒有客觀的標準,標準的不統一使得入侵檢測系統之間不易互聯。入侵檢測系統是一項新興技術,隨著技術的發展和對新攻擊識別的增加,入侵檢測系統需要不斷的升級才能保證網路的安全性。

5.採用不恰當的自動反應同樣會給入侵檢測系統造成風險。入侵檢測系統通常可以與防火牆結合在一起工作,當入侵檢測系統發現攻擊行為時,過濾掉所有來 自攻擊者的IP資料包,當一個攻擊者假冒大量不同的IP進行模擬攻擊時,入侵檢測系統自動配置防火牆將這些實際上並沒有進行任何攻擊的位址都過濾掉,於是 造成新的拒絕服務訪問。

6.對IDS自身的攻擊。與其他系統一樣,IDS本身也存在安全漏洞,若對IDS攻擊成功,則導致報警失靈,入侵者在其後的行為將無法被記錄,因此要求系統應該採取多種安全防護手段。

7.隨著網路的帶寬的不斷增加,如何開發基於高速網路的檢測器(事件分析器)仍然存在很多技術上的困難。

入侵檢測系統作為網路安全關鍵性測防系統,具有很多值得進一步深入研究的方面,有待于我們進一步完善,為今後的網路發展提供有效的安全手段。

from        http://www.yase.com.tw/archiver/tid-532.html

2010/08/24

製造封包 tool 推薦: Colasoft Packet Builder

若是各位朋友需要製造封包, 可以Colasoft Packet Builder設定封包內容TCP, UDP, IP, ARP的封包 , 還load一些capture packets的紀錄檔(sniffer/wireshark),修改過後再產生packets

下載Colasoft Packet Builder

http://www.colasoft.com/packet_builder/

中文使用介紹

http://daydreamer.idv.tw/rewrite.php/read-61.html


Heal the world

我還是很喜歡這首歌
Heal the world
即使這首歌裡面聽不見michael 常用的句尾嗚呼~和黑耶~
但是從歌詞與旋律中仍可以聽見他的愛心與無私

我應該也是因為他的死去而更透過網路去了解這一位傳奇人
就是新聞裡面講的新一代網路歌迷

以前只是知道MJ
卻不曾真正認識他

2010/08/23

The going


People always go to some place full of happiness and love, at least one safe place. That is what I believe and I think it should be, because you will never like to talk to someone you dislike and go to someplace you feel uncomfortable. Of course, there are lots of people don’t think so. Anyway, this article must be the most boring one. : )

2010/08/18

linux C -判斷檔案是否存在

判斷檔案是否存在, 提供以下API (linux C)

/**
* @brief check file existing
*
* @param fname – file name to check
* @return int – 0: not exist; 1: exist
*/
int util_file_exist(char *fname)
{
struct stat fstat;

if (lstat(fname,&fstat)==-1)
return 0;
if (S_ISREG(fstat.st_mode))
return 1;
return 0;
}

順便一提, linux C 是一本好用的工具書! 裡面列舉出大部分linux C的API與簡易範例與說明!

2010/08/13

從硬體元件讀出資料到你期望的資料結構

範例架構:

int read_from_eeprom(struct eeprom *e, productBoardInfo *pBoardInfo)
{
int ch, i;
int addr = 0;
char *p = NULL;
/* productBoardInfo 是你期望的資料結構 */
char ReadBuffer[sizeof(productBoardInfo)];

/* 從硬體元件讀出資料, size為資料結構的大小 */
for (i=0; i 0x7E) )
*(p+i) = 0x20;
}

/* 透過memcpy將讀出來的資料給你期望資料結構的指標pBoardInfo */
memcpy(pBoardInfo, &ReadBuffer[0], sizeof(productBoardInfo));

return 0;

}

2010/08/12

比對工具- Beyond Compare

對於軟體開發者也就是軟體工程師, 比較內容是相當重要的, 畢竟若是修改過的部分與原先的部份需要每一行透過人工去檢視是很沒效率的! 這裡提供大家一套軟體 Beyond Compare

Beyond Compare 是一個綜合的比對工具。 可比對的對象包括純文字檔案、資料匣、zip 壓縮檔案、FTP 站台,等等。 您可以使用它管理您的原始檔、保持比對資料匣同步、比對程式的輸出結果、以及驗證所燒入光碟副本的精確度。

雖然軟體本身能夠支援自動化功能,Beyond Compare 的主要目標還是幫助您詳盡的分析差異之處,並且對它們進行詳盡的處理。 軟體內部包含了許多檔案和資料匣命令動作。

Beyond Compare 把它比對區分為檔案或資料匣。 Beyond Compare 並不僅限於進行本地端檔案和資料匣的比對,它還可以對區域網路和 FTP 上的資料匣和檔案進行比對。

在 Beyond Compare 對檔案的顯示方面,帶有資料匣性質的檔案,比如 ZIP 檔案和 CAB 檔案,會被以資料匣進行處理。  Beyond Compare 也能夠產生類似資料匣狀態的檔案,叫做 “比對摘要檔案”。  比對摘要檔案是資料匣在某一特定時間所包含內容的影像,但比對摘要檔案並不包含資料匣的實際子資料匣或檔案。