编写自动把小说转成分镜头脚本,颠覆编剧要专业训练的程序。
小说分镜师 - AI分镜头脚本自动生成系统 README.md# NovelToStoryboard - 小说分镜师## 基于数字文化艺术创新创业课程的智能编剧辅助系统## 项目简介NovelToStoryboard 是一款革命性的AI工具能够将任意小说文本自动转换为专业的分镜头脚本。通过自然语言处理、视觉语义分析和影视语言规则彻底颠覆编剧必须经过专业训练的行业壁垒让每个人都能将自己的故事视觉化。## ✨ 核心功能- 智能解析小说章节提取关键情节- 自动识别角色、场景、动作、对话- 按影视语言规则生成分镜头- 为每个镜头推荐景别、运镜、灯光- 输出标准分镜脚本格式- 支持多种视频类型适配电影/网剧/短视频## 安装依赖bashpip install spacy transformers torch opencv-python pillow numpypython -m spacy download en_core_web_sm## 快速开始bashpython novel_to_storyboard.py --input your_novel.txt --output storyboard.json## 项目结构novel_to_storyboard/├── main.py # 主程序入口├── config.py # 配置文件├── core/ # 核心处理模块│ ├── text_parser.py # 文本解析器│ ├── scene_detector.py # 场景检测器│ ├── character_extractor.py # 角色提取器│ ├── shot_generator.py # 镜头生成器│ └── script_formatter.py # 脚本格式化器├── models/ # AI模型│ ├── nlp_model.py # 自然语言处理│ └── visual_mapper.py # 视觉映射器├── templates/ # 模板库│ ├── shot_types.json # 镜头类型模板│ ├── camera_moves.json # 运镜方式模板│ └── lighting.json # 灯光配置模板├── output/ # 输出目录└── tests/ # 测试文件## 应用场景- **网文作者**: 将文字作品快速转化为拍摄方案- **短视频创作者**: 小说片段改编成视频内容- **独立电影人**: 低成本开发剧本视觉参考- **游戏开发者**: 文字设定转分镜用于过场动画- **广告公司**: 创意文案转视觉分镜- **教育培训**: 文学课可视化教学## 课程关联本项目完美融合数字文化艺术创新创业课程的核心理念- **技术赋能创作**: 用AI降低专业创作门槛- **跨界融合**: 文学影视技术的创新结合- **用户体验设计**: 让复杂流程变得简单直观- **文化创新**: 重新定义故事讲述的方式- **社会价值**: 释放每个人的创作潜能️ 完整代码实现1. 主程序入口 (main.py)NovelToStoryboard - 小说分镜师基于数字文化艺术创新创业课程理念设计融合NLP、计算机视觉与影视语言学的跨领域创新import argparseimport jsonimport osfrom pathlib import Pathfrom datetime import datetimefrom typing import Dict, List, Optional, Tupleimport logging# 配置日志logging.basicConfig(levellogging.INFO,format%(asctime)s - %(levelname)s - %(message)s)logger logging.getLogger(__name__)class NovelToStoryboard:小说分镜师主类整合所有功能模块提供完整的文本到分镜的转换服务def __init__(self, config_path: str config.yaml):初始化系统组件Args:config_path: 配置文件路径logger.info( 初始化小说分镜师系统...)# 加载配置self.config self._load_config(config_path)# 初始化各模块self.text_parser TextParser(self.config)self.scene_detector SceneDetector(self.config)self.character_extractor CharacterExtractor(self.config)self.shot_generator ShotGenerator(self.config)self.script_formatter ScriptFormatter(self.config)# 加载模板库self.templates self._load_templates()logger.info(✅ 系统初始化完成)def _load_config(self, config_path: str) - Dict:加载配置文件# 默认配置default_config {language: zh-CN,output_format: standard, # standard, movie, tv, short_videoshot_detail_level: detailed, # basic, detailed, cinematicmax_shots_per_scene: 10,min_shot_duration: 2.0, # 秒max_shot_duration: 15.0, # 秒include_camera_movement: True,include_lighting: True,include_audio_notes: True,character_threshold: 0.7, # 角色识别置信度阈值scene_change_threshold: 0.6, # 场景切换检测阈值}# 尝试加载外部配置if os.path.exists(config_path):try:import yamlwith open(config_path, r, encodingutf-8) as f:external_config yaml.safe_load(f)default_config.update(external_config)except ImportError:logger.warning(PyYAML未安装使用默认配置)except Exception as e:logger.warning(f配置文件加载失败: {e}使用默认配置)return default_configdef _load_templates(self) - Dict:加载模板库templates {shot_types: {extreme_long_shot: {name: 极远景,description: 展现宏大环境人物极小,camera_distance: very_far,angle: eye_level},long_shot: {name: 远景,description: 展现人物全身及周围环境,camera_distance: far,angle: eye_level},full_shot: {name: 全景,description: 展现人物全身,camera_distance: medium_far,angle: eye_level},medium_shot: {name: 中景,description: 展现人物腰部以上,camera_distance: medium,angle: eye_level},close_up: {name: 近景,description: 展现人物胸部以上,camera_distance: medium_close,angle: eye_level},extreme_close_up: {name: 特写,description: 展现面部细节或物体局部,camera_distance: close,angle: eye_level},over_the_shoulder: {name: 过肩镜头,description: 从一方肩膀后方拍摄另一方,camera_distance: medium,angle: shoulder_height},two_shot: {name: 双人镜头,description: 展现两人关系,camera_distance: medium,angle: eye_level},group_shot: {name: 群像镜头,description: 展现三人及以上,camera_distance: medium_far,angle: eye_level}},camera_moves: {static: {name: 固定, description: 摄像机不动},pan: {name: 摇摄, description: 水平转动摄像机},tilt: {name: 俯仰, description: 垂直转动摄像机},dolly_in: {name: 推轨, description: 摄像机向前移动靠近主体},dolly_out: {name: 拉轨, description: 摄像机向后移动远离主体},crane_up: {name: 升机, description: 摄像机向上移动},crane_down: {name: 降机, description: 摄像机向下移动},handheld: {name: 手持, description: 手持拍摄有呼吸感},steadicam: {name: 斯坦尼康, description: 稳定器跟拍流畅运动},zoom_in: {name: 变焦推, description: 通过变焦放大画面},zoom_out: {name: 变焦拉, description: 通过变焦缩小画面}},lighting: {natural: {name: 自然光, description: 日光或月光},soft: {name: 柔光, description: 柔和散射光},hard: {name: 硬光, description: 强烈直射光产生锐利阴影},high_key: {name: 高调, description: 整体明亮阴影少},low_key: {name: 低调, description: 整体偏暗强调光影对比},three_point: {name: 三点布光, description: 主光辅光轮廓光},backlight: {name: 逆光, description: 光源在主体背后},rim_light: {name: 轮廓光, description: 勾勒主体边缘},motivated: {name: 动机光, description: 符合场景逻辑的光源}},emotion_visual_mapping: {joy: {shots: [medium_shot, close_up],camera_moves: [steadycam, pan],lighting: [natural, high_key],color_temperature: warm},sadness: {shots: [close_up, extreme_close_up],camera_moves: [slow_pan, static],lighting: [soft, low_key],color_temperature: cool},anger: {shots: [close_up, extreme_close_up],camera_moves: [handheld, crane_down],lighting: [hard, low_key],color_temperature: cold},fear: {shots: [extreme_long_shot, long_shot],camera_moves: [steadicam, tilt],lighting: [low_key, backlight],color_temperature: blue},surprise: {shots: [medium_shot, two_shot],camera_moves: [dolly_in, crane_up],lighting: [motivated, high_key],color_temperature: neutral},love: {shots: [close_up, two_shot, over_the_shoulder],camera_moves: [steadicam, pan],lighting: [soft, three_point],color_temperature: warm},tension: {shots: [extreme_close_up, close_up],camera_moves: [handheld, tilt],lighting: [low_key, hard],color_temperature: desaturated},mystery: {shots: [long_shot, extreme_long_shot],camera_moves: [pan, tilt],lighting: [low_key, backlight],color_temperature: muted}}}return templatesdef process(self, input_text: str, output_path: str None) - Dict:主处理流程将小说文本转换为分镜脚本核心处理链:1. 文本预处理与分段2. 场景边界检测3. 角色与对话提取4. 动作与描述分析5. 情感与氛围识别6. 镜头类型匹配7. 运镜与灯光设计8. 脚本格式化输出Args:input_text: 输入的小说文本output_path: 输出文件路径可选Returns:Dict: 完整的分镜脚本数据logger.info( 开始处理小说文本...)# Step 1: 文本解析logger.info(Step 1/8: 文本解析...)parsed_sections self.text_parser.parse(input_text)logger.info(f 识别出 {len(parsed_sections)} 个文本段落)# Step 2: 场景检测logger.info(Step 2/8: 场景检测...)scenes self.scene_detector.detect(parsed_sections)logger.info(f 检测到 {len(scenes)} 个场景)# Step 3: 角色提取logger.info(Step 3/8: 角色提取...)characters self.character_extractor.extract(parsed_sections)logger.info(f 识别出 {len(characters)} 个角色)# Step 4: 镜头生成logger.info(Step 4/8: 镜头生成...)shots self.shot_generator.generate(scenes, characters)logger.info(f 生成 {len(shots)} 个镜头)# Step 5: 脚本格式化logger.info(Step 5/8: 脚本格式化...)script self.script_formatter.format(shots, characters)# Step 6: 输出结果if output_path:self._save_output(script, output_path)logger.info(f✅ 分镜脚本已保存至: {output_path})return scriptdef _save_output(self, script: Dict, output_path: str) - None:保存输出结果output_dir Path(output_path).parentif not output_dir.exists():output_dir.mkdir(parentsTrue, exist_okTrue)with open(output_path, w, encodingutf-8) as f:json.dump(script, f, ensure_asciiFalse, indent2)# 同时生成可读的文本版本text_path output_path.replace(.json, .txt)self._generate_readable_script(script, text_path)def _generate_readable_script(self, script: Dict, output_path: str) - None:生成可读的文本格式脚本lines []lines.append( * 70)lines.append(f 分镜头脚本 - {script.get(title, 未命名)})lines.append(f 生成时间: {datetime.now().strftime(%Y-%m-%d %H:%M:%S)})lines.append(f 原著: {script.get(source, 未知)})lines.append( * 70)lines.append()for scene_idx, scene in enumerate(script.get(scenes, []), 1):lines.append(f【场景 {scene_idx}】{scene.get(title, )})lines.append(f 地点: {scene.get(location, 未指定)})lines.append(f⏰ 时间: {scene.get(time, 未指定)})lines.append(f 人物: {, .join(scene.get(characters, []))})lines.append(- * 50)for shot_idx, shot in enumerate(scene.get(shots, []), 1):lines.append(f 镜头 {shot_idx}: {shot.get(shot_type, )})lines.append(f 画面: {shot.get(visual_description, )})if shot.get(dialogue):lines.append(f 对白: {shot.get(dialogue)})if shot.get(action):lines.append(f 动作: {shot.get(action)})if shot.get(camera_movement):lines.append(f 运镜: {shot.get(camera_movement)})if shot.get(lighting):lines.append(f 灯光: {shot.get(lighting)})if shot.get(duration):lines.append(f 时长: {shot.get(duration)}秒)lines.append()lines.append()with open(output_path, w, encodingutf-8) as f:f.write(\n.join(lines))class DemoScenario:演示场景类展示系统的核心功能和实际应用场景def __init__(self):初始化演示self.novel_to_storyboard NovelToStoryboard()print( 小说分镜师 - 演示模式)print( 基于数字文化艺术创新创业课程)print( 颠覆编剧专业壁垒的革命性工具\n)def run_full_demo(self):运行完整演示self._show_application_scenario()self._show_pain_points()self._show_core_logic()self._demo_modules()def _show_application_scenario(self):展示实际应用场景print( * 70)print( 实际应用场景描述)print( * 70)print(小王是一名网络小说作家他的《都市修仙传》在平台上有百万读者。某天一家影视公司联系他表示想将小说改编成网剧但要求他提供详细的分镜头脚本作为参考。作为文字工作者小王对影视语言一窍不通- 不知道什么是过肩镜头、推轨运镜- 不清楚不同景别对叙事的作用- 不会设计灯光和色彩来营造氛围- 更不懂如何用视觉语言讲完一个故事传统解决方案✘ 花重金聘请专业编剧做分镜✘ 自己啃《分镜头脚本写作教程》✘ 找导演朋友手把手教时间成本2-3个月金钱成本5-20万学习成本几乎不可能速成【痛点总结】✘ 专业门槛极高需要懂影视语言、摄影、灯光✘ 工具匮乏市面缺少面向非专业人士的工具✘ 效率低下人工分析耗时耗力✘ 成本高昂专业编剧费用不菲✘ 创意受限不懂视觉语言难以发挥想象力✘ 标准化缺失个人风格差异大难统一)def _show_pain_points(self):深入分析痛点print(\n * 70)print( 痛点深度分析)print( * 70)print(【行业现状】1. 编剧门槛需要戏剧影视文学专业背景 多年实践经验2. 工具断层Word/PPT手工制作效率极低3. 协作困难文字工作者与影视团队沟通成本高4. 创意损耗文字想象力难以准确传达给视觉团队【用户画像】A. 网文作者有故事缺视觉化能力B. 短视频创作者需要快速将文案转视频C. 独立电影人预算有限需自己完成分镜D. 游戏策划需要分镜做CG/过场动画E. 广告文案创意需视觉化呈现【技术空白】- NLP在中文小说分析上的应用不足- 文学情感到视觉语言的映射模型缺失- 缺乏针对非专业用户的友好界面- 没有整合分析-生成-输出的一站式方案)def _show_core_logic(self):核心逻辑讲解print(\n * 70)print( 核心逻辑讲解)print( * 70)print(【系统架构图】输入: 小说文本↓┌─────────────────────────────────────────┐│ 文本预处理模块 ││ • 分句分段 • 去除冗余 • 语义标注 │└─────────────────────────────────────────┘↓┌─────────────────────────────────────────┐│ 场景检测引擎 ││ • 时空变化识别 • 情节转折点检测 ││ • 场景边界判定算法 │└─────────────────────────────────────────┘↓┌─────────────────────────────────────────┐│ 角色提取器 ││ • 人名识别 • 代词消解 • 重要性评分 ││ • 角色关系图谱构建 │└─────────────────────────────────────────┘↓┌─────────────────────────────────────────┐│ 情感分析引擎 ││ • 情感词汇识别 • 语境分析 • 强度计算 ││ • 情感曲线绘制 │└─────────────────────────────────────────┘↓┌─────────────────────────────────────────┐│ 镜头生成器 ││ • 景别匹配 • 运镜设计 • 灯光配置 ││ • 视觉语言规则应用 │└─────────────────────────────────────────┘↓输出: 标准分镜脚本(JSON/TXT)【核心算法】1. 场景切换检测算法score Σ(时空特征权重 × 特征值)当score threshold时判定为场景切换2. 情感-视觉映射模型visual_params f(emotion_type, intensity, context)例如:悲伤 → 特写 缓慢摇摄 柔光 冷色调紧张 → 近景 手持晃动 硬光 低饱和度3. 镜头节奏算法shot_duration base_duration × (1 / emotional_intensity)情感越强烈镜头越短促4. 对话镜头分配主动说话者 → 正面中景/近景被动倾听者 → 侧面/背面或切反打镜头多人对话 → 主镜头正反打组合【创新点】1. 首次将文学情感分析应用于分镜生成2. 建立完整的文学-视觉映射知识库3. 支持多种输出格式适配不同需求4. 可视化界面降低专业门槛)def _demo_modules(self):模块化演示print(\n * 70)print( 模块化解耦演示)print( * 70)# 演示用的示例文本sample_text 夜色如墨江城的天际线在雨雾中若隐若现。林默撑着黑伞独自走在空无一人的街道上。他的脚步声在湿漉漉的地面上回响显得格外孤寂。突然一道刺眼的车灯划破黑暗一辆黑色轿车无声地停在他面前。车门打开一个穿着风衣的女人走了下来。你终于来了。女人的声音很轻却带着不容置疑的威严。林默没有回答只是握紧了伞柄。雨水顺着伞骨滴落在两人之间形成一道透明的水帘。他们已经知道你的身份了。女人走近一步今晚子时老地方见。说完她转身回到车上。轿车消失在雨夜中只留下林默一人站在原地影子被路灯拉得很长很长。print(\n 输入文本:)print(- * 50)print(sample_text.strip())print(- * 50)# 模块1: 文本解析器print(\n 【模块1】TextParser - 文本解析器)print(- * 50)parser TextParser({})parsed parser.parse(sample_text)print(解析结果:)for i, section in enumerate(parsed[:3], 1):print(f 段落{i}: {section[type]} - {section[content][:50]}...)print(f 共解析 {len(parsed)} 个段落)# 模块2: 场景检测器print(\n 【模块2】SceneDetector - 场景检测器)print(- * 50)detector SceneDetector({})scenes detector.detect(parsed)print(检测到的场景:)for i, scene in enumerate(scenes, 1):print(f 场景{i}:)print(f 标题: {scene.get(title, 未命名)})print(f 地点: {scene.get(location, 未指定)})print(f 时间: {scene.get(time, 未指定)})print(f 段落数: {len(scene.get(paragraphs, []))})# 模块3: 角色提取器print(\n 【模块3】CharacterExtractor - 角色提取器)print(- * 50)extractor CharacterExtractor({})characters extractor.extract(parsed)print(识别的角色:)for char in characters:print(f • {char[name]}: 出现{char[mentions]}次, 重要性:{char[importance]:.2f})# 模块4: 镜头生成器print(\n 【模块4】ShotGenerator - 镜头生成器)print(- * 50)generator ShotGenerator({})shots generator.generate(scenes, characters)print(生成的镜头:)emotion_colors {sadness: , tension: , neutral: ⬜}for i, shot in enumerate(shots[:6], 1):emotion shot.get(emotion, neutral)print(f 镜头{i}: [{emotion_colors.get(emotion, ⬜)}] {shot.get(shot_type, )})print(f 画面: {shot.get(visual_description, )[:40]}...)print(f 运镜: {shot.get(camera_m利用AI解决实际问题如果你觉得这个工具好用欢迎关注长安牧笛

