当前位置: 首页 > news >正文

BACnet协议-(基于ISO 8802-3 UDP)(2)

1、模拟设备的工具界面如下:

2、使用yet another bacnet explorer  用作服务,用于发现设备,界面如下:


3、通过wireshark 抓包如下:

(1)、整体包如下:

(2)、mac头

(3)、IP头

自动对应

(4)、UDP头

(4)、BACnet头

(5)、NPDU

BACnet NPDU 数据结构字段包含如下内容:

  1. Version (0x01):

    • 这是 BACnet NPDU 的版本号,遵循 ASHRAE 135-1995 的标准。
  2. Control (0x20):

    • 控制字段,这个字节包含一些标志位,用于指示 NPDU 的内容和功能。
    • bit7 (0): 指示 NPDU 是否包含 BACnet APDU。此值为 0,表示该 NPDU 包含 APDU。
    • bit6 (0): 保留位,必须为 0。
    • bit5 (1): 目的地址标识符为 DNET、DLEN 和 Hop Count,这表明该帧有目的网络信息。
    • bit4 (0): 保留位,必须为 0。
    • bit3 (0): 源地址字段缺失。
    • bit2 (0): 无需期待应答。
    • bit1 (0): 该消息的优先级为普通消息。
    • bit0 (0): 此位为优先级控制字段,值为 0,表示这不是一个生命安全或关键设备消息。
      BitDescriptionIf 1If 0
      7APDUNPDU  传递网络层消息NPDU 包含 BACnet APDU
      6ReservedReservedReserved
      5Destination Specifier包含DNET DLEN DADR 不包含DNET DLEN DADR 
      4ReservedReservedReserved
      3Source Specifier包含SNET SLEN SADR 不包含SNET SLEN SADR 
      2Expecting reply等待回复不用回复
      1,0Priority11=生命安全,10=关键设备,01=紧急 00=正常
  3. Destination Network Address (65535):

    • 这是目的网络地址,设置为 65535,表示广播到目标网络。
  4. Destination MAC Layer Address Length (0):

    • 此字段长度为 0,表示目标网络是广播,无需具体的 MAC 地址。
  5. Hop Count (255):

    • 路由跳数被设置为 255,这意味着该消息可以通过 255 个路由器传输,这是 BACnet 允许的最大跳数。
(6)、APDU-Who-Is

一个未确认的 Who-Is 请求

(7)、APDU-I-Am

一个未确认的I-Am请求

APDU 分析:

  1. APDU Type: Unconfirmed-REQ (1):

    • 该帧类型为未确认请求 (Unconfirmed-REQ),值为 1。
    • 这是 BACnet 协议中一种未确认服务请求消息。
  2. Unconfirmed Service Choice: I-Am (0):

    • 未确认服务选择为 I-Am(值为 0)。
    • I-Am 消息用于设备向网络广播其存在以及设备标识信息。
  3. Object Identifier:

    • Object Type: device (8)
    • Instance Number: 3473435
    • 对象标识符指示了设备对象,类型为 device,实例号为 3473435。该标识符用于唯一标识网络中的设备。
    • C4   //应用程序标记 12(对象标识符),长度 4;
      高4bit是对象标识符,低4bit是长度4,
    • 02 35 00 1b  // 对象标识符指示了设备对象,
      高10bit是类型,=0b0000 0010 00 = 8 为 类型device,
      低22bit为实例号,为=0b11 0101 0000 0000 0001 1011  = 0x35001b = 3473435 该标识符用于唯一标识网络中的设备。
  4. Maximum APDU Length Accepted:

    • 值为 1464
    • 这表示该设备支持的最大 APDU 长度为 1464 字节。
      22    //Application Tag 2 (Unsigned Integer), length 2,高4bit表示数据类型(Unsigned Integer),低4bit数据长度
      05 b8 //最大 APDU 长度: 480
  5. Segmentation Supported:

    • 值为 segmented-both (0)
    • 表明设备支持分段传输(segmented-both),意味着设备可以在发送和接收时都支持数据分段。
      91    //Application Tag 9 (Enumerated), length 1,高4bit表示数据类型(Enumerated枚举),低4bit数据长度
      00    //设备支持分段传输(segmented-both
  6. Vendor ID:

    • Vendor Identifier 为 260,标识符表示该设备的供应商为 BACnet Stack at SourceForge
      22    //Application Tag 2 (Unsigned Integer), length 2,高4bit表示数据类型(Unsigned Integer),低4bit数据长度
      01 04 //Vendor Identifier 为 260,标识符表示该设备的供应商为 BACnet Stack at

该 APDU 是一个未确认的 I-Am 请求,广播设备的存在以及一些关键信息,如设备的唯一对象标识符、最大支持的 APDU 长度、设备是否支持分段传输,以及设备的供应商信息。

这些数据表明设备正在向网络中的其他设备声明其身份和能力,并不要求应答。这种消息通常用于初始发现或服务请求广播的场景。

相关文章:

BACnet协议-(基于ISO 8802-3 UDP)(2)

1、模拟设备的工具界面如下: 2、使用yet another bacnet explorer 用作服务,用于发现设备,界面如下: 3、通过wireshark 抓包如下: (1)、整体包如下: (2)、m…...

android 根据公历日期准确节气计算年月日时天干地支 四柱八字

1 年柱 判断当前日期是否超过本年的立春 未超过年份-1 已超过按当前年份计算 2月柱 当前日期是否超过当月的第一个节气 未超过-1 超过当前月份计算 节气对日柱时柱没影响。 获取某年某月第一个节气的准确日期 private int sTerm(int y, int n) {int[] sTermInfo…...

VMware虚拟机连接公网,和WindTerm

一、项目名称 vmware虚拟机连接公网和windterm 二、项目背景 需求1:windows物理机,安装了vmware虚拟机,需要访问公网资源,比如云服务商的yum仓库,国内镜像加速站的容器镜像,http/https资源。 需求2&#xf…...

游戏盾SDK真的能无视攻击吗

游戏盾SDK真的能无视攻击吗?在当今的互联网环境中,游戏行业蓬勃发展,但同时也面临着日益严峻的安全挑战。DDoS攻击、CC攻击、外挂作弊等恶意行为频发,不仅威胁着游戏的稳定性和公平性,也严重影响了玩家的游戏体验。为了…...

【QT】亲测有效:“生成的目标文件包含了过多的段,超出了编译器或链接器允许的最大数量”错误的解决方案

在使用dlib开发人脸对齐功能时&#xff0c;出现了”生成的目标文件包含了过多的段&#xff0c;超出了编译器或链接器允许的最大数量的错误“。 主要功能代码如下&#xff1a; #include <QApplication> #include <QImage> #include <QDebug>#include <dlib…...

什么是 Apache Ingress

Apache Ingress 主要用于管理来自外部的 HTTP 和 HTTPS 流量&#xff0c;并将其路由到合适的 Kubernetes 服务。 容器化与 Kubernetes 是现代云原生应用程序的基础。Kubernetes 的主要职责是管理容器集群&#xff0c;确保它们的高可用性和可扩展性&#xff0c;同时还提供自动化…...

SpringBoot助力墙绘艺术市场创新

3 系统分析 当用户确定开发一款程序时&#xff0c;是需要遵循下面的顺序进行工作&#xff0c;概括为&#xff1a;系统分析–>系统设计–>系统开发–>系统测试&#xff0c;无论这个过程是否有变更或者迭代&#xff0c;都是按照这样的顺序开展工作的。系统分析就是分析系…...

Antlr的使用

概念 ANTLR&#xff08;ANother Tool for Language Recognition&#xff09;是一个强大的解析器生成工具&#xff0c;用于读取、处理、执行或翻译结构化文本或二进制文件。ANTLR通过定义文法&#xff08;grammar&#xff09;来识别、构建和访问语言中的元素。 ANTLR为包括Jav…...

HealChat心理大语言模型 丨OPENAIGC开发者大赛高校组AI创作力奖

在第二届拯救者杯OPENAIGC开发者大赛中&#xff0c;涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到&#xff0c;我们特意开设了优秀作品报道专栏&#xff0c;旨在展示其独特之处和开发者的精彩故事。 无论您是技术专家还是爱好者&#xff0c;希望能带给…...

PyQt5整合爬虫制作图片爬取器-幽络源

前言 本篇教程适合对Python爬虫和Python软件制作感兴趣的小伙伴阅读&#xff0c;看完本篇教程&#xff0c;你将能更深入了解PyQt5与实际功能的整合方式。 1.设计界面 首先在pycharm中创建一个新目录&#xff0c;这里我建立的目录名为爬图片&#xff0c;然后按如图打开Qt设计…...

DC00023基于jsp+MySQL新生报到管理系统

1、项目功能演示 DC00023基于jsp新生报到管理系统java webMySQL新生管理系统 2、项目功能描述 基于jspMySQL新生报到管理系统项目分为学生、辅导员、财务处和系统管理员四个角色。 2.1 学生功能 1、系统登录 2、校园新闻、报到流程、学校简介、在线留言、校园风光、入校须知…...

AdaptIoT——制造业中使用因果关系的自我标签系统

0.概述 论文地址&#xff1a;https://arxiv.org/abs/2404.05976 在许多制造应用中&#xff0c;机器学习&#xff08;ML&#xff09;已被证明可以提高生产率。针对制造业应用提出了一些软件和工业物联网&#xff08;IIoT&#xff09;系统&#xff0c;以接收这些 ML 应用。最近&…...

代码随想录算法训练营Day15

654.最大二叉树 力扣题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 前序递归、循环不变量 class Solution {public TreeNode constructMaximumBinaryTree(int[] nums) {return findmax(nums,0,nums.length);}public TreeNode findmax(int[] nums,int lefti…...

Thinkphp/Laravel旅游景区预约系统的设计与实现

目录 技术栈和环境说明具体实现截图设计思路关键技术课题的重点和难点&#xff1a;框架介绍数据访问方式PHP核心代码部分展示代码目录结构解析系统测试详细视频演示源码获取 技术栈和环境说明 采用PHP语言开发&#xff0c;开发环境为phpstudy 开发工具notepad并使用MYSQL数据库…...

SpringCloud学习记录|day1

学习材料 2024最新SpringCloud微服务开发与实战&#xff0c;java黑马商城项目微服务实战开发&#xff08;涵盖MybatisPlus、Docker、MQ、ES、Redis高级等&#xff09; 学redis讲到微服务就停了&#xff0c;nginx也是。 所以嘛&#xff0c;我终于来到微服务了。 复习MyBatisP…...

Elasticsearch讲解

1.Elasticsearch基本知识 1.基本认识和安装 Elasticsearch是由elastic公司开发的一套搜索引擎技术&#xff0c;它是elastic技术栈中的一部分。完整的技术栈包括&#xff1a; Elasticsearch&#xff1a;用于数据存储、计算和搜索 Logstash/Beats&#xff1a;用于数据收集 Kib…...

Linux嵌入式有发展吗,以及对uboot,kernel,rootfs的领悟

工作多年后&#xff0c;对uboot&#xff0c;kernel&#xff0c;rootfs的领悟&#xff0c;总结 上大学时&#xff0c;51单片机&#xff0c;正点原子的stm32&#xff0c;linux arm开发。对uboot&#xff0c;kernel&#xff0c;rootfs的理解云里雾里&#xff0c;感觉自己很懂了 其…...

基于Springboot+Vue的公寓管理系统(含源码+数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 该系统…...

多功能声学气膜馆:承载梦想与希望的舞台—轻空间

在9月29日上午&#xff0c;苏州大学应用技术学院的2024级新生开学典礼暨开学第一课在轻空间建造的多功能声学气膜馆内盛大举行。这一盛典不仅见证了2849名新生的入学&#xff0c;也展示了气膜馆的独特魅力与优越功能。 卓越的声学表现 声学气膜馆采用高性能材料&#xff0c;确保…...

【线程】线程池

线程池通过一个线程安全的阻塞任务队列加上一个或一个以上的线程实现&#xff0c;线程池中的线程可以从阻塞队列中获取任务进行任务处理&#xff0c;当线程都处于繁忙状态时可以将任务加入阻塞队列中&#xff0c;等到其它的线程空闲后进行处理。 线程池作用&#xff1a; 1.降…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献&#xff1a; stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下&#xff0c;文章也主…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架&#xff0c;该方法利用Stable Diffusion的强大生成能力&#xff0c;仅需单个正常样本和文本描述&#xff0c;即可生成逼真且多样化的异常样本&#xff0c;有效解决了视觉异常检测中异常样本稀缺的难题&#xff0c;为工业质检、医疗影像…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG

TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码&#xff1a;HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...

小木的算法日记-多叉树的递归/层序遍历

&#x1f332; 从二叉树到森林&#xff1a;一文彻底搞懂多叉树遍历的艺术 &#x1f680; 引言 你好&#xff0c;未来的算法大神&#xff01; 在数据结构的世界里&#xff0c;“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的&#xff0c;它…...

【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统

Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...

用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章

用 Rust 重写 Linux 内核模块实战&#xff1a;迈向安全内核的新篇章 ​​摘要&#xff1a;​​ 操作系统内核的安全性、稳定性至关重要。传统 Linux 内核模块开发长期依赖于 C 语言&#xff0c;受限于 C 语言本身的内存安全和并发安全问题&#xff0c;开发复杂模块极易引入难以…...