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 数据结构字段包含如下内容:
-
Version (0x01):
- 这是 BACnet NPDU 的版本号,遵循 ASHRAE 135-1995 的标准。
-
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,表示这不是一个生命安全或关键设备消息。
Bit Description If 1 If 0 7 APDU NPDU 传递网络层消息 NPDU 包含 BACnet APDU 6 Reserved Reserved Reserved 5 Destination Specifier 包含DNET DLEN DADR 不包含DNET DLEN DADR 4 Reserved Reserved Reserved 3 Source Specifier 包含SNET SLEN SADR 不包含SNET SLEN SADR 2 Expecting reply 等待回复 不用回复 1,0 Priority 11=生命安全,10=关键设备,01=紧急 00=正常
-
Destination Network Address (65535):
- 这是目的网络地址,设置为 65535,表示广播到目标网络。
-
Destination MAC Layer Address Length (0):
- 此字段长度为 0,表示目标网络是广播,无需具体的 MAC 地址。
-
Hop Count (255):
- 路由跳数被设置为 255,这意味着该消息可以通过 255 个路由器传输,这是 BACnet 允许的最大跳数。
(6)、APDU-Who-Is
一个未确认的 Who-Is 请求

(7)、APDU-I-Am
一个未确认的I-Am请求

APDU 分析:
-
APDU Type: Unconfirmed-REQ (1):
- 该帧类型为未确认请求 (
Unconfirmed-REQ),值为 1。 - 这是 BACnet 协议中一种未确认服务请求消息。
- 该帧类型为未确认请求 (
-
Unconfirmed Service Choice: I-Am (0):
- 未确认服务选择为
I-Am(值为 0)。 I-Am消息用于设备向网络广播其存在以及设备标识信息。
- 未确认服务选择为
-
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 该标识符用于唯一标识网络中的设备。
-
Maximum APDU Length Accepted:
- 值为
1464。 - 这表示该设备支持的最大 APDU 长度为
1464字节。
22 //Application Tag 2 (Unsigned Integer), length 2,高4bit表示数据类型(Unsigned Integer),低4bit数据长度
05 b8 //最大 APDU 长度: 480
- 值为
-
Segmentation Supported:
- 值为
segmented-both (0)。 - 表明设备支持分段传输(
segmented-both),意味着设备可以在发送和接收时都支持数据分段。
91 //Application Tag 9 (Enumerated), length 1,高4bit表示数据类型(Enumerated枚举),低4bit数据长度
00 //设备支持分段传输(segmented-both)
- 值为
-
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
- Vendor Identifier 为
该 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…...
游戏盾SDK真的能无视攻击吗
游戏盾SDK真的能无视攻击吗?在当今的互联网环境中,游戏行业蓬勃发展,但同时也面临着日益严峻的安全挑战。DDoS攻击、CC攻击、外挂作弊等恶意行为频发,不仅威胁着游戏的稳定性和公平性,也严重影响了玩家的游戏体验。为了…...
【QT】亲测有效:“生成的目标文件包含了过多的段,超出了编译器或链接器允许的最大数量”错误的解决方案
在使用dlib开发人脸对齐功能时,出现了”生成的目标文件包含了过多的段,超出了编译器或链接器允许的最大数量的错误“。 主要功能代码如下: #include <QApplication> #include <QImage> #include <QDebug>#include <dlib…...
什么是 Apache Ingress
Apache Ingress 主要用于管理来自外部的 HTTP 和 HTTPS 流量,并将其路由到合适的 Kubernetes 服务。 容器化与 Kubernetes 是现代云原生应用程序的基础。Kubernetes 的主要职责是管理容器集群,确保它们的高可用性和可扩展性,同时还提供自动化…...
SpringBoot助力墙绘艺术市场创新
3 系统分析 当用户确定开发一款程序时,是需要遵循下面的顺序进行工作,概括为:系统分析–>系统设计–>系统开发–>系统测试,无论这个过程是否有变更或者迭代,都是按照这样的顺序开展工作的。系统分析就是分析系…...
Antlr的使用
概念 ANTLR(ANother Tool for Language Recognition)是一个强大的解析器生成工具,用于读取、处理、执行或翻译结构化文本或二进制文件。ANTLR通过定义文法(grammar)来识别、构建和访问语言中的元素。 ANTLR为包括Jav…...
HealChat心理大语言模型 丨OPENAIGC开发者大赛高校组AI创作力奖
在第二届拯救者杯OPENAIGC开发者大赛中,涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到,我们特意开设了优秀作品报道专栏,旨在展示其独特之处和开发者的精彩故事。 无论您是技术专家还是爱好者,希望能带给…...
PyQt5整合爬虫制作图片爬取器-幽络源
前言 本篇教程适合对Python爬虫和Python软件制作感兴趣的小伙伴阅读,看完本篇教程,你将能更深入了解PyQt5与实际功能的整合方式。 1.设计界面 首先在pycharm中创建一个新目录,这里我建立的目录名为爬图片,然后按如图打开Qt设计…...
DC00023基于jsp+MySQL新生报到管理系统
1、项目功能演示 DC00023基于jsp新生报到管理系统java webMySQL新生管理系统 2、项目功能描述 基于jspMySQL新生报到管理系统项目分为学生、辅导员、财务处和系统管理员四个角色。 2.1 学生功能 1、系统登录 2、校园新闻、报到流程、学校简介、在线留言、校园风光、入校须知…...
AdaptIoT——制造业中使用因果关系的自我标签系统
0.概述 论文地址:https://arxiv.org/abs/2404.05976 在许多制造应用中,机器学习(ML)已被证明可以提高生产率。针对制造业应用提出了一些软件和工业物联网(IIoT)系统,以接收这些 ML 应用。最近&…...
代码随想录算法训练营Day15
654.最大二叉树 力扣题目链接:. - 力扣(LeetCode) 前序递归、循环不变量 class Solution {public TreeNode constructMaximumBinaryTree(int[] nums) {return findmax(nums,0,nums.length);}public TreeNode findmax(int[] nums,int lefti…...
Thinkphp/Laravel旅游景区预约系统的设计与实现
目录 技术栈和环境说明具体实现截图设计思路关键技术课题的重点和难点:框架介绍数据访问方式PHP核心代码部分展示代码目录结构解析系统测试详细视频演示源码获取 技术栈和环境说明 采用PHP语言开发,开发环境为phpstudy 开发工具notepad并使用MYSQL数据库…...
SpringCloud学习记录|day1
学习材料 2024最新SpringCloud微服务开发与实战,java黑马商城项目微服务实战开发(涵盖MybatisPlus、Docker、MQ、ES、Redis高级等) 学redis讲到微服务就停了,nginx也是。 所以嘛,我终于来到微服务了。 复习MyBatisP…...
Elasticsearch讲解
1.Elasticsearch基本知识 1.基本认识和安装 Elasticsearch是由elastic公司开发的一套搜索引擎技术,它是elastic技术栈中的一部分。完整的技术栈包括: Elasticsearch:用于数据存储、计算和搜索 Logstash/Beats:用于数据收集 Kib…...
Linux嵌入式有发展吗,以及对uboot,kernel,rootfs的领悟
工作多年后,对uboot,kernel,rootfs的领悟,总结 上大学时,51单片机,正点原子的stm32,linux arm开发。对uboot,kernel,rootfs的理解云里雾里,感觉自己很懂了 其…...
基于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日上午,苏州大学应用技术学院的2024级新生开学典礼暨开学第一课在轻空间建造的多功能声学气膜馆内盛大举行。这一盛典不仅见证了2849名新生的入学,也展示了气膜馆的独特魅力与优越功能。 卓越的声学表现 声学气膜馆采用高性能材料,确保…...
【线程】线程池
线程池通过一个线程安全的阻塞任务队列加上一个或一个以上的线程实现,线程池中的线程可以从阻塞队列中获取任务进行任务处理,当线程都处于繁忙状态时可以将任务加入阻塞队列中,等到其它的线程空闲后进行处理。 线程池作用: 1.降…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
