2013-11-27 50 views
0

HTTP協議中包含的所有的TCP數據包的數據部分。解析HTTP報頭的一個子集,以確定主機Web地址

作爲一個任務,我需要解析HTTP headerfields(對於這個問題,讓只考慮主網頁地址的目的),僅僅使用了字符串解析函數,我不能使用任何現有的庫來做到這一點。我試圖找到HTTP頭的按位分割,但失敗了。我現在真的不知道該怎麼做。有什麼建議麼?

謝謝您事先

我已經做了提取以太網,IP和TCP報頭信息,並以十六進制形式已經解析數據,即

數據

48 54 54 50 2F 31 2E 31 20 33 30 34 20 4E 6F 74   HTTP/1.1 304 Not 
    20 4D 6F 64 69 66 69 65 64 0D 0A 58 2D 43 6F 6E   Modified..X-Con 
    74 65 6E 74 2D 54 79 70 65 2D 4F 70 74 69 6F 6E   tent-Type-Option 
    73 3A 20 6E 6F 73 6E 69 66 66 0D 0A 44 61 74 65   s: nosniff..Date 
    3A 20 54 68 75 2C 20 30 31 20 44 65 63 20 32 30   : Thu, 01 Dec 20 
    31 31 20 31 33 3A 31 36 3A 34 30 20 47 4D 54 0D   11 13:16:40 GMT. 
    0A 53 65 72 76 65 72 3A 20 73 66 66 65 0D 0A 58   .Server: sffe..X 
    2D 58 53 53 2D 50 72 6F 74 65 63 74 69 6F 6E 3A   -XSS-Protection: 
    20 31 3B 20 6D 6F 64 65 3D 62 6C 6F 63 6B 0D 0A   1; mode=block.. 
    0D 0A      
          .. 

中東和北非地區已顯示欺騙分離HTTP頭字段。但要做到這一點,我需要將我的數據有效載荷轉換爲字符串。我試着做以下方式:

​​

這種打印出一個字符串,但大多是小廣場,而不是charachters :(

+0

你是什麼意思「HTTP標頭的按位表示」? – Barmar

+0

像TCP表頭一樣分割在這裏http://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure – maximilliano

+0

改變表示爲分割的問題,這樣做更有意義,對不起 – maximilliano

回答

1

我覺得這是一個HTTP標頭不按位分割的HTTP ,每頭用 「\ r \ n」 結束,因此,所有你需要的是尋找下一個 「\ r \ n」,並把它挑出來

喜歡的東西:。

char httpRe[] ="GET/HTTP/1.1\r\nHost: http://stackoverflow.com/\r\nReferer: https://www.google.com/\r\n\r\n"; 
char * parser = strtok (httpRe,"\r\n"); 
while (parser != NULL){ 
    printf ("%s\n",parser); 
    parser = strtok (NULL, "\r\n"); 
} 

這是什麼你在找什麼?

+1

葉,謝謝!只是讓我測試答案 – maximilliano

+0

請讓我知道成功或失敗。 – MeNa

+0

你的代碼工作,但現在我努力將數據從十六進制轉換爲字符串,擴展我的問題 – maximilliano

相關問題