2014-08-30 30 views
0

我有一個應用程序從服務器上下載文件,以tcp數據包的形式接收文件,我想在服務器上找到文件的路徑。隨着wireshark我在第一個數據包中讀取一些信息,如日期,域名,文件名和路徑我讀path=/,但它不是在domain.com/filename(404)。有什麼辦法可以獲得文件在服務器上的真實路徑嗎?從tcp數據包獲取文件路徑

編輯:

所有我發現,在第一分組可理解:

HTTP/1.1 200 OK 
Date: Sat, 30 Aug 2014 14:35:55 GMT 
Server: Apache/2.2.3 (CentOS) 
X-Powered-By: PHP/5.3.24 
Set-Cookie: frontend=m90hqgtsu70hk9pprd39sllqk4; expires=Sat, 30-Aug-2014 25:35:55 GMT; path=/; domain=www.exaple.com; HttpOnly 
Content-Disposition: attachment; filename="xxx.y" 
Content-Length: 46458848 
Connection: close 
Content-Type: application/octet-stream 

請求:

GET /index.php/rest/server?method=download&sessionId=xxx&[email protected]&deviceToken=xxx&sku=filename&version=2 
HTTP/1.1 
Connection: Keep-Alive 
Accept Encoding: gzip 
Accept-Language: it-IT,en,* 
User-Agent: Mozilla/5.0 
Host: www.domain.com 
+0

您使用什麼協議下載文件?信息包實際上是什麼樣的?你說這個數據包有'domain','path'和'filename'組件,你試過簡單地把它們組合在一起嗎? – 2014-08-30 16:15:56

+0

我沒有寫應用程序,所以我不知道它的工作原理。現在我會在這個可讀的包中讀到所有我讀到的問題。正如我所說,我試圖結合域,路徑和文件名,但它不存在(404)。 – Vitto 2014-08-30 16:25:12

回答

1

該文件正被使用HTTP下載(讀RFC 2616)。你正在看的數據包是一個響應。你正在尋找的域和路徑信息不響應,它是代替請求:

GET /index.php/rest/server?method=download&sessionId=xxx&[email protected]&deviceToken=xxx&sku=filename&version=2 HTTP/1.1 
Connection: Keep-Alive 
Accept Encoding: gzip 
Accept-Language: it-IT,en,* 
User-Agent: Mozilla/5.0 
Host: www.domain.com 

所以請求文件的URL會http://www.domain.com/index.php/rest/server?method=download&sessionId=xxx&[email protected]&deviceToken=xxx&sku=filename&version=2

您在響應中看到的filename是文件的實際文件名。但並非所有回覆都會包含這樣一個文件名,所以請爲此做好準備。如果沒有Content-Disposition標頭(或它沒有filename屬性),請在Content-Type標頭中查找name屬性。如果沒有,則必須解析請求URL(請參閱RFC 3986),在其Path組件(在上面的URL中,即/index.php/rest/server)中查找文件名。

您在響應中看到的domainpath片段根本與文件無關。它們屬於一個cookie(見RFC 6265),用於在HTTP請求之間保存服務器端數據。

+0

感謝您的回答,不幸的是,在請求中我沒有看到文件路徑,只有文件名,這是一個請求到一個PHP頁面 – Vitto 2014-08-30 17:06:56

+0

我向你保證,請求確實提供了足夠的信息來重建請求的URL文件。並不是所有的URL都有完整的路徑/文件名,但是沒關係。 URL仍然有效,服務器知道如何解釋它,如果它提供了一個文件,響應將會描述它(通常不是它的位置 - 儘管HTTP確實定義了一個有時使用的Location:標頭) 。如果您需要更多幫助,請顯示HTTP請求。 – 2014-08-30 17:11:43

+0

在php請求中有一些參數,我認爲服務器檢查它們,然後返回文件,如果它們是正確的。爲此我想直接訪問該文件,但現在我認爲這是不可能的 – Vitto 2014-08-30 17:14:11

0

如果服務器不主動提供您正在查找的路徑,則無法找出。它發送的文件甚至可能不是,而是磁盤上的。它可能會生成緩存在應用程序內存中的數據或數據。

如果響應不包含路徑(並且這不太可能,因爲沒有服務器,我知道會發送它),您無法做任何事情來找到它。