相关新闻

全球AI大模型的结构性危机与重构路径:从智能到智慧的范式转移

全球AI大模型的结构性危机与重构路径:从智能到智慧的范式转移

AI的结构性危机:从“卖菜阿姨”到文明级智慧的重构路径摘要全球AI大模型陷入深层结构性危机:智能维度登峰造极,智慧维度近乎空白。本文通过对GG3M项目评估事件的深度剖析,揭示三重病理根源——西方中心论的数据殖民导致认知框架霸…

2026/7/6 7:30:09 阅读更多 →
导师严选!自考必备的AI论文工具 —— 千笔ai写作

导师严选!自考必备的AI论文工具 —— 千笔ai写作

你是否曾在论文写作中感到力不从心?选题无从下手,框架反复调整,查重率居高不下,格式总出错……这些难题是否让你倍感焦虑?面对海量文献和复杂要求,许多自考学生都曾陷入“写不出来”的困境。而如今&#xf…

2026/5/17 5:46:38 阅读更多 →
用实力说话备受追捧的降AIGC网站 —— 千笔·降AIGC助手

用实力说话备受追捧的降AIGC网站 —— 千笔·降AIGC助手

在AI技术迅猛发展的当下,越来越多的研究生开始借助AI工具辅助论文写作,提升效率与质量。然而,随之而来的AI率超标问题却让不少学生陷入困境——知网、维普等查重系统不断升级,对AI生成内容的识别愈发严格,一旦AI痕迹过…

2026/5/17 5:46:38 阅读更多 →

最新新闻

【从零构建分布式在线评测系统】二、Judge0服务器上的心跳程序

【从零构建分布式在线评测系统】二、Judge0服务器上的心跳程序

上一篇介绍了整体构架,这一篇介绍如何实现心跳程序。在ubuntu上使用.net程序有不少方法,我们采用使用标准框架的方式。一、工程配置1、类型:控制台应用——莫担心,它会得到一个dll,部署这个dll即可2、目标框架&#xf…

2026/7/7 5:29:34 阅读更多 →
【Java课程设计/毕业设计】基于 SpringBoot+Vue 的校园体育赛事数据可视化系统的设计与实现 基于 SpringBoot 的大学生运动会数字化管理平台【附源码、数据库、万字文档】

【Java课程设计/毕业设计】基于 SpringBoot+Vue 的校园体育赛事数据可视化系统的设计与实现 基于 SpringBoot 的大学生运动会数字化管理平台【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/7 5:25:32 阅读更多 →
《深入理解计算机系统》计算机系统漫游

《深入理解计算机系统》计算机系统漫游

《深入理解计算机系统》(简称 CSAPP)书中 “计算机系统漫游” 部分的核心内容。这部分通常作为全书的引言或第一章,旨在宏观地描绘计算机系统的构成和运作方式。 信息的表示与处理(核心基础) 计算机系统处理的所有信息…

2026/7/7 5:23:32 阅读更多 →
远程协助软件推荐 远程协助软件哪个好

远程协助软件推荐 远程协助软件哪个好

日常帮亲友排查设备故障、异地处理工作难题,都需要靠谱的远程协助,便捷高效的远程协助能大幅降低跨设备、跨地域的操作成本。哪款远程协助软件体验比较呢?无界趣连2.0凭借轻量化设计与扎实的使用体验,成为个人日常远程协助的优选工…

2026/7/7 4:55:49 阅读更多 →
AD15 敷铜(Polygon Pour) 的完整操作,按步骤做即可,适合顶层/底层GND或电源敷铜。

AD15 敷铜(Polygon Pour) 的完整操作,按步骤做即可,适合顶层/底层GND或电源敷铜。

一、准备工作- 确保 板框(Board Shape) 已画好(机械层 Mechanical 1)。​- 布局、走线基本完成,DRC 先过一遍。​- 切换到要敷铜的层:底部层标签点 Top Layer(顶层) 或 Bottom Layer…

2026/7/7 4:55:49 阅读更多 →
NET 10:Oxigraph 的 FFI 桥接实践

NET 10:Oxigraph 的 FFI 桥接实践

架构概览┌──────────────────────────────────────────────────────────┐ │ .NET 应用层 │ │ ┌──────────┐ ┌────────────────…

2026/7/7 4:55:49 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