当前位置: 首页 > article >正文

高校教务系统DES加密登录逆向实战:从抓包到Python自动化

1. 这不是“爬个登录”那么简单为什么一个广东白云学院的登录接口值得花一整天逆向你可能刚看到标题就下意识划走——“又一个学校教务系统不就是抓个包改个密码字段嘛”我完全理解。去年帮朋友调试某高校选课脚本时我也这么想。结果在Fiddler里点开第一个POST请求看到password8a7b6c5d4e3f2a10这种固定长度十六进制字符串心里就咯噔一下这根本不是明文base64也不是简单MD5加盐。后来翻到前端JS里一行CryptoJS.DES.encrypt(...)才意识到——我们面对的不是HTTP协议层的问题而是密码学工程落地的典型断层现场教学系统开发者知道要用加密但没搞懂DES在Web端的实际约束而爬虫工程师如果只盯着Network面板永远卡在“为什么填对了账号密码还是401”。这个案例的核心价值恰恰在于它“难度一般”——没有混淆加密、没有WebAssembly、没有动态密钥调度但它完整暴露了传统DES在现代Web环境中的三重错位密钥长度硬编码导致可穷举、ECB模式明文块重复暴露结构、Base64编码后URL安全字符未转义引发参数截断。我实测过用Python原生pycryptodome库跑通整个流程从抓包定位到解密验证总共27分钟但其中22分钟花在理解“为什么必须用PKCS5补位而不是PKCS7”“为什么IV必须设为空字节而非随机生成”。这些细节官方文档不会写Stack Overflow的答案往往互相矛盾而真实业务系统里它们就是登录失败的全部原因。如果你正在写高校教务类自动化脚本或者需要对接任何使用传统对称加密的老旧Web系统这篇内容能帮你绕过三个最耗时间的坑一是误判加密类型把DES当AES、二是补位方式错误导致解密乱码、三是忽略前端JS中密钥拼接的隐藏逻辑。全文所有代码均可直接复制运行关键参数已用真实测试数据验证连key12345678这种教学用密钥都替换成白云学院生产环境实际使用的keyBaYun2023!经脱敏处理。现在我们从抓包开始像调试自己写的代码一样逐行拆解这个看似简单的登录接口。2. 抓包与静态分析如何在3分钟内锁定DES加密入口点2.1 真实抓包过程还原避开Chrome DevTools的“假安静”很多新手会直接打开Chrome开发者工具切到Network标签页点登录按钮然后在XHR过滤器里找login接口。这方法在白云学院系统上会失效——因为它的登录请求被封装在fetch调用里且请求体是FormData格式Chrome默认不显示原始payload。我试过三次第一次只看到/api/login返回400却找不到password字段在哪。正确做法是打开DevTools后先切到Sources标签页按CtrlShiftF全局搜索关键词password或login在搜索结果中定位到login.js文件白云学院前端代码打包后命名为chunk-vendors.3a7b6c5d.js在该文件中搜索CryptoJS找到关键函数function encryptPassword(pwd) { var key CryptoJS.enc.Utf8.parse(BaYun2023!); var iv CryptoJS.enc.Utf8.parse(\x00\x00\x00\x00\x00\x00\x00\x00); var encrypted CryptoJS.DES.encrypt(pwd, key, { iv: iv, mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); return encrypted.toString(); }提示这里有个致命陷阱——注释里写着mode: ECB但实际CryptoJS的DES默认模式是CBC必须显式声明ECB才会生效。很多教程直接复制这段代码却没注意括号里的配置项导致本地加密结果和前端不一致。2.2 DES参数四要素确认密钥、模式、补位、编码的联动关系从上述JS代码中我们提取出DES加密的四个核心参数每个参数都对应Python实现时的一个关键决策点参数类型前端值Python对应操作为什么必须这样密钥KeyBaYun2023!key bBaYun2023!DES要求密钥长度严格为8字节BaYun2023!正好8字符UTF-8编码后也是8字节无需额外截断或填充初始向量IV\x00\x00\x00\x00\x00\x00\x00\x00iv b\x00 * 8ECB模式理论上不需要IV但CryptoJS为兼容性仍要求传入且必须是8字节空字节传None会报错加密模式CryptoJS.mode.ECBmodeDES.MODE_ECB白云学院服务端解密时使用ECB若Python用CBC模式即使密钥相同也会解密失败补位方式CryptoJS.pad.Pkcs7pad.PKCS7(8).pad(data)DES分组长度为8字节PKCS7补位规则是若原文长度mod 8 r则补(8-r)个字节值为(8-r)。例如123补5个\x05注意网上大量教程说“DES用PKCS5”这是历史遗留说法。PKCS5是PKCS7的子集仅针对8字节分组CryptoJS文档明确写的是Pkcs7Python的pycryptodome库中只有PKCS7类不存在PKCS5。用错补位方式会导致解密后末尾出现乱码字节。2.3 关键验证用前端JS反推Python加密结果在确认参数后必须做交叉验证。我写了个最小化测试在浏览器控制台执行encryptPassword(123456)得到结果U2FsdGVkX1QzZvJZ9XmRg用Python代码计算相同输入from Crypto.Cipher import DES from Crypto.Util.Padding import pad import base64 def des_encrypt(plain_text, key): cipher DES.new(key, DES.MODE_ECB) padded pad(plain_text.encode(utf-8), 8, stylepkcs7) encrypted cipher.encrypt(padded) return base64.b64encode(encrypted).decode(utf-8) print(des_encrypt(123456, bBaYun2023!)) # 输出U2FsdGVkX1QzZvJZ9XmRg结果完全一致。这步验证省掉后续80%的调试时间——如果此处就不匹配说明密钥或补位有误不必继续往下走。3. Python完整实现从密码加密到登录成功的关键七步3.1 环境准备与依赖安装为什么必须用pycryptodome而非pycrypto白云学院系统要求DES加密但Python标准库不提供对称加密实现。常见选择有pycrypto和pycryptodome我强烈推荐后者原因有三pycrypto已于2018年停止维护其DES模块在Python 3.9中存在兼容性问题pip install pycrypto在M1 Mac上会编译失败pycryptodome是pycrypto的活跃分支API完全兼容且修复了ECB模式下空IV处理的bug它的PKCS7补位实现严格遵循RFC 2315而某些第三方库的补位函数会错误地将空字符串补成8个\x08字节正确应为8个\x08但长度为0需补8字节值为8。安装命令pip install pycryptodome requests beautifulsoup4提示不要用pip install crypto这是个占位包实际要装pycryptodome。我曾因装错包浪费15分钟报错信息是ModuleNotFoundError: No module named Crypto.Cipher表面看是路径问题实则是包名错误。3.2 登录全流程代码每行代码背后的业务逻辑以下是可直接运行的完整登录脚本我将关键步骤拆解为七步并标注每步解决的实际问题import requests import base64 from Crypto.Cipher import DES from Crypto.Util.Padding import pad from bs4 import BeautifulSoup # Step 1: 初始化会话获取CSRF Token白云学院登录需防跨站攻击 session requests.Session() login_page session.get(https://jwxt.baiyunu.edu.cn/login) soup BeautifulSoup(login_page.text, html.parser) csrf_token soup.find(input, {name: csrf_token})[value] # 实际页面中存在此字段 # Step 2: 构造用户名学号和密码需DES加密 username 2023123456 raw_password 123456 key bBaYun2023! # Step 3: DES加密密码核心逻辑复用前文验证过的函数 def des_encrypt(plain_text, key): cipher DES.new(key, DES.MODE_ECB) padded pad(plain_text.encode(utf-8), 8, stylepkcs7) encrypted cipher.encrypt(padded) return base64.b64encode(encrypted).decode(utf-8) encrypted_password des_encrypt(raw_password, key) # Step 4: 构建登录表单数据注意字段名必须与前端完全一致 login_data { username: username, password: encrypted_password, captcha: , # 白云学院当前版本未启用验证码 csrf_token: csrf_token, remember_me: on } # Step 5: 发送登录请求关键headers必须包含Referer否则服务端拒绝 headers { User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36, Referer: https://jwxt.baiyunu.edu.cn/login } response session.post(https://jwxt.baiyunu.edu.cn/api/login, datalogin_data, headersheaders) # Step 6: 解析响应结果白云学院返回JSON但status_code200不等于登录成功 if response.status_code 200: result response.json() if result.get(code) 200 and result.get(msg) 登录成功: print(✅ 登录成功Cookie已保存到session) # Step 7: 验证登录态访问个人中心页面检查是否跳转到首页 profile session.get(https://jwxt.baiyunu.edu.cn/student/profile) if 个人信息 in profile.text: print(✅ 个人中心页面加载正常) else: print(❌ 登录态异常个人中心未返回预期内容) else: print(f❌ 登录失败{result.get(msg, 未知错误)}) else: print(f❌ HTTP错误{response.status_code})3.3 七步中的三个高危雷区踩过才知道的细节雷区一Referer头缺失导致403白云学院后端用Nginx做了Referer白名单校验curl -X POST直接调用API会返回403 Forbidden。必须在headers中显式设置Referer为登录页URL且大小写必须与实际页面URL完全一致https://jwxt.baiyunu.edu.cn/login不能写成https://jwxt.baiyunu.edu.cn/Login。雷区二CSRF Token过期机制csrf_token字段有效期为15分钟且每次访问登录页都会刷新。如果脚本中先获取token再等待用户输入密码超时后提交会返回{code:401,msg:非法请求}。解决方案是将token获取与密码加密放在同一执行流中避免中间延迟。雷区三空密码加密的边界情况当用户密码为空字符串时PKCS7补位会添加8个\x08字节加密后Base64编码为U2FsdGVkX19AAAAAAAAAAA。我测试发现白云学院服务端对此有特殊处理——它会拒绝空密码登录但错误提示是密码错误而非密码不能为空。这意味着如果脚本未校验密码非空会陷入“密码正确却一直失败”的死循环。4. 深度避坑指南那些文档里不会写的实战经验4.1 为什么ECB模式在这里“恰好可用”从明文结构看安全妥协DES的ECB模式因“相同明文块产生相同密文块”而被诟病但在白云学院场景下它反而成了可预测性的保障。我们来分析密码123456的加密过程原文UTF-8编码b1234566字节PKCS7补位补2个字节\x02\x02得到b123456\x02\x02DES分组[b123456\x02\x02]仅1个8字节块加密后密文固定值U2FsdGVkX1QzZvJZ9XmRg但如果密码是123456788字节补位会添加8个\x08变成16字节产生两个密文块。此时ECB的弱点就暴露了1234567812345678的密文前8字节和后8字节必然相同。我用真实密钥测试过12345678加密后Base64为U2FsdGVkX1QzZvJZ9XmRgU2FsdGVkX1QzZvJZ9XmRg确实重复。经验白云学院选择ECB是因为其教务系统早期用Java写的javax.crypto.Cipher.getInstance(DES/ECB/PKCS5Padding)是当时最简配置。作为爬虫工程师我们不必批判这种设计而要理解它带来的确定性——这正是自动化脚本能稳定运行的基础。4.2 密码强度检测的隐藏逻辑服务端如何校验“弱密码”你以为登录接口只校验账号密码白云学院在/api/login之前还调用了一个/api/check_password接口传入明文密码未加密进行强度检测。这个接口返回JSON{code:200,data:{is_weak:true,suggestion:请使用字母数字组合}}这个细节很重要如果用户密码太弱如纯数字123456服务端虽允许登录但会在响应头中设置X-Weak-Password: 1后续访问成绩查询等敏感接口时会强制跳转到密码修改页。我在写批量登录脚本时曾因忽略此头导致200个账号登录后无法查成绩排查了3小时才发现是这个隐藏响应头在作祟。解决方案是在登录后检查响应头if response.headers.get(X-Weak-Password) 1: print(⚠️ 密码强度不足建议提醒用户修改) # 此处可调用密码修改接口或记录到日志4.3 会话保持的终极方案Cookie持久化与自动续期白云学院的Cookie有效期为7天但session.cookies对象在Python进程退出后即丢失。要实现长期自动化如每日课表推送必须持久化Cookie。我采用的方案是将session.cookies序列化为JSON存入本地文件每次启动脚本时先尝试加载旧Cookie并验证有效性验证方式访问/api/user/info检查返回code是否为200。import json import os COOKIE_FILE baiyun_cookies.json def save_cookies(session): with open(COOKIE_FILE, w) as f: json.dump(requests.utils.dict_from_cookiejar(session.cookies), f) def load_cookies(session): if not os.path.exists(COOKIE_FILE): return False try: with open(COOKIE_FILE, r) as f: cookies json.load(f) session.cookies requests.utils.cookiejar_from_dict(cookies) # 验证Cookie是否有效 test session.get(https://jwxt.baiyunu.edu.cn/api/user/info) if test.json().get(code) 200: return True except Exception as e: print(fCookie加载失败{e}) return False # 使用示例 if not load_cookies(session): # 执行完整登录流程 login_success do_login(session, username, raw_password) if login_success: save_cookies(session)踩坑心得不要用pickle序列化Cookie它在不同Python版本间不兼容json是唯一安全的选择。另外白云学院的JSESSIONIDCookie设置了HttpOnly属性无法通过JavaScript读取所以前端无法实现“记住密码”这也解释了为什么他们必须依赖服务端Session管理。4.4 错误码全解析从400到503每个状态码背后的真实含义白云学院登录接口的错误码设计很“高校特色”我整理了生产环境遇到的所有HTTP状态码及对应原因状态码响应Body示例真实原因解决方案400{code:400,msg:参数错误}username或password字段缺失或password不是Base64字符串检查DES加密函数是否返回了合法Base64含补位401{code:401,msg:未授权}CSRF Token过期或格式错误如多了空格重新GET登录页获取新Token403{code:403,msg:禁止访问}Referer头缺失或域名不匹配检查headers中Referer是否与登录页URL完全一致422{code:422,msg:验证码错误}虽然当前无验证码但若系统升级启用此码会激活在登录数据中加入captcha字段并留空500{code:500,msg:系统繁忙}后端数据库连接池耗尽高并发时常见添加指数退避重试首次失败后等待1秒第二次2秒第三次4秒特别提醒422错误码在文档中从未提及但我在压力测试时触发过。原因是白云学院系统在流量高峰时会临时启用验证码此时前端JS会动态插入验证码字段而我们的脚本未适配此逻辑。解决方案是在捕获422后自动切换到带OCR识别的验证码流程需额外集成pytesseract。5. 进阶应用从单点登录到教务数据全链路自动化5.1 课表数据抓取如何解析DES加密的课程ID登录成功后访问课表接口/api/student/schedule返回的JSON中course_id字段是加密的{ code: 200, data: [ { course_id: U2FsdGVkX1QzZvJZ9XmRg, course_name: 高等数学, teacher: 张教授 } ] }这个course_id同样是DES加密但密钥不同——它用的是ScheduleKey2023。这是因为白云学院将不同业务模块的密钥隔离避免一处密钥泄露影响全局。解密代码只需替换密钥def decrypt_course_id(encrypted_id): key bScheduleKey2023 cipher DES.new(key, DES.MODE_ECB) decoded base64.b64decode(encrypted_id) unpadded cipher.decrypt(decoded) # 移除PKCS7补位 padding_len unpadded[-1] return unpadded[:-padding_len].decode(utf-8) print(decrypt_course_id(U2FsdGVkX1QzZvJZ9XmRg)) # 输出MATH201_2023_Fall经验不要试图用同一个密钥解所有字段。白云学院的password、course_id、student_id分别使用不同密钥这些密钥通常藏在对应JS文件的const KEY xxx声明中。用grep -r KEY ./static/js/能快速定位。5.2 成绩查询的防刷机制频率限制与行为指纹白云学院对/api/student/grades接口有严格限流单IP每分钟最多10次请求单Session每小时最多30次请求若检测到User-Agent为python-requests阈值降为每分钟3次。绕过方案不是伪造UA会被服务端JS检测而是在请求间加入随机延迟0.8~1.5秒使用session.get()而非requests.get()复用TCP连接在Headers中添加X-Requested-With: XMLHttpRequest模拟AJAX请求。import time import random def get_grades(session): time.sleep(random.uniform(0.8, 1.5)) # 随机延迟 headers { X-Requested-With: XMLHttpRequest, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 } return session.get(https://jwxt.baiyunu.edu.cn/api/student/grades, headersheaders)5.3 自动化脚本的工程化封装CLI工具与配置分离把上述逻辑封装成可复用的CLI工具关键是要解耦配置与代码。我创建了config.yamlbase_url: https://jwxt.baiyunu.edu.cn encryption: password_key: BaYun2023! course_key: ScheduleKey2023 student_key: StudentKey2023 rate_limit: delay_min: 0.8 delay_max: 1.5 max_retries: 3主程序baiyun_cli.py通过PyYAML加载配置实现“一次配置多处复用”import yaml from pathlib import Path CONFIG_PATH Path(__file__).parent / config.yaml def load_config(): with open(CONFIG_PATH) as f: return yaml.safe_load(f) config load_config() print(f✅ 已加载配置{config[base_url]})最后分享一个小技巧在脚本开头加入版本检查避免因pycryptodome升级导致API变更import Crypto if Crypto.__version__ 3.12.0: raise RuntimeError(pycryptodome版本过低请升级pip install --upgrade pycryptodome)这个检查帮我避开了3.10.1版本中PKCS7.pad()函数签名变更的坑——旧版参数是pad(data, block_size)新版改为pad(data, block_size, stylepkcs7)漏掉style参数会静默失败。我在实际使用中发现把密钥写在配置文件里比硬编码在Python里更安全——Git仓库可以.gitignore配置文件而代码文件必须提交。虽然白云学院的密钥不算高危但这个习惯让我在后续对接其他系统时零次因密钥泄露导致事故。

相关文章:

高校教务系统DES加密登录逆向实战:从抓包到Python自动化

1. 这不是“爬个登录”那么简单:为什么一个广东白云学院的登录接口值得花一整天逆向你可能刚看到标题就下意识划走——“又一个学校教务系统?不就是抓个包改个密码字段嘛”,我完全理解。去年帮朋友调试某高校选课脚本时,我也这么想…...

Flutter Widgets组件详解:从基础到高级

Flutter Widgets组件详解:从基础到高级 一、Widget基础概念 在Flutter中,一切都是Widget。Widget是Flutter应用的基本构建块,它们描述了UI在某个特定时刻的外观。Flutter的Widget树是应用界面的核心结构。 1.1 Widget的分类 Flutter Widget主…...

CSS伪类详解:从基础到高级应用

CSS伪类详解:从基础到高级应用 一、什么是CSS伪类 CSS伪类是一种选择器,用于选择处于特定状态的元素。它们以冒号 : 开头,可以为元素的不同状态设置不同的样式。伪类的强大之处在于它们能够根据用户交互、文档结构或元素状态来动态改变样式&a…...

通过Taotoken CLI工具一键配置团队开发环境与统一模型调用

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过Taotoken CLI工具一键配置团队开发环境与统一模型调用 在团队协作开发中,统一管理大模型API的接入配置是一项常见且…...

Flutter国际化与本地化完全指南

Flutter国际化与本地化完全指南 引言 国际化是构建全球化应用的关键环节,Flutter提供了完善的国际化支持。本文将深入探讨Flutter中的国际化和本地化技术。 一、基础配置 1.1 添加依赖 dependencies:flutter_localizations:sdk: flutterintl: ^0.18.11.2 更新main.d…...

CSS背景效果完全指南

CSS背景效果完全指南 引言 CSS背景效果是美化网页的重要手段,通过合理使用背景属性,可以创造出丰富的视觉效果。本文将深入探讨CSS背景的各种属性和高级技巧。 一、背景基础 1.1 background-color .element {background-color: #4CAF50;background-color…...

2026免费一键去图片水印App详细教程,哪个好用一看就会

你是不是也遇到过这种抓狂瞬间:好不容易找到一张绝美壁纸,下载下来发现右下角有个硕大的水印;刷小红书看到一张干货满满的食谱长图,想保存下来慢慢看,结果水印刚好盖在关键步骤上;又或者自己做图时手滑把水…...

144-基于Flask的电商超市数据可视化分析系统

基于 Flask 的电商超市数据可视化分析系统 — 技术文档 目录 项目概述技术栈项目结构系统架构数据库设计后端路由设计数据分析引擎前端页面设计API 接口文档用户认证与权限管理后台部署与运行依赖清单 1. 项目概述 本系统是一个基于 Flask 框架的电商超市数据可视化分析平台…...

Codeforces Round 1058

【实况】Codeforces Round 1058 (Div. 2)(rk3194;perf1423;solve3) https://www.bilibili.com/video/BV1Tv4GzwE5r/ 【赛时3/7】Codeforces Round 1058(Div.2)上1000了记录一下 https://www.bilibili.com/video/BV1BC4kzMEoa/ Codeforces Round 1058 (Di…...

2026最新免费图片去水印工具详细教程丨手把手教会你,一看就会

你是不是也遇到过这样的抓狂时刻:相册里翻到一张超好看的壁纸,刚想设成桌面,角落那个大大的水印瞬间让人没了心情;做课件做汇报,急需一张干净的产品图,翻遍全网不是带标的就是要付费;刷视频看到…...

Kubernetes成本优化与资源管理:降低云原生基础设施成本

Kubernetes成本优化与资源管理:降低云原生基础设施成本 一、成本优化概述 Kubernetes成本优化是通过合理配置资源、优化调度策略、选择合适的实例类型等方式,降低云原生基础设施的运营成本。 1.1 成本组成 成本类型说明优化方向计算成本CPU、内存资源…...

Kubernetes事件驱动架构设计:构建响应式微服务系统

Kubernetes事件驱动架构设计:构建响应式微服务系统 一、事件驱动架构概述 事件驱动架构(EDA) 是一种设计模式,其中系统的行为由事件触发。在Kubernetes环境中,事件驱动架构可以实现松耦合、高可扩展的微服务系统。 …...

Linux渗透测试实战命令指南:从信息收集到横向移动

1. 这不是命令手册,而是一张渗透测试现场的“作战地图”你有没有过这样的经历:坐在靶机前,刚扫出一个Web服务,脑子里立刻蹦出七八个工具名——nmap、gobuster、sqlmap、hydra……可手一伸向键盘,却卡在了第一个参数上&…...

Linux端口敲门原理与knockd实战部署指南

1. 端口敲门不是玄学,是可控的“隐形门铃”很多人第一次听说“SSH端口敲门”,第一反应是:这玩意儿是不是给服务器加了一把看不见的锁?听起来很酷,但真用起来会不会像在黑盒里调音——敲对了门开,敲错了直接…...

AWVS 25.5 Windows版深度部署指南:CVE精准验证与DevSecOps集成

1. 这不是普通安装教程:AWVS 25.5 Windows版的真实价值在哪?很多人搜“AWVS安装教程”,点进来第一反应是“又要填注册码、改hosts、下破解补丁?”——这种认知已经严重落后于2025年的真实技术现场。我用AWVS 25.5在三个不同行业的…...

2026年AI论文写作工具实测认证:5款神器从文献到降重一站式避坑指南

写论文的焦虑,是每个科研人和学生绕不开的“必修课”。选题无从下手,文献检索耗时费力,格式调整反复修改,查重降重更是让人抓耳挠腮。2026年的AI工具早已不是当年的“辅助软件”,而是升级为能理解学术逻辑、生成高质量…...

2026年AI论文写作软件盘点:12款神器助你高效完成去痕改写、润色和过检

随着 AI 技术的持续突破,2026 年的论文写作工具市场已进入“智能化、精细化、合规化”的全新发展阶段。从本科生的课程论文到研究生的学位论文,再到科研人员的期刊投稿,AI 工具正以强大的技术支撑覆盖各类学术场景。无论是选题方向的启发、文…...

《当下的力量》7-10章终章解读:从临在到臣服,活出生命的终极自由

《当下的力量》7-10章终章解读:从临在到臣服,活出生命的终极自由终章:这是全书最具力量的部分,它将告诉你如何在最艰难的人生境遇中,依然保持内心的平静与自由前言 在前六章中,我们已经了解了人类痛苦的根源…...

Python算法基础篇之广度优先搜索(BFS)

一、什么是广度优先搜索(BFS)? 广度优先搜索(Breadth-First Search, BFS) 是一种用于遍历或搜索图、树的算法。其核心策略是:从起始节点出发,先访问所有直接邻居(第1层)&…...

Python算法基础篇之深度优先搜索(DFS)

一、什么是深度优先搜索(DFS)? 深度优先搜索(Depth-First Search, DFS) 是一种用于遍历或搜索图、树的算法。其核心策略是:从起始节点出发,沿着一条路径尽可能深入地探索,直到无法继…...

信创中间件深度解析:东方通TongWeb vs 金蝶天燕 vs 宝兰德,企业级选型指南

📚 信创中间件 🔧 企业级部署 🚀 国产化替代 ⏱️ 阅读约15分钟开篇导读:你是否在信创改造中不知道用什么替代WebLogic或WebSphere?网上搜到的中间件资料要么只讲产品功能不讲迁移方案,要么直接给配置却不解…...

中小企业AI落地成本杀手!DeepSeek计费冷知识曝光(含4个可立即启用的免费优化开关)

更多请点击: https://codechina.net 第一章:中小企业AI落地成本杀手!DeepSeek计费冷知识曝光(含4个可立即启用的免费优化开关) 很多中小企业误以为调用 DeepSeek API 的成本仅取决于 token 数量,却忽略了隐…...

网络技术05-TCP拥塞控制算法——从CUBIC到BBR的性能进化

🚗 一句话总结:TCP拥塞控制就像开车——看到前面堵车就减速(拥塞避免),路通畅了就慢慢加速(慢启动)。CUBIC是"看到堵车就猛踩刹车",BBR是"根据路况预测提前调整"…...

eClinMed 中国人民解放军总医院第五医学中心介入超声科:基于超声的可解释性机器学习模型用于≤3cm肝细胞癌分类的开发与验证

01文献信息本次分享的文献是由中国人民解放军总医院第五医学中心介入超声科联合厦门大学附属翔安医院、南开大学医学院和福州市第一总医院超声科等55家医院在2025年2月在柳叶刀子刊《eClinicalMedicine》(中科院1区,IF10.0)上的研究“Develop…...

J Thorac Oncol(IF=20.8)广东省人民医院钟文昭教授团队:基于影像组学的支持向量机区分驱动肺腺癌进展的分子事件

01文献信息本次分享的文献是由广东省人民医院肺癌研究所钟文昭教授团队联合华南理工大学医学院、广东省人民医院病理科、核医学科等多学科团队在2024年9月19日在《Journal of Thoracic Oncology》(中科院1区,IF20.8)上发表的研究“Radiomics-…...

Claude Code 2026 全命令实战:6分钟开发完整坦克对战游戏

文章目录前言第一步:新建文件夹,然后输入一个单词第二步:/plan命令,比产品经理还贴心的规划师第三步:看着AI写代码,自己在旁边喝咖啡第四步:/rewind命令,程序员的后悔药第五步&#…...

深度剖析Claude Code实操逻辑,解锁AI编程高效开发方式

文章目录前言一、我用Claude Code的翻车现场,能写一本《程序员血泪史》二、Claude Code的核心设计思想:你以为它是保姆,其实它是保安三、普通模式vs规划模式:一个是临时工,一个是项目经理四、两条核心指令,…...

掌握AI技能配置技巧 大幅提升日常办公开发效率

P.S. 目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步,增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow,教程通俗易懂,高中生都能…...

量子机器学习模型安全:反向工程威胁与防御策略解析

1. 量子机器学习模型的反向工程:安全威胁与防御策略量子计算与机器学习的结合,正以前所未有的方式重塑我们处理复杂问题的能力。作为一名长期关注量子算法与信息安全交叉领域的研究者,我亲眼见证了量子机器学习从理论构想走向实际应用的飞速发…...

【Sora 2视频后期处理黄金法则】:20年AI影像专家亲授5大不可绕过的帧级调优技巧

更多请点击: https://codechina.net 第一章:Sora 2视频后期处理的底层逻辑与帧级思维重构 Sora 2并非传统时间轴驱动的剪辑工具,其视频后期处理建立在扩散模型与隐空间帧序列联合优化的基础之上。每一帧不再作为孤立图像存在,而是…...