国外炫酷网站设计,搜索网站存在的关键字,单位网站制作费用报价单,北京完美建设有限公司网站10. TFTP 应用协议报文解析
目标 了解tftp协议了解tftp基本操作方式#xff08;put/get#xff09;了解tftp协议探测方法#xff08;简洁#xff09;
10.1. tftp 基本操作 通过操作tftp client和server操作#xff0c; 熟悉抓包流程 10.1.1. Server 端
安装服务
itcas…10. TFTP 应用协议报文解析
目标 了解tftp协议了解tftp基本操作方式put/get了解tftp协议探测方法简洁
10.1. tftp 基本操作 通过操作tftp client和server操作 熟悉抓包流程 10.1.1. Server 端
安装服务
itcastitcast-teacher:~$ sudo apt-get install tftpd-hpa配置服务 初始配置 itcastitcast-teacher:~$ cat /etc/default/tftpd-hpa # /etc/default/tftpd-hpaTFTP_USERNAMEtftp
TFTP_DIRECTORY/var/lib/tftpboot
TFTP_ADDRESS:69
TFTP_OPTIONS--secure修改配置为 itcastitcast-teacher:~$ sudo vi /etc/default/tftpd-hpa
itcastitcast-teacher:~$ cat /etc/default/tftpd-hpa # /etc/default/tftpd-hpaTFTP_USERNAMEtftp
TFTP_DIRECTORY/tmp/
TFTP_ADDRESS:69
TFTP_OPTIONS-l -s -c配置含义为 TFTP_DIRECTORY 为TFTP_Server服务目录该目录最好具有可读可写权限, 一遍上传下载服务。“TFTP_ADDRESS”为0.0.0.0:69表示所有IP源都可以访问 此处可不改“TFTP_OPTIONS”为“-l -c -s”。其中 -l :以standalone/listen模式启动TFTP服务-c: 可创建新文件。默认情况下TFTP只允许覆盖原有文件而不能创建新文件-s : 改变TFTP启动的根目录加了-s后客户端使用TFTP时不再需要输入指定目录填写文件的文件路径而是使用配置文件中写好的目录 重启服务
itcastitcast-teacher:~$ sudo /etc/init.d/tftpd-hpa restart
[ ok ] Restarting tftpd-hpa (via systemctl): tftpd-hpa.service.
itcastitcast-teacher:~$10.1.2. Client 端 客户端操作比较简单我们仅展示 上传put文件和下载get文件 文件下载
$ tftp 192.168.0.111
tftp get a.out
Received 11363 bytes in 0.3 seconds
tftp qq 退出
文件上传
$ tftp 192.168.0.111
tftp put aa.pcap
Sent 4569 bytes in 0.2 seconds
tftp q
$注 确保你的目录下有相应文件
10.2. TFTP 协议介绍
TFTP是一个传输文件的简单协议它其于UDP协议而实现但是也不能确定有些TFTP协议是基于其它传输协议完成的此协议设计的时候是进行小文件传输的。
只能从文件服务器上获得或写入文件不能列出目录不进行认证 传输中有三种模式 netascii这是8位的ASCII码形式octet这是8位源数据类型最后一种mail已经不再支持它将返回的数据直接返回给用户而不是保存为文件 初始连接 初始连接时候需要发出WRQ请求写入远程系统或RRQ请求读取远程系统收到一个确定应答一个确定可以写出的包或应该读取的第一块数据。
TFTP包
TFTP支持五种类型的包我们在以上已经说明这五种类型的包
opcodeoperation01Read request (RRQ)02Write request (WRQ)03Data (DATA)04Acknowledgment (ACK)05Error (ERROR)
RRQ/WRQ 数据包格式 2 bytes string 1 byte string 1 byte
------------------------------------------------
| Opcode | Filename | 0 | Mode | 0 |
------------------------------------------------
RRQ 和WRQ包代码分别为1和2的格式如上所示。
文件名是NETASCII码字符以0结束。
而MODE域包括了字符串netasciioctet或mail名称不分大小写。
DATA 包
2 bytes 2 bytes n bytes
----------------------------------
| Opcode | Block # | Data |
----------------------------------
数据在数据包中传输其格式如上图所示。
数据包的OP码为3它还包括有一个数据块号和数据。
数据块号域从1开始编码每个数据块加1这样接收方可以确定这个包是新数据还是已经接收过的数据。
数据域从0字节到512字节。如果数据域是512字节则它不是最后一个包如果小于512字节则表示这个包是最后一个包。
除了ACK和用于中断的包外其它的包均得到确认。发出新的数据包等于确认上次的包。
WRQ和DATA包由ACK或ERROR数据包确认
而 RRQ数据包由DATA或ERROR数据包确认。
ACK包
2 bytes 2 bytes
---------------------
| Opcode | Block # |
---------------------上图即是一个ACK包操作码为4。其中的包号为要确认的数据包的包号。
WRQ数据包被ACK数据包确认WRQ数据包的包号为0。
ERROR 包
2 bytes 2 bytes string 1 byte
-----------------------------------------
| Opcode | ErrorCode | ErrMsg | 0 |
-----------------------------------------一个ERROR包它的操作码是5它的格式如上所示。此包可以被其它任何类型的包确认。
错误码(ErrorCode)
Value Meaning0 未定义请参阅错误信息如果提示这种信息的话
1 文件未找到
2 访问非法
3 磁盘满或超过分配的配额
4 非法的TFTP操作
5 未知的传输ID
6 文件已经存在
7 没有类似的用户