网络安全项目实战(无)--报文检测

10. TFTP 应用协议报文解析

  • 目标
    • 了解tftp协议
    • 了解tftp基本操作方式(put/get)
    • 了解tftp协议探测方法(简洁)

10.1. tftp 基本操作

通过操作tftp client和server操作, 熟悉抓包流程

10.1.1. Server 端

  • 安装服务
itcast@itcast-teacher:~$ sudo apt-get install tftpd-hpa
  • 配置服务

初始配置

itcast@itcast-teacher:~$ cat /etc/default/tftpd-hpa # /etc/default/tftpd-hpaTFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure"

修改配置为

itcast@itcast-teacher:~$ sudo vi /etc/default/tftpd-hpa 
itcast@itcast-teacher:~$ cat /etc/default/tftpd-hpa # /etc/default/tftpd-hpaTFTP_USERNAME="tftp"
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时,不再需要输入指定目录,填写文件的文件路径,而是使用配置文件中写好的目录
  • 重启服务:

itcast@itcast-teacher:~$ sudo /etc/init.d/tftpd-hpa restart
[ ok ] Restarting tftpd-hpa (via systemctl): tftpd-hpa.service.
itcast@itcast-teacher:~$

10.1.2. Client 端

客户端操作比较简单,我们仅展示 上传(put)文件和下载(get)文件

  • 文件下载
$ tftp 192.168.0.111
tftp> get a.out
Received 11363 bytes in 0.3 seconds
tftp> q

q 退出

  • 文件上传 put
$ 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支持五种类型的包,我们在以上已经说明这五种类型的包:

opcodeoperation
01Read 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域包括了字符串"netascii","octet"或"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 没有类似的用户

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/225631.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FIFO的Verilog设计(三)——最小深度计算

文章目录 前言一、FIFO的最小深度写速度快于读速度写速度等于或慢于读速度 二、 举例说明1. FIFO写时钟为100MHz,读时钟为80Mhz情况一:一共需要传输2000个数据,求FIFO的最小深度情况二:100个时钟写入80个数据,1个时钟读…

PostgreSQL向量数据插件--pgvector安装(附PostgreSQL安装)

PostgreSQL向量数据插件--pgvector安装 一、版本二、数据库安装1. 在官网下载PostgreSQL14.0的安装包2.增加用户postgres3.解压安装 三、pgvector安装1. 从github上克隆下来2. 安装pgvector插件3. 开始使用pgvector启用pgsql命令行创建扩展 本文为本人在安装pgvector中踩过的坑…

Windows安装卸载MySQL

【官方】MySQL参考手册:介绍MySQL Server、SQL、InnoDB存储引擎、复制等。 Windows 卸载 MySQL 删除程序 【win x】 > p ,在安装的程序中卸载MySQL相关删除安装目录和数据文件夹 D:\ProgramFiles\MySQL C:\ProgramData\MySQL删除服务 【win r】 &…

ElasticSearch之cat segments API

命令样例如下: curl -X GET "https://localhost:9200/_cat/segments?vtrue&pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPHQBEs5*lo7F9"执行结果输出如下: index shard prirep ip segment g…

25 redis 中 cluster 集群的工作模式

前言 我们这里首先来看 redis 这边实现比较复杂的 cluster集群模式 整个 cluster集群 中会包含多对 MasterSlave 的组合, 然后这多对 MasterSlave 来分解 16384 个 slot 然后 客户端这边 set, get 的时候, 先根据 key 计算对应存储的 slot, 然后 服务器这边响应 MOVED 目标…

P with Spacy:自定义文本分类管道

一、说明 Spacy 是一个功能强大的 NLP 库,其中许多 NLP 任务(如标记化、词干提取、词性标记和命名实体解析)均通过预训练模型提供开箱即用的功能。所有这些任务都由管道对象以及逐步应用于给定文本的不同函数的内部抽象来包装。该管道可以通过…

Android--UML类图使用详解

明敕星驰封宝剑,辞君一夜取楼兰 一,定义 类图(Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。它既用于应用程序的系统分…

【数字电路】MacBook使用iverilog进行数字电路仿真

安装流程 在终端中用brew包管理工具进行安装仿真工具: 编译verilog代码: brew install icarus-verilog编译verilog代码: brew install verilatorMacOS系统显示UNIX GUI brew install xquartz可视化仿真波形图: brew install gtk…

基于Springboot的任务发布平台设计与实现(源码齐全+调试)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。你想解决的问题,今天给大家介绍…

t-io 程序执行后,jvm不退出的原因

基于t-io 1.7.3 版本分析源码 1、设定当前时间,每10毫秒执行一次 (非守护线程) 2、对应线程池的核心线程在AioServer启动时全部激活,并且添加空任务到阻塞队列,让核心线程(非守护线程)一直存活

IO流学习

IO流:存储和读取数据的解决方案 import java.io.FileOutputStream; import java.io.IOException;public class Test {public static void main(String[] args) throws IOException {//1.创建对象//写出 输入流 OutputStream//本地文件fileFileOutputStream fos new FileOutputS…

RNN和LSTM学习笔记-初学者

提示: 目录 前言一、RNN介绍二、LSTM介绍总结 前言 提示: 提示: 一、RNN介绍 RNN是一种短时记忆,而LSTM是长短时记忆网络 二、LSTM介绍 总结

编译与链接

在在ANSIC的任何⼀种实现中,存在两个不同的环境:翻译环境和运⾏环境 翻译环境:在这个环境中源代码被转换为可执⾏的机器指令。 执⾏环境: 它⽤于实际执⾏代码。 一翻译环境 翻译环境是由编译和链接两个⼤的过程组成的,⽽编译⼜…

【专题】最小生成树(prim算法、kruscal算法)

目录 一、最小生成树二、Prim算法1. 算法思想2. 例题3. 性能分析 三、Kruscal算法1. 算法思想2. 例题3. 性能分析 一、最小生成树 生成树中边的权值(代价)之和最小的树。 二、Prim算法 1. 算法思想 设N(V,{E})是连通网,TE是N上最小生成树…

数据库02-04 中级SQL

01.on关键字: 主要用join…on来用多关系查询,和where关键字的相同 student关系: takes关系: 02.一般外连接 自然连接: 这个外连接(自然连接)会缺少空值的元祖(本例子中的stude…

算法--数据结构基础

文章目录 数据结构单链表栈表达式求值前缀表达式中缀表达式后缀表达式 队列单调栈单调队列KMPTrie并查集堆哈希表字符串哈希 数据结构 单链表 用数组模拟(静态链表)效率比定义Node类(动态链表)效率高些 使用数组模拟单链表&am…

如何配置pycharm来调试python代码

要配置PyCharm来调试Python代码,你可以按照以下步骤进行操作: 打开PyCharm,然后选择“File”菜单,然后选择“Settings”。 在“Settings”窗口中,选择“Python Interpreter”选项。 在“Python Interpreter”窗口中&…

力扣-排列组合问题(递归回溯)——77. 组合、46. 全排列、47. 全排列 II

一、组合 1. 问题描述 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输入:n 4, k 2 输出: [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4], ] 示例 2: 输…

Java 使用mybatis的BaseTypeHandler实现数据自动AES加密解密,通过Hutool工具类自定义注解实现数据脱【附有完整步骤和代码】

一、AES加密 1 加密工具类 使用KeyGenerator生成AES算法生成器 public class AESUtil {/*** 密钥长度: 128, 192 or 256*/private static final int KEY_SIZE 256;/*** 加密/解密算法名称*/private static final String ALGORITHM "AES";/*** 随机数生成器&#…

【CDP】CDP 集群通过Knox 访问Yarn Web UI,无法跳转到Flink Web UI 问题解决

一、前言 记录下在CDP 环境中,通过Knox 访问Yarn Web UI,无法跳转到Flink Web UI 的BUG 解决方法。 二、问题复现 登录 Knox Web UI 找到任一 Flink 任务 点击 ApplicationMaster 跳转 Flink WEB UI 出问题 内容空白,无法正常跳转到…