CH55x系列单片机BadUSB项目资料分享

版权申诉
0 下载量 161 浏览量 更新于2024-10-22 收藏 16KB ZIP 举报
资源摘要信息: "基于ch55x系列单片机的badusbPCB+全部资料+详细文档(高分项目).zip" 是一个包含基于ch55x系列单片机设计的badUSB项目资源包。badUSB是一种安全漏洞利用方式,通过修改USB设备的固件使其在连接到计算机时表现出类似键盘的输入设备,可以发送任意命令或文本,从而进行安全测试或攻击。本资源包的目标用户群体包括计算机相关专业在校学生、教师、企业员工等,尤其适合用于毕业设计、课程设计、作业项目以及相关领域专业人士的技术研究。 从标题和描述中可以提炼的知识点主要包括: 1. CH55x系列单片机:这是WCH(南京沁恒微电子)生产的一系列8位增强型微控制器,广泛应用于USB接口控制。CH55x系列单片机的特点是具有USB接口,能够在不使用任何外部存储器的情况下通过USB接口与计算机连接和通信。 2. badUSB攻击:badUSB利用的是USB设备固件的漏洞,通过修改设备固件,使原本应该是普通输入输出设备的USB设备(如键盘、鼠标、存储设备等)表现出非预期的行为,例如模拟键盘输入恶意命令,或者以不同的设备身份连接到系统中。这种攻击技术的出现使得传统的USB安全防护措施面临挑战。 3. PCB设计:本项目提供了badUSB的PCB(印刷电路板)设计资料,包含了PCB的布局图、原理图和布线图。PCB设计是电子工程中非常重要的环节,需要考虑电路的稳定性、散热、信号完整性和制造成本等。 4. 项目文档:资源包中的“详细文档.md”文件提供了项目的完整说明,包括设计思路、实现方法、测试过程、使用说明和可能的改进方案等,是项目使用和研究的重要参考。 5. 项目代码:项目代码是实现badUSB功能的核心,包括了固件的编程和调试。代码需要在具有相应开发环境和工具链的条件下编译和烧录到CH55x系列单片机上。代码的测试和运行成功表明了项目的可操作性和实用性。 6. 教育和研究用途:该项目适合作为学习资料用于教学和研究。对于在校学生和教师来说,可以将此项目作为理论与实践相结合的教学案例,帮助学生更好地理解和掌握微控制器应用、USB通信协议和嵌入式系统开发等知识。对于企业员工来说,通过研究和修改badUSB项目代码,可以加深对USB安全风险的认识和防御能力的提升。 7. 开源与交流:项目资源包的公开下载说明,该项目支持开放和共享的精神,鼓励用户下载使用并参与到项目的交流和改进中来,以达到互相学习、共同进步的目的。 综上所述,本资源包是一个完整的badUSB项目资料集,不仅包含了硬件设计和软件代码,还提供了详尽的文档说明,对于那些希望深入学习USB安全、嵌入式系统开发和CH55x单片机应用的技术人员和学生来说,是一个不可多得的学习和实践资源。

#include<stdio.h> #include<string.h> char prog[80],token[8],ch; int syn,p,m,n,sum; char rwtab[6]={"begin","if","then","while","do","end"}; void scaner(); int main() { p=0; printf("\n please input a string(end with '#'):\n"); do{ scanf("%c",&ch); prog[p++]=ch; }while(ch!='#'); p=0; do{ scaner(); switch(syn) { case 11:printf("(%-10d%5d)\n",sum,syn); break; case -1:printf("you have input a wrong string:\n"); getchar(); return 0; default:printf("(%-10s%5d)\n",token,syn); break;} }while(syn!=0); getchar(); return 0; } void scaner(){ sum=0; for(m=0;m<8;m++) token[m++]=NULL; ch=prog[p++]; m=0; while((ch==' ')||(ch=='\n')) ch=prog[p++]; if(((ch<='z')&&(ch>='a'))||((ch<='Z')&&(ch>'A'))) {while(((ch<='z')&&(ch>='a'))||((ch<='Z')&&(ch>'A'))||((ch>='0')&&(ch<='9'))) {token[m++]=ch; ch=prog[p++];} p--; syn=10; for(n=0;n<6;n++) if(strcmp(token,rwtab[n])==0) {syn=n+1; break;} } else if((ch>='0')&&(ch<='9')) {while((ch>='0')&&(ch<='9')) { sum=sum10+ch-'0'; ch=prog[p++]; } p--; syn=11; } else switch(ch) { case '<':token[m++]=ch; ch=prog[p++]; if(ch=='=') { syn=22; token[m++]=ch; } else{ syn=20; p--; } break; case '>':token[m++]=ch; ch=prog[p++]; if(ch=='=') { syn=24; token[m++]=ch; } else{ syn=23; p--; } break; case '+':token[m++]=ch; ch=prog[p++]; if(ch=='+') { syn=17; token[m++]=ch; } else{ syn=13; p--; } break; case '-':token[m++]=ch; ch=prog[p++]; if(ch=='-') { syn=29; token[m++]=ch; } else{ syn=14; p--; } break; case '!':ch=prog[p++]; if(ch=='=') { syn=21; token[m++]=ch; } else{ syn=3; p--; } break; case '=':token[m++]=ch; ch=prog[p++]; if(ch=='=') { syn=25; token[m++]=ch; } else{ syn=18; p--; } break; case '*':syn=15; token[m++]=ch; break; case '/':syn=16; token[m++]=ch; break; case '(':syn=27; token[m++]=ch; break; case ')':syn=28; token[m++]=ch; break; case '{':syn=5; token[m++]=ch; break; case '}':syn=6; token[m++]=ch; break; case ';':syn=26; token[m++]=ch; break; case '"':syn=30; token[m++]=ch; break; case '#':syn=0; token[m++]=ch; break; case ':':syn=17; token[m++]=ch; break; default:syn=-1; break; } token[m++]='\0'; }怎么让输出结果value在前和code在后

2023-06-01 上传