找到
49
篇与
技术文章
相关的结果
- 第 5 页
-
利用ESP8266制作钉钉WIFI打卡神器升级版 之前研究的一版破解WiFi打卡的工具,但是WIFI名称、密码、MAC地址全部写死在程序里了,改动需要修改代码重新下载。升级了下网页配置功能 利用自己之前学的一点html知识,结合做前端朋友的帮助,写了一个配网页面,配置时,会对密码和MAC地址进行校验,密码长度必须超过8位或者不输入,MAC先进行格式校验,后对每两个数据进行十六进制校验,通过后,修改所有参数,通过EEPROM库将数据保存在flash。然后重启设备,重新启动后读取配置信息,开启AP并修改MAC地址 下面是最新版的代码,有需要的可以自己下载arduino,买个ESP8266-12F模块,下载进去即可使用 #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <EEPROM.h> //首页html const char* home_page_str = "<html>\n <head>\n <meta charset=\"utf-8\" name=\"viewport\" content=\"width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0\">\n <title>配置页面</title>\n <script src=\"config.html\" type=\"text/javascript\" charset=\"utf-8\"></script>\n <style>\n .formBox{\n width: 100%;\n float: left;\n margin: 0 auto\n }\n .formBox > form {\n width: 80%;\n margin: 0 auto;\n }\n form > input{\n width: 100%;\n height: 40px;\n }\n </style>\n </head>\n <body>\n <div align=\"center\">\n <h1>欢迎使用WIFI打卡神器</h1>\n \n </div><br><br>\n <div align=\"center\" class=\"formBox\">\n <form action=\"/result.html\">\n <h3>WIFI名称:</h3>\n <input type=\"text\" name=\"ssid\" value=\"\" required><br>\n <h3>WIFI密码:</h3>\n <input type=\"text\" name=\"password\" value=\"\"><br>\n <h3>MAC地址:</h3>\n <input type=\"text\" name=\"mac\" value=\"\" required><br>\n <input type=\"submit\" style=\"margin-top: 30px; font-size: 20px;\" value=\"配置\">\n </form> \n </div>\n </body>\n <script>\n \n let {mac,password,ssid} = config;\n document.getElementsByName('mac')[0].value = mac || '';\n document.getElementsByName('password')[0].value = password || '';\n document.getElementsByName('ssid')[0].value = ssid || '';\n \n \n </script>\n</html>"; //定义配置类型 typedef struct { unsigned char Default_Tag;//默认标记 char stassid[32];//定义WIFI名称 char stapsw[64];//定义WIFI密码 uint8_t mac[6]; //定义mac地址 }config_type; //定义默认配置 config_type const Default_Config = { .Default_Tag = 254, .stassid = "www.dzahz.cn\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", .stapsw = {'\0'}, .mac = {0x44,0x55,0xC4,0x37,0xB9,0xC0} }; config_type config; //配置信息 ESP8266WebServer server(80); void setup() { // 启动串口通讯 Serial.begin(115200); Serial.println(); Serial.printf("设置接入点中 ... "); //读取WIFI配置 loadConfig(); if(config.Default_Tag != Default_Config.Default_Tag) //判断是否初始化配置 { config = Default_Config; saveConfig(); } Serial.printf("ssid:%s\n",config.stassid); Serial.printf("pasword:%s\n",config.stapsw); Serial.printf("mac:%x:%x:%x:%x:%x:%x\n",config.mac[0],config.mac[1],config.mac[2],config.mac[3],config.mac[4],config.mac[5]); //启动AP delay(500); wifi_set_macaddr(SOFTAP_IF, config.mac); delay(500); WiFi.mode(WIFI_AP); if(config.stapsw[0] == '\0') WiFi.softAP(config.stassid, NULL); else WiFi.softAP(config.stassid, config.stapsw); //设置wedserver回调 server.on("/",HTTP_GET, homepage); server.on("/result.html",HTTP_GET, config_result); server.on("/config.html",HTTP_GET, query_par); server.onNotFound(handleNotFound); //启动服务 server.begin(); } //十六禁止格式判断,传输数据指针 bool hex_jud(char *str) { if((str[0] > '9') || (str[0] < '0')) //一个如果不是数字,则判断是否是A-F { if((str[0] > 'F') || (str[0] < 'A')) { if((str[0] > 'f') || (str[0] < 'a')) { return false; } } } if((str[1] > '9') || (str[1] < '0')) //一个如果不是数字,则判断是否是A-F { if((str[1] > 'F') || (str[1] < 'A')) { if((str[1] > 'f') || (str[1] < 'a')) { return false; } } } return true; } /**************************************** *函数名称:saveConfig *函数功能:保存配置信息 *输入参数:无 *输出参数:无 *备 注: *****************************************/ void saveConfig() //保存配置函数 { EEPROM.begin(1024); //申请1024的内存 配置保存在前256 uint8_t *p = (uint8_t *)(&config); for (int i = 0; i < sizeof(config); i++) { EEPROM.write(i, *(p + i)); } EEPROM.commit(); } /**************************************** *函数名称:loadConfig *函数功能:读取配置信息 *输入参数:无 *输出参数:无 *备 注: *****************************************/ void loadConfig() { EEPROM.begin(1024); uint8_t *p = (uint8_t *)(&config); for (int i = 0; i < sizeof(config); i++) { *(p + i) = EEPROM.read(i); } EEPROM.commit(); } //acsii转十六进制格式 uint8_t acsii_hes(char *str) { uint8_t h; uint8_t l; if((str[0] <= '9') && (str[0] >= '0')) h = str[0] - '0'; else if((str[0] <= 'F') && (str[0] >= 'A')) h = str[0] - 'A' + 10; else if((str[0] <= 'f') && (str[0] >= 'a')) h = str[0] - 'a' + 10; if((str[1] <= '9') && (str[1] >= '0')) l = str[1] - '0'; else if((str[1] <= 'F') && (str[1] >= 'A')) l = str[1] - 'A' + 10; else if((str[1] <= 'f') && (str[1] >= 'a')) l = str[1] - 'a' + 10; return (h << 4) | l; } //自定义主页访问处理函数 void homepage() { server.send(200, "text/html", home_page_str); Serial.println("用户访问了主页"); } //查SSID接口 void query_par() { char str[256]; sprintf(str,"const config = {\"ssid\":\"%s\",\"password\":\"%s\",\"mac\":\"%2X:%2X:%2X:%2X:%2X:%2X\"}",config.stassid,config.stapsw,config.mac[0],config.mac[1],config.mac[2],config.mac[3],config.mac[4],config.mac[5]); server.send(200, "text/html", str); } //查WIFI密码接口 void read_stapsw() { server.send(200, "text/plain", config.stapsw); } //查mac接口 void read_mac() { char str[50]; sprintf(str,"%2X:%2X:%2X:%2X:%2X:%2X",config.mac[0],config.mac[1],config.mac[2],config.mac[3],config.mac[4],config.mac[5]); server.send(200, "text/plain", str); } //配置接口 void config_result() { char ssid[32]; char password[64]; char mac[64]; char str[512]; int len; int i; //取出所有信息 sprintf(ssid,"%s",server.arg("ssid").c_str()); sprintf(password,"%s",server.arg("password").c_str()); sprintf(mac,"%s",server.arg("mac").c_str()); Serial.printf("ssid:%s\n",ssid); Serial.printf("pasword:%s\n",password); Serial.printf("mac:%s\n",mac); //校验密码长度 len = strlen(password); if((len < 8) && (len != 0)) { sprintf(str,"<html><meta charset=\"utf-8\"><body><p>密码长度错误,长度:%d<b></body></html>",len); server.send(200, "text/html",str); return; } //校验MAC格式 len = strlen(mac); Serial.printf("maclen:%d\n",len); if(len != 17) //校验总长度 { server.send(200, "text/html","<html><meta charset=\"utf-8\"><body><p>mac格式错误<b></body></html>"); return; } for(i = 0; i < 5; i++) //校验: { Serial.printf("mac:%d\n",mac[i*3+2]); if(mac[i*3+2] != ':') { server.send(200, "text/html","<html><meta charset=\"utf-8\"><body><p>mac格式错误<b></body></html>"); return; } } for(i = 0; i < 6; i++) //校验是否十六进制 { if(hex_jud(&mac[i*3]) == false) { server.send(200, "text/html","<html><meta charset=\"utf-8\"><body><p>mac格式错误<b></body></html>"); return; } } //保存信息 len = strlen(ssid); for(i = 0; i < 32; i++) //先清除原有配置 config.stassid[i] = 0; for(i = 0; i < len; i++) config.stassid[i] = ssid[i]; len = strlen(password); for(i = 0; i < 32; i++) //先清除原有配置 config.stapsw[i] = 0; for(i = 0; i < len; i++) config.stapsw[i] = password[i]; for(i = 0; i < 6; i++) //十六进制 { config.mac[i] = acsii_hes(&mac[i*3]); } saveConfig(); server.send(200, "text/html", "<html><meta charset=\"utf-8\"><body><p>设置成功,设备重启<b></body></html>"); delay(500); system_restart(); //复位 } // 设置处理404情况的函数'handleNotFound' void handleNotFound() { // 当浏览器请求的网络资源无法在服务器找到时, server.send(404, "text/plain", "404: Not found"); // NodeMCU将调用此函数。 } void loop() { //监听客户请求并处理 server.handleClient(); } -
ESP32C3刷固件,清除Flash lb3sxzcb.png图片 打开烧录软件,按下图选择,点 OK lb3syion.png图片 如图,出现固件和地址选项,在 combine 文件夹下有四种 .bin 可以选择 lb3sz8d5.png图片 点 START,出现 等待上电同步 时长按 BOOT lb3szl0k.png图片 此时出现下载中,待进度条走动,可松开 BOOT 键 lb3t00gc.png图片 等待烧写完成后,按 RST 键即可 lb3t0cr4.png图片 烧录器、固件下载: 下载地址:https://neictop-1256272185.cos.ap-guangzhou.myqcloud.com/2022/11/30/1669821489.zi 提取码: -
EPS8266刷固件,清除Flash 关于使用Arduino给8266烧录程序后,8266无法使用AT指令,刷固件教程 由于之前使用8266的时候,用过Arduino烧录过程序,导致无法使用AT指令集,本文将带给大家最详细的清除Flash的教程,学不会你顺着网线来找我。 在写文章之前,已经踩过很多雷了,在网上一搜如何清除Flash的时候,大多数都是使用Python,既不方便使用,也不易操作。其实安信可官方网站已经有提供了相应的固件清除程序。 下载: https://docs.ai-thinker.com/esp_download lb3shysm.png图片 lb3si8qk.png图片 在页面找到这两个,下载烧录软件和 文件。 文件在页面的最下方。 下载完成解压后 找到这个ESP_DOWNLOAD_TOOL_V2.4.exe执行文件 打开它 使用: 1.选择ESP8266 lb3silav.png图片 2.根据我所示的图片修改为以下的配置 lb3sj5os.png图片 根据这个顺序找到相应的烧录文件填写入Download Path Config 这里需要根据你自己不同的8266芯片的FLASH选择不同的FLASH的大小 路径的地方选择下载的Ai-Thinker_ESP8266_DOUT_8Mbit_v1.5.4.1-a_20171130_bin文件的路径 地址写0x00000 下面的COM端口号,根据自己电脑选择,波特率设置为115200 设置好之后,点start,烧录完成会出现FINISH即完成。 这样就擦除了8266的FLASH,AT指令集可以正常使用。 软件和固件打包下载: 下载地址:https://neictop-1256272185.cos.ap-guangzhou.myqcloud.com/2022/11/30/1669821489.zip 提取码: -
合宙ESP32C3 的Arduino开发教程环境配置 介绍 ESP32C3 和ESP32S3都是基于RISCV的内核的处理器,是一个基于精简指令集(RISC)原则的开源指令集架构(ISA)。与大多数指令集相比,RISC-V指令集可以自由地用于任何目的,允许任何人设计、制造和销售RISC-V芯片和软件,所以它的性能好,又因为这个开源设计所以价格极低没有授权费用。 这次我使用的是合宙出的,后面会都是用自己设计的板子,板子不带CH343的加上个屏一共是22.5,当然只是当前价格。 laqy1ccz.png图片 laqy15hu.png图片 东西收到是这样,C3和S3主要还是屏幕支持上差别,比如 ESP32-C3支持QSPI 适合4.3寸以下,SPI QSPI,MCU(8080)接口的屏。ESP32-S3除了支持ESP32-C3上述接口外还支持RGB接口,对一些7寸左右屏幕提供支持 性能上,ESP32C3是单核160Mhz,这种开发板标配4MB的FLASH laqy20uw.png图片 开发环境的配置 合宙ESP32C3开发板一定要安装驱动,芮然买回来,插上默认能识别到串口,并显示端口号,但是还是不能用的,一定要安装CH343驱动才行,安装成功后,合宙ESP32C3端口信息会是上图那样带CH343字样。这是开发合宙ESP32C3第一步。 CH343驱动下载地址:https://www.wch.cn/downloads/CH343SER_EXE.html 安装ESP32C3支持固件包 如果原来Arduino IDE默认安装了ESP32支持固件包,型号列表里面是默认不带ESP32C3以及ESP32S2等型号的。 laqy4t0u.png图片 ESP32支持固件包下载地址:https://github.com/espressif/arduino-esp32 附上快速下载地址: laqy50ye.png图片 如果是第一次安装ESP32支持固件,需要在Arduino IDE的菜单-文件-首选项-附加开发板网址管理器当中添加对应的链接 laqy5949.png图片 1.https://dl.espressif.com/dl/package_esp32_index.json 2.https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json上面第一个网址是标准的ESP32开发板地址,后面那个是完整的开发板型号的地址,里面包含C3,S2等型号。 如果是通过上面的github链接将支持固件包离线下载下来了,就可以忽略添加这个网址的步骤。 将下载下来的ESP32支持固件包解压并放置到指定文件夹下 放置路径:C:\Users\Administrator\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6 这个ESP32支持固件包下来下来压缩包有260多MB,解压后有721MB laqy6cbw.png图片 下载下来的支持固件包比默认安装的ESP32标准固件包文件要多,在拷贝到这个文件夹里面,会遇到有相同的文件的提示,出现这个情况,选择并点击 替换掉原有的文件。 laqy6j1u.png图片 最关键一步来了 将文件解压之后,进入到: C:\Users\Administrator\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\toolslaqy8kz0.png图片 双击鼠标左键运行get.exe可执行文件。会弹出一个DOS界面安装窗口: laqy8vh5.png图片 一定要看到全部安装了上图那些内容才算成功,不然在Arduino IDE里面有可能看不到ESP32C3 /S2等型号的ESP32,或者就是有显示ESP32C3,S2等型号,但是选择这些型号,在进行代码编译,到最后会报错:esptool.exe": file does not exist 其他相关建议 在安装完驱动后,或者在点击get.exe运行时安装不全就退出的情况时,建议重启电脑,并再次尝试安装,get.exe安装一定要看到安装齐全才行,安装窗口界面,安装完,会自动关闭的,安装的时候一定要留心安装完整了。我在这个地方就踩过坑,以为自动安装的,安装完了,就没有问题了,以为可以看到能选择ESP32C3的型号的出现就可以使用了,结果跑去编译代码,到最后还是会报错,后面重启电脑,重新运行get.exe,看着窗口安装,并截图下来了,以此作为安装依据。当然最后成功编译,并烧录了第一个程序。 Creating esp32c3 image... Merged 2 ELF sections Successfully created esp32c3 image. "C:\\Users\\Administrator\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/gen_esp32part.exe" -q "d:\\arduino\\MyHexDir/partitions.csv" "d:\\arduino\\MyHexDir/Blink.ino.partitions.bin" "C:\\Users\\Administrator\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/riscv32-esp-elf/bin/riscv32-esp-elf-size" -A "d:\\arduino\\MyHexDir/Blink.ino.elf" 项目使用了 232580 字节,占用了 (17%) 程序存储空间。最大为 1310720 字节。 全局变量使用了10156字节,(3%)的动态内存,余留317524字节局部变量。最大为327680字节。 C:\Users\Administrator\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/esptool/esptool.exe --chip esp32c3 --port COM5 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0x0 d:\arduino\MyHexDir/Blink.ino.bootloader.bin 0x8000 d:\arduino\MyHexDir/Blink.ino.partitions.bin 0xe000 C:\Users\Administrator\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/partitions/boot_app0.bin 0x10000 d:\arduino\MyHexDir/Blink.ino.bin esptool.py v3.3 Serial port COM5 Connecting.... Chip is ESP32-C3 (revision 3) Features: Wi-Fi Crystal is 40MHz MAC: 60:55:f9:79:87:98 Uploading stub... Running stub... Stub running... Changing baud rate to 921600 Changed. Configuring flash size... Flash will be erased from 0x00000000 to 0x00002fff...烧录时选择flash模式为DIO laqyb9lv.png图片 -
白嫖某玩文字游戏的【免费】在线设计网站 今天在某度搜LOGO在线制作,看有个网站写着大大的“免费”于是开开心心的点了进去 。。。 l4gr0071.png图片 别说,这网站弄出来的LOGO还蛮漂亮的。。。在线设计制作过程确实免费。。。 l4gr09j5.png图片 但保存的时候就要钱了,最低也要99。。。 l4gr0frd.png图片 于是,右键——检查,发现生成的LOGO都是SVG的,而且那里写着一个大大的watermark l4gr0lre.png图片 删掉那一行,于是得到了一个没水印的LOGO l4gr0sqa.png图片 复制SVG节点,右键,复制,复制元素 l4gr0zw8.png图片 桌面新建个文本,粘贴进去,然后保存为svg,用IE打开查看(IE打开可以右键另存为png),得到一个没水印的LOGO l4gr16c5.png图片 右键保存为png后发现,不是透明的,有白背景 l4gr1gbs.png图片 回网站上继续看,这里有个background和#fff(白色),应该是这行了,删掉,然后再复制代码保存 l4gr1mux.png图片 于是免费得到一个透明的LOGO图片 l4gr1sew.png图片 网站也可以在线编辑,替换图标,字体,效果之类的,保存都一样,复制SVG出来就行了。。。 Win11之类的系统没带IE的,或默认浏览器打开没有另存为png的,可以自己搜索svg转png,有不少在线服务的 -
网工必备华为、华三、思科交换机配置自动采集工具(支持telnet、ssh、命令自定义) 软件介绍 华为、华三、锐捷、思科等交换机的自动采集保存的脚本,日常采集交换机的配置,端口信息,vlan、邻居关系等等,支持win10系统。 目前此脚本支持自定义命令设置,支持telnet、ssh,不支持console。 使用说明 l0xegohj.png图片 l0xegxn3.png图片 l0xehlba.png图片 l0xehzxi.png图片 l0xei9c0.png图片 以下是链接,用的好的话给个赞再走。 链接:https://pan.baidu.com/s/1wIH-_FWXQmcTu2y_AY0Y7w 提取码:0zhd 支持ssh、telnet、自定义命令的新版地址 链接:https://pan.baidu.com/s/18T7BS097SUc6xp9--2uKqw 提取码:5krb 阿里不限速分流 https://www.aliyundrive.com/s/EJGXjHRkmAP ⛔ 注意:虽然是同一厂商,但还是存在有些采集的命令略有不同,比如华为CE系列 和 s系列 采集命令上是有些不一样的,配置采集完了之后查看一下采集的配置是不是有出现错误,出现采集错误的原因可能是填写IP的时候是下拉自动填充的,尽量上面所有的ip和账户密码都手动填写。 l0xemw8s.png图片 下载 下载地址:https://www.aliyundrive.com/s/RkXqSutgoDk 提取码: -
autoPing 网络监测软件 软件介绍 autoPing 是一款基于PING协议及TCP协议的网络net设备就在线状态监测软件。 可以能够布置设置定时监测网络拓扑图中的设备, 根据记录ping返回或端口检测结果在网络拓扑图上显示该设备在线状态, 兼有告警功能。 l0xdwk34.png图片 autoPing v3.1更新内容: 1.增加Ping必备工具 2.增加tracert功能 3.增加故障发生时间及故障恢复时间提示 4.增加日志功能 5.增加邮件报警功能 6.增加检测更新功能 autoPing 下载地址:https://neictop-1256272185.cos.ap-guangzhou.myqcloud.com/2022/03/19/1647666277.zip 提取码: