1.免费串口调试助手 开源 C#
2.第二届“祥云杯” WP-第三部分| WHT战队
3.CRC-8和CRC-16算法
4.Signatureï¼Checksumï¼Linkï¼ä»ä¹åºå«ï¼åºè¯¥ä¸è½½åªä¸ªï¼
5.PostgreSQL 校验和
免费串口调试助手 开源 C#
工业控制类软件在Windows平台下,源码使用C#语言进行开发,源码既方便又快捷。源码在工控领域中,源码串口通讯是源码一种非常常见的需求。因此,源码火狐 手机 源码 苹果我花费时间开发了一个通用的源码串口调试助手工具,并将工控调试中常用的源码功能集成在上面,以方便用户进行调试。源码源码已经在gitee上开源,源码界面采用wpf实现,源码源码地址为:
接下来,源码我将简单介绍一下已实现的源码功能。
程序功能主要分为以下四大块:
1. 串口通讯
2. TCP通讯
3. 小工具
4. 支持中英文双语切换
5. 检查版本更新
6. 曲线显示读取的源码值。
一、源码串口通讯
串口通讯详细功能:
1. 支持手动刷新串口设备列表。
2. 支持流控。
3. 接收发送编码方式同时支持ASCII和HEX方式。
4. 在ASCII模式下,可设置结束符,如回车换行等。
5. 在HEX模式下,支持自动计算标准ModbusRTU的CRC。
6. 发送支持循环发送。微信投注源码
7. 接收区显示支持显示发送和显示接收,并可设置发送和接收的字符串颜色。
8. 接收区显示支持显示发送和接收的时间,时间格式可自定义。
9. 底部显示串口状态,总接收字节数和总发送字节数。各字节数可手动清零。
. 接收区字符串可一键清空。
. 记录发送历史,支持记录最新的条历史记录。
. 可将接收区显示的字符实时保存到本地txt文档。
. 可将读取到的值以实时曲线的形式显示出来。
二、TCP通讯
TCP通讯详细功能:
1. 支持TCP Client/TCP Server。
2. 在TCP Server模式下,可显示当前连接客户端列表。
3. TCP通讯采取异步方式通讯。
4. 支持串口通讯功能中的3-项。
5. 不支持TCP连接断开的自动侦测。
三、小工具
包含的小工具介绍:
1. 通用校验方法中包含常用的LRC、XOR、CheckSum、创业无优源码FCS、Modbus-CRC等校验的计算。
2. 数据转换包含整数和小数与进制HEX的转换。
3. 与base互转。
4. 数据采集中常用的模拟量与工程量转换计算。
5. ASCII码表。
6. C#颜色对照表。
7. 拾取屏幕颜色。该功能使用鼠标hook实现。通过hook技术可实现拦截或修改键盘鼠标等的操作,有这方面需求的可参考。
四、检查更新
1. 检查更新方式:
利用gitee作为更新检查的服务器,将版本号和下载连接写在gitee项目文件中,实现自动检查更新并提供下载连接的功能。
五、相关开源项目
1. 跨平台(Linux/Windows)串口通讯源码开源连接:
xuyuanbao/BaoYuanSerial: A GUI Serial Debug Tool for Linux/Microsoft Window (github.com)
第二届“祥云杯” WP-第三部分| WHT战队
Rev_Dizzy
EXP:
链接: pan.baidu.com/s/1bdWuig... 提取码: g8f8
lemon
EXP:
Secrets_Of_Admin操作内容:
首先打开链接如下:
源码中有admin的密码
登录,是一个内容生成的共功能
审计代码,先看这个POST内容生成功能路由
content我们可以控制输入,输入的内容被写入在/api/files/一个文件中,名称可由传入checksum控制
filename、checksum、username均可控,内存分配java源码那么就可以利用可控制的变量重新写入内容,限制是IP是.0.0.1
那么大致思路就是用content构造xss,然后就会去访问/api/files传三个参数写入到数据库种,接访问/api/files/id得到返回的内容
不过这里对content有一些防范XSS的机制,过滤了一些关键字。需要想办法bypass
这里是Express的框架,includes()的检测对数组不起作用
所以使用传入数组形式即可绕过,有点类似PHP中的一些绕过方法
最终构造payload,payload如下:
访问/api/files/1下载
成功进行了任意文件读取,接着根据源码中的提示读取/files/flag即可得到flag
其实使用payload在burp里跑一下也可以得到答案,这是比赛的时候截取的当时做出来的,结果又使用上面的方案发现也能出答案:
CRC-8和CRC-算法
在汽车通信系统中,CRC校验是确保数据传输准确性的关键技术。以CRC8为例,它作为XOR校验的升级,主要用于检测报文中的错误。发送前,会通过Rolling counter和Checksum进行校验,Rolling counter用于检测丢帧,Checksum(如CRC8)则确保同一时刻的报文无误。
CRC8的原理是,发送端根据报文生成一个1字节的校验码,使用特定的紧急维护页面源码生成多项式,如g(x)=1·x^8+0·x^7+0·x^6+1·x^5+1·x^4+0·x^3+0·x^2+0·x^1+1·x^0,转换为二进制即0x。接收端使用相同的生成多项式进行校验,若计算结果与接收到的校验码相符,就确认数据传输正确。
报文编码有Intel和Motorola两种格式,影响了字节的排列顺序。CAN报文按照高位MSB到低位LSB的顺序发送。举例来说,传输车速0x,Motorola编码方式会把高位放在低字节的高位,Intel编码则相反。
计算CRC8时,先将数据左移8位,然后逐位与生成多项式的二进制形式进行异或运算。对于每个字节,可能需要进行多次判断、移位和异或操作。使用查表法可以简化计算,预先计算所有字节的CRC结果,查询时直接获取,大大减少计算量。
CRC是CRC校验的另一种版本,它有多种标准,如CRC_CCITT、CRC_XMODEM等,尽管原理相似,但在数据输入和输出的处理方式上有所区别。CRC的计算流程通常包括选择初值、异或数据、根据最高位移位和异或多项式、重复处理所有输入数据,最终生成位校验码。
总的来说,CRC校验是通过复杂的算法保证数据传输的准确性和完整性,不同的版本(如CRC8和CRC)在计算细节和标准上有所差异,但核心原理是一致的。如果你对这些算法感兴趣,可以关注汽车控制与人工智能微信公众号获取更详细的源码资料。
Signatureï¼Checksumï¼Linkï¼ä»ä¹åºå«ï¼åºè¯¥ä¸è½½åªä¸ªï¼
Maven 3.2.3 (Binary tar.gz)ï¼Maven 3.2.3 (Source tar.gz)ï¼Maven 3.2.3 (Source zip)ï¼è¿ä¸ä¸ªï¼ç¬¬ä¸ä¸ªæ¯çæ£éè¦ä½¿ç¨çmavenå·¥å ·ï¼å两个æ¯mavençæºç ï¼ä¾å¦ä¹ mavenææ¯å®ç°ä½¿ç¨ãå¨eclipseä¸åºè¯¥ä½¿ç¨Maven 3.2.3 (Binary tar.gz)ï¼å½ç¶eclipseééè£ æmavenæ件ã
Signature表示æ°åç¾å
Checksumæ¯ä¸ç§md5ç çæ ¡éªåçæå·¥å ·
Linkï¼ä¸ç¥éä½ è¯´çå¥ææï¼è¡¨é¢ä¸ç解就æ¯è¿æ¥çææã
PostgreSQL 校验和
在计算机系统中,校验和(checksum)用于检测数据在传输或存取过程中是否发生错误。PostgreSQL自9.3版本起支持校验和功能,旨在检测由磁盘或I/O系统导致的数据可用性问题。本文将详细介绍PostgreSQL中校验和的使用方法及其工作原理。
PostgreSQL通过在数据页上启用校验和功能,可以检测到由I/O系统引发的潜在数据损坏问题。用户可以通过在初始化时使用-k或--data-checksums参数开启此功能。然而,开启校验和可能导致性能下降,因此仅在初始化阶段设置,无法在运行时更改。一旦启用,校验和将应用于所有数据库中的所有对象。
校验和功能引入了一个名为ignore_checksum_failure的GUC参数,用于控制在校验和失败时的处理方式。如果设置为true,校验和失败不会产生错误,而是向客户端发送警告。然而,校验和失败表明磁盘上的数据已损坏,忽略此类错误可能导致数据损坏的扩散,甚至导致系统崩溃。因此,如果启用校验和,建议将ignore_checksum_failure参数设置为false。
在PostgreSQL中,校验和在从缓冲池刷入存储时设置。当数据页再次从存储读取到缓冲池时,会进行校验。在FlushBuffer过程中,通过复制数据页内容并计算校验和以确保数据页内容与校验和保持一致。如果存在其他进程在只加缓冲池共享锁的情况下并发修改数据页中的内容(如指示位),可能导致校验和值在刷盘过程中发生变化。为确保数据页内容与其校验和的一致性,PostgreSQL采用先复制页,然后计算并设置校验和值的方法。
校验和算法基于FNV-1a hash算法改造而来,结果为位无符号整型。PageHeaderData中的pd_checksum字段用于存储位无符号整型校验和值。pg_checksum_block函数计算数据页的位校验和值,具体算法在源码中详细实现。
当数据页从存储读入内存时,PostgreSQL会检测其可用性。检测不仅针对非零页(正常初始化的页),还针对全零页(所有内容均为零的页)。全零页的出现通常是在特定场景下,例如表中某个进程在扩展表时添加了新页,但在WAL日志写入存储之前,进程崩溃。重启时会读取到该全零页。
对于非零页,检测其校验和是否一致以及页头信息是否正确。若校验和失败但页头信息正确,根据ignore_checksum_failure值判断验证是否通过;对于全零页,如果为全零,则验证通过。若验证失败,则有两种处理方式:记录日志或不记录日志,具体取决于忽略校验和失败情况下的处理策略。
在数据页写入存储时,如果写入失败,可能导致数据页的部分损坏,即数据页的一部分数据写入成功,一部分数据写入失败。为解决此类问题,PostgreSQL引入了full_page_writes特性。此外,Hint Bits通常用于标识事务状态,但当使用校验和时,其变化可能导致校验和值改变。如果数据页发生部分写操作,恰好修改了某些Hint Bits,可能会导致校验和异常,但不影响数据页的正常使用。为应对这种情况,checkpoint后页面第一次标记为dirty时,需要记录一个全页快照至WAL日志中,以应对因Hint Bits更新导致的校验和失败问题。
为了查看数据页的校验和,PostgreSQL 在pageinspect插件中添加了函数page_checksum()。此外,使用page_header()函数也可以查看校验和值。
总结来说,校验和功能使PostgreSQL具备检测因硬件故障或传输导致的数据不一致的能力。一旦检测到异常,通常会终止当前事务,以便用户尽早察觉数据异常并进行恢复。尽管开启校验和会引入一定开销,但对于数据可用性要求较高的场景,建议同时开启full_page_writes和校验和功能。这样可以在避免数据丢失的同时,尽早发现并记录WAL日志中的全页快照,以应对数据损坏问题。