A. TFTP協議的內容
TFTP協議
1. 目的
TFTP是一個傳輸文件的簡單協議,它其於UDP協議而實現,但是我們也不能確定有些TFTP協議是基於其它傳輸協議完成的。此協議設計的時候是進行小文件傳輸的。因此它不具備通常的FTP的許多功能,它只能從文件伺服器上獲得或寫入文件,不能列出目錄,不進行認證,它傳輸8位數據。傳輸中有三種模式:netascii,這是8位的ASCII碼形式,另一種是octet,這是8位源數據類型;最後一種mail已經不再支持,它將返回的數據直接返回給用戶而不是保存為文件。
2. 概況
任何傳輸起自一個讀取或寫入文件的請求,這個請求也是連接請求。如果伺服器批准此請求,則伺服器打開連接,數據以定長512位元組傳輸。每個數據包包括一塊數據,伺服器發出下一個數據包以前必須得到客戶對上一個數據包的確認。如果一個數據包的大小小於512位元組,則表示傳輸結構。如果數據包在傳輸過程中丟失,發出方會在超時後重新傳輸最後一個未被確認的數據包。通信的雙方都是數據的發出者與接收者,一方傳輸數據接收應答,另一方發出應答接收數據。大部分的錯誤會導致連接中斷,錯誤由一個錯誤的數據包引起。這個包不會被確認,也不會被重新發送,因此另一方無法接收到。如果錯誤包丟失,則使用超時機制。錯誤主要是由下面三種情況引起的:不能滿足請求,收到的數據包內容錯誤,而這種錯誤不能由延時或重發解釋,對需要資源的訪問丟失(如硬碟滿)。TFTP只在一種情況下不中斷連接,這種情況是源埠不正確,在這種情況下,指示錯誤的包會被發送到源機。這個協議限制很多,這是都是為了實現起來比較方便而進行的。
3. 與其它協議的聯系
因為TFTP使用UDP,而UDP使用IP,IP可以還使用其它本地通信方法。因此一個TFTP包中會有以下幾段:本地媒介頭,IP頭,數據報頭,TFTP頭,剩下的就是TFTP數據了。TFTP在IP頭中不指定任何數據,但是它使用UDP中的源和目標埠以及包長度域。由TFTP使用的包標記(TID)在這里被用做埠,因此TID必須介於0到65,535之間。對它的初始化我們在後面討論。TFTP頭中包括兩上位元組的操作碼,這個碼指出了包的類型下面我們看看大體上的TFTP包格式,相關的內容我們在後面的章節中進行討論。
---------------------------------------------------
| Local Medium | Internet | Datagram | TFTP |
---------------------------------------------------
圖3-1: 包頭次序
4. 初始連接
初始連接時候需要發出WRQ(請求寫入遠程系統)或RRQ(請求讀取遠程系統),收到一個確定應答,一個確定可以寫出的包或應該讀取的第一塊數據。通常確認包包括要確認的包的包號,每個數據包都與一個塊號相對應,塊號從1開始而且是連續的。因此對於寫入請求的確定是一個比較特殊的情況,因此它的包的包號是0。如果收到的包是一個錯誤的包,則這個請求被拒絕。創建連接時,通信雙方隨機選擇一個TID,因此是隨機選擇的,因此兩次選擇同一個ID的可能性就很小了。每個包包括兩個TID,發送者ID和接收者ID。這些ID用於在UDP通信時選擇埠,請求主機選擇ID的方法上面已經說過了,在第一次請求的時候它會將請求發到TID 69,也就是伺服器的69埠上。應答時,伺服器使用一個選擇好的TID作為源TID,並用上一個包中的TID作為目的ID進行發送。這兩個被選擇的ID在隨後的通信中會被一直使用。下例是一個寫入的例子,其中WRQ,ACK和DATA代表寫入請求,確認和數據。
1. 主機A向主機B發出WRQ,其中埠為69
2. B機向A機發出ACK,塊號為0,包括B和A的TID
此時連接建立,第一個數據包以序列號1從主機開始發出。以後兩台主機要保證以開始時確定的TID進行通信。如果源ID與原來確定的ID不一樣,這個包會被認識為發送到了錯誤的地址而被拋棄。錯誤的包是被發送到正確埠的,但是包本身有錯誤。設想發送方發出一個請求,這個請求在網路的那個設備中被復製成兩個包,接收方先後接收到兩個包。接收方會認為為這是兩個獨立的請求,會返回兩個應答。當這兩個應答其中之一被接收到時,連接已經建立。第二個應答再到達時,這個包會被拋棄,而不會因為接收到第二個應答包而導致第一個建立的連接失敗。
5. TFTP包
TFTP支持五種類型的包,我們在以上已經說明這五種類型的包:
opcode operation
1 Read request (RRQ)
2 Write request (WRQ)
3 Data (DATA)
4 Acknowledgment (ACK)
5 Error (ERROR)
包頭中包括了這個包所指定的操作碼。
2 bytes string 1 byte string 1 byte
------------------------------------------------
| Opcode | Filename | 0 | Mode | 0 |
------------------------------------------------
Figure 5-1: RRQ/WRQ包
RRQ和WRQ包(代碼分別為1和2)的格式如上所示。文件名是NETASCII碼字元,以0結束。 而MODE域包括了字元串"netascii","octet"或"mail",名稱不分大小寫。接收到NETASCII格式數據的主機必須將數據轉換為本地格式。OCTET模式用於傳輸文件,這種文件在源機上以8位格式存儲。假設每個機器都存在一個8位的格式,這樣的假設是最一般的。比如DEC-20,這是一種36位機,我們可以假設它是4個8位外加另外4位而構成。如果機器收到OCTET格式文件,返回時必須與原來文件完全一樣。在使用MAIL模式時,用戶可以在FILE處使用接收人地址,這個地址可以是用戶名或用戶名@主機的形式,如果是後一種形式,允許主機使用電子郵件傳輸此文件。如果使用MAIL類型,包必須以WRQ開始,否則它與NETASCII完全一樣。我們的討論建立在發送方和接收方都在相同模式的情況下,但是雙方可以以不同的模式進行傳輸。例如一個機器可以是一台存儲伺服器,這樣一台伺服器需要將NETASCII格式轉換為自己的格式。另外,我們可以設想DEC-20這種機器,它使用36位字長,用戶這邊可以使用特殊的機制一次讀取36位,而伺服器卻可以仍然使用8位格式。在這兩種情況下,我們看到了兩台機器使用不同格式的情況。可以在兩台主機間定義其它的傳輸方式,但是定義要小心,因為這種傳輸方式不為人知,而且也沒有權威機構為其指定名稱或定義它的模式。
2 bytes 2 bytes n bytes
----------------------------------
| Opcode | Block # | Data |
----------------------------------
Figure 5-2: DATA包
數據在數據包中傳輸,其格式如上圖所示。數據包的OP碼為3,它還包括有一個數據塊號和數據。數據塊號域從1開始編碼,每個數據塊加1,這樣接收方可以確定這個包是新數據還是已經接收過的數據。數據域從0位元組到512位元組。如果數據域是512位元組則它不是最後一個包,如果小於512位元組則表示這個包是最後一個包。除了ACK和用於中斷的包外,其它的包均得到確認。發出新的數據包等於確認上次的包。WRQ和DATA包由ACK或ERROR數據包確認,而RRQ數據包由DATA或ERROR數據包確認。下圖即是一個ACK包,操作碼為4。其中的包號為要確認的數據包的包號。
2 bytes 2 bytes
---------------------
| Opcode | Block # |
---------------------
Figure 5-3: ACK包
WRQ數據包被ACK數據包確認,WRQ數據包的包號為0。
2 bytes 2 bytes string 1 byte
-----------------------------------------
| Opcode | ErrorCode | ErrMsg | 0 |
-----------------------------------------
Figure 5-4: ERROR包
一個ERROR包,它的操作碼是5,它的格式如上所示。此包可以被其它任何類型的包確認。錯誤碼指定錯誤的類型。錯誤的值和錯誤的意義在附錄中。錯誤信息是供程序員使用的。
6. 正常終止
傳輸的結束由DATA數據標記,其包括0-511個字元。這個包可以被其它數據包確認。接收方在發出對最後數據包的確認後可以斷開連接,當然,適當的等待是比較好的,如果最後的確定包丟失可以再次傳輸。如果發出確認後仍然收到最後數據包,可以確定最後的確認丟失。發送最後一個DATA包的主機必須等待對此包的確認或超時。如果響應是ACK,傳輸完成。如果發送方超時並不準備重新發送並且接收方有問題或網路有問題時,發送也正常結束。當然實現時也可以是非正常結束,但無論如何連接都將被關閉。
7. 早終結
如果請求不能被滿足,或者在傳輸中發生錯誤,需要發送ERROR包。這僅是一種傳輸友好的方式,這種包不會被確認也不會被重新傳輸,因此這種包可能永遠不會被接收到。因此需要用超時來偵測錯誤。
I. 附錄
包頭的次序
2 bytes
----------------------------------------------------------
| Local Medium | Internet | Datagram | TFTP Opcode |
----------------------------------------------------------
TFTP格式
Type Op # 沒有包頭的格式
2 bytes string 1 byte string 1 byte
-----------------------------------------------
RRQ/ | 01/02 | Filename | 0 | Mode | 0 |
WRQ -----------------------------------------------
2 bytes 2 bytes n bytes
---------------------------------
DATA | 03 | Block # | Data |
---------------------------------
2 bytes 2 bytes
-------------------
ACK | 04 | Block # |
--------------------
2 bytes 2 bytes string 1 byte
----------------------------------------
ERROR | 05 | ErrorCode | ErrMsg | 0 |
----------------------------------------
讀文件的初始連接
1. 主機A發RRQ到A,包括源=A的ID和目的=69
2. 主機B發送DATA,其中包號=1,這個包被傳送到A,源=B的ID,目的=A的ID
錯誤碼
Value Meaning
0 未定義,請參閱錯誤信息(如果提示這種信息的話)
1 文件未找到
2 訪問非法
3 磁碟滿或超過分配的配額
4 非法的TFTP操作
5 未知的傳輸ID
6 文件已經存在
7 沒有類似的用戶
Internet用戶數據報頭
(TFTP不一定非要在UDP上實現。)
Format
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Length | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
域的值
Source Port 由傳輸發起方選擇
Dest. Port 由目的地選擇(如果是RRQ或WRQ,其值為69)
Length 包括UDP包頭的包長度
Checksum 校驗碼,如果是0,則未使用校驗
注意:TFTP將傳輸標記TID傳送給UDP作為源和目的埠
安全問題
因為TFTP沒有安全控制機制,因此安全問題應該多加考慮。通常TFTP允許下載數據而不允許上傳數據。
B. tftp到底怎麼使用
如何使用Tftp:
TFTP 自帶的幫助信息:
TFTP [-i] host [GET | PUT] source [destination]
-i Specifies binary image transfer mode (also called
octet). In binary image mode the file is moved
literally, byte by byte. Use this mode when transferring binary files.
host Specifies the local or remote host.
GET Transfers the file destination on the remote host to
the file source on the local host.
PUT Transfers the file source on the local host to
the file destination on the remote host.
source Specifies the file to transfer.
destination Specifies where to transfer the file.
說明:
-i選項是以二進制模式傳送文件,很多Exploit代碼就需要用這種模式來傳送。
Host是開啟了tftp服務的主機,可以是本地主機也可以是遠程主機。
get就是到當前運行的目錄裡面下載,而put就是把文件上傳到了開了tftp服務的機子。Source是你要上傳或者是下載的文件名稱。
下面舉幾個列子:
C:Longker>tftp -i 202.xx.xx.165 get sc.exe
tftp -i 202.xx.xx.165 get sc.exe
Transfer successful: 63248 bytes in 1 second, 63248 bytes/s
這個是從開了tftp服務的主機下載sc.exe程序,速度不錯吧 :)
C:Longker>tftp -i 202.xx.xx.165 put sc.exe
tftp -i 202.xx.xx.165 put sc.exe
Transfer successful: 63248 bytes in 1 second, 63248 bytes/s
上面是把sc.exe上傳到tftp伺服器。
C. tftp在Windows7下的命令是什麼
因為Win7默認沒有啟用這個程序。。在控制面板的打開和關閉Windows功能中可以開啟的。。
D. TFTP主要特點,TFTP的主要原理與工作過程
TFTP(Trivial File Transfer Protocol,簡單文件傳輸協議)是TCP/IP協議族中的一個用來在客戶機與伺服器之間進行簡單文件傳輸的協議,提供不復雜、開銷不大的文件傳輸服務。埠號為69。 目的TFTP是一個傳輸文件的簡單協議,它基於UDP協議而實現,但是我們也不能確定有些TFTP協議是基於其它傳輸協議完成的。此協議設計的時候是進行小文件傳輸的。因此它不具備通常的FTP的許多功能,它只能從文件伺服器上獲得或寫入文件,不能列出目錄,不進行認證,它傳輸8位數據。傳輸中有三種模式:netascii,這是8位的ASCII碼形式,另一種是octet,這是8位源數據類型;最後一種mail已經不再支持,它將返回的數據直接返回給用戶而不是保存為文件。 編輯本段概況任何傳輸起自一個讀取或寫入文件的請求,這個請求也是連接請求。如果伺服器批准此請求,則伺服器打開連接,數據以定長512位元組傳輸。每個數據包包括一塊數據,伺服器發出下一個數據包以前必須得到客戶對上一個數據包的確認。如果一個數據包的大小小於512位元組,則表示傳輸結構。如果數據包在傳輸過程中丟失,發出方會在超時後重新傳輸最後一個未被確認的數據包。通信的雙方都是數據的發出者與接收者,一方傳輸數據接收應答,另一方發出應答接收數據。大部分的錯誤會導致連接中斷,錯誤由一個錯誤的數據包引起。這個包不會被確認,也不會被重新發送,因此另一方無法接收到。如果錯誤包丟失,則使用超時機制。錯誤主要是由下面三種情況引起的:不能滿足請求,收到的數據包內容錯誤,而這種錯誤不能由延時或重發解釋,對需要資源的訪問丟失(如硬碟滿)。TFTP只在一種情況下不中斷連接,這種情況是源埠不正確,在這種情況下,指示錯誤的包會被發送到源機。這個協議限制很多,這是都是為了實現起來比較方便而進行的。 與其它協議的聯系因為TFTP使用UDP,而UDP使用IP,IP可以還使用其它本地通信方法。因此一個TFTP包中會有以下幾段:本地媒介頭,IP頭,數據報頭,TFTP頭,剩下的就是TFTP數據了。TFTP在IP頭中不指定任何數據,但是它使用UDP中的源和目標埠以及包長度域。由TFTP使用的包標記(TID)在這里被用做埠,因此TID必須介於0到65,535之間。對它的初始化我們在後面討論。TFTP頭中包括兩上位元組的操作碼,這個碼指出了包的類型下面我們看看大體上的TFTP包格式,相關的內容我們在後面的章節中進行討論。
E. 關於Ttftp32的問題
tftp傳送成功也不會有任何提示的
基於udp協議,無連接
F. tftp伺服器是什麼
tftp是ftp的迷你版本!不過路由中的這個設置是為了升級路由內的程序的!各上網沒關系!所以不用管吧!
G. TFTP是什麼意思
TFTP是一個傳輸文件的簡單協議,它其於UDP協議而實現,但是我們也不能確定有些TFTP協議是基於其它傳輸協議完成的。此協議設計的時候是進行小文件傳輸的。因此它不具備通常的FTP的許多功能,它只能從文件伺服器上獲得或寫入文件,不能列出目錄,不進行認證,它傳輸8位數據。傳輸中有三種模式:netascii,這是8位的ASCII碼形式,另一種是octet,這是8位源數據類型;最後一種mail已經不再支持,它將返回的數據直接返回給用戶而不是保存為文件。
H. 路由器的TFTP伺服器是什麼意思
TFTP伺服器是指使用TFTP協議的伺服器。
TFTP是TCP/IP協議族中的一個用來在客戶機與伺服器之間進行簡單文件傳輸的協議,提供不復雜、開銷不大的文件傳輸服務。埠號為69。
TFTP作為一個傳輸文件的簡單協議,是基於UDP協議而實現的,但是也不能確定有些TFTP協議是基於其它傳輸協議完成的。此協議設計的時候是進行小文件傳輸的。
因此它不具備通常的FTP的許多功能,它只能從文件伺服器上獲得或寫入文件,不能列出目錄,不進行認證,它傳輸8位數據。
(8)325ttftp擴展閱讀:
TFTP伺服器的有點:
1、TFTP可用於UDP環境;比如當需要將程序或者文件同時向許多機器下載時就往往需要使用到TFTP協議。
2、TFTP代碼所佔的內存較小,這對於較小的計算機或者某些特殊用途的設備來說是很重要的,這些設備不需要硬碟,只需要固化了TFTP、UDP和IP的小容量只讀存儲器即可。當電源接通後,設備執行只讀存儲器中的代碼,在網路上廣播一個TFTP請求。
3、網路上的TFTP伺服器就發送響應,其中包括可執行二進製程序。設備收到此文件後將其放入內存,然後開始運行程序。這種方式增加了靈活性,也減少了開銷。
參考資料來源:網路-TFTP
I. 路由器升級的Tftpd32文件是什麼
路由器的TFTPD32文件
Tftpd32是一個集成DHCP, TFTP, SNTP和Syslog多種服務的袖珍網路伺服器包,同時提供TFTP客戶端應用,tsize, blocksize 和 timeou支持t等等
使用方法
1、tftp必須在本機上先運行起來,充當虛擬伺服器的角色。
2、tftp在運行中不得斷開連接。
3、要上傳的文件必須和tftp在一個目錄中。
4、文件的默認下載位置就是tftp目錄。
5、tftp在上傳的格式中,目標地址要用雙//格開。
6、可以在任何對方的命令行使用tftp,如:跟在對方IP後的瀏覽器地址欄里(詳細說明請參考U漏洞的貼子)、SQLEXEC的command輸入行等等位置。
7、tftp默認屬性是上傳和下載的時候採用覆蓋不提示的方式。
8、tftp上傳的文件可能會加上只讀屬性,請上傳完全畢後檢閱