免责声明
学习视频来自 B 站up主泷羽sec,如涉及侵权马上删除文章。
笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。
B站地址:泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频
真正的小白文根据其他师傅们的总结进行重构精简捋顺学习逻辑顺序,适合0.5有计算机专业基础的人看。觉得文章逻辑狗屁不通和文章看不懂的你进微信群找我,我给你100哈哈,虽然是ai辅助的,但是看的时候,要想我为什么给这些内容,和一定要学会反向思考,如安全加固想到未加固有漏洞。
计算机组成及硬软件印象记忆
计算机的基本组成
根据冯·诺依曼体系结构,计算机主要由以下五部分组成:
-
运算器 执行数据运算(如加减乘除),处理逻辑操作(如比较大小)。
-
控制器 负责指令的解释与执行,协调其他部件的工作。
-
存储器 保存程序、数据以及计算结果,分为主存(RAM、ROM)和辅存(硬盘、SSD)。
-
输入设备 将外界信息转换为计算机可以处理的数据(如键盘、鼠标、摄像头)。
-
输出设备 将计算机处理结果以人类可读的形式输出(如显示器、打印机)。
计算机硬件组成
-
中央处理器(CPU)
-
核心组件,包括运算器和控制器。
-
主要参数:主频、核心数、线程数、缓存。
-
-
主板
-
连接 CPU、内存、存储和外设的核心电路板。
-
-
内存(RAM)
-
暂时存储正在运行的程序和数据,速度快但断电后数据丢失。
-
-
存储设备
-
硬盘(HDD):容量大,速度较慢,性价比高。
-
固态硬盘(SSD):速度快,功耗低,价格较高。
-
-
输入输出设备(I/O)
-
输入:键盘、鼠标、触摸屏等。
-
输出:显示器、打印机、扬声器等。
-
-
电源(PSU)
-
提供稳定电流,给各部件供电。
-
-
网络设备
-
实现联网功能,如网卡、Wi-Fi 模块。
-
计算机软件组成
-
系统软件
-
负责管理硬件资源和提供基本服务,如操作系统(Windows、Linux、macOS)。
-
-
应用软件
-
为用户提供特定功能服务,如浏览器、文本编辑器、图像处理软件。
-
-
中间件
-
在系统软件和应用软件之间提供服务,支持复杂的分布式系统。
-
计算机运行原理
-
指令周期 包括取指令(Fetch)、译指令(Decode)、执行(Execute)、存储结果(Write Back)。
-
数据流 数据在输入设备、存储器、CPU、输出设备之间流动,遵循输入-处理-输出的基本流程。
-
总线系统
-
数据总线:传输数据。
-
地址总线:传输存储地址。
-
控制总线:传输控制信号。
-
指令系统
-
机器指令
-
计算机能够直接执行的指令,包括算术运算、逻辑运算、数据传输等。
-
-
指令格式
-
操作码(Opcode) + 操作数(Operands)。
-
-
RISC 和 CISC
-
RISC(精简指令集):指令简单、执行速度快。
-
CISC(复杂指令集):指令功能强大,但执行较复杂。
-
其他概念
-
虚拟内存
-
通过硬盘模拟扩展主存,提高程序运行效率。
-
-
并行计算
-
多核处理器同时执行多个任务。
-
-
存储分级
-
寄存器 > Cache > 主存 > 辅存,越靠近 CPU,速度越快,容量越小。
-
编程语言印象记忆
-
Python 简洁、易学,支持多范式编程,广泛应用于数据科学、Web开发和自动化。
-
Java 面向对象,跨平台,依赖于 JVM;在企业级开发和安卓应用中占据重要地位。
-
C 结构化编程语言,性能高,直接操作内存;常用于系统编程和嵌入式开发。
-
C++ 支持面向对象和泛型编程,扩展自 C;擅长高性能计算和游戏开发。
-
JavaScript 前端开发的核心语言,动态类型,支持事件驱动编程;也可用于后端开发(Node.js)。
-
C# 微软开发的面向对象语言,与 .NET 框架紧密集成;适用于企业应用和游戏开发(Unity)。
-
PHP 专为 Web 开发设计,内置强大的服务器端功能,适合快速开发动态网站。
-
Ruby 语法优雅,支持动态和面向对象编程;因 Ruby on Rails 框架而闻名。
-
Go (Golang) 谷歌开发的静态类型语言,简单高效,原生支持并发;常用于服务器端开发。
-
Rust 注重安全性和高性能,内存管理无垃圾回收;适合系统编程和 WebAssembly。
-
Kotlin 兼容 Java,简洁而现代化,官方推荐用于安卓开发。
-
Swift 苹果开发的现代化语言,安全性高;主要用于 iOS 和 macOS 应用开发。
-
R 面向统计计算和数据分析,拥有强大的可视化能力。
-
MATLAB 专用于数值计算,适合科研和工程领域。
-
SQL 专注于数据库查询和操作,结构化数据的标准语言。
-
Perl 强大的文本处理能力,适用于系统管理和 Web 开发。
-
Shell 用于脚本编程,擅长系统任务自动化和操作系统管理。
-
Dart 谷歌开发,专为跨平台应用(如 Flutter)设计,支持响应式编程。
-
TypeScript JavaScript 的超集,提供静态类型检查,提升代码可维护性。
-
Scala 融合面向对象和函数式编程,运行在 JVM 上,适合高并发和大数据处理(如 Apache Spark)。
-
Haskell 纯函数式编程语言,强类型,延迟计算;用于学术研究和金融系统。
-
Lua 轻量级嵌入式脚本语言,常用于游戏开发和嵌入式系统。
-
Objective-C iOS 和 macOS 的传统开发语言,与 C 兼容,现被 Swift 逐渐取代。
-
VB.NET 微软开发的面向对象语言,适合 Windows 应用程序开发。
-
Fortran 面向科学计算和工程领域的高性能语言,特别适合数值计算。
-
COBOL 专为业务、金融和行政系统设计,主要用于大型机环境。
-
F# 运行在 .NET 平台上的函数式语言,适合数学建模和数据分析。
-
Erlang 专为高并发分布式系统设计,广泛用于电信系统和实时应用。
-
Elixir 基于 Erlang 虚拟机,简洁高效,适合高可用和分布式系统。
-
Groovy 运行在 JVM 上,语法简单,与 Java 高度兼容,常用于自动化和脚本开发。
-
Racket Lisp 系列语言之一,注重教学和程序设计研究。
-
Julia 高性能计算语言,专为科学计算和数值分析设计,兼具易用性和速度。
-
Crystal 语法类似 Ruby,但具有编译语言的高性能。
-
D 类似 C++ 的现代化语言,支持面向对象和系统编程。
-
Scratch 可视化编程语言,面向儿童和编程初学者。
-
Ada 为高可靠性系统设计,常用于航空航天和国防工业。
-
Prolog 逻辑编程语言,主要用于人工智能和推理系统。
-
Assembly 低级语言,直接操作硬件,适用于嵌入式和性能要求极高的场景。
-
Nim 现代化的静态编译语言,语法清晰,兼具高性能和易用性。
-
Bash (GNU Bash) Shell 脚本语言,广泛用于 Linux 和 Unix 系统管理与自动化。
前端语言:
-
JavaScript - 主要用于前端开发,处理网页交互和动态内容,支持事件驱动编程。也可用于后端开发(通过 Node.js)。
-
TypeScript - JavaScript 的超集,提供静态类型检查,广泛用于前端开发,提升代码可维护性。
-
Dart - 用于 Flutter 开发跨平台应用,特别是前端移动应用。
-
HTML(通常用于前端) - 用于网页结构的标记语言。
-
CSS(通常用于前端) - 用于网页的样式设计。
后端语言:
-
Python - 后端开发中广泛应用,尤其是用于 Web 开发(如 Django, Flask)和数据科学。
-
Java - 主要用于后端开发,跨平台,广泛应用于企业级应用和安卓开发。
-
C - 主要用于系统级编程,也可用于开发后端服务和嵌入式应用。
-
C++ - 常用于高性能计算、游戏开发及后端服务。
-
PHP - 专为 Web 开发设计,广泛用于后端开发,尤其是动态网站。
-
Ruby - 主要用于后端 Web 开发,特别是 Ruby on Rails 框架。
-
Go (Golang) - 后端开发语言,特别适合高性能服务和并发处理。
-
Rust - 后端系统编程,特别适合需要高性能和安全的场景。
-
Kotlin - 与 Java 兼容,常用于安卓开发,也可用于后端开发。
-
Swift - 主要用于 iOS 和 macOS 应用开发,也可用于后端开发(如 Vapor 框架)。
-
R - 用于数据科学和统计计算,不常用于前端开发。
-
MATLAB - 主要用于科研和工程中的数值计算,不用于前端开发。
-
SQL - 用于数据库操作,作为后端技术的核心部分。
-
Perl - 用于文本处理,系统管理,Web 开发等后端应用。
-
Shell - 用于系统管理和自动化脚本,后端应用。
-
Scala - 用于后端开发,特别适合高并发和大数据处理(如 Apache Spark)。
-
Haskell - 主要用于学术研究、金融系统,和一些后端服务。
-
Lua - 常用于游戏开发中的后端逻辑编写。
-
Objective-C - 主要用于 iOS 和 macOS 应用开发,但有时也用于后端开发。
-
VB.NET - 用于 Windows 平台的后端开发,特别是企业应用。
-
Fortran - 用于科学计算和数值计算,常用于后端。
-
COBOL - 主要用于业务、金融和行政系统的后端开发。
-
F# - 用于函数式编程,通常用于数据分析和后端开发。
-
Erlang - 用于构建高并发、分布式系统,广泛用于后端。
-
Elixir - 基于 Erlang 虚拟机,适合高可用和分布式系统的后端开发。
-
Groovy - 用于自动化、脚本开发,常用于后端(尤其是在 JVM 环境中)。
-
Racket - 主要用于教学和程序设计研究,通常不用于前端或后端。
-
Julia - 主要用于科学计算和数据分析,通常不用于前端开发。
-
Crystal - 适用于后端开发,具有与 C/C++ 相媲美的性能。
-
D - 主要用于系统编程,也可用于后端开发。
-
Scratch - 面向儿童和初学者的可视化编程语言,通常不用于实际的前端或后端开发。
-
Ada - 用于高可靠性系统的后端开发,尤其是航空航天和国防领域。
-
Prolog - 用于人工智能和推理系统,通常作为后端语言使用。
-
Assembly - 主要用于低级编程和嵌入式系统,适合高性能要求的后端开发。
-
Nim - 适用于系统编程和后端开发。
-
Bash (GNU Bash) - 用于系统管理和自动化脚本,后端使用。
总结:
-
前端语言:主要是 JavaScript、TypeScript、Dart 等。
-
后端语言:包括 Python、Java、PHP、Go、Rust、Ruby、Kotlin、Scala、Elixir 等,涵盖了 Web 服务、系统编程、数据处理等领域。
语言框架印象记忆
框架的定义
框架(Framework)是一种可重用的代码结构,为开发者提供一个统一的开发基础和规则,简化应用程序的开发过程。它通常包含一组预定义的类、方法和工具,用于解决常见问题,如处理数据、构建界面或管理系统逻辑。
简单来说,框架是一种工具箱和模板,帮助开发者快速构建高效、规范的程序。
框架的作用
-
标准化开发
-
提供统一的代码结构和开发规范,减少重复劳动。
-
-
提升效率
-
内置常用功能(如路由、数据库操作、身份验证等),开发者无需从头构建。
-
-
简化复杂任务
-
处理底层细节(如网络通信、多线程管理),开发者可专注于业务逻辑。
-
-
提高代码可维护性
-
清晰的代码结构和模块化设计,便于后续扩展和维护。
-
-
社区支持
-
热门框架通常有活跃的社区,提供丰富的插件、工具和文档。
-
1. Python
-
Web开发
-
Django: 全功能 Web 框架,内置 ORM 和认证系统。
-
Flask: 轻量级框架,灵活扩展。
-
FastAPI: 用于构建高性能 API,支持异步功能。
-
Pyramid: 适合复杂项目的可扩展框架。
-
-
数据科学与机器学习
-
TensorFlow, PyTorch: 深度学习框架。
-
2. JavaScript
-
前端框架
-
React: 组件化开发,适用于动态用户界面。
-
Angular: 谷歌开发的全功能前端框架。
-
Vue.js: 简单易用的渐进式前端框架。
-
-
后端框架
-
Node.js: 基于 V8 引擎的服务器端 JavaScript 运行时。
-
Express.js: 轻量级 Web 框架,灵活性强。
-
NestJS: 用于构建可扩展应用的 TypeScript 框架。
-
3. Java
-
Web开发
-
Spring: 企业级框架,包含 Spring Boot(快速开发)、Spring MVC(Web 应用)。
-
Hibernate: ORM 框架,方便数据库交互。
-
Struts: MVC 框架,适合传统 Web 开发。
-
-
大数据处理
-
Apache Hadoop: 分布式存储和处理框架。
-
Apache Spark: 快速大数据处理。
-
4. C#
-
Web开发
-
ASP.NET Core: 跨平台、高性能的 Web 框架。
-
-
游戏开发
-
Unity: 面向游戏和 AR/VR 开发的跨平台引擎。
-
-
桌面开发
-
Windows Forms, WPF: 开发 Windows 桌面应用的框架。
-
5. PHP
-
Laravel: 全功能 Web 框架,提供内置工具如路由和身份认证。
-
Symfony: 可扩展的企业级框架,组件丰富。
-
CodeIgniter: 轻量级框架,简单易用。
6. Ruby
-
Web开发
-
Ruby on Rails: 经典的 MVC 框架,以简洁和高效闻名。
-
7. Go
-
Web开发
-
Gin: 高性能 Web 框架,适合构建 RESTful API。
-
Beego: 企业级开发框架,功能全面。
-
Echo: 简单、快速的 Web 框架。
-
8. Swift
-
移动开发
-
SwiftUI: 用于 iOS 和 macOS 界面开发的新框架。
-
UIKit: iOS 应用传统开发框架。
-
9. Kotlin
-
移动开发
-
Jetpack Compose: 谷歌推出的现代 UI 框架。
-
-
Web开发
-
Ktor: 用于构建异步 Web 应用程序的框架。
-
10. Rust
-
Web开发
-
Rocket: 简单易用的 Web 框架。
-
Actix-web: 高性能异步框架。
-
11. TypeScript
-
与 JavaScript 框架共用
-
React, Angular, Vue.js 均支持 TypeScript,更适合复杂项目开发。
-
12. R 和 MATLAB
-
数据科学与统计
-
Shiny (R): 构建交互式数据可视化应用。
-
MATLAB App Designer: 开发科学计算工具的框架。
-
13. Dart
-
跨平台开发
-
Flutter: 用于移动、Web 和桌面应用开发的强大框架。
-
14. Perl
-
Mojolicious: 用于构建现代 Web 应用程序的框架。
15. Elixir
-
Phoenix: 高并发 Web 应用框架,运行在 Erlang VM 上。
16. Scala
-
大数据处理
-
Apache Spark: 支持 Scala 的大数据处理框架。
-
常用如下:
Web框架 用于构建网站和 Web 应用程序。 例子:Django、Flask、Spring、Struts、Ruby on Rails。
移动开发框架 用于开发移动应用程序。 例子:Flutter、React Native、SwiftUI。
前端框架 帮助开发者快速构建用户界面(UI)。 例子:React、Vue.js、Angular。
后端框架 提供服务器端逻辑、数据处理和 API 接口支持。 例子:Express.js、NestJS、Spring。
游戏框架 用于快速开发游戏,提供图形、物理和音效支持。 例子:Unity、Unreal Engine、Godot。
企业级框架 适用于大型企业的复杂应用开发,注重性能和扩展性。 例子:Spring、.NET Framework。
语言代码库印象记忆
语言代码库(也称为标准库或第三方库)是为编程语言提供功能扩展的集合。这些库可以帮助开发者简化开发流程,避免重复造轮子。不同的编程语言有其特定的标准库,以及丰富的第三方库。
JavaScript / Node.js
-
标准库:
-
fs:用于文件系统操作(读写文件、目录操作等)。
-
http:用于创建 HTTP 服务和客户端请求。
-
path:用于路径操作(如解析、合并文件路径等)。
-
url:用于 URL 解析和格式化。
-
-
第三方库:
-
Lodash:提供一系列实用函数,简化数组、对象等的操作。
-
Express:Web 框架,用于构建 Web 应用和 API。
-
Axios:基于 Promise 的 HTTP 请求库。
-
Moment.js:用于处理日期和时间。
-
2. Python
-
标准库:
-
os:用于操作文件和目录、环境变量等。
-
sys:用于与 Python 解释器交互(如参数传递、退出程序等)。
-
json:用于 JSON 数据的解析和生成。
-
datetime:处理日期和时间。
-
-
第三方库:
-
NumPy:用于科学计算和处理大规模数据集。
-
Pandas:提供数据分析和操作工具,特别适用于表格数据。
-
Flask:轻量级 Web 框架。
-
Requests:用于 HTTP 请求,简化 Web 服务交互。
-
3. Ruby
-
标准库:
-
File:用于文件读写和路径操作。
-
Math:提供数学函数(如三角函数、对数等)。
-
Time:处理日期和时间。
-
Socket:用于网络编程。
-
-
第三方库:
-
Rails (Ruby on Rails):全栈 Web 开发框架。
-
RSpec:行为驱动开发(BDD)测试框架。
-
Sinatra:轻量级 Web 框架。
-
Devise:用户身份验证解决方案。
-
4. PHP
-
标准库:
-
mysqli:用于与 MySQL 数据库进行交互。
-
curl:用于发起 HTTP 请求,支持 GET、POST 等方法。
-
json:用于处理 JSON 数据的编解码。
-
PDO:数据库抽象层,支持多种数据库操作。
-
-
第三方库:
-
Laravel:现代 Web 应用框架,提供路由、ORM 等功能。
-
Symfony:强大的 PHP 框架,适用于大规模 Web 应用。
-
Composer:PHP 的依赖管理工具,简化库和包的管理。
-
Guzzle:用于 HTTP 请求的库。
-
5. Java
-
标准库:
-
java.util:提供集合框架(如 List、Map、Set)和其他实用工具。
-
java.io:用于输入输出操作(文件、网络等)。
-
java.nio:用于高效的 I/O 操作(NIO)。
-
java:用于网络编程,提供类如 URL 和 Socket。
-
-
第三方库:
-
Spring Boot:用于快速构建 Java Web 应用。
-
Hibernate:Java 的 ORM 框架,简化数据库交互。
-
JUnit:单元测试框架。
-
Log4j:日志记录库。
-
6. Go
-
标准库:
-
net/http:用于 HTTP 客户端和服务器开发。
-
fmt:格式化输入输出的库。
-
os:用于操作文件和环境变量。
-
time:处理时间相关功能。
-
-
第三方库:
-
Gin:Web 框架,提供高效的路由和中间件。
-
GORM:Golang 的 ORM 框架。
-
Cobra:用于构建命令行工具。
-
Viper:配置管理库,支持 JSON、YAML 等格式。
-
7. C# (.NET)
-
标准库:
-
System.IO:用于文件和目录操作。
-
System.Net:提供网络编程相关类,如
HttpClient
和WebRequest
。 -
System.Threading:处理多线程编程。
-
System.Linq:提供查询功能,简化集合操作。
-
-
第三方库:
-
ASP.NET Core:用于构建现代 Web 应用和 API 的框架。
-
Entity Framework:ORM 框架,简化数据库交互。
-
NUnit:单元测试框架。
-
AutoMapper:对象映射库,简化对象之间的转换。
-
8. Swift
-
标准库:
-
Foundation:提供日期、文件操作、集合类等。
-
UIKit:用于 iOS 应用的用户界面开发。
-
Dispatch:提供并发编程和调度功能。
-
CoreData:用于数据持久化。
-
-
第三方库:
-
Alamofire:用于 HTTP 网络请求。
-
SwiftyJSON:简化 JSON 处理。
-
Realm:高性能的数据库库,适用于 iOS 和 macOS 应用。
-
SnapKit:简化 AutoLayout 的布局库。
-
9. Rust
-
标准库:
-
std::fs:用于文件系统操作。
-
std::net:提供网络编程相关的功能。
-
std::time:提供时间操作功能。
-
std::collections:提供集合类型,如
HashMap
和Vec
。
-
-
第三方库:
-
Serde:用于数据序列化和反序列化(支持 JSON、YAML 等格式)。
-
Tokio:异步编程运行时。
-
Rocket:Web 框架,用于构建 Web 应用。
-
Diesel:ORM 框架,简化数据库交互。
-
10. Haskell
-
标准库:
-
Data.List:提供常见的列表操作。
-
Control.Monad:支持函数式编程中的单子(Monad)操作。
-
Text:用于高效文本处理。
-
System.IO:文件和输入输出处理。
-
-
第三方库:
-
Yesod:全栈 Web 开发框架。
-
QuickCheck:用于自动化测试的库。
-
Lens:提供不可变数据结构的访问工具。
-
Conduit:流式数据处理库,专注于高效的内存使用。
-
语言依赖库管理器印象记忆
Python
依赖管理器: pip
和 poetry
-
pip
:-
默认的 Python 包管理工具,用于安装和管理 Python 包。
-
通常与
requirements.txt
文件配合使用,列出项目所需的依赖项。
示例:
pip install requests # 安装库 pip freeze > requirements.txt # 导出依赖 pip install -r requirements.txt # 安装依赖
-
-
poetry
:-
高级依赖管理器,集成了项目管理、包发布等功能。
-
使用
pyproject.toml
配置文件管理依赖和版本。
示例:
poetry add requests # 添加依赖 poetry install # 安装所有依赖
-
2. JavaScript/Node.js
依赖管理器: npm
和 yarn
安装所有依赖:
安装 package.json
中列出的所有依赖项。
如果没有指定依赖包,它会安装 dependencies
和 devDependencies
中的所有包。
-
npm
:-
Node.js 的默认包管理工具,用于安装和管理 JavaScript 包。
-
依赖项通常通过
package.json
文件进行管理。
示例:
npm install lodash # 安装库 npm install # 安装所有依赖
-
-
yarn
:-
Facebook 提供的替代
npm
的包管理工具,速度更快并且具有更好的依赖缓存功能。
示例:
yarn add lodash # 安装库 yarn install # 安装所有依赖
-
3. Ruby
依赖管理器: bundler
-
bundler
:
-
Ruby 的依赖管理器,用于安装和管理 Ruby 项目中的 gem 库。
-
依赖项在
Gemfile
中列出,bundle install
命令用于安装所有依赖。
示例:
bundle install # 安装所有依赖 会安装 Gemfile 中列出的所有 gem 库,并根据 Gemfile.lock 来确保依赖版本的一致性。 bundle add rails # 安装新依赖
-
4. Java
依赖管理器: Maven
和 Gradle
-
Maven
:-
Java 项目中常用的构建工具和依赖管理器,依赖项在
pom.xml
文件中进行管理。
示例:
mvn install # 安装依赖 mvn clean install # 清理并安装依赖
-
-
Gradle
:-
另一个常用的 Java 构建工具,灵活性更高,依赖项在
build.gradle
文件中进行管理。
示例:
gradle build # 构建项目并安装依赖 gradle dependencies # 查看依赖
-
5. PHP
依赖管理器: Composer
-
Composer
:
-
PHP 的官方依赖管理器,用于安装、更新和管理 PHP 项目的库。
-
依赖项通过
composer.json
文件管理。
示例:
composer install # 安装所有依赖 composer require monolog/monolog # 安装特定依赖
-
6. Go
依赖管理器: Go Modules
-
Go Modules
:
-
Go 的官方依赖管理工具,从 Go 1.11 开始支持。
-
依赖项在
go.mod
和go.sum
文件中进行管理。
示例:
go mod init # 初始化项目 go get github/gin-gonic/gin # 安装依赖
-
7. .NET/C#
依赖管理器: NuGet
-
NuGet
:
-
.NET 项目中常用的依赖管理工具。
-
依赖项在
.csproj
文件或packages.config
文件中进行管理。
示例:
nuget restore # 恢复项目依赖 dotnet add package Newtonsoft.Json # 添加依赖
-
8. Rust
依赖管理器: Cargo
-
Cargo
:
-
Rust 的官方包管理器,用于构建、测试、安装 Rust 包。
-
依赖项在
Cargo.toml
文件中进行管理。
示例:
cargo build # 构建项目并安装依赖 cargo add serde # 添加依赖
-
9. Swift
依赖管理器: CocoaPods
和 Swift Package Manager
-
CocoaPods
:-
iOS/macOS 的依赖管理工具,使用
Podfile
配置文件来管理依赖项。
示例:
pod install # 安装所有依赖 pod init # 初始化 Podfile
-
-
Swift Package Manager
:-
官方支持的 Swift 项目的依赖管理工具,依赖项在
Package.swift
文件中管理。
示例:
swift package update # 更新依赖 swift build # 构建项目
-
10. Haskell
依赖管理器: Cabal
和 Stack
-
Cabal
:-
Haskell 的官方依赖管理和构建工具。
-
依赖项在
.cabal
文件中进行管理。
示例:
cabal install # 安装依赖 cabal build # 构建项目
-
-
Stack
:-
高级构建工具,增强了
Cabal
的功能,依赖项也在stack.yaml
中管理。
示例:
stack install # 安装依赖 stack build # 构建项目
-
总结
依赖管理器是现代编程语言中的重要工具,它们为开发者提供了简化和自动化的依赖安装、更新和管理功能。根据所使用的编程语言,常见的依赖管理器包括:
-
Python:
pip
、poetry
-
JavaScript/Node.js:
npm
、yarn
-
Ruby:
bundler
-
Java:
Maven
、Gradle
-
PHP:
Composer
-
Go:
Go Modules
-
.NET/C#:
NuGet
-
Rust:
Cargo
-
Swift:
CocoaPods
、Swift Package Manager
-
Haskell:
Cabal
、Stack
语言代码库导入印象记忆
1. C导入库方式
#include <math.h> #include <stdio.h> #include <zlib.h>
2. C++导入库方式
#include <iostream> #include <vector> #include <boost/asio.hpp>
3. Python导入库方式
import math import requests
4. Java导入库方式
import java.util.ArrayList; import org.springframework.beans.factory.annotation.Autowired; import java.util.*;
5. JavaScript导入库方式
本地导入:
ES6 引入了 import 语法,它是一种标准的模块化方式,可以用于在项目中导入模块和库。
import _ from 'lodash'; // 导入整个lodash库 import { sum } from 'lodash'; // 仅导入lodash库中的sum函数
import { myFunction } from './myModule.js'; // 从本地模块文件导入 myFunction函数
import
是静态导入,必须在文件的顶部使用。
在 Node.js 环境中,使用 require 来导入模块,这是 CommonJS 模块系统的一部分 通过npm下载 npm i -g npm npm i --save lodash
<script src="lodash.js"></script> // Load the full build. var _ = require('lodash');
外部引入外部库:
<script src="https://cdn.jsdelivr/npm/lodash@4.17.21/lodash.min.js"></script>
总结
-
ES6 模块(
import
):现代 JavaScript 中的标准方式,推荐用于浏览器和 Node.js 项目中。 -
CommonJS(
require
):Node.js 的默认模块导入方式,适用于服务器端代码。 -
CDN:在浏览器中直接引入外部库,适用于简单的前端项目。
**6. PHP导入库方式
-
use GuzzleHttp\Client;
必须位于文件的开头,而不是混合在业务代码中。
当你使用类、接口、或命名空间时,通常需要用 use 语句来导入。 例如,使用 GuzzleHttp 库: <?php use GuzzleHttp\Client; $client = new Client(); $response = $client->get('https://example'); 在 PHP 中,标准库大部分是内置的,因此无需手动导入,只有在使用外部文件或扩展时,才需要使用 include、require 或 use 等语句进行导入 <?php $pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
在 PHP 中,可以通过 require
或 include
来引入外部文件,外部文件中写导入:
require 'path/to/file.php'; include 'path/to/file.php';
7. Ruby导入库方式
加载标准库:Ruby 内置的库可以直接使用 require 加载,如 net/http、json、date 等。 加载第三方库:使用 Ruby 的包管理器 Gem 安装第三方库后,也可以通过 require 导入。例如,使用 gem install rails 安装 Rails 后,可以这样导入: require 'rails'
rails
库一般是作为框架使用的,不需要在每个文件中显式 require 'rails'
,只需要在项目中配置好 rails
环境即可。
8. Go导入库方式
import "github/gin-gonic/gin" import "gorm.io/gorm" import加载标准库加载第三方库
9. Swift导入库方式
import Alamofire import SwiftUI
10. Rust导入库方式
use serde::{Serialize, Deserialize}; // 导入 `serde` 库中的 `Serialize` 和 `Deserialize` 特性 use tokio::runtime; // 导入 `tokio` 库中的 `runtime` 模块 use serde; // 只导入serde库本身,可以使用serde的任何功能
11. R导入库方式
library(ggplot2) library(dplyr)
12. MATLAB导入库方式
调用内置函数(例如 plot 和 fminunc): plot(x, y) fminunc(@(x) x^2, 0) 使用 addpath 引入额外的工具箱: addpath('path/to/your/library')
13. TypeScript导入库方式
import axios from 'axios'; import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';
数据库印象记忆
1. 关系型数据库(RDBMS)
关系型数据库基于表格(行和列)的结构,采用结构化查询语言(SQL)进行数据操作,支持事务、数据完整性、数据一致性等。
常见数据库:
-
MySQL:开源、广泛使用的关系型数据库,适用于中小型应用。
-
PostgreSQL:功能丰富、支持 ACID 特性的开源数据库,适合复杂查询和数据分析。
-
Oracle Database:商业化数据库,广泛用于大型企业的关键应用,功能强大,支持大规模数据处理。
-
SQL Server:微软提供的商业数据库,广泛用于企业级应用和 Windows 环境。
-
SQLite:轻量级关系型数据库,适用于嵌入式设备和小型应用。
特点:
-
数据以表格形式存储。
-
支持 SQL 语言进行数据查询和操作。
-
数据之间通过外键关联。
-
支持 ACID(原子性、一致性、隔离性、持久性)特性。
-
支持事务处理。
2. 非关系型数据库(NoSQL)
NoSQL 数据库不使用表格结构,而是使用键值对、文档、列族或图的形式存储数据,通常用于需要大规模、快速查询和高并发的应用场景。
常见数据库:
-
MongoDB:文档型数据库,数据以 BSON 格式存储,支持灵活的数据模型,适合快速开发和大数据量存储。
-
Redis:键值型数据库,常用于缓存和实时数据存储,支持高并发操作。
-
Cassandra:列族型数据库,适用于大规模分布式系统,提供高可用性和扩展性。
-
CouchDB:文档型数据库,支持 HTTP 和 JSON 数据格式,适合大规模分布式系统。
-
Neo4j:图形数据库,用于存储和操作图数据,适用于社交网络、推荐系统等领域。
-
Elasticsearch:基于 Lucene 的分布式搜索引擎,广泛用于日志分析和全文搜索。
端口
-
MySQL 默认端口:
3306
-
PostgreSQL 默认端口:
5432
-
Oracle Database 默认端口:
1521
-
SQL Server 默认端口:
1433
SQL Server 还可能使用动态端口,特别是在使用 SQL Server 浏览器服务时。 -
SQLite SQLite 是一个嵌入式数据库,因此没有网络端口。它是基于文件系统的,数据存储在本地文件中。
-
MongoDB 默认端口:
27017
-
Redis 默认端口:
6379
-
Cassandra 默认端口:
9042
-
CouchDB 默认端口:
5984
-
Neo4j 默认端口:
-
HTTP 接口:
7474
-
Bolt 协议:
7687
-
-
Elasticsearch 默认端口:
9200
(HTTP),9300
(TCP 用于集群节点间通信)
这些是常见的数据库的默认端口,实际使用时可以根据需要进行修改。
病毒印象记忆
1. 低级语言
低级语言因其与硬件的紧密联系,非常适合编写操作系统层面的病毒。
-
汇编语言 (Assembly):
-
特点:直接操作内存和处理器,代码极为高效。
-
应用:用于编写引导区病毒(Boot Sector Virus)、Rootkit 等。
-
示例:通过中断向量表劫持系统功能。
-
缺点:开发难度较高,但更难被检测和逆向分析。
-
-
C语言:
-
特点:灵活性强,可操作底层系统资源。
-
应用:蠕虫病毒、文件感染病毒、网络攻击工具等。
-
示例:利用 C 编写的病毒可以操控文件和内存,也能结合网络通信。
-
优势:广泛使用,跨平台能力强。
-
-
C++:
-
特点:面向对象支持,利于复杂病毒设计。
-
应用:编写复杂的恶意软件,或具备模块化功能的病毒。
-
2. 脚本语言
脚本语言通常用于攻击高层应用或快速开发病毒。
-
Python:
-
特点:简单易用,拥有大量库支持网络、文件操作。
-
应用:编写勒索病毒、网络攻击工具(如扫描器、后门)。
-
示例:利用
smtplib
实现邮件病毒,或用os
库篡改文件系统。 -
缺点:运行需要解释器,但通过打包工具(如 PyInstaller)可生成独立可执行文件。
-
-
JavaScript:
-
特点:专注于浏览器攻击和 Web 漏洞利用。
-
应用:跨站脚本攻击(XSS)、钓鱼页面嵌入恶意代码。
-
示例:编写恶意广告脚本或感染网页的病毒。
-
-
PowerShell:
-
特点:专用于 Windows 平台,强大的系统管理功能。
-
应用:用于脚本病毒、网络渗透工具。
-
示例:通过 PowerShell 脚本感染系统或下载远程恶意代码。
-
优势:集成于 Windows,执行权限高。
-
-
VBS (Visual Basic Script):
-
特点:轻量化脚本,易于执行文件操作。
-
应用:电子邮件病毒、Office 宏病毒。
-
示例:通过 Office 文档嵌入宏病毒感染用户。
-
3. 网络攻击语言
专注于网络攻击或跨系统感染的病毒通常用以下语言:
-
Java:
-
特点:跨平台性强,可感染多个操作系统。
-
应用:编写跨平台的蠕虫病毒、恶意程序。
-
示例:通过
java
库建立网络连接进行恶意传播。
-
-
PHP:
-
特点:服务器端脚本语言,专注于 Web 攻击。
-
应用:网站后门、Webshell、DDoS 控制脚本。
-
示例:在服务器端隐藏恶意后门,窃取数据或执行远程命令。
-
-
Ruby:
-
特点:用于渗透工具开发(如 Metasploit)。
-
应用:辅助渗透测试的恶意脚本。
-
4. 特殊语言
某些病毒利用专门设计的语言或系统独有的语言。
-
Batch (批处理脚本):
-
特点:简洁,适合 Windows 环境下的简单病毒。
-
应用:删除文件、修改系统配置、创建无限循环。
-
示例:利用
.bat
文件修改注册表或关闭系统功能。
-
-
Shell (Bash):
-
特点:适合 Linux/Unix 系统。
-
应用:创建自动化蠕虫、破坏文件系统。
-
示例:编写 Bash 脚本扫描并篡改网络共享目录。
-
5.BIOS 病毒与概念结合
BIOS 病毒是一种非常隐蔽的恶意软件,它直接感染系统的固件层(BIOS/UEFI),从而在操作系统启动前运行并掌控系统。
-
BIOS (Basic Input/Output System)
:
-
是计算机主板上的固件,负责在开机时初始化硬件设备并启动操作系统。
-
存储于主板上的闪存芯片,权限极高。
-
现代主板大多使用其改进版本 UEFI (Unified Extensible Firmware Interface),功能更强大,安全性更高。
-
BIOS 病毒的特性:
-
隐蔽性:操作系统层面很难检测到,因为它运行在操作系统之前。
-
持久性:即使重新安装操作系统,病毒仍然存在,除非刷新 BIOS。
-
危害性:可能直接破坏硬件,导致主板失效。
BIOS 病毒如何工作?
-
修改 BIOS 固件,植入恶意代码。
-
在启动过程中劫持系统启动流程,加载病毒或恶意操作系统。
-
操控硬件,如键盘记录、屏幕劫持。
NASM (Netwide Assembler) 是一种汇编语言编译器,常用于编写低级程序,包括直接与硬件交互的 BIOS 或 UEFI 程序。
NASM 的特点:
-
支持 x86 和 x86_64 架构,适合编写高性能的底层代码。
-
提供对 BIOS 中断调用(如
INT 10h
、INT 13h
)的支持。 -
非常适合开发启动扇区代码、引导加载程序(Bootloader)、BIOS 工具等。
NASM 与 BIOS 病毒的关系:
-
开发工具:NASM 可用于直接编写 BIOS 病毒代码,如修改启动扇区或固件。
-
汇编支持:BIOS 程序通常使用汇编语言开发,因为它需要直接与硬件交互,执行高效且小巧的指令。
示例:BIOS 调用
使用 NASM 编写,调用 BIOS 中断以显示字符 mov ah, 0x0E ; 设置显示字符功能 mov al, 'A' ; 显示字符 'A' int 0x10 ; 调用 BIOS 视频中断
上位 UEFI
UEFI (Unified Extensible Firmware Interface) 是 BIOS 的继任者,与传统 BIOS 相比功能更强大、扩展性更强。
上位 UEFI 的含义
-
"上位 UEFI" 是指基于 UEFI 架构的高级功能和接口,提供了现代计算机中复杂的启动和硬件管理功能。
-
上位功能:支持网络启动、安全启动(Secure Boot)、更大的分区表(GPT)等。
UEFI 和病毒的关系
-
复杂性:UEFI 的复杂架构为病毒提供了更大的攻击面,比如漏洞利用。
-
攻击点
:
-
Secure Boot 绕过:破坏安全启动机制,加载未经签名的恶意代码。
-
NVMe 存储感染:通过修改 UEFI 固件存储区植入病毒。
-
-
开发工具:使用 C 语言或汇编结合 UEFI 的 SDK 或开发包(如 EDK II)。
常见病毒案例与对应语言
病毒名称 | 语言 | 功能与特性 |
---|---|---|
ILOVEYOU | VBScript | 通过电子邮件传播,删除文件。 |
WannaCry | C/C++, Python | 勒索病毒,利用 SMB 漏洞传播。 |
Stuxnet | C++, Assembly | 工业控制系统攻击,复杂的多模块设计。 |
Mirai | C, Go | 用于物联网设备的僵尸网络攻击。 |
Zeus | C++ | 银行木马,窃取用户敏感信息。 |
总结
-
宏病毒(macro):利用metasploit生成宏病毒,植入office文件——VB/C#编写
-
bat、powershell:主要用于内网渗透
-
CAD LISP(脚本病毒):CAD运行时会正常执行一些脚本,我们可以放一些自己的东西。——使用lisp语言(较特殊)
-
Autol3(脚本病毒):冷门语言不易被杀
-
bios程序(病毒):理解bios、NASM以及上位UFFI
编写病毒并非法使用属于违法行为,但了解这些技术有助于加强系统安全和防御能力。
-
低级语言(如 C、汇编)适合复杂和底层病毒。
-
脚本语言(如 Python、PowerShell)适合快速开发和网络病毒。
-
防范措施:安装安全软件、保持系统更新、避免执行未知代码。
windows注册表印象记忆
用reg query "路径" 查询
详情用reg /?查看
Windows 注册表中的键(Key)和键值(Value)是其核心组成部分,用于存储和管理系统及应用程序的配置信息。
1. 键(Key)
键是注册表的主要结构单元,类似于文件系统中的文件夹。每个键可以包含子键或键值。
根键(Root Keys)
Windows 注册表有五个主要根键:
-
HKEY_CLASSES_ROOT
-
管理文件类型和扩展名的关联。
-
-
HKEY_CURRENT_USER
-
保存当前用户的个人配置。
-
-
HKEY_LOCAL_MACHINE
-
保存整个计算机的配置信息。
-
-
HKEY_USERS
-
包含所有用户的注册表配置数据。
-
-
HKEY_CURRENT_CONFIG
-
存储当前硬件配置文件的详细信息。
-
子键(Subkeys)
每个根键可以有多个子键。例如:
-
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
-
子键
Microsoft
保存与微软相关的系统信息。
-
2. 键值(Value)
键值是存储实际数据的部分,每个键值由名称、类型和数据组成。
键值的组成
-
名称:键值的名字,可以为空(默认值)。
-
类型:表示数据的格式或类型(见下方分类)。
-
数据:键值存储的信息内容。
键值的常见类型
-
REG_SZ
(字符串值)-
用于存储文本数据,例如文件路径。
-
示例:
C:\Program Files\Example
-
-
REG_DWORD
(32 位数字)-
用于存储整型数据(十进制或十六进制)。
-
示例:
0x00000001
表示启用某项功能。
-
-
REG_QWORD
(64 位数字)-
用于存储 64 位整型数据。
-
示例:
0x0000000000000001
-
-
REG_MULTI_SZ
(多字符串值)-
存储多个字符串,用空字符分隔。
-
示例:
Value1\0Value2\0Value3\0\0
-
-
REG_EXPAND_SZ
(可扩展字符串值)-
支持变量替换的字符串,例如
%SystemRoot%
。 -
示例:
%SystemRoot%\System32\cmd.exe
-
-
REG_BINARY
(二进制值)-
存储二进制数据,常用于硬件配置。
-
示例:
01 00 00 00
-
-
REG_NONE
(无类型值)-
用于存储没有特定格式的数据。
-
-
REG_LINK
(符号链接)-
存储指向其他注册表位置的符号链接。
-
3. 示例总结
功能 | 键路径 | 键值名称 | 类型 | 数据示例 |
---|---|---|---|---|
文件关联 | HKEY_CLASSES_ROOT\.txt | (默认) | REG_SZ | txtfile |
开机启动项(全局) | HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run | MyApp | REG_SZ | C:\Program Files\MyApp\app.exe |
用户登录初始化 | HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit | (默认) | REG_SZ | userinit.exe |
服务启动配置 | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService | Start | REG_DWORD | 0x00000002 (自动启动) |
环境变量(系统级) | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment | Path | REG_EXPAND_SZ | %SystemRoot%\System32;%SystemRoot% |
禁用任务管理器 | HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System | DisableTaskMgr | REG_DWORD | 0x00000001 (1 表示禁用) |
windows自启动危害印象记忆
使⽤命令查看启动项msconfig
启动项⽬,就是开机的时候系统会在前台或者后台运⾏的程序。当操作系统完成登录过程,进程表中出现了 很多的进程。操作系统在启动的时候,⾃动加载了很多程序。许多程序的⾃启动,给我们带来了很多⽅便,这是 不争的事实,但不是每个⾃启动的程序对我们都有⽤;更甚者,也许有病毒或⽊⻢在⾃启动⾏列。其实在 Windows操作系统中关于⾃启动⽂件,除了从以前系统中遗留下来的Autoexec.bat⽂件中加载外,按照两个⽂ 件夹和9个核⼼注册表⼦键来⾃动加载程序的。
在 Windows 系统中,程序可以通过以下两种主要方式自动加载和运行:
1. 通过文件夹自动加载
以下两个文件夹是常见的自启动项存放位置,用户或程序可以将快捷方式放入其中,实现开机自启动。
-
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
-
该文件夹为 所有用户 的启动项目录,放置在此处的程序会在系统启动时为所有用户自动运行。
-
-
C:\Users\<用户名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
-
该文件夹为 当前用户 的启动项目录,放置在此处的程序只会在当前用户登录时运行。
-
2. 通过注册表键自动加载
以下 9 个核心注册表子键可以用于设置程序自启动:
2.1. 当前用户级别的自启动键
只会影响当前登录的用户:
-
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
-
注册的程序在用户登录后自动运行。
-
-
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
-
注册的程序在用户登录后运行 一次,运行后条目被删除。
-
2.2. 所有用户级别的自启动键
会影响所有用户:
-
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
-
注册的程序会在任何用户登录后自动运行。
-
-
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
-
注册的程序会在任何用户登录后运行 一次,运行后条目被删除。
-
2.3. 用于 64 位系统的额外键
在 64 位 Windows 系统上,以下键用于运行 32 位程序:
-
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
-
运行 32 位程序的启动项。
-
-
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce
-
运行 32 位程序的启动项,仅运行 一次。
-
2.4. 系统服务的启动相关键
-
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
-
存放系统服务的启动配置,系统级服务会根据其设置自动启动。
-
Windows 服务运行在系统后台,通常具有较高的优先级,在操作系统启动的早期阶段加载。
-
2.5. 分组策略相关的启动键
-
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
-
在此键中配置的程序会在任何用户登录后自动运行,通常用于策略配置。
-
-
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
-
在此键中配置的程序会在当前用户登录后自动运行,通常用于策略配置。
-
Windows Shell - 系统接口
-
Windows Shell 是系统的用户接口组件,包括桌面、任务栏、文件资源管理器等。
-
默认情况下,Windows 使用
Explorer.exe
作为 Shell,加载路径如下:
-
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
-
-
如果该值被篡改(如被恶意软件修改为其他程序),可能会导致非标准的 Shell 接口。
BootExecute - 启动执行项
-
BootExecute
是一个关键的注册表键,位于:
-
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\BootExecute
-
-
这个键通常用于指定系统启动期间执行的程序。
-
默认值为:
autocheck autochk *
-
它调用了 autochk.exe,即磁盘检查程序,用于启动时检测磁盘错误。
-
-
恶意软件可能会利用此键来设置启动时加载的高优先级程序。
策略组加载程序
-
Windows 提供 组策略编辑器(
gpedit.msc
)来管理本地计算机或用户配置的行为。 -
通过以下路径可以设置用户登录时运行的程序:
-
用户配置 → 管理模板 → 系统 → 登录 → 在用户登录时运行这些程序
-
-
添加程序到此策略时,无需修改注册表即可在用户登录时自动加载指定程序。
特殊启动
1.关联启动 在注册表中除了上述普通的期待⽅式外,还可以利⽤特殊的⽅式达到启动⽬的,如关联启动。当我们打开 TXT⽂件时,系统⾃动会⽤记事本打开,⾃动运⾏notepad.exe
2.屏幕保护启动 windows的屏幕保护是⼀个.scr⽂件,这是个PE⽂件,如果把.scr改为.exe该程序仍然可以正常启动。类似 的.exe⽂件更名为.scr也是被运⾏的,所以只要替换屏保⽂件,就能达到启动⽬的。
3.autorun.inf启动⽅式 虽说特殊但是⽐较常⻅,主要拜U盘病毒所赐,以前常⻅于光盘中,⽤于光盘⾃启动,每次光盘放⼊光驱中 系通过这个⽂件是否⾃动启动光盘,这个⽂件可以⽤启动⼀些⽂件
4.古⽼启动—— 批处理⾃启动 autoexec.bat位于系统盘根⽬录(当然是隐藏⽂件),它每次开机的时候都会启动,早期病毒就看中它,利 ⽤deltree,rmdir /s /q 、format等危险命令来破坏数据。98系统中还有个winstart.bat位于windows⽂件夹中,每次开机都会 启动。但是在2003、xp、me默认都不会启动。
5.windows配置⽂件包括win.ini、system.ini、wininit.ini也会被加载的。
现代 Windows 系统对这些文件的依赖极低,它们主要是为了兼容早期应用程序或完成一些特殊任务而保留的。在 Windows NT 系列系统(2000、XP、7、10 等) 中,核心配置主要存储在注册表中,而不是这些 .ini
文件。
windows计划任务印象记忆
Windows计划任务(Windows Task Scheduler)是Windows操作系统中用于自动执行任务的工具。用户可以通过计划任务来安排和管理脚本、程序、或命令的自动执行,按预定的时间或事件触发。它是实现自动化管理和维护的强大工具。
创建计划任务:
可以通过两种方式来创建计划任务:
-
使用图形界面:
-
打开任务计划程序:
开始
>Windows管理工具
>任务计划程序
。 -
在任务计划程序中,右键点击“任务计划程序库”,选择“创建基本任务”或“创建任务”。
-
设置任务的名称、触发器、操作、条件和设置。
-
-
使用命令行(
schtasks
命令):schtasks
命令可以在命令提示符中创建、删除或列出计划任务。示例如下:schtasks /create /tn "MyTask" /tr "C:\path\to\program.exe" /sc daily /st 10:00
该命令表示每天10:00执行指定的程序。
详解用schtasks /?
常见应用场景:
-
系统维护:
-
自动备份文件或系统状态。
-
定期清理磁盘,删除临时文件。
-
运行系统更新检查或更新安装程序。
-
-
自动启动应用程序:
-
在系统启动时自动启动特定的程序或服务。
-
在用户登录时自动执行程序。
-
-
监控和日志:
-
定时运行脚本来检查系统状态、服务状态或日志文件。
-
定期生成系统报告或执行健康检查。
-
-
自动化脚本:
-
执行定时的批处理脚本,如数据同步、文件转换等。
-
-
通知和警报:
-
在某些条件下自动发送警告邮件或弹出通知,例如系统资源占用过高时。
-
windows日志印象记忆
点开某个事件很详细的介绍了事件的所有不了解的
打开方法:按下Win + R
,输入eventvwr.msc
日志的关键字段:
-
事件ID(Event ID):
-
每个事件都有一个唯一的标识符(事件ID),它可以帮助用户快速识别事件的类型。例如,
Event ID 41
表示系统意外关机。
-
-
源(Source):
-
表示产生事件的组件或应用程序。例如,
Kernel-Power
源表示与电源管理相关的事件。
-
-
级别(Level):
-
指示事件的严重性。常见的级别有:
-
信息:通常表示正常操作或系统事件。
-
警告:表示潜在问题或需要关注的情况。
-
错误:表示系统故障或需要修复的错误。
-
严重错误:表示系统崩溃或无法恢复的严重问题。
-
-
-
日期和时间(Date and Time):
-
记录事件发生的具体时间,用于时间线分析和事件追溯。
-
-
描述(Description):
-
事件的详细描述,提供了关于事件的更多上下文信息。
-
日志管理和分析:
-
筛选和搜索日志:
-
事件查看器允许通过筛选器搜索特定类型的事件。例如,可以搜索特定的事件ID、源、级别等信息。
-
在事件查看器中,可以使用自定义筛选器来查看过去24小时的警告或错误事件。
-
-
导出日志:
-
事件查看器支持将日志导出为
.evtx
文件,方便备份、共享或进一步分析。 -
可以选择导出某个日志类别或特定时间段的日志。
-
-
设置日志级别:
-
可以调整日志的记录级别(如信息、警告、错误),根据需要进行设置,以便更好地捕捉所关注的事件类型。
-
-
事件订阅与转发:
-
Windows提供事件订阅功能,可以将事件从多个计算机收集到一个中央服务器。这对于大规模环境的日志集中管理非常有用。
-
使用Windows事件转发服务(WEF)可以将事件从远程计算机转发到中央日志服务器。
-
-
清理和存档日志:
-
为了防止日志占用过多磁盘空间,Windows提供日志自动清理和存档的功能。可以设置日志文件的最大大小,超出后自动覆盖或归档。
-
常见日志事件示例:
1. 系统日志(System Log)
-
事件ID 41:系统未正常关机。
-
事件ID 6008:系统异常关闭。
-
事件ID 7023:服务失败。
-
事件ID 7031:服务崩溃,需重新启动。
-
事件ID 7032:服务崩溃,恢复失败。
-
事件ID 7040:服务未正确配置。
-
事件ID 1055:设备驱动程序加载失败。
-
事件ID 1001:应用程序或系统错误报告。
-
事件ID 1014:DNS解析失败。
-
事件ID 119:硬件错误,可能导致系统无法启动。
2. 应用程序日志(Application Log)
-
事件ID 1000:应用程序崩溃。
-
事件ID 1026:.NET应用程序未处理的异常。
-
事件ID 1001:应用程序错误报告。
-
事件ID 1004:应用程序无法启动。
-
事件ID 1005:应用程序无法启动,缺少依赖项。
-
事件ID 3001:Microsoft Office应用程序错误。
-
事件ID 3002:Office更新错误。
-
事件ID 3010:Office安装成功但未完成配置。
-
事件ID 1056:应用程序的配置文件损坏。
-
事件ID 1030:网络相关的应用程序错误。
3. 安全日志(Security Log)
-
事件ID 4624:成功的登录。
-
事件ID 4634:注销事件。
-
事件ID 4740:账户被锁定。
-
事件ID 4672:管理员权限授予。
-
事件ID 4768:Kerberos认证票据请求成功。
-
事件ID 4769:Kerberos认证票据请求失败。
-
事件ID 4771:Kerberos身份验证请求失败。
-
事件ID 4776:登录尝试失败。
-
事件ID 4647:用户会话关闭。
-
事件ID 4770:账户名与域名不匹配。
4. 硬件日志(Hardware Log)
-
事件ID 7:磁盘错误(坏道或硬件问题)。
-
事件ID 11:驱动程序错误。
-
事件ID 51:磁盘控制器错误。
-
事件ID 55:磁盘损坏,可能需要修复。
-
事件ID 153:硬盘空间不足。
-
事件ID 159:硬盘的I/O请求失败。
-
事件ID 157:硬盘的预警,可能出现故障。
-
事件ID 1014:驱动程序无法加载。
-
事件ID 1012:设备无法启动。
-
事件ID 1042:硬件不兼容或驱动程序错误。
5. 系统启动和关机日志(Boot and Shutdown Logs)
-
事件ID 6005:系统启动。
-
事件ID 6006:系统关机。
-
事件ID 109:系统启动失败。
-
事件ID 6013:系统正常启动后报告健康状态。
-
事件ID 6009:系统启动标识信息。
-
事件ID 6004:系统启动过程中的配置错误。
-
事件ID 6014:操作系统启动时检测到硬件错误。
-
事件ID 6007:系统关机时报告最后一次错误。
-
事件ID 104:系统启动过程中发生了致命错误。
-
事件ID 116:硬件故障导致系统启动失败。
windows防火墙印象记忆
Windows防火墙是操作系统中的一项网络安全功能,旨在通过监控和控制进入和离开计算机的网络流量,防止未授权的访问,保护计算机免受网络攻击。它能够有效过滤网络流量、控制应用程序访问网络,以及保护系统免受外部威胁。
1. 防火墙的基本功能
-
入站和出站规则:
-
入站规则:控制来自外部网络(例如互联网)进入计算机的流量。反向连接
-
出站规则:控制从计算机发送到外部网络的流量。正向连接
-
-
网络类型:
-
防火墙能够根据网络类型(公共网络、私有网络或域网络)应用不同的规则。
-
公共网络:更严格的防火墙规则,用于保护计算机免受外部威胁。
-
私有网络:相对宽松的规则,允许信任的设备之间的通信。
-
域网络:由域控制器管理的网络,通常用于企业环境。
-
-
程序和端口过滤:
-
防火墙可以控制特定程序或服务访问网络的权限。例如,可以阻止某个应用程序访问外部服务器,或者仅允许某个特定端口的流量。
-
-
入站连接请求的允许或拒绝:
-
防火墙根据预设规则允许或拒绝进入计算机的连接请求。可以配置允许某些服务(如远程桌面)或阻止某些服务(如不信任的应用程序)的连接。
-
日志记录与监控
-
防火墙日志
-
Windows防火墙可以启用日志记录功能,将所有被阻止的流量记录到事件日志中。这对诊断和排查网络问题非常有帮助。
-
-
事件查看器
-
使用“事件查看器”查看防火墙相关的日志,便于监控防火墙活动、识别可疑的网络行为和安全事件。
-
步骤 1: 进入防火墙日志部分
-
在左侧面板中,依次展开 “Windows 日志” → “安全” 或 “应用程序和服务日志”。
-
如果查看的是防火墙事件相关的日志,您应进入 “应用程序和服务日志” → “Microsoft” → “Windows” → “Windows Firewall with Advanced Security” →firewall。
步骤 2: 启用防火墙日志记录(如果未启用)
如果未启用日志记录,您可以按照以下步骤启用:
-
打开 “控制面板”。
-
点击 “Windows 防火墙”。
-
在左侧点击 “高级设置”,进入 “高级安全 Windows 防火墙”。
-
在 “操作” 面板中,选择 “属性”。
-
在 “日志记录” 标签中,启用防火墙日志记录,并选择日志的保存路径和大小限制。
常见的防火墙应用场景
-
个人计算机:
-
在个人电脑上,Windows防火墙可以提供基本的网络安全保护,阻止恶意软件和黑客访问本机。
-
-
企业网络:
-
在企业环境中,Windows防火墙可以结合其他安全工具,如入侵检测系统(IDS)和入侵防御系统(IPS),构建多层次的安全防护。
-
常见防火墙策略
-
最小化权限原则:
-
只允许必要的端口和协议通过防火墙,所有其他未明确允许的流量都应被拒绝。
-
-
基于应用的策略:
-
根据应用程序的需要设置防火墙规则,而不是仅基于端口或协议。这有助于阻止未经授权的程序与外部网络通信。
-
-
分区域策略:
-
对不同的网络区域(例如内部网络、外部网络和DMZ)使用不同的防火墙规则,确保网络分层安全。
-
IDS与IPS的区别
特性 | 入侵检测系统(IDS) | 入侵防御系统(IPS) |
---|---|---|
主要功能 | 检测并报告潜在的攻击,报警 | 检测并主动阻止攻击,保护系统免受威胁 |
工作方式 | 只监控和报告异常行为,无干预 | 实时监控并干预,主动防御攻击 |
处理方式 | 仅生成警报和日志 | 主动拦截和阻止攻击 |
部署位置 | 通常部署在网络中,进行流量监控和检测 | 部署在网络边界或关键位置,实时分析并拦截流量 |
误报与漏报 | 相对较少的误报,但可能会漏报未知的攻击 | 可能出现误报或误阻正常流量的风险 |
响应速度 | 无实时响应,仅报警,响应较慢 | 实时响应,快速采取措施阻止攻击 |
典型用途 | 用于检测并帮助分析攻击源,后期响应 | 用于实时防护,防止攻击成功 |
IDS和IPS的集成
-
IDS和IPS可以单独使用,也可以结合起来以提供全面的安全防护。
-
在许多现代网络中,IDS和IPS通常作为集成解决方案共同工作。IDS用于监测和记录攻击活动,IPS用于实时防御和阻止攻击。
-
IDS+IPS = 统一威胁管理(UTM):有些解决方案将IDS和IPS结合,形成一个统一的安全设备,既具备检测能力,也具备防御能力。
IDS适合用于需要高可见性和警报的场景,帮助安全团队检测并分析攻击。
IPS则更适合需要实时防护的环境,能够在攻击发生时立即阻止它们。
命令通过 netsh
,可以访问和修改多种网络组件,包括防火墙、网络接口、路由、Wi-Fi 设置等
详情netsh advfirewall /?
平台选择:大多数 IDS/IPS 工具可以在 Linux 上运行,但也支持 Windows,例如 Snort 和 Suricata。
1. Windows 系统上的 IDS 和 IPS
(1) Snort
-
简介:Snort 是最著名的开源 IDS/IPS 工具之一。它能够进行实时流量分析、数据包记录和检测各种攻击类型,如缓冲区溢出、网络扫描等。Snort 可以作为 IDS 使用,也可以通过配置成为 IPS。
-
特点:
-
支持流量分析和实时检测。
-
丰富的规则集,支持多种协议和攻击检测。
-
可以结合其他工具,如 Barnyard2,进行日志分析和报警。
-
灵活性高,支持插件扩展。
-
-
适用平台:Windows、Linux、Unix。
-
官方网站:Snort
(2) Suricata
-
简介:Suricata 是另一个开源的 IDS/IPS 工具,功能强大,能够支持多线程和高性能处理。它与 Snort 类似,但提供更高的性能和更好的多核心支持。
-
特点:
-
支持多线程,可以在多核系统上提供更高的吞吐量。
-
可与 OpenDXL、ELK 等系统集成,实现更强的数据分析能力。
-
支持多种协议的检测,包含 HTTP、DNS、TLS、SMTP 等。
-
-
适用平台:Windows、Linux。
-
官方网站:Suricata
(3) OSSEC
-
简介:OSSEC 是一个开源的主机入侵检测系统(HIDS),能够监控操作系统和应用程序的日志,检测恶意活动。OSSEC 支持日志分析、文件完整性检查、rootkit 检测、实时报警等功能。
-
特点:
-
主机级 IDS,适用于检测本地活动。
-
支持跨平台,能够监控 Windows、Linux、Mac 等操作系统。
-
实时报警和规则驱动的检测。
-
-
适用平台:Windows、Linux、Mac OS。
-
官方网站:OSSEC
2. Linux 系统上的 IDS 和 IPS
(1) Suricata
-
简介:Suricata 同样适用于 Linux 系统,它能够处理高速流量并实时检测攻击。Suricata 适合用作 IDS 或 IPS,并且支持集成其他安全工具,提升检测能力。
-
特点:
-
具有高性能的流量处理能力。
-
支持集成多个日志管理系统,如 ELK。
-
支持多种协议检测,适用于大规模网络环境。
-
-
适用平台:Linux、Windows。
-
官方网站:Suricata
(2) Snort
-
简介:Snort 是 Linux 上最常用的 IDS/IPS 工具之一。它通过对网络流量的实时监控,检测网络中的可疑活动,并通过报警通知管理员。Snort 同时支持 IPS 功能,可以实时阻止恶意流量。
-
特点:
-
功能强大,支持多种攻击检测。
-
可以灵活配置,支持自定义规则。
-
在 Linux 上表现出色,适用于企业级网络环境。
-
-
适用平台:Linux、Windows、Unix。
-
官方网站:Snort
(3) Bro (现称 Zeek)
-
简介:Zeek(以前叫 Bro)是一个强大的网络分析工具,能够充当 IDS。它不仅可以用于流量分析,还可以进行高级的数据挖掘,适用于检测各种类型的网络攻击。
-
特点:
-
高度可扩展的 IDS。
-
提供强大的日志记录和分析功能。
-
能够与其他工具(如 ELK、Splunk)进行集成,增强事件响应能力。
-
适用于大规模环境,支持复杂的流量分析。
-
-
适用平台:Linux、Windows(通过虚拟机)。
-
官方网站:Zeek
(4) Fail2Ban
-
简介:Fail2Ban 是一款专门用于 Linux 系统的入侵防御工具,它能够通过监控日志文件并阻止重复的恶意活动(如 SSH 暴力破解攻击)。
-
特点:
-
主要用于防止暴力破解攻击。
-
自动化封锁恶意 IP。
-
可以与其他防火墙工具结合使用(如
iptables
)。
-
-
适用平台:Linux。
-
官方网站:Fail2Ban
(5) AIDE (Advanced Intrusion Detection Environment)
-
简介:AIDE 是一个基于主机的入侵检测工具,它通过监控文件系统的变化来检测潜在的入侵行为,特别是对文件完整性进行检查。
-
特点:
-
检查文件的完整性,监测文件系统的变化。
-
支持定期扫描和定制规则。
-
适合用作文件级的监控工具。
-
-
适用平台:Linux、Unix。
-
官方网站:AIDE
检查 IDS/IPS 系统
Windows 上用tasklistwmic 或process get name ,CommandLine(执行的命令和参数)检查是否有 snort.exe
、suricata.exe
或其他 IDS/IPS 相关进程。
linux上用ps aux 检查是否有 snort.exe
、suricata.exe
或其他 IDS/IPS 相关进程。
a
:显示所有用户的进程,而不仅仅是当前用户的进程。
u
:以用户为主的格式显示进程信息,显示每个进程的所有者。
x
:显示没有控制终端的进程(例如,后台进程)。
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 169244 5392 ? S 10:00 0:03 /sbin/init
输出列解释USER:进程的拥有者(用户名)。PID:进程 ID(每个进程的唯一标识符)。
STAT:进程状态,常见的状态包括:
-
S
:休眠(sleeping) -
R
:运行(running) -
Z
:僵尸(zombie) -
T
:停止(stopped) -
+
:在后台运行
START:进程启动的时间。
TIME:进程使用的 CPU 时间。
COMMAND:执行的命令和参数。
蜜罐印象记忆
蜜罐(Honeypot)是一种故意配置的虚假系统、设备或服务,旨在诱使攻击者进行攻击,从而实现对攻击者行为的监控、分析和反制。蜜罐通常不是实际用于生产的系统,而是作为诱饵,吸引黑客的注意力。
网络隔离:
蜜罐应该与生产网络进行严格隔离,避免攻击者通过蜜罐获得对真实系统的访问权限。可以使用以下技术:
-
虚拟化:使用虚拟机(VM)来隔离蜜罐,使其与主机系统独立,便于管理。
-
物理隔离:通过物理网络隔离将蜜罐与实际的生产环境隔开,确保安全性。
-
防火墙:设置防火墙规则,确保蜜罐与外界的连接仅限于特定的网络流量。
开源蜜罐工具
-
Honeyd
-
简介:Honeyd 是一个轻量级的低交互蜜罐,可以模拟大量的虚拟主机,并捕获攻击者的活动。它能够模拟不同的操作系统和服务,诱使攻击者进行攻击。
-
特点:易于配置,支持多种协议的模拟(如TCP/IP、HTTP、SMTP等)。
-
适用场景:适合中小型企业或个人研究。
Honeyd GitHub
-
-
Kippo
-
简介:Kippo 是一个专为 SSH 服务设计的高交互蜜罐,它模拟一个易受攻击的 SSH 服务器,诱使攻击者尝试暴力破解 SSH 密码,并记录他们的操作。
-
特点:专注于 SSH 登录攻击,记录攻击者的命令、行为和工具。
-
适用场景:主要用于SSH暴力破解攻击的研究。
Kippo GitHub
-
-
Dionaea
-
简介:Dionaea 是一个高交互蜜罐,旨在捕捉恶意软件,特别是与病毒、蠕虫、木马等有关的攻击。它可以模拟多种服务并诱使恶意软件攻击。
-
特点:能够模拟多种服务,如 HTTP、FTP、SMB 等,能捕获传入的恶意文件和漏洞利用工具。
-
适用场景:用于恶意软件和漏洞利用的捕获与研究。
Dionaea GitHub
-
-
Cowrie
-
简介:Cowrie 是一个 SSH 和 Telnet 高交互蜜罐,旨在模拟一个真实的服务器,并记录攻击者的行为,尤其是在 SSH 和 Telnet 登录方面的攻击。
-
特点:支持虚拟终端仿真,可以捕获攻击者的命令、文件上传、恶意活动等。
-
适用场景:广泛用于 SSH 和 Telnet 端口暴力攻击监测。
Cowrie GitHub
-
-
Glastopf
-
简介:Glastopf 是一个专注于 Web 服务的蜜罐,可以模拟 Web 应用程序漏洞,诱使攻击者进行 SQL 注入、文件上传等攻击。
-
特点:模拟常见的 Web 漏洞并捕捉攻击者的行为,支持多种 Web 漏洞仿真。
-
适用场景:专注于 Web 应用的漏洞利用监测。
Glastopf GitHub
-
-
MHN (Modern Honey Network)
-
简介:MHN 是一个集中管理多个蜜罐的系统,支持多种类型的蜜罐,能够将多个蜜罐的数据汇总在一个管理界面进行查看。
-
特点:支持分布式蜜罐部署,方便集中管理、分析。
-
适用场景:适用于大规模蜜罐部署和管理。
MHN GitHub
-
免责声明
学习视频来自 B 站up主泷羽sec,如涉及侵权马上删除文章。
笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。
B站地址:泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频
真正的小白文根据其他师傅们的总结进行重构精简捋顺学习逻辑顺序,适合0.5有计算机专业基础的人看。觉得文章逻辑狗屁不通和文章看不懂的你进微信群找我,我给你100哈哈,虽然是ai辅助的,但是看的时候,要想我为什么给这些内容,和一定要学会反向思考,如安全加固想到未加固有漏洞。
计算机组成及硬软件印象记忆
计算机的基本组成
根据冯·诺依曼体系结构,计算机主要由以下五部分组成:
-
运算器 执行数据运算(如加减乘除),处理逻辑操作(如比较大小)。
-
控制器 负责指令的解释与执行,协调其他部件的工作。
-
存储器 保存程序、数据以及计算结果,分为主存(RAM、ROM)和辅存(硬盘、SSD)。
-
输入设备 将外界信息转换为计算机可以处理的数据(如键盘、鼠标、摄像头)。
-
输出设备 将计算机处理结果以人类可读的形式输出(如显示器、打印机)。
计算机硬件组成
-
中央处理器(CPU)
-
核心组件,包括运算器和控制器。
-
主要参数:主频、核心数、线程数、缓存。
-
-
主板
-
连接 CPU、内存、存储和外设的核心电路板。
-
-
内存(RAM)
-
暂时存储正在运行的程序和数据,速度快但断电后数据丢失。
-
-
存储设备
-
硬盘(HDD):容量大,速度较慢,性价比高。
-
固态硬盘(SSD):速度快,功耗低,价格较高。
-
-
输入输出设备(I/O)
-
输入:键盘、鼠标、触摸屏等。
-
输出:显示器、打印机、扬声器等。
-
-
电源(PSU)
-
提供稳定电流,给各部件供电。
-
-
网络设备
-
实现联网功能,如网卡、Wi-Fi 模块。
-
计算机软件组成
-
系统软件
-
负责管理硬件资源和提供基本服务,如操作系统(Windows、Linux、macOS)。
-
-
应用软件
-
为用户提供特定功能服务,如浏览器、文本编辑器、图像处理软件。
-
-
中间件
-
在系统软件和应用软件之间提供服务,支持复杂的分布式系统。
-
计算机运行原理
-
指令周期 包括取指令(Fetch)、译指令(Decode)、执行(Execute)、存储结果(Write Back)。
-
数据流 数据在输入设备、存储器、CPU、输出设备之间流动,遵循输入-处理-输出的基本流程。
-
总线系统
-
数据总线:传输数据。
-
地址总线:传输存储地址。
-
控制总线:传输控制信号。
-
指令系统
-
机器指令
-
计算机能够直接执行的指令,包括算术运算、逻辑运算、数据传输等。
-
-
指令格式
-
操作码(Opcode) + 操作数(Operands)。
-
-
RISC 和 CISC
-
RISC(精简指令集):指令简单、执行速度快。
-
CISC(复杂指令集):指令功能强大,但执行较复杂。
-
其他概念
-
虚拟内存
-
通过硬盘模拟扩展主存,提高程序运行效率。
-
-
并行计算
-
多核处理器同时执行多个任务。
-
-
存储分级
-
寄存器 > Cache > 主存 > 辅存,越靠近 CPU,速度越快,容量越小。
-
编程语言印象记忆
-
Python 简洁、易学,支持多范式编程,广泛应用于数据科学、Web开发和自动化。
-
Java 面向对象,跨平台,依赖于 JVM;在企业级开发和安卓应用中占据重要地位。
-
C 结构化编程语言,性能高,直接操作内存;常用于系统编程和嵌入式开发。
-
C++ 支持面向对象和泛型编程,扩展自 C;擅长高性能计算和游戏开发。
-
JavaScript 前端开发的核心语言,动态类型,支持事件驱动编程;也可用于后端开发(Node.js)。
-
C# 微软开发的面向对象语言,与 .NET 框架紧密集成;适用于企业应用和游戏开发(Unity)。
-
PHP 专为 Web 开发设计,内置强大的服务器端功能,适合快速开发动态网站。
-
Ruby 语法优雅,支持动态和面向对象编程;因 Ruby on Rails 框架而闻名。
-
Go (Golang) 谷歌开发的静态类型语言,简单高效,原生支持并发;常用于服务器端开发。
-
Rust 注重安全性和高性能,内存管理无垃圾回收;适合系统编程和 WebAssembly。
-
Kotlin 兼容 Java,简洁而现代化,官方推荐用于安卓开发。
-
Swift 苹果开发的现代化语言,安全性高;主要用于 iOS 和 macOS 应用开发。
-
R 面向统计计算和数据分析,拥有强大的可视化能力。
-
MATLAB 专用于数值计算,适合科研和工程领域。
-
SQL 专注于数据库查询和操作,结构化数据的标准语言。
-
Perl 强大的文本处理能力,适用于系统管理和 Web 开发。
-
Shell 用于脚本编程,擅长系统任务自动化和操作系统管理。
-
Dart 谷歌开发,专为跨平台应用(如 Flutter)设计,支持响应式编程。
-
TypeScript JavaScript 的超集,提供静态类型检查,提升代码可维护性。
-
Scala 融合面向对象和函数式编程,运行在 JVM 上,适合高并发和大数据处理(如 Apache Spark)。
-
Haskell 纯函数式编程语言,强类型,延迟计算;用于学术研究和金融系统。
-
Lua 轻量级嵌入式脚本语言,常用于游戏开发和嵌入式系统。
-
Objective-C iOS 和 macOS 的传统开发语言,与 C 兼容,现被 Swift 逐渐取代。
-
VB.NET 微软开发的面向对象语言,适合 Windows 应用程序开发。
-
Fortran 面向科学计算和工程领域的高性能语言,特别适合数值计算。
-
COBOL 专为业务、金融和行政系统设计,主要用于大型机环境。
-
F# 运行在 .NET 平台上的函数式语言,适合数学建模和数据分析。
-
Erlang 专为高并发分布式系统设计,广泛用于电信系统和实时应用。
-
Elixir 基于 Erlang 虚拟机,简洁高效,适合高可用和分布式系统。
-
Groovy 运行在 JVM 上,语法简单,与 Java 高度兼容,常用于自动化和脚本开发。
-
Racket Lisp 系列语言之一,注重教学和程序设计研究。
-
Julia 高性能计算语言,专为科学计算和数值分析设计,兼具易用性和速度。
-
Crystal 语法类似 Ruby,但具有编译语言的高性能。
-
D 类似 C++ 的现代化语言,支持面向对象和系统编程。
-
Scratch 可视化编程语言,面向儿童和编程初学者。
-
Ada 为高可靠性系统设计,常用于航空航天和国防工业。
-
Prolog 逻辑编程语言,主要用于人工智能和推理系统。
-
Assembly 低级语言,直接操作硬件,适用于嵌入式和性能要求极高的场景。
-
Nim 现代化的静态编译语言,语法清晰,兼具高性能和易用性。
-
Bash (GNU Bash) Shell 脚本语言,广泛用于 Linux 和 Unix 系统管理与自动化。
前端语言:
-
JavaScript - 主要用于前端开发,处理网页交互和动态内容,支持事件驱动编程。也可用于后端开发(通过 Node.js)。
-
TypeScript - JavaScript 的超集,提供静态类型检查,广泛用于前端开发,提升代码可维护性。
-
Dart - 用于 Flutter 开发跨平台应用,特别是前端移动应用。
-
HTML(通常用于前端) - 用于网页结构的标记语言。
-
CSS(通常用于前端) - 用于网页的样式设计。
后端语言:
-
Python - 后端开发中广泛应用,尤其是用于 Web 开发(如 Django, Flask)和数据科学。
-
Java - 主要用于后端开发,跨平台,广泛应用于企业级应用和安卓开发。
-
C - 主要用于系统级编程,也可用于开发后端服务和嵌入式应用。
-
C++ - 常用于高性能计算、游戏开发及后端服务。
-
PHP - 专为 Web 开发设计,广泛用于后端开发,尤其是动态网站。
-
Ruby - 主要用于后端 Web 开发,特别是 Ruby on Rails 框架。
-
Go (Golang) - 后端开发语言,特别适合高性能服务和并发处理。
-
Rust - 后端系统编程,特别适合需要高性能和安全的场景。
-
Kotlin - 与 Java 兼容,常用于安卓开发,也可用于后端开发。
-
Swift - 主要用于 iOS 和 macOS 应用开发,也可用于后端开发(如 Vapor 框架)。
-
R - 用于数据科学和统计计算,不常用于前端开发。
-
MATLAB - 主要用于科研和工程中的数值计算,不用于前端开发。
-
SQL - 用于数据库操作,作为后端技术的核心部分。
-
Perl - 用于文本处理,系统管理,Web 开发等后端应用。
-
Shell - 用于系统管理和自动化脚本,后端应用。
-
Scala - 用于后端开发,特别适合高并发和大数据处理(如 Apache Spark)。
-
Haskell - 主要用于学术研究、金融系统,和一些后端服务。
-
Lua - 常用于游戏开发中的后端逻辑编写。
-
Objective-C - 主要用于 iOS 和 macOS 应用开发,但有时也用于后端开发。
-
VB.NET - 用于 Windows 平台的后端开发,特别是企业应用。
-
Fortran - 用于科学计算和数值计算,常用于后端。
-
COBOL - 主要用于业务、金融和行政系统的后端开发。
-
F# - 用于函数式编程,通常用于数据分析和后端开发。
-
Erlang - 用于构建高并发、分布式系统,广泛用于后端。
-
Elixir - 基于 Erlang 虚拟机,适合高可用和分布式系统的后端开发。
-
Groovy - 用于自动化、脚本开发,常用于后端(尤其是在 JVM 环境中)。
-
Racket - 主要用于教学和程序设计研究,通常不用于前端或后端。
-
Julia - 主要用于科学计算和数据分析,通常不用于前端开发。
-
Crystal - 适用于后端开发,具有与 C/C++ 相媲美的性能。
-
D - 主要用于系统编程,也可用于后端开发。
-
Scratch - 面向儿童和初学者的可视化编程语言,通常不用于实际的前端或后端开发。
-
Ada - 用于高可靠性系统的后端开发,尤其是航空航天和国防领域。
-
Prolog - 用于人工智能和推理系统,通常作为后端语言使用。
-
Assembly - 主要用于低级编程和嵌入式系统,适合高性能要求的后端开发。
-
Nim - 适用于系统编程和后端开发。
-
Bash (GNU Bash) - 用于系统管理和自动化脚本,后端使用。
总结:
-
前端语言:主要是 JavaScript、TypeScript、Dart 等。
-
后端语言:包括 Python、Java、PHP、Go、Rust、Ruby、Kotlin、Scala、Elixir 等,涵盖了 Web 服务、系统编程、数据处理等领域。
语言框架印象记忆
框架的定义
框架(Framework)是一种可重用的代码结构,为开发者提供一个统一的开发基础和规则,简化应用程序的开发过程。它通常包含一组预定义的类、方法和工具,用于解决常见问题,如处理数据、构建界面或管理系统逻辑。
简单来说,框架是一种工具箱和模板,帮助开发者快速构建高效、规范的程序。
框架的作用
-
标准化开发
-
提供统一的代码结构和开发规范,减少重复劳动。
-
-
提升效率
-
内置常用功能(如路由、数据库操作、身份验证等),开发者无需从头构建。
-
-
简化复杂任务
-
处理底层细节(如网络通信、多线程管理),开发者可专注于业务逻辑。
-
-
提高代码可维护性
-
清晰的代码结构和模块化设计,便于后续扩展和维护。
-
-
社区支持
-
热门框架通常有活跃的社区,提供丰富的插件、工具和文档。
-
1. Python
-
Web开发
-
Django: 全功能 Web 框架,内置 ORM 和认证系统。
-
Flask: 轻量级框架,灵活扩展。
-
FastAPI: 用于构建高性能 API,支持异步功能。
-
Pyramid: 适合复杂项目的可扩展框架。
-
-
数据科学与机器学习
-
TensorFlow, PyTorch: 深度学习框架。
-
2. JavaScript
-
前端框架
-
React: 组件化开发,适用于动态用户界面。
-
Angular: 谷歌开发的全功能前端框架。
-
Vue.js: 简单易用的渐进式前端框架。
-
-
后端框架
-
Node.js: 基于 V8 引擎的服务器端 JavaScript 运行时。
-
Express.js: 轻量级 Web 框架,灵活性强。
-
NestJS: 用于构建可扩展应用的 TypeScript 框架。
-
3. Java
-
Web开发
-
Spring: 企业级框架,包含 Spring Boot(快速开发)、Spring MVC(Web 应用)。
-
Hibernate: ORM 框架,方便数据库交互。
-
Struts: MVC 框架,适合传统 Web 开发。
-
-
大数据处理
-
Apache Hadoop: 分布式存储和处理框架。
-
Apache Spark: 快速大数据处理。
-
4. C#
-
Web开发
-
ASP.NET Core: 跨平台、高性能的 Web 框架。
-
-
游戏开发
-
Unity: 面向游戏和 AR/VR 开发的跨平台引擎。
-
-
桌面开发
-
Windows Forms, WPF: 开发 Windows 桌面应用的框架。
-
5. PHP
-
Laravel: 全功能 Web 框架,提供内置工具如路由和身份认证。
-
Symfony: 可扩展的企业级框架,组件丰富。
-
CodeIgniter: 轻量级框架,简单易用。
6. Ruby
-
Web开发
-
Ruby on Rails: 经典的 MVC 框架,以简洁和高效闻名。
-
7. Go
-
Web开发
-
Gin: 高性能 Web 框架,适合构建 RESTful API。
-
Beego: 企业级开发框架,功能全面。
-
Echo: 简单、快速的 Web 框架。
-
8. Swift
-
移动开发
-
SwiftUI: 用于 iOS 和 macOS 界面开发的新框架。
-
UIKit: iOS 应用传统开发框架。
-
9. Kotlin
-
移动开发
-
Jetpack Compose: 谷歌推出的现代 UI 框架。
-
-
Web开发
-
Ktor: 用于构建异步 Web 应用程序的框架。
-
10. Rust
-
Web开发
-
Rocket: 简单易用的 Web 框架。
-
Actix-web: 高性能异步框架。
-
11. TypeScript
-
与 JavaScript 框架共用
-
React, Angular, Vue.js 均支持 TypeScript,更适合复杂项目开发。
-
12. R 和 MATLAB
-
数据科学与统计
-
Shiny (R): 构建交互式数据可视化应用。
-
MATLAB App Designer: 开发科学计算工具的框架。
-
13. Dart
-
跨平台开发
-
Flutter: 用于移动、Web 和桌面应用开发的强大框架。
-
14. Perl
-
Mojolicious: 用于构建现代 Web 应用程序的框架。
15. Elixir
-
Phoenix: 高并发 Web 应用框架,运行在 Erlang VM 上。
16. Scala
-
大数据处理
-
Apache Spark: 支持 Scala 的大数据处理框架。
-
常用如下:
Web框架 用于构建网站和 Web 应用程序。 例子:Django、Flask、Spring、Struts、Ruby on Rails。
移动开发框架 用于开发移动应用程序。 例子:Flutter、React Native、SwiftUI。
前端框架 帮助开发者快速构建用户界面(UI)。 例子:React、Vue.js、Angular。
后端框架 提供服务器端逻辑、数据处理和 API 接口支持。 例子:Express.js、NestJS、Spring。
游戏框架 用于快速开发游戏,提供图形、物理和音效支持。 例子:Unity、Unreal Engine、Godot。
企业级框架 适用于大型企业的复杂应用开发,注重性能和扩展性。 例子:Spring、.NET Framework。
语言代码库印象记忆
语言代码库(也称为标准库或第三方库)是为编程语言提供功能扩展的集合。这些库可以帮助开发者简化开发流程,避免重复造轮子。不同的编程语言有其特定的标准库,以及丰富的第三方库。
JavaScript / Node.js
-
标准库:
-
fs:用于文件系统操作(读写文件、目录操作等)。
-
http:用于创建 HTTP 服务和客户端请求。
-
path:用于路径操作(如解析、合并文件路径等)。
-
url:用于 URL 解析和格式化。
-
-
第三方库:
-
Lodash:提供一系列实用函数,简化数组、对象等的操作。
-
Express:Web 框架,用于构建 Web 应用和 API。
-
Axios:基于 Promise 的 HTTP 请求库。
-
Moment.js:用于处理日期和时间。
-
2. Python
-
标准库:
-
os:用于操作文件和目录、环境变量等。
-
sys:用于与 Python 解释器交互(如参数传递、退出程序等)。
-
json:用于 JSON 数据的解析和生成。
-
datetime:处理日期和时间。
-
-
第三方库:
-
NumPy:用于科学计算和处理大规模数据集。
-
Pandas:提供数据分析和操作工具,特别适用于表格数据。
-
Flask:轻量级 Web 框架。
-
Requests:用于 HTTP 请求,简化 Web 服务交互。
-
3. Ruby
-
标准库:
-
File:用于文件读写和路径操作。
-
Math:提供数学函数(如三角函数、对数等)。
-
Time:处理日期和时间。
-
Socket:用于网络编程。
-
-
第三方库:
-
Rails (Ruby on Rails):全栈 Web 开发框架。
-
RSpec:行为驱动开发(BDD)测试框架。
-
Sinatra:轻量级 Web 框架。
-
Devise:用户身份验证解决方案。
-
4. PHP
-
标准库:
-
mysqli:用于与 MySQL 数据库进行交互。
-
curl:用于发起 HTTP 请求,支持 GET、POST 等方法。
-
json:用于处理 JSON 数据的编解码。
-
PDO:数据库抽象层,支持多种数据库操作。
-
-
第三方库:
-
Laravel:现代 Web 应用框架,提供路由、ORM 等功能。
-
Symfony:强大的 PHP 框架,适用于大规模 Web 应用。
-
Composer:PHP 的依赖管理工具,简化库和包的管理。
-
Guzzle:用于 HTTP 请求的库。
-
5. Java
-
标准库:
-
java.util:提供集合框架(如 List、Map、Set)和其他实用工具。
-
java.io:用于输入输出操作(文件、网络等)。
-
java.nio:用于高效的 I/O 操作(NIO)。
-
java:用于网络编程,提供类如 URL 和 Socket。
-
-
第三方库:
-
Spring Boot:用于快速构建 Java Web 应用。
-
Hibernate:Java 的 ORM 框架,简化数据库交互。
-
JUnit:单元测试框架。
-
Log4j:日志记录库。
-
6. Go
-
标准库:
-
net/http:用于 HTTP 客户端和服务器开发。
-
fmt:格式化输入输出的库。
-
os:用于操作文件和环境变量。
-
time:处理时间相关功能。
-
-
第三方库:
-
Gin:Web 框架,提供高效的路由和中间件。
-
GORM:Golang 的 ORM 框架。
-
Cobra:用于构建命令行工具。
-
Viper:配置管理库,支持 JSON、YAML 等格式。
-
7. C# (.NET)
-
标准库:
-
System.IO:用于文件和目录操作。
-
System.Net:提供网络编程相关类,如
HttpClient
和WebRequest
。 -
System.Threading:处理多线程编程。
-
System.Linq:提供查询功能,简化集合操作。
-
-
第三方库:
-
ASP.NET Core:用于构建现代 Web 应用和 API 的框架。
-
Entity Framework:ORM 框架,简化数据库交互。
-
NUnit:单元测试框架。
-
AutoMapper:对象映射库,简化对象之间的转换。
-
8. Swift
-
标准库:
-
Foundation:提供日期、文件操作、集合类等。
-
UIKit:用于 iOS 应用的用户界面开发。
-
Dispatch:提供并发编程和调度功能。
-
CoreData:用于数据持久化。
-
-
第三方库:
-
Alamofire:用于 HTTP 网络请求。
-
SwiftyJSON:简化 JSON 处理。
-
Realm:高性能的数据库库,适用于 iOS 和 macOS 应用。
-
SnapKit:简化 AutoLayout 的布局库。
-
9. Rust
-
标准库:
-
std::fs:用于文件系统操作。
-
std::net:提供网络编程相关的功能。
-
std::time:提供时间操作功能。
-
std::collections:提供集合类型,如
HashMap
和Vec
。
-
-
第三方库:
-
Serde:用于数据序列化和反序列化(支持 JSON、YAML 等格式)。
-
Tokio:异步编程运行时。
-
Rocket:Web 框架,用于构建 Web 应用。
-
Diesel:ORM 框架,简化数据库交互。
-
10. Haskell
-
标准库:
-
Data.List:提供常见的列表操作。
-
Control.Monad:支持函数式编程中的单子(Monad)操作。
-
Text:用于高效文本处理。
-
System.IO:文件和输入输出处理。
-
-
第三方库:
-
Yesod:全栈 Web 开发框架。
-
QuickCheck:用于自动化测试的库。
-
Lens:提供不可变数据结构的访问工具。
-
Conduit:流式数据处理库,专注于高效的内存使用。
-
语言依赖库管理器印象记忆
Python
依赖管理器: pip
和 poetry
-
pip
:-
默认的 Python 包管理工具,用于安装和管理 Python 包。
-
通常与
requirements.txt
文件配合使用,列出项目所需的依赖项。
示例:
pip install requests # 安装库 pip freeze > requirements.txt # 导出依赖 pip install -r requirements.txt # 安装依赖
-
-
poetry
:-
高级依赖管理器,集成了项目管理、包发布等功能。
-
使用
pyproject.toml
配置文件管理依赖和版本。
示例:
poetry add requests # 添加依赖 poetry install # 安装所有依赖
-
2. JavaScript/Node.js
依赖管理器: npm
和 yarn
安装所有依赖:
安装 package.json
中列出的所有依赖项。
如果没有指定依赖包,它会安装 dependencies
和 devDependencies
中的所有包。
-
npm
:-
Node.js 的默认包管理工具,用于安装和管理 JavaScript 包。
-
依赖项通常通过
package.json
文件进行管理。
示例:
npm install lodash # 安装库 npm install # 安装所有依赖
-
-
yarn
:-
Facebook 提供的替代
npm
的包管理工具,速度更快并且具有更好的依赖缓存功能。
示例:
yarn add lodash # 安装库 yarn install # 安装所有依赖
-
3. Ruby
依赖管理器: bundler
-
bundler
:
-
Ruby 的依赖管理器,用于安装和管理 Ruby 项目中的 gem 库。
-
依赖项在
Gemfile
中列出,bundle install
命令用于安装所有依赖。
示例:
bundle install # 安装所有依赖 会安装 Gemfile 中列出的所有 gem 库,并根据 Gemfile.lock 来确保依赖版本的一致性。 bundle add rails # 安装新依赖
-
4. Java
依赖管理器: Maven
和 Gradle
-
Maven
:-
Java 项目中常用的构建工具和依赖管理器,依赖项在
pom.xml
文件中进行管理。
示例:
mvn install # 安装依赖 mvn clean install # 清理并安装依赖
-
-
Gradle
:-
另一个常用的 Java 构建工具,灵活性更高,依赖项在
build.gradle
文件中进行管理。
示例:
gradle build # 构建项目并安装依赖 gradle dependencies # 查看依赖
-
5. PHP
依赖管理器: Composer
-
Composer
:
-
PHP 的官方依赖管理器,用于安装、更新和管理 PHP 项目的库。
-
依赖项通过
composer.json
文件管理。
示例:
composer install # 安装所有依赖 composer require monolog/monolog # 安装特定依赖
-
6. Go
依赖管理器: Go Modules
-
Go Modules
:
-
Go 的官方依赖管理工具,从 Go 1.11 开始支持。
-
依赖项在
go.mod
和go.sum
文件中进行管理。
示例:
go mod init # 初始化项目 go get github/gin-gonic/gin # 安装依赖
-
7. .NET/C#
依赖管理器: NuGet
-
NuGet
:
-
.NET 项目中常用的依赖管理工具。
-
依赖项在
.csproj
文件或packages.config
文件中进行管理。
示例:
nuget restore # 恢复项目依赖 dotnet add package Newtonsoft.Json # 添加依赖
-
8. Rust
依赖管理器: Cargo
-
Cargo
:
-
Rust 的官方包管理器,用于构建、测试、安装 Rust 包。
-
依赖项在
Cargo.toml
文件中进行管理。
示例:
cargo build # 构建项目并安装依赖 cargo add serde # 添加依赖
-
9. Swift
依赖管理器: CocoaPods
和 Swift Package Manager
-
CocoaPods
:-
iOS/macOS 的依赖管理工具,使用
Podfile
配置文件来管理依赖项。
示例:
pod install # 安装所有依赖 pod init # 初始化 Podfile
-
-
Swift Package Manager
:-
官方支持的 Swift 项目的依赖管理工具,依赖项在
Package.swift
文件中管理。
示例:
swift package update # 更新依赖 swift build # 构建项目
-
10. Haskell
依赖管理器: Cabal
和 Stack
-
Cabal
:-
Haskell 的官方依赖管理和构建工具。
-
依赖项在
.cabal
文件中进行管理。
示例:
cabal install # 安装依赖 cabal build # 构建项目
-
-
Stack
:-
高级构建工具,增强了
Cabal
的功能,依赖项也在stack.yaml
中管理。
示例:
stack install # 安装依赖 stack build # 构建项目
-
总结
依赖管理器是现代编程语言中的重要工具,它们为开发者提供了简化和自动化的依赖安装、更新和管理功能。根据所使用的编程语言,常见的依赖管理器包括:
-
Python:
pip
、poetry
-
JavaScript/Node.js:
npm
、yarn
-
Ruby:
bundler
-
Java:
Maven
、Gradle
-
PHP:
Composer
-
Go:
Go Modules
-
.NET/C#:
NuGet
-
Rust:
Cargo
-
Swift:
CocoaPods
、Swift Package Manager
-
Haskell:
Cabal
、Stack
语言代码库导入印象记忆
1. C导入库方式
#include <math.h> #include <stdio.h> #include <zlib.h>
2. C++导入库方式
#include <iostream> #include <vector> #include <boost/asio.hpp>
3. Python导入库方式
import math import requests
4. Java导入库方式
import java.util.ArrayList; import org.springframework.beans.factory.annotation.Autowired; import java.util.*;
5. JavaScript导入库方式
本地导入:
ES6 引入了 import 语法,它是一种标准的模块化方式,可以用于在项目中导入模块和库。
import _ from 'lodash'; // 导入整个lodash库 import { sum } from 'lodash'; // 仅导入lodash库中的sum函数
import { myFunction } from './myModule.js'; // 从本地模块文件导入 myFunction函数
import
是静态导入,必须在文件的顶部使用。
在 Node.js 环境中,使用 require 来导入模块,这是 CommonJS 模块系统的一部分 通过npm下载 npm i -g npm npm i --save lodash
<script src="lodash.js"></script> // Load the full build. var _ = require('lodash');
外部引入外部库:
<script src="https://cdn.jsdelivr/npm/lodash@4.17.21/lodash.min.js"></script>
总结
-
ES6 模块(
import
):现代 JavaScript 中的标准方式,推荐用于浏览器和 Node.js 项目中。 -
CommonJS(
require
):Node.js 的默认模块导入方式,适用于服务器端代码。 -
CDN:在浏览器中直接引入外部库,适用于简单的前端项目。
**6. PHP导入库方式
-
use GuzzleHttp\Client;
必须位于文件的开头,而不是混合在业务代码中。
当你使用类、接口、或命名空间时,通常需要用 use 语句来导入。 例如,使用 GuzzleHttp 库: <?php use GuzzleHttp\Client; $client = new Client(); $response = $client->get('https://example'); 在 PHP 中,标准库大部分是内置的,因此无需手动导入,只有在使用外部文件或扩展时,才需要使用 include、require 或 use 等语句进行导入 <?php $pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
在 PHP 中,可以通过 require
或 include
来引入外部文件,外部文件中写导入:
require 'path/to/file.php'; include 'path/to/file.php';
7. Ruby导入库方式
加载标准库:Ruby 内置的库可以直接使用 require 加载,如 net/http、json、date 等。 加载第三方库:使用 Ruby 的包管理器 Gem 安装第三方库后,也可以通过 require 导入。例如,使用 gem install rails 安装 Rails 后,可以这样导入: require 'rails'
rails
库一般是作为框架使用的,不需要在每个文件中显式 require 'rails'
,只需要在项目中配置好 rails
环境即可。
8. Go导入库方式
import "github/gin-gonic/gin" import "gorm.io/gorm" import加载标准库加载第三方库
9. Swift导入库方式
import Alamofire import SwiftUI
10. Rust导入库方式
use serde::{Serialize, Deserialize}; // 导入 `serde` 库中的 `Serialize` 和 `Deserialize` 特性 use tokio::runtime; // 导入 `tokio` 库中的 `runtime` 模块 use serde; // 只导入serde库本身,可以使用serde的任何功能
11. R导入库方式
library(ggplot2) library(dplyr)
12. MATLAB导入库方式
调用内置函数(例如 plot 和 fminunc): plot(x, y) fminunc(@(x) x^2, 0) 使用 addpath 引入额外的工具箱: addpath('path/to/your/library')
13. TypeScript导入库方式
import axios from 'axios'; import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';
数据库印象记忆
1. 关系型数据库(RDBMS)
关系型数据库基于表格(行和列)的结构,采用结构化查询语言(SQL)进行数据操作,支持事务、数据完整性、数据一致性等。
常见数据库:
-
MySQL:开源、广泛使用的关系型数据库,适用于中小型应用。
-
PostgreSQL:功能丰富、支持 ACID 特性的开源数据库,适合复杂查询和数据分析。
-
Oracle Database:商业化数据库,广泛用于大型企业的关键应用,功能强大,支持大规模数据处理。
-
SQL Server:微软提供的商业数据库,广泛用于企业级应用和 Windows 环境。
-
SQLite:轻量级关系型数据库,适用于嵌入式设备和小型应用。
特点:
-
数据以表格形式存储。
-
支持 SQL 语言进行数据查询和操作。
-
数据之间通过外键关联。
-
支持 ACID(原子性、一致性、隔离性、持久性)特性。
-
支持事务处理。
2. 非关系型数据库(NoSQL)
NoSQL 数据库不使用表格结构,而是使用键值对、文档、列族或图的形式存储数据,通常用于需要大规模、快速查询和高并发的应用场景。
常见数据库:
-
MongoDB:文档型数据库,数据以 BSON 格式存储,支持灵活的数据模型,适合快速开发和大数据量存储。
-
Redis:键值型数据库,常用于缓存和实时数据存储,支持高并发操作。
-
Cassandra:列族型数据库,适用于大规模分布式系统,提供高可用性和扩展性。
-
CouchDB:文档型数据库,支持 HTTP 和 JSON 数据格式,适合大规模分布式系统。
-
Neo4j:图形数据库,用于存储和操作图数据,适用于社交网络、推荐系统等领域。
-
Elasticsearch:基于 Lucene 的分布式搜索引擎,广泛用于日志分析和全文搜索。
端口
-
MySQL 默认端口:
3306
-
PostgreSQL 默认端口:
5432
-
Oracle Database 默认端口:
1521
-
SQL Server 默认端口:
1433
SQL Server 还可能使用动态端口,特别是在使用 SQL Server 浏览器服务时。 -
SQLite SQLite 是一个嵌入式数据库,因此没有网络端口。它是基于文件系统的,数据存储在本地文件中。
-
MongoDB 默认端口:
27017
-
Redis 默认端口:
6379
-
Cassandra 默认端口:
9042
-
CouchDB 默认端口:
5984
-
Neo4j 默认端口:
-
HTTP 接口:
7474
-
Bolt 协议:
7687
-
-
Elasticsearch 默认端口:
9200
(HTTP),9300
(TCP 用于集群节点间通信)
这些是常见的数据库的默认端口,实际使用时可以根据需要进行修改。
病毒印象记忆
1. 低级语言
低级语言因其与硬件的紧密联系,非常适合编写操作系统层面的病毒。
-
汇编语言 (Assembly):
-
特点:直接操作内存和处理器,代码极为高效。
-
应用:用于编写引导区病毒(Boot Sector Virus)、Rootkit 等。
-
示例:通过中断向量表劫持系统功能。
-
缺点:开发难度较高,但更难被检测和逆向分析。
-
-
C语言:
-
特点:灵活性强,可操作底层系统资源。
-
应用:蠕虫病毒、文件感染病毒、网络攻击工具等。
-
示例:利用 C 编写的病毒可以操控文件和内存,也能结合网络通信。
-
优势:广泛使用,跨平台能力强。
-
-
C++:
-
特点:面向对象支持,利于复杂病毒设计。
-
应用:编写复杂的恶意软件,或具备模块化功能的病毒。
-
2. 脚本语言
脚本语言通常用于攻击高层应用或快速开发病毒。
-
Python:
-
特点:简单易用,拥有大量库支持网络、文件操作。
-
应用:编写勒索病毒、网络攻击工具(如扫描器、后门)。
-
示例:利用
smtplib
实现邮件病毒,或用os
库篡改文件系统。 -
缺点:运行需要解释器,但通过打包工具(如 PyInstaller)可生成独立可执行文件。
-
-
JavaScript:
-
特点:专注于浏览器攻击和 Web 漏洞利用。
-
应用:跨站脚本攻击(XSS)、钓鱼页面嵌入恶意代码。
-
示例:编写恶意广告脚本或感染网页的病毒。
-
-
PowerShell:
-
特点:专用于 Windows 平台,强大的系统管理功能。
-
应用:用于脚本病毒、网络渗透工具。
-
示例:通过 PowerShell 脚本感染系统或下载远程恶意代码。
-
优势:集成于 Windows,执行权限高。
-
-
VBS (Visual Basic Script):
-
特点:轻量化脚本,易于执行文件操作。
-
应用:电子邮件病毒、Office 宏病毒。
-
示例:通过 Office 文档嵌入宏病毒感染用户。
-
3. 网络攻击语言
专注于网络攻击或跨系统感染的病毒通常用以下语言:
-
Java:
-
特点:跨平台性强,可感染多个操作系统。
-
应用:编写跨平台的蠕虫病毒、恶意程序。
-
示例:通过
java
库建立网络连接进行恶意传播。
-
-
PHP:
-
特点:服务器端脚本语言,专注于 Web 攻击。
-
应用:网站后门、Webshell、DDoS 控制脚本。
-
示例:在服务器端隐藏恶意后门,窃取数据或执行远程命令。
-
-
Ruby:
-
特点:用于渗透工具开发(如 Metasploit)。
-
应用:辅助渗透测试的恶意脚本。
-
4. 特殊语言
某些病毒利用专门设计的语言或系统独有的语言。
-
Batch (批处理脚本):
-
特点:简洁,适合 Windows 环境下的简单病毒。
-
应用:删除文件、修改系统配置、创建无限循环。
-
示例:利用
.bat
文件修改注册表或关闭系统功能。
-
-
Shell (Bash):
-
特点:适合 Linux/Unix 系统。
-
应用:创建自动化蠕虫、破坏文件系统。
-
示例:编写 Bash 脚本扫描并篡改网络共享目录。
-
5.BIOS 病毒与概念结合
BIOS 病毒是一种非常隐蔽的恶意软件,它直接感染系统的固件层(BIOS/UEFI),从而在操作系统启动前运行并掌控系统。
-
BIOS (Basic Input/Output System)
:
-
是计算机主板上的固件,负责在开机时初始化硬件设备并启动操作系统。
-
存储于主板上的闪存芯片,权限极高。
-
现代主板大多使用其改进版本 UEFI (Unified Extensible Firmware Interface),功能更强大,安全性更高。
-
BIOS 病毒的特性:
-
隐蔽性:操作系统层面很难检测到,因为它运行在操作系统之前。
-
持久性:即使重新安装操作系统,病毒仍然存在,除非刷新 BIOS。
-
危害性:可能直接破坏硬件,导致主板失效。
BIOS 病毒如何工作?
-
修改 BIOS 固件,植入恶意代码。
-
在启动过程中劫持系统启动流程,加载病毒或恶意操作系统。
-
操控硬件,如键盘记录、屏幕劫持。
NASM (Netwide Assembler) 是一种汇编语言编译器,常用于编写低级程序,包括直接与硬件交互的 BIOS 或 UEFI 程序。
NASM 的特点:
-
支持 x86 和 x86_64 架构,适合编写高性能的底层代码。
-
提供对 BIOS 中断调用(如
INT 10h
、INT 13h
)的支持。 -
非常适合开发启动扇区代码、引导加载程序(Bootloader)、BIOS 工具等。
NASM 与 BIOS 病毒的关系:
-
开发工具:NASM 可用于直接编写 BIOS 病毒代码,如修改启动扇区或固件。
-
汇编支持:BIOS 程序通常使用汇编语言开发,因为它需要直接与硬件交互,执行高效且小巧的指令。
示例:BIOS 调用
使用 NASM 编写,调用 BIOS 中断以显示字符 mov ah, 0x0E ; 设置显示字符功能 mov al, 'A' ; 显示字符 'A' int 0x10 ; 调用 BIOS 视频中断
上位 UEFI
UEFI (Unified Extensible Firmware Interface) 是 BIOS 的继任者,与传统 BIOS 相比功能更强大、扩展性更强。
上位 UEFI 的含义
-
"上位 UEFI" 是指基于 UEFI 架构的高级功能和接口,提供了现代计算机中复杂的启动和硬件管理功能。
-
上位功能:支持网络启动、安全启动(Secure Boot)、更大的分区表(GPT)等。
UEFI 和病毒的关系
-
复杂性:UEFI 的复杂架构为病毒提供了更大的攻击面,比如漏洞利用。
-
攻击点
:
-
Secure Boot 绕过:破坏安全启动机制,加载未经签名的恶意代码。
-
NVMe 存储感染:通过修改 UEFI 固件存储区植入病毒。
-
-
开发工具:使用 C 语言或汇编结合 UEFI 的 SDK 或开发包(如 EDK II)。
常见病毒案例与对应语言
病毒名称 | 语言 | 功能与特性 |
---|---|---|
ILOVEYOU | VBScript | 通过电子邮件传播,删除文件。 |
WannaCry | C/C++, Python | 勒索病毒,利用 SMB 漏洞传播。 |
Stuxnet | C++, Assembly | 工业控制系统攻击,复杂的多模块设计。 |
Mirai | C, Go | 用于物联网设备的僵尸网络攻击。 |
Zeus | C++ | 银行木马,窃取用户敏感信息。 |
总结
-
宏病毒(macro):利用metasploit生成宏病毒,植入office文件——VB/C#编写
-
bat、powershell:主要用于内网渗透
-
CAD LISP(脚本病毒):CAD运行时会正常执行一些脚本,我们可以放一些自己的东西。——使用lisp语言(较特殊)
-
Autol3(脚本病毒):冷门语言不易被杀
-
bios程序(病毒):理解bios、NASM以及上位UFFI
编写病毒并非法使用属于违法行为,但了解这些技术有助于加强系统安全和防御能力。
-
低级语言(如 C、汇编)适合复杂和底层病毒。
-
脚本语言(如 Python、PowerShell)适合快速开发和网络病毒。
-
防范措施:安装安全软件、保持系统更新、避免执行未知代码。
windows注册表印象记忆
用reg query "路径" 查询
详情用reg /?查看
Windows 注册表中的键(Key)和键值(Value)是其核心组成部分,用于存储和管理系统及应用程序的配置信息。
1. 键(Key)
键是注册表的主要结构单元,类似于文件系统中的文件夹。每个键可以包含子键或键值。
根键(Root Keys)
Windows 注册表有五个主要根键:
-
HKEY_CLASSES_ROOT
-
管理文件类型和扩展名的关联。
-
-
HKEY_CURRENT_USER
-
保存当前用户的个人配置。
-
-
HKEY_LOCAL_MACHINE
-
保存整个计算机的配置信息。
-
-
HKEY_USERS
-
包含所有用户的注册表配置数据。
-
-
HKEY_CURRENT_CONFIG
-
存储当前硬件配置文件的详细信息。
-
子键(Subkeys)
每个根键可以有多个子键。例如:
-
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
-
子键
Microsoft
保存与微软相关的系统信息。
-
2. 键值(Value)
键值是存储实际数据的部分,每个键值由名称、类型和数据组成。
键值的组成
-
名称:键值的名字,可以为空(默认值)。
-
类型:表示数据的格式或类型(见下方分类)。
-
数据:键值存储的信息内容。
键值的常见类型
-
REG_SZ
(字符串值)-
用于存储文本数据,例如文件路径。
-
示例:
C:\Program Files\Example
-
-
REG_DWORD
(32 位数字)-
用于存储整型数据(十进制或十六进制)。
-
示例:
0x00000001
表示启用某项功能。
-
-
REG_QWORD
(64 位数字)-
用于存储 64 位整型数据。
-
示例:
0x0000000000000001
-
-
REG_MULTI_SZ
(多字符串值)-
存储多个字符串,用空字符分隔。
-
示例:
Value1\0Value2\0Value3\0\0
-
-
REG_EXPAND_SZ
(可扩展字符串值)-
支持变量替换的字符串,例如
%SystemRoot%
。 -
示例:
%SystemRoot%\System32\cmd.exe
-
-
REG_BINARY
(二进制值)-
存储二进制数据,常用于硬件配置。
-
示例:
01 00 00 00
-
-
REG_NONE
(无类型值)-
用于存储没有特定格式的数据。
-
-
REG_LINK
(符号链接)-
存储指向其他注册表位置的符号链接。
-
3. 示例总结
功能 | 键路径 | 键值名称 | 类型 | 数据示例 |
---|---|---|---|---|
文件关联 | HKEY_CLASSES_ROOT\.txt | (默认) | REG_SZ | txtfile |
开机启动项(全局) | HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run | MyApp | REG_SZ | C:\Program Files\MyApp\app.exe |
用户登录初始化 | HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit | (默认) | REG_SZ | userinit.exe |
服务启动配置 | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService | Start | REG_DWORD | 0x00000002 (自动启动) |
环境变量(系统级) | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment | Path | REG_EXPAND_SZ | %SystemRoot%\System32;%SystemRoot% |
禁用任务管理器 | HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System | DisableTaskMgr | REG_DWORD | 0x00000001 (1 表示禁用) |
windows自启动危害印象记忆
使⽤命令查看启动项msconfig
启动项⽬,就是开机的时候系统会在前台或者后台运⾏的程序。当操作系统完成登录过程,进程表中出现了 很多的进程。操作系统在启动的时候,⾃动加载了很多程序。许多程序的⾃启动,给我们带来了很多⽅便,这是 不争的事实,但不是每个⾃启动的程序对我们都有⽤;更甚者,也许有病毒或⽊⻢在⾃启动⾏列。其实在 Windows操作系统中关于⾃启动⽂件,除了从以前系统中遗留下来的Autoexec.bat⽂件中加载外,按照两个⽂ 件夹和9个核⼼注册表⼦键来⾃动加载程序的。
在 Windows 系统中,程序可以通过以下两种主要方式自动加载和运行:
1. 通过文件夹自动加载
以下两个文件夹是常见的自启动项存放位置,用户或程序可以将快捷方式放入其中,实现开机自启动。
-
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
-
该文件夹为 所有用户 的启动项目录,放置在此处的程序会在系统启动时为所有用户自动运行。
-
-
C:\Users\<用户名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
-
该文件夹为 当前用户 的启动项目录,放置在此处的程序只会在当前用户登录时运行。
-
2. 通过注册表键自动加载
以下 9 个核心注册表子键可以用于设置程序自启动:
2.1. 当前用户级别的自启动键
只会影响当前登录的用户:
-
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
-
注册的程序在用户登录后自动运行。
-
-
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
-
注册的程序在用户登录后运行 一次,运行后条目被删除。
-
2.2. 所有用户级别的自启动键
会影响所有用户:
-
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
-
注册的程序会在任何用户登录后自动运行。
-
-
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
-
注册的程序会在任何用户登录后运行 一次,运行后条目被删除。
-
2.3. 用于 64 位系统的额外键
在 64 位 Windows 系统上,以下键用于运行 32 位程序:
-
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
-
运行 32 位程序的启动项。
-
-
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce
-
运行 32 位程序的启动项,仅运行 一次。
-
2.4. 系统服务的启动相关键
-
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
-
存放系统服务的启动配置,系统级服务会根据其设置自动启动。
-
Windows 服务运行在系统后台,通常具有较高的优先级,在操作系统启动的早期阶段加载。
-
2.5. 分组策略相关的启动键
-
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
-
在此键中配置的程序会在任何用户登录后自动运行,通常用于策略配置。
-
-
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
-
在此键中配置的程序会在当前用户登录后自动运行,通常用于策略配置。
-
Windows Shell - 系统接口
-
Windows Shell 是系统的用户接口组件,包括桌面、任务栏、文件资源管理器等。
-
默认情况下,Windows 使用
Explorer.exe
作为 Shell,加载路径如下:
-
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
-
-
如果该值被篡改(如被恶意软件修改为其他程序),可能会导致非标准的 Shell 接口。
BootExecute - 启动执行项
-
BootExecute
是一个关键的注册表键,位于:
-
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\BootExecute
-
-
这个键通常用于指定系统启动期间执行的程序。
-
默认值为:
autocheck autochk *
-
它调用了 autochk.exe,即磁盘检查程序,用于启动时检测磁盘错误。
-
-
恶意软件可能会利用此键来设置启动时加载的高优先级程序。
策略组加载程序
-
Windows 提供 组策略编辑器(
gpedit.msc
)来管理本地计算机或用户配置的行为。 -
通过以下路径可以设置用户登录时运行的程序:
-
用户配置 → 管理模板 → 系统 → 登录 → 在用户登录时运行这些程序
-
-
添加程序到此策略时,无需修改注册表即可在用户登录时自动加载指定程序。
特殊启动
1.关联启动 在注册表中除了上述普通的期待⽅式外,还可以利⽤特殊的⽅式达到启动⽬的,如关联启动。当我们打开 TXT⽂件时,系统⾃动会⽤记事本打开,⾃动运⾏notepad.exe
2.屏幕保护启动 windows的屏幕保护是⼀个.scr⽂件,这是个PE⽂件,如果把.scr改为.exe该程序仍然可以正常启动。类似 的.exe⽂件更名为.scr也是被运⾏的,所以只要替换屏保⽂件,就能达到启动⽬的。
3.autorun.inf启动⽅式 虽说特殊但是⽐较常⻅,主要拜U盘病毒所赐,以前常⻅于光盘中,⽤于光盘⾃启动,每次光盘放⼊光驱中 系通过这个⽂件是否⾃动启动光盘,这个⽂件可以⽤启动⼀些⽂件
4.古⽼启动—— 批处理⾃启动 autoexec.bat位于系统盘根⽬录(当然是隐藏⽂件),它每次开机的时候都会启动,早期病毒就看中它,利 ⽤deltree,rmdir /s /q 、format等危险命令来破坏数据。98系统中还有个winstart.bat位于windows⽂件夹中,每次开机都会 启动。但是在2003、xp、me默认都不会启动。
5.windows配置⽂件包括win.ini、system.ini、wininit.ini也会被加载的。
现代 Windows 系统对这些文件的依赖极低,它们主要是为了兼容早期应用程序或完成一些特殊任务而保留的。在 Windows NT 系列系统(2000、XP、7、10 等) 中,核心配置主要存储在注册表中,而不是这些 .ini
文件。
windows计划任务印象记忆
Windows计划任务(Windows Task Scheduler)是Windows操作系统中用于自动执行任务的工具。用户可以通过计划任务来安排和管理脚本、程序、或命令的自动执行,按预定的时间或事件触发。它是实现自动化管理和维护的强大工具。
创建计划任务:
可以通过两种方式来创建计划任务:
-
使用图形界面:
-
打开任务计划程序:
开始
>Windows管理工具
>任务计划程序
。 -
在任务计划程序中,右键点击“任务计划程序库”,选择“创建基本任务”或“创建任务”。
-
设置任务的名称、触发器、操作、条件和设置。
-
-
使用命令行(
schtasks
命令):schtasks
命令可以在命令提示符中创建、删除或列出计划任务。示例如下:schtasks /create /tn "MyTask" /tr "C:\path\to\program.exe" /sc daily /st 10:00
该命令表示每天10:00执行指定的程序。
详解用schtasks /?
常见应用场景:
-
系统维护:
-
自动备份文件或系统状态。
-
定期清理磁盘,删除临时文件。
-
运行系统更新检查或更新安装程序。
-
-
自动启动应用程序:
-
在系统启动时自动启动特定的程序或服务。
-
在用户登录时自动执行程序。
-
-
监控和日志:
-
定时运行脚本来检查系统状态、服务状态或日志文件。
-
定期生成系统报告或执行健康检查。
-
-
自动化脚本:
-
执行定时的批处理脚本,如数据同步、文件转换等。
-
-
通知和警报:
-
在某些条件下自动发送警告邮件或弹出通知,例如系统资源占用过高时。
-
windows日志印象记忆
点开某个事件很详细的介绍了事件的所有不了解的
打开方法:按下Win + R
,输入eventvwr.msc
日志的关键字段:
-
事件ID(Event ID):
-
每个事件都有一个唯一的标识符(事件ID),它可以帮助用户快速识别事件的类型。例如,
Event ID 41
表示系统意外关机。
-
-
源(Source):
-
表示产生事件的组件或应用程序。例如,
Kernel-Power
源表示与电源管理相关的事件。
-
-
级别(Level):
-
指示事件的严重性。常见的级别有:
-
信息:通常表示正常操作或系统事件。
-
警告:表示潜在问题或需要关注的情况。
-
错误:表示系统故障或需要修复的错误。
-
严重错误:表示系统崩溃或无法恢复的严重问题。
-
-
-
日期和时间(Date and Time):
-
记录事件发生的具体时间,用于时间线分析和事件追溯。
-
-
描述(Description):
-
事件的详细描述,提供了关于事件的更多上下文信息。
-
日志管理和分析:
-
筛选和搜索日志:
-
事件查看器允许通过筛选器搜索特定类型的事件。例如,可以搜索特定的事件ID、源、级别等信息。
-
在事件查看器中,可以使用自定义筛选器来查看过去24小时的警告或错误事件。
-
-
导出日志:
-
事件查看器支持将日志导出为
.evtx
文件,方便备份、共享或进一步分析。 -
可以选择导出某个日志类别或特定时间段的日志。
-
-
设置日志级别:
-
可以调整日志的记录级别(如信息、警告、错误),根据需要进行设置,以便更好地捕捉所关注的事件类型。
-
-
事件订阅与转发:
-
Windows提供事件订阅功能,可以将事件从多个计算机收集到一个中央服务器。这对于大规模环境的日志集中管理非常有用。
-
使用Windows事件转发服务(WEF)可以将事件从远程计算机转发到中央日志服务器。
-
-
清理和存档日志:
-
为了防止日志占用过多磁盘空间,Windows提供日志自动清理和存档的功能。可以设置日志文件的最大大小,超出后自动覆盖或归档。
-
常见日志事件示例:
1. 系统日志(System Log)
-
事件ID 41:系统未正常关机。
-
事件ID 6008:系统异常关闭。
-
事件ID 7023:服务失败。
-
事件ID 7031:服务崩溃,需重新启动。
-
事件ID 7032:服务崩溃,恢复失败。
-
事件ID 7040:服务未正确配置。
-
事件ID 1055:设备驱动程序加载失败。
-
事件ID 1001:应用程序或系统错误报告。
-
事件ID 1014:DNS解析失败。
-
事件ID 119:硬件错误,可能导致系统无法启动。
2. 应用程序日志(Application Log)
-
事件ID 1000:应用程序崩溃。
-
事件ID 1026:.NET应用程序未处理的异常。
-
事件ID 1001:应用程序错误报告。
-
事件ID 1004:应用程序无法启动。
-
事件ID 1005:应用程序无法启动,缺少依赖项。
-
事件ID 3001:Microsoft Office应用程序错误。
-
事件ID 3002:Office更新错误。
-
事件ID 3010:Office安装成功但未完成配置。
-
事件ID 1056:应用程序的配置文件损坏。
-
事件ID 1030:网络相关的应用程序错误。
3. 安全日志(Security Log)
-
事件ID 4624:成功的登录。
-
事件ID 4634:注销事件。
-
事件ID 4740:账户被锁定。
-
事件ID 4672:管理员权限授予。
-
事件ID 4768:Kerberos认证票据请求成功。
-
事件ID 4769:Kerberos认证票据请求失败。
-
事件ID 4771:Kerberos身份验证请求失败。
-
事件ID 4776:登录尝试失败。
-
事件ID 4647:用户会话关闭。
-
事件ID 4770:账户名与域名不匹配。
4. 硬件日志(Hardware Log)
-
事件ID 7:磁盘错误(坏道或硬件问题)。
-
事件ID 11:驱动程序错误。
-
事件ID 51:磁盘控制器错误。
-
事件ID 55:磁盘损坏,可能需要修复。
-
事件ID 153:硬盘空间不足。
-
事件ID 159:硬盘的I/O请求失败。
-
事件ID 157:硬盘的预警,可能出现故障。
-
事件ID 1014:驱动程序无法加载。
-
事件ID 1012:设备无法启动。
-
事件ID 1042:硬件不兼容或驱动程序错误。
5. 系统启动和关机日志(Boot and Shutdown Logs)
-
事件ID 6005:系统启动。
-
事件ID 6006:系统关机。
-
事件ID 109:系统启动失败。
-
事件ID 6013:系统正常启动后报告健康状态。
-
事件ID 6009:系统启动标识信息。
-
事件ID 6004:系统启动过程中的配置错误。
-
事件ID 6014:操作系统启动时检测到硬件错误。
-
事件ID 6007:系统关机时报告最后一次错误。
-
事件ID 104:系统启动过程中发生了致命错误。
-
事件ID 116:硬件故障导致系统启动失败。
windows防火墙印象记忆
Windows防火墙是操作系统中的一项网络安全功能,旨在通过监控和控制进入和离开计算机的网络流量,防止未授权的访问,保护计算机免受网络攻击。它能够有效过滤网络流量、控制应用程序访问网络,以及保护系统免受外部威胁。
1. 防火墙的基本功能
-
入站和出站规则:
-
入站规则:控制来自外部网络(例如互联网)进入计算机的流量。反向连接
-
出站规则:控制从计算机发送到外部网络的流量。正向连接
-
-
网络类型:
-
防火墙能够根据网络类型(公共网络、私有网络或域网络)应用不同的规则。
-
公共网络:更严格的防火墙规则,用于保护计算机免受外部威胁。
-
私有网络:相对宽松的规则,允许信任的设备之间的通信。
-
域网络:由域控制器管理的网络,通常用于企业环境。
-
-
程序和端口过滤:
-
防火墙可以控制特定程序或服务访问网络的权限。例如,可以阻止某个应用程序访问外部服务器,或者仅允许某个特定端口的流量。
-
-
入站连接请求的允许或拒绝:
-
防火墙根据预设规则允许或拒绝进入计算机的连接请求。可以配置允许某些服务(如远程桌面)或阻止某些服务(如不信任的应用程序)的连接。
-
日志记录与监控
-
防火墙日志
-
Windows防火墙可以启用日志记录功能,将所有被阻止的流量记录到事件日志中。这对诊断和排查网络问题非常有帮助。
-
-
事件查看器
-
使用“事件查看器”查看防火墙相关的日志,便于监控防火墙活动、识别可疑的网络行为和安全事件。
-
步骤 1: 进入防火墙日志部分
-
在左侧面板中,依次展开 “Windows 日志” → “安全” 或 “应用程序和服务日志”。
-
如果查看的是防火墙事件相关的日志,您应进入 “应用程序和服务日志” → “Microsoft” → “Windows” → “Windows Firewall with Advanced Security” →firewall。
步骤 2: 启用防火墙日志记录(如果未启用)
如果未启用日志记录,您可以按照以下步骤启用:
-
打开 “控制面板”。
-
点击 “Windows 防火墙”。
-
在左侧点击 “高级设置”,进入 “高级安全 Windows 防火墙”。
-
在 “操作” 面板中,选择 “属性”。
-
在 “日志记录” 标签中,启用防火墙日志记录,并选择日志的保存路径和大小限制。
常见的防火墙应用场景
-
个人计算机:
-
在个人电脑上,Windows防火墙可以提供基本的网络安全保护,阻止恶意软件和黑客访问本机。
-
-
企业网络:
-
在企业环境中,Windows防火墙可以结合其他安全工具,如入侵检测系统(IDS)和入侵防御系统(IPS),构建多层次的安全防护。
-
常见防火墙策略
-
最小化权限原则:
-
只允许必要的端口和协议通过防火墙,所有其他未明确允许的流量都应被拒绝。
-
-
基于应用的策略:
-
根据应用程序的需要设置防火墙规则,而不是仅基于端口或协议。这有助于阻止未经授权的程序与外部网络通信。
-
-
分区域策略:
-
对不同的网络区域(例如内部网络、外部网络和DMZ)使用不同的防火墙规则,确保网络分层安全。
-
IDS与IPS的区别
特性 | 入侵检测系统(IDS) | 入侵防御系统(IPS) |
---|---|---|
主要功能 | 检测并报告潜在的攻击,报警 | 检测并主动阻止攻击,保护系统免受威胁 |
工作方式 | 只监控和报告异常行为,无干预 | 实时监控并干预,主动防御攻击 |
处理方式 | 仅生成警报和日志 | 主动拦截和阻止攻击 |
部署位置 | 通常部署在网络中,进行流量监控和检测 | 部署在网络边界或关键位置,实时分析并拦截流量 |
误报与漏报 | 相对较少的误报,但可能会漏报未知的攻击 | 可能出现误报或误阻正常流量的风险 |
响应速度 | 无实时响应,仅报警,响应较慢 | 实时响应,快速采取措施阻止攻击 |
典型用途 | 用于检测并帮助分析攻击源,后期响应 | 用于实时防护,防止攻击成功 |
IDS和IPS的集成
-
IDS和IPS可以单独使用,也可以结合起来以提供全面的安全防护。
-
在许多现代网络中,IDS和IPS通常作为集成解决方案共同工作。IDS用于监测和记录攻击活动,IPS用于实时防御和阻止攻击。
-
IDS+IPS = 统一威胁管理(UTM):有些解决方案将IDS和IPS结合,形成一个统一的安全设备,既具备检测能力,也具备防御能力。
IDS适合用于需要高可见性和警报的场景,帮助安全团队检测并分析攻击。
IPS则更适合需要实时防护的环境,能够在攻击发生时立即阻止它们。
命令通过 netsh
,可以访问和修改多种网络组件,包括防火墙、网络接口、路由、Wi-Fi 设置等
详情netsh advfirewall /?
平台选择:大多数 IDS/IPS 工具可以在 Linux 上运行,但也支持 Windows,例如 Snort 和 Suricata。
1. Windows 系统上的 IDS 和 IPS
(1) Snort
-
简介:Snort 是最著名的开源 IDS/IPS 工具之一。它能够进行实时流量分析、数据包记录和检测各种攻击类型,如缓冲区溢出、网络扫描等。Snort 可以作为 IDS 使用,也可以通过配置成为 IPS。
-
特点:
-
支持流量分析和实时检测。
-
丰富的规则集,支持多种协议和攻击检测。
-
可以结合其他工具,如 Barnyard2,进行日志分析和报警。
-
灵活性高,支持插件扩展。
-
-
适用平台:Windows、Linux、Unix。
-
官方网站:Snort
(2) Suricata
-
简介:Suricata 是另一个开源的 IDS/IPS 工具,功能强大,能够支持多线程和高性能处理。它与 Snort 类似,但提供更高的性能和更好的多核心支持。
-
特点:
-
支持多线程,可以在多核系统上提供更高的吞吐量。
-
可与 OpenDXL、ELK 等系统集成,实现更强的数据分析能力。
-
支持多种协议的检测,包含 HTTP、DNS、TLS、SMTP 等。
-
-
适用平台:Windows、Linux。
-
官方网站:Suricata
(3) OSSEC
-
简介:OSSEC 是一个开源的主机入侵检测系统(HIDS),能够监控操作系统和应用程序的日志,检测恶意活动。OSSEC 支持日志分析、文件完整性检查、rootkit 检测、实时报警等功能。
-
特点:
-
主机级 IDS,适用于检测本地活动。
-
支持跨平台,能够监控 Windows、Linux、Mac 等操作系统。
-
实时报警和规则驱动的检测。
-
-
适用平台:Windows、Linux、Mac OS。
-
官方网站:OSSEC
2. Linux 系统上的 IDS 和 IPS
(1) Suricata
-
简介:Suricata 同样适用于 Linux 系统,它能够处理高速流量并实时检测攻击。Suricata 适合用作 IDS 或 IPS,并且支持集成其他安全工具,提升检测能力。
-
特点:
-
具有高性能的流量处理能力。
-
支持集成多个日志管理系统,如 ELK。
-
支持多种协议检测,适用于大规模网络环境。
-
-
适用平台:Linux、Windows。
-
官方网站:Suricata
(2) Snort
-
简介:Snort 是 Linux 上最常用的 IDS/IPS 工具之一。它通过对网络流量的实时监控,检测网络中的可疑活动,并通过报警通知管理员。Snort 同时支持 IPS 功能,可以实时阻止恶意流量。
-
特点:
-
功能强大,支持多种攻击检测。
-
可以灵活配置,支持自定义规则。
-
在 Linux 上表现出色,适用于企业级网络环境。
-
-
适用平台:Linux、Windows、Unix。
-
官方网站:Snort
(3) Bro (现称 Zeek)
-
简介:Zeek(以前叫 Bro)是一个强大的网络分析工具,能够充当 IDS。它不仅可以用于流量分析,还可以进行高级的数据挖掘,适用于检测各种类型的网络攻击。
-
特点:
-
高度可扩展的 IDS。
-
提供强大的日志记录和分析功能。
-
能够与其他工具(如 ELK、Splunk)进行集成,增强事件响应能力。
-
适用于大规模环境,支持复杂的流量分析。
-
-
适用平台:Linux、Windows(通过虚拟机)。
-
官方网站:Zeek
(4) Fail2Ban
-
简介:Fail2Ban 是一款专门用于 Linux 系统的入侵防御工具,它能够通过监控日志文件并阻止重复的恶意活动(如 SSH 暴力破解攻击)。
-
特点:
-
主要用于防止暴力破解攻击。
-
自动化封锁恶意 IP。
-
可以与其他防火墙工具结合使用(如
iptables
)。
-
-
适用平台:Linux。
-
官方网站:Fail2Ban
(5) AIDE (Advanced Intrusion Detection Environment)
-
简介:AIDE 是一个基于主机的入侵检测工具,它通过监控文件系统的变化来检测潜在的入侵行为,特别是对文件完整性进行检查。
-
特点:
-
检查文件的完整性,监测文件系统的变化。
-
支持定期扫描和定制规则。
-
适合用作文件级的监控工具。
-
-
适用平台:Linux、Unix。
-
官方网站:AIDE
检查 IDS/IPS 系统
Windows 上用tasklistwmic 或process get name ,CommandLine(执行的命令和参数)检查是否有 snort.exe
、suricata.exe
或其他 IDS/IPS 相关进程。
linux上用ps aux 检查是否有 snort.exe
、suricata.exe
或其他 IDS/IPS 相关进程。
a
:显示所有用户的进程,而不仅仅是当前用户的进程。
u
:以用户为主的格式显示进程信息,显示每个进程的所有者。
x
:显示没有控制终端的进程(例如,后台进程)。
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 169244 5392 ? S 10:00 0:03 /sbin/init
输出列解释USER:进程的拥有者(用户名)。PID:进程 ID(每个进程的唯一标识符)。
STAT:进程状态,常见的状态包括:
-
S
:休眠(sleeping) -
R
:运行(running) -
Z
:僵尸(zombie) -
T
:停止(stopped) -
+
:在后台运行
START:进程启动的时间。
TIME:进程使用的 CPU 时间。
COMMAND:执行的命令和参数。
蜜罐印象记忆
蜜罐(Honeypot)是一种故意配置的虚假系统、设备或服务,旨在诱使攻击者进行攻击,从而实现对攻击者行为的监控、分析和反制。蜜罐通常不是实际用于生产的系统,而是作为诱饵,吸引黑客的注意力。
网络隔离:
蜜罐应该与生产网络进行严格隔离,避免攻击者通过蜜罐获得对真实系统的访问权限。可以使用以下技术:
-
虚拟化:使用虚拟机(VM)来隔离蜜罐,使其与主机系统独立,便于管理。
-
物理隔离:通过物理网络隔离将蜜罐与实际的生产环境隔开,确保安全性。
-
防火墙:设置防火墙规则,确保蜜罐与外界的连接仅限于特定的网络流量。
开源蜜罐工具
-
Honeyd
-
简介:Honeyd 是一个轻量级的低交互蜜罐,可以模拟大量的虚拟主机,并捕获攻击者的活动。它能够模拟不同的操作系统和服务,诱使攻击者进行攻击。
-
特点:易于配置,支持多种协议的模拟(如TCP/IP、HTTP、SMTP等)。
-
适用场景:适合中小型企业或个人研究。
Honeyd GitHub
-
-
Kippo
-
简介:Kippo 是一个专为 SSH 服务设计的高交互蜜罐,它模拟一个易受攻击的 SSH 服务器,诱使攻击者尝试暴力破解 SSH 密码,并记录他们的操作。
-
特点:专注于 SSH 登录攻击,记录攻击者的命令、行为和工具。
-
适用场景:主要用于SSH暴力破解攻击的研究。
Kippo GitHub
-
-
Dionaea
-
简介:Dionaea 是一个高交互蜜罐,旨在捕捉恶意软件,特别是与病毒、蠕虫、木马等有关的攻击。它可以模拟多种服务并诱使恶意软件攻击。
-
特点:能够模拟多种服务,如 HTTP、FTP、SMB 等,能捕获传入的恶意文件和漏洞利用工具。
-
适用场景:用于恶意软件和漏洞利用的捕获与研究。
Dionaea GitHub
-
-
Cowrie
-
简介:Cowrie 是一个 SSH 和 Telnet 高交互蜜罐,旨在模拟一个真实的服务器,并记录攻击者的行为,尤其是在 SSH 和 Telnet 登录方面的攻击。
-
特点:支持虚拟终端仿真,可以捕获攻击者的命令、文件上传、恶意活动等。
-
适用场景:广泛用于 SSH 和 Telnet 端口暴力攻击监测。
Cowrie GitHub
-
-
Glastopf
-
简介:Glastopf 是一个专注于 Web 服务的蜜罐,可以模拟 Web 应用程序漏洞,诱使攻击者进行 SQL 注入、文件上传等攻击。
-
特点:模拟常见的 Web 漏洞并捕捉攻击者的行为,支持多种 Web 漏洞仿真。
-
适用场景:专注于 Web 应用的漏洞利用监测。
Glastopf GitHub
-
-
MHN (Modern Honey Network)
-
简介:MHN 是一个集中管理多个蜜罐的系统,支持多种类型的蜜罐,能够将多个蜜罐的数据汇总在一个管理界面进行查看。
-
特点:支持分布式蜜罐部署,方便集中管理、分析。
-
适用场景:适用于大规模蜜罐部署和管理。
MHN GitHub
-