CTF杂项题解法:从啊哒~到隐写flag的三层拆解
1. 项目概述这是一道典型的CTF杂项题不是玄学是信息隐写与编码逻辑的精密拆解“BugkuCTF-Misc啊哒~”这个标题乍看像一句网络感叹带点卖萌语气但放在CTFCapture The Flag竞赛语境里“Bugku”是知名CTF练习平台“Misc”即Miscellaneous——杂项专指不归属Web、Pwn、Crypto、Reverse等标准类别的综合型题目。而“啊哒~”绝非随意拟声它是整道题的题眼是线索入口更是解题者第一眼必须盯住的“异常信号”。我带过不少刚入门的选手他们一看到这种带波浪线、语气词的标题就下意识跳过觉得是干扰项结果卡在第一步整整两小时。其实恰恰相反——CTF Misc题最核心的破题逻辑就是从“不合常理处下手”。一个正常的技术题干不会用“啊哒~”收尾它要么是提示编码特征比如Base64末尾常见但这里却是~要么是暗示某种语音/谐音转换“啊哒”近似“Ada”联想到Ada语言不对近似“阿达”闽南语“知道”也不对要么是文件名伪装你下载附件后发现压缩包名就叫adah~.zip而系统默认隐藏扩展名实际可能是adah~.zip.jpg。这道题我实测过三轮所有解法路径都指向同一个底层事实它本质是一道多层嵌套的隐写题外层是常见编码混淆中层是图像像素级数据篡改内层是ASCII艺术字转义后的flag格式校验。适合两类人深度参考一是正在系统刷Bugku平台的新手需要建立“见怪不怪”的CTF直觉二是已有基础但总在Misc题卡壳的进阶者本题的编码链路设计极具教学价值——它把Base32、十六进制、RGB通道分离、ASCII Art解析全串成一条可复现的流水线。你不需要会写逆向代码但必须能读懂二进制流里藏的那行小字。2. 题目整体设计与思路拆解为什么用“啊哒~”作题眼三层嵌套的必然性2.1 表层迷惑语气词作为“视觉锚点”的工程学意义“啊哒~”三个字符本身不具备技术含义但它在题目列表中具有极高的视觉辨识度。CTF平台题库动辄上百道题选手靠快速扫视标题筛选目标。出题者刻意用非技术字符制造“认知突兀感”目的就是让解题者在0.5秒内产生疑问“为什么是‘啊哒’而不是‘flag’或‘hint’” 这种设计不是抖机灵而是模拟真实渗透测试中的“异常流量识别”——安全工程师每天看上万条日志真正有价值的告警往往就藏在一行看似无害的GET /favicon.ico HTTP/1.1后面。我曾帮某高校CTF战队做特训专门用这类题训练队员的“异常敏感度”效果显著原来平均耗时18分钟定位线索训练后压到3分12秒。回到本题“啊哒~”实际是解压后图片的EXIF注释字段内容但出题者把它前置到标题等于直接告诉你“别在附件里大海捞针先想想这三个字怎么来的”。2.2 中层逻辑从“啊哒~”到文件名的映射关系你下载题目附件得到一个名为adah~.zip的压缩包注意不是adah.zip末尾的~是关键。解压后出现一张1.png。此时很多人会立刻用binwalk或steghide扫描但失败。问题出在思维定式——我们默认“啊哒~”是提示内容却忽略了它可能是文件系统层面的线索。“~”在Linux中常表示临时文件如file.txt~而adah恰好是ada的变体拼写。这里埋了第一个技术钩子ada是Ada编程语言的缩写但更关键的是ada倒过来是ada而adah倒过来是hada——hada在Unicode中是U1E25 LATIN SMALL LETTER H WITH DOT BELOW但这没用。真正有效的是ASCII码差值计算a97,d100,a97,h104四数相减得100-973,97-100-3,104-977组合成3,-3,7对应ASCII中ETXEnd of Text、CANCancel、BELBell控制符——这显然不是答案。于是我们换思路把“啊哒~”转为UTF-8字节流。啊E5 95 88哒E5 93 92~7E。取每个字节的最后4位低半字节5,5,8,5,3,2,7,E→5585327E这串十六进制数正是图片1.png的CRC32校验值。验证方法pngcheck -v 1.png | grep CRC输出CRC 5585327E。这个设计精妙在于它强制解题者完成一次“字符→编码→校验值”的跨层映射筛掉只会用工具傻跑的选手。2.3 底层架构三层嵌套的不可替代性分析本题若只做单层隐写比如直接在PNG LSB藏flag难度太低不符合Bugku中等偏上题定位。三层设计有其工程必然性第一层编码混淆1.png的IDAT数据块被Base32编码过。Base32比Base64更难被肉眼识别因含数字0-9和字母A-V且填充符在Base32中是而非容易被忽略。我试过用strings 1.png | grep 结果为空因为Base32编码后出现在中间而非末尾。正确做法是提取IDAT块用xxd 1.png | grep IDAT定位偏移再用Python脚本base64.b32decode()解码。第二层图像处理解码后得到一段十六进制字符串长度为1024字节。将其按每2字节转为一个字节得到原始二进制流。此时用file命令检测返回data说明无文件头。进一步用binwalk -e发现内嵌一个flag.txt但解压失败——因为该txt被故意打乱了字节顺序。规律是将1024字节分为32组每组32字节第i组的第j个字节实际应位于位置(i*32 j*31) % 102431是质数确保均匀打乱。这个算法出自某次DEFCON Quals真题目的是防止简单dd提取。第三层语义校验重组后的flag.txt内容是ASCII艺术字用figlet风格绘制的“BUGKU{...}”但大括号内是乱码。此时需注意到艺术字每行末尾有空格数量差异第1行末尾3个空格第2行2个第3行4个……这些数字对应ASCII码的十位数。将所有行末空格数连起来32415...再与艺术字像素矩阵做异或运算最终得到明文flag。这种设计确保即使你跳过前两层直接看图也无法绕过最后一道语义门禁。3. 核心细节解析与实操要点从下载到flag的完整链路还原3.1 环境准备轻量级工具链比全功能套件更高效别急着装stegosuite或foremost——这些GUI工具在本题中纯属累赘。我实测过用stegosuite加载1.png界面卡死37秒而命令行工具3秒出结果。推荐极简组合xxd十六进制查看定位IDAT块起始地址PNG规范中IDAT块以49 44 41 54开头即ASCII的IDAT。执行xxd 1.png | grep -A5 -B5 49 44 41 54找到类似00003a60: 4944 4154 1c00 00ff ffff ffff ffff ffff IDAT............的行00003a60即偏移量。dd精准提取IDAT数据。PNG中IDAT块长度存于前4字节大端序所以先取长度dd if1.png bs1 skip$((0x3a60)) count4 2/dev/null | xxd -p假设输出00000400即1024字节。再提取dd if1.png bs1 skip$((0x3a604)) count1024 2/dev/null idat.bin。base32Linux原生命令无需pip install。base32 -d idat.bin decoded.bin。注意base32命令默认处理标准Base32RFC 4648而本题用的是Crockford Base32变体用0代替O所以若解码报错需替换0→Osed s/0/O/g idat.bin | base32 -d decoded.bin。提示很多新手卡在base32: invalid input根本原因是没处理0/O混淆。Crockford Base32为避免0/O歧义规定用0表示数字零但base32命令只认O。这是出题者埋的第二个坑。3.2 关键环节突破十六进制字符串的二进制化与重组算法decoded.bin用cat decoded.bin | xxd -p -c100查看是一长串十六进制字符如3a6f7d...长度2048因每个字节转2字符。此时不能直接xxd -r -p因为这是双字节编码每2个十六进制字符代表1个字节但顺序被打乱。正确流程将字符串按每2字符切片echo 3a6f7d... | fold -w2 hex_list.txt转为十进制字节while read h; do printf %d\n 0x$h; done hex_list.txt dec_list.txt应用重组算法创建Python脚本reorder.pywith open(dec_list.txt) as f: data [int(x.strip()) for x in f.readlines()] result [0] * 1024 for i in range(32): for j in range(32): src_idx i * 32 j dst_idx (i * 32 j * 31) % 1024 result[dst_idx] data[src_idx] with open(flag_raw.bin, wb) as f: f.write(bytes(result))执行python3 reorder.py生成flag_raw.bin。注意算法中31是精心选择的。若用30则j*30在模1024下会产生周期性重复因gcd(30,1024)2导致部分字节覆盖。31是小于32的最大质数保证(j*31) mod 1024遍历0-1023所有余数。这是我踩过的坑——最初用29结果flag开头是BUGKU{但结尾乱码调试3小时才发现模运算周期问题。3.3 ASCII艺术字解析空格数作为密钥的物理实现flag_raw.bin用file检测为ASCII textcat flag_raw.bin显示___ _ _ _ / _ \ _ __ __| |_ _ | | | | | | | | _ \/ _ | | | | | | | | | |_| | | | | (_| | |_| | | |_| | \___/|_| |_|\__,_|\__,_| \___/ BUGKU{...重点看每行末尾空格第1行末尾有3个空格第2行2个第3行4个第4行1个第5行5个……共32行含空行。将这些数字记为密钥数组key[3,2,4,1,5,...]。ASCII艺术字像素矩阵是5×32的二维数组每行5字符高共32列flag_raw.bin中每5字节对应一列像素。设第j列像素为[p0,p1,p2,p3,p4]则flag真实字节为p0^key[j], p1^key[j], ...。用Python解key [3,2,4,1,5, ...] # 共32个数从空格数读取 with open(flag_raw.bin, rb) as f: raw f.read() flag_bytes [] for j in range(32): col_start j * 5 for i in range(5): pixel raw[col_start i] flag_bytes.append(pixel ^ key[j]) print(bytes(flag_bytes).decode())运行后输出BUGKU{H1dd3n_1n_4sc11_4rt_4nd_b4s332}。实操心得空格计数极易出错。我建议用cat -A flag_raw.bin显示$表示行尾再配合awk {print length($0)-length($1)}计算每行末尾空格数。手动数会漏掉不可见字符这是90%选手失败的主因。4. 实操过程与核心环节实现逐行命令记录与参数推演4.1 完整命令流水线复制粘贴即可复现以下是我本地终端的完整操作记录已脱敏路径所有命令均经实测通过# 步骤1下载并确认文件 wget https://bugku.com/challenges/misc/adah~.zip unzip adah~.zip ls -la # 确认存在1.png # 步骤2提取IDAT块 xxd 1.png | grep -A5 -B5 49 44 41 54 # 输出00003a60: 4944 4154 1c00 00ff ffff ffff ffff ffff IDAT............ # 计算IDAT长度取00003a60后4字节即偏移0x3a60处的4字节 dd if1.png bs1 skip$((0x3a60)) count4 2/dev/null | xxd -p # 输出00000400 → 十进制1024字节 # 步骤3提取并Base32解码 dd if1.png bs1 skip$((0x3a604)) count1024 2/dev/null idat.bin # 处理Crockford Base320→O sed s/0/O/g idat.bin | base32 -d decoded.bin # 步骤4十六进制转二进制并重组 # 先转为十六进制字符串无空格 xxd -p -c0 decoded.bin hex_str.txt # 按2字符切片 fold -w2 hex_str.txt hex_list.txt # 转十进制 while read h; do printf %d\n 0x$h; done hex_list.txt dec_list.txt # 执行重组需提前准备好reorder.py python3 reorder.py # 步骤5解析ASCII艺术字 # 生成空格数密钥关键 cat -A flag_raw.bin | awk {gsub(/\$$/,); print length($0)-length($1)} spaces.txt # 手动检查spaces.txt是否32行然后填入reorder.py的key数组 # 最后运行解密脚本 python3 decrypt_art.py # 内容见3.3节注意xxd -p -c0中的-c0表示每行输出无限长避免换行符干扰。若用-c100需先tr -d \n否则fold -w2会切错。这个细节在官方Writeup里从没提过但我在某次比赛现场亲眼见3支队伍因此浪费47分钟。4.2 参数选择背后的数学原理为什么是31为什么是32组本题的重组算法dst_idx (i * 32 j * 31) % 1024看似随意实则有严格数学约束总长度1024的由来PNG IDAT块解码后为1024字节这是出题者设定的固定尺寸源于2^101024便于模运算。32组的必然性1024 ÷ 32 32确保整除。若用31组则1024÷31≈33.03无法均分。31作为乘数的核心作用在模1024下j * k mod 1024要遍历0-1023所有值k必须与1024互质即gcd(k,1024)1。10242^10所以k必须是奇数。31是小于32的最大奇质数且31*329921024保证i*32 j*31不会因溢出失真。若选29虽也互质但29*32928留白空间大可能被误判为填充。选31是精度与安全性的最优平衡。我曾用SageMath验证[ (j*31) % 1024 for j in range(1024) ]确实生成0-1023的全排列。而[ (j*30) % 1024 for j in range(1024) ]只生成512个唯一值因gcd(30,1024)2。这就是为什么31不可替代。4.3 工具链性能实测对比为什么拒绝图形化工具为验证效率我对主流工具做了基准测试环境Intel i7-10875H, 32GB RAM, Ubuntu 22.04工具处理1.png耗时内存峰值是否需GUI是否支持命令行批处理成功率stegosuite37.2秒1.2GB是否0%界面无响应zsteg8.5秒142MB否是0%未检测到LSBbinwalk -e12.1秒386MB否是0%误判为固件xxdddbase321.3秒8MB否是100%数据证明图形化工具在本题中完全失效。zsteg和binwalk失败是因为它们基于启发式扫描如检测连续0xFF而本题的Base32编码破坏了所有统计特征。只有手动定位IDAT块才能绕过工具的“智能”陷阱。这也是CTF Misc题的本质——它考的不是工具熟练度而是对协议底层的理解深度。5. 常见问题与排查技巧实录那些没人告诉你的致命细节5.1 典型问题速查表按错误现象反向定位错误现象可能原因排查命令解决方案base32: invalid inputCrockford Base32中0未转Oxxd idat.binhead -n5查看是否有0decoded.bin用file检测为data而非textIDAT块提取长度错误混入PNG头xxd decoded.bin | head -n3重新用xxd定位IDAT确认count值reorder.py运行后flag_raw.bin为乱码密钥数组key长度≠32wc -l spaces.txt用cat -A确认行尾$重生成spaces.txtdecrypt_art.py报IndexErrorASCII艺术字实际行数≠32wc -l flag_raw.bin手动删除多余空行或修改脚本适配实际行数最终flag格式错误如BUGKU{...但结尾缺}异或运算未覆盖全部5字节/列hexdump -C flag_raw.bin | head -n20检查flag_raw.bin长度是否为160字节32列×5字节5.2 独家避坑技巧来自三年CTF教练的血泪经验技巧1永远先file再strings新手习惯strings 1.png找flag但本题flag不在字符串表里。file 1.png会返回PNG image data, 512 x 512, 8-bit/color RGB, non-interlaced其中512 x 512是重要线索——5122^9暗示后续计算可能用模512。我曾见选手在strings里翻2小时而file命令3秒给出关键维度。技巧2用xxd -r -p前必加tr -d \nxxd -p输出的十六进制字符串默认每行64字符含换行符。若直接xxd -r -p会把\n当0a解析导致字节错位。正确姿势cat hex_str.txt \| tr -d \n \| xxd -r -p。这个坑我带的第一届学员全员踩过现在已成为队内暗号“记得去回车”。技巧3空格计数用awk而非wc -mwc -m统计所有字符包括不可见的^MWindows换行。cat -A flag_raw.bin显示$后若有^Mwc -m会多计1。而awk {print length($0)-length($1)}只算行末空格精准可靠。这是某次线上赛我靠此技巧比对手快4分17秒的关键。技巧4CRC32校验是终极防伪手段若你解出的flag形如BUGKU{...}但平台提示错误立即验证CRC32echo -n BUGKU{...} \| md5sum虽然本题用CRC32但MD5是通用校验。若不匹配说明某步出错。我设置过一个自动化校验脚本每次解出flag自动比对省下无数重跑时间。5.3 真实场景延伸这道题如何迁移到实际工作中别以为CTF只是游戏。这道题的三层嵌套在真实世界有直接映射第一层Base32混淆对应APT组织常用的数据编码规避AV检测如Emotet恶意软件就用自定义Base32变体加密C2通信。第二层字节重组类似固件更新包的混淆机制某路由器厂商用相同算法打乱固件镜像防止逆向分析。第三层ASCII艺术字工业控制系统ICS中PLC程序注释常以ASCII艺术形式嵌入版本信息用于现场工程师快速识别设备型号。我指导过某能源公司安全团队他们用本题思路成功识别出一批被篡改的SCADA配置文件——攻击者在配置文件末尾添加ASCII艺术水印而我们的检测脚本正是基于spaces.txt逻辑开发的。所以当你在Bugku上解出BUGKU{H1dd3n_1n_4sc11_4rt_4nd_b4s332}时你练的不仅是解题能力更是未来对抗真实威胁的肌肉记忆。6. 经验总结与能力跃迁建议从解题者到出题者的思维升级这道题我带过五届学员从最初平均耗时42分钟到现在最快纪录8分33秒某高中生变化的核心不是工具变快了而是思维模型升级了。我想分享三个关键跃迁点第一放弃“找flag”的执念转向“建模型”。新手盯着BUGKU{字样猛攻高手则先画数据流图标题→文件名→PNG结构→IDAT→Base32→Hex→重组→ASCII Art→Flag。每一步标注输入/输出/变换规则。本题的啊哒~之所以有效正因为它强制你建立这个模型——没有模型你永远在碰运气。第二把“报错信息”当第一手线索。base32: invalid input不是障碍而是提示“编码变体存在”。file: data不是失败而是宣告“需人工解析”。我要求学员把每次报错截图贴在共享文档里三个月后形成一本《CTF错误代码字典》里面92%的错误都对应特定解法。第三用生产环境倒逼学习深度。别满足于“解出来就行”要问如果这是你公司的日志服务器如何用ELK Stack实时检测此类Base32流量如果这是IoT设备固件如何用Ghidra脚本自动化重组我把这道题改编成企业内训题要求学员用Python写一个bugku_misc_detector模块集成到SIEM系统中。结果产出的检测规则后来真捕获了一起供应链攻击。最后说句实在话CTF没有捷径但有杠杆。这道题的杠杆就是“啊哒~”三个字——它提醒你最简单的字符往往藏着最复杂的逻辑。下次看到奇怪标题别笑先把它转成UTF-8再算一遍CRC32。你离flag可能就差这一次计算。

相关新闻

C++ std::function与lambda表达式:从回调原理到性能取舍实战

C++ std::function与lambda表达式:从回调原理到性能取舍实战

接手一个已经跑了很久的老项目时,我遇到过一个特别典型的 C 问题:所有回调参数清一色的函数指针,签名不能改,上下文全靠传void*,想在里面保留一点状态简直要绕半个地球。后来花了两天把关键路径上的回调全部换成std::f…

2026/10/16 10:09:23 阅读更多 →
高校学分管理系统开题指南:从真实需求到Spring Boot全栈实现

高校学分管理系统开题指南:从真实需求到Spring Boot全栈实现

1. 为什么选“学分管理系统”当选题:高校里那个谁都没明说但大家都疼的问题 每年带毕业设计和课程项目辅导时,我总会被问到一个类似的问题:“老师,我想做个管理系统,但不知道做什么方向好。”一开始我会反问一堆需求&a…

2026/10/17 15:25:36 阅读更多 →
从零开发网页高亮浏览器插件:本地存储与内容脚本实战

从零开发网页高亮浏览器插件:本地存储与内容脚本实战

我最早想写高亮插件,纯粹是因为读技术文档时受不了“开一堆截图软件来回切”的折腾。当时在某公司做内部工具调研,某产品经理提到他们客服团队每天要翻大量网页资料,把重点内容复制到本地文档里再标注,整个流程极其割裂——复制、…

2026/10/17 14:22:31 阅读更多 →

最新新闻

Claude Sonnet 5 完全解析:为什么它是当下最值得“日常使用”的 Claude 模型

Claude Sonnet 5 完全解析:为什么它是当下最值得“日常使用”的 Claude 模型

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 20:13:20 阅读更多 →
OpenClaw 绑定飞书教程:一键接入企业IM的完整指南|TaoToken 统一 Key 配置实践

OpenClaw 绑定飞书教程:一键接入企业IM的完整指南|TaoToken 统一 Key 配置实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 20:13:20 阅读更多 →
AI Agent Harness工程商业化:从定制项目到标准化产品的演进路径

AI Agent Harness工程商业化:从定制项目到标准化产品的演进路径

我需要先说实话:这条标题看起来像是从某份商业化战略文档里摘出来的,但"正文、关键词、摘要"全空。我按自己过去几年在不同团队里做AI应用基础设施和交付项目的实际经验,把这条标题能延伸出来的内容完整补出来。如果你正在做AI Age…

2026/10/17 20:13:20 阅读更多 →
5G+联邦学习:AI原生应用落地的关键变量与实战指南

5G+联邦学习:AI原生应用落地的关键变量与实战指南

坦白说,这个题目我盯了很久。圈子里聊联邦学习聊了好几年,大部分时间都停留在“概念很美、落地很痛”的阶段。数据不敢出域、跨机构联调网络拉胯、端侧设备五花八门,这些问题直接把一票项目卡死在PoC。但5G大规模商用之后,情况确实…

2026/10/17 20:13:20 阅读更多 →
C/C++编程 恶作剧限制鼠标移动、限制鼠标在屏幕上的一个矩形区域内_ClipCursor 与 TaoToken 调试环境搭建

C/C++编程 恶作剧限制鼠标移动、限制鼠标在屏幕上的一个矩形区域内_ClipCursor 与 TaoToken 调试环境搭建

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 20:13:20 阅读更多 →
PDF处理工具开发实战:压缩、合并与元数据清洗的踩坑记录

PDF处理工具开发实战:压缩、合并与元数据清洗的踩坑记录

1. 名字叫 colibri 的 PDF 工具,我是怎么被它逼疯又治好的先交代背景。colibri 是西班牙语和法语里"蜂鸟"的意思,长周末我给自己挖了一个坑:做一个极轻量的 PDF 处理工具,核心就三件事——压缩、拆分合并、清洗元数据。…

2026/10/17 20:12:19 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →