(翻译)网络安全书籍推荐列表
注:对于所有的书籍链接,我都会寻找中文版重新链接,如无中文版,则按原文链接英文版。并且所有书籍名称保留英文名称
这是一个我建立的一个有关计算机安全的书籍列表,它们都是很有用的“计算机安全”这个主题的相关数据。包括:数字取证、 事件响应, 恶意软件分析和逆向工程。书籍的范围从入门教材到高级的研究课题都有。有一些书可能看起来过时了,但是其中包含的信息对现在来学习的人们依然非常有用, 并且要想在信息安全领域成为一个专家,其中有许多知识点是必不可少的。
请注意,为了避免造成给书籍排名的印象,每个类别的都是按照字母表的顺序排列,类别中的书也是按照字母表的顺序排列的(译者注:顺序是按书籍英文名称排序)。
如果你发现了这个列表中的错误或者你认为某本书也应该加到这个列表里的话,请联系我。我仅列出了那些我个人阅读过,并且自愿为之担保的书籍。
应用安全 - 本地应用
标题 | 注解 | 技术等级 |
---|---|---|
The Art of Software Security Assessment 软件安全评估的艺术 | 源码审计的圣经级读物 | 中高级。需要能阅读C/C++代码 |
Secure Coding in C and C++ c和c++安全编码 | 写牢固的底层代码最好的书籍 | 对于所有能阅读C/C++的人都很容易 |
应用安全 - web应用
标题 | 注释 | 技术等级 |
---|---|---|
The Browser Hacker's Handbook 浏览器黑客手册 | 有许多详细的web安全主题 | 从基础进阶到高级主题 |
The Database Hacker's Handbook 数据库黑客大曝光 | 有关于数据库攻击的最详细的书 | 从基础进阶到高级主题 |
The Tangled Web Web之困:现代Web应用安全指南 | 通过web的弱点测试来讲解web协议的书籍,强烈推荐 | 所有人都可以阅读。这本书开头的章节为后续的高级章节做了铺垫 |
The Web Application Hacker's Handbook 黑客攻防技术宝典:Web实战篇 | 覆盖了大部分的web安全问题 | 中级 |
密码学
标题 | 注释 | 技术等级 |
---|---|---|
Applied Cryptography 应用密码学:协议、算法与C源程序 | 学习密码学的标准教材 | 包含内容从背景介绍到深度运算和安全法则 |
Introduction to Modern Cryptography 现代密码学:原理与协议 | 一本很棒的密码学书,在很多高级的计算机科学程序的课里使用 | 高级 - 要完全理解需要很深的数学知识 |
数据库取证
标题 | 注释 | 技术等级 |
---|---|---|
Microsoft SQL Server Internals 深入解析Microsoft SQL Server | 类似于windows构件的系统级MSSQL构件的书籍 | 中级 - 阅读之前需要有数据库基础知识 |
SQL Server Forensic Analysis SQL Server Forensic Analysis(中文地址) | 一本很深入的MSSQL系统取证分析的书籍 | 中级 - 阅读之前需要有数据库基础知识 |
数字取证和应急响应
标题 | 注释 | 技术等级 |
---|---|---|
File System Forensic Analysis File System Forensic Analysis(中文地址) | 文件系统取证的权威书籍 | 中高级 |
Forensic Discovery Forensic Discovery(中文地址) | 通过两个简单的案例讲解了计算机取证的基本内容 | 中级 |
Real Digital Forensics Real Digital Forensics(中文地址) | 取证过程的简明描述 | 初级-高级 |
Windows Forensic Analysis, Second Edition WINDOWS取证分析 | 这本书已经出到第2版了,是最容易得到的windows磁盘取证书籍 | 从基础概念到深入分析 |
Windows Forensic Analysis, Fourth Edition | 这本书已经出到第4版了,是最容易得到的windows磁盘取证书籍 | 从基础概念到深入分析 |
漏洞利用 / 渗透测试
标题 | 注释 | 技术等级 |
---|---|---|
A Guide to Kernel Exploitation 内核开发指南:攻击核心 | 操作系统高级漏洞利用 | 高级 |
Android Hacker's Handbook Android Hacker's Handbook | Android系统漏洞利用 | 中级 |
Hacking: The Art of Exploitation, 1st Edition 黑客之道:漏洞发掘的艺术 | 底层漏洞利用基础 | 中级 |
iOS Hacker's Handbook 黑客攻防技术宝典:iOS实战篇 | IOS设备漏洞利用 | 中高级 |
The Mac Hacker's Handbook 黑客攻防技术宝典:MAC实战篇 | MAC设备漏洞利用 | 中高级 |
Rtfm: Red Team Field Manual | 一本简明的,优秀的,每个渗透测试人员都应该配备的书籍 | 所有拥有渗透测试背景的人都可以阅读 |
The Shellcoder's Handbook The Shellcoder's Handbook(中文地址) | 制作shellcode并利用 | 中高级 |
Linux使用
标题 | 注释 | 技术等级 |
---|---|---|
Linux in a Nutshell Linux技术手册 | 学习怎样使用linux最好的书籍 | 初级-中级 |
Running Linux Running Linux(中文地址) | 另一半学习linux的好书 | 初级-中级 |
恶意软件的发展和分析
注意:许多这方面的书记都包含于逆向工程相关的信息
标题 | 注释 | 技术等级 |
---|---|---|
The Art of Computer Virus Research and Defense 计算机病毒防范艺术 | 在恶意软件分析的许多方面都有深层次的介绍 | 中级 |
Malware Analyst's Cookbook 恶意软件分析诀窍与工具箱 | 包含了恶意软件分析的许多主题的“菜谱” | 中高级 |
Malware Forensics 恶意代码取证 | 一本很赞的恶意软件分析的入门书 | 初级 |
Practical Malware Analysis 安全技术大系:恶意代码分析实战 | 一本恶意软件分析方面很易懂的书 | 中级 |
Rootkits: Subverting the Windows Kernel Rootkits: Subverting the Windows Kernel(中文地址) | 即便在今天依然非常有用的rootkit理论书籍 | 中高级 |
The Rootkit Arsenal The Rootkit Arsenal(中文地址) | 关于rootkit发展和分析的多达800页的史诗级书籍 | 中高级 |
内存分析
标题 | 注释 | 技术等级 |
---|---|---|
The Art of Memory Forensics The Art of Memory Forensics(中文地址) | 透过操作系统来探索内存取证,多达900页。注:我是这本书的作者之一 | 包含范围从简单的介绍到高级分析 |
What Makes It Page? What Makes It Page?(中文地址) | 一本有深度的Windows内存管理书籍 | 中级 |
网络取证
标题 | 注释 | 技术等级 |
---|---|---|
The Practice of Network Security Monitoring The Practice of Network Security Monitoring(中文地址) | 告诉你怎么样把网络取证融入到真实的世界中,而不仅仅的数据包分析 | 中级 |
Practical Packet Analysis Wireshark数据包分析实战 | 学习网络通信分析和鉴别的一本很棒的书 | 初级-中级 |
Wireshark (R) 101 Wireshark (R) 101(中文地址) | Wireshark的深入探索 | 初级-中级 |
网络
标题 | 注释 | 技术等级 |
---|---|---|
CCNA Cisco Certified Network Associate Study Guide CCNA学习指南(640-802) | 一本针对于真实世界的网络链路的初级读物 | 中级 |
CompTIA Network+ All-In-One Exam Guide CompTIA Network+ All-In-One Exam Guide | 学习网络链路必不可少的书籍 | 初级 |
TCP/IP Illustrated TCP/IP详解 | 网络链路层协议的圣经,必须读。 | 中级 |
操作系统构件 - 针对所有操作系统
标题 | 注释 | 技术等级 |
---|---|---|
Intel Architecture Manuals (文档,🈚️中文版) | 非常赞的硬件架构文档,可以免费下载 | 中高级 |
Modern Operating Systems 现代操作系统 | Tanenbaum出品的最优秀的“龙书” | 中高级 |
操作系统构件 - 针对Linux
标题 | 注释 | 技术等级 |
---|---|---|
Linux Device Drivers, 3rd Edition Linux设备驱动程序(第三版) | 学习linux驱动架构最好的资源 | 中高级 |
Linux Kernel Development, 3rd Edition 嵌入式Linux基础教程 | 你一定会爱上linux内核编程 | 中高级 |
The Linux Programming Interface Linux/UNIX系统编程手册 | linux环境下编程的最卓越的书 | 中高级 |
Understanding the Linux Kernel, Third Edition Understanding the Linux Kernel, Third Edition | 就好像是《windows内核》的linux版本 | 中高级 |
操作系统内核 - 针对Mac
标题 | 注释 | 技术等级 |
---|---|---|
Mac OS X Internals: A Systems Approach Mac OS X Internals: A Systems Approach(中午地址) | 就好像是《windows内核》的mac版本 | 中高级 |
Mac OS X and iOS Internals 深入解析Mac OS X & iOS操作系统 | 在阅读了上面那么本书后再阅读这本 | 中高级 |
操作系统内核 - 针对Windows
标题 | 注释 | 技术等级 |
---|---|---|
Windows Internals 深入解析Windows操作系统 | 如果你想理解windows操作系统,请阅读这本书 | 中高级 |
Windows System Programming (4th Edition) Windows系统编程 | 通过Windows的API一步一步的引导你深入 | 中级 |
编程 - 概念和算法
标题 | 注释 | 技术等级 |
---|---|---|
Compilers: Principles, Techniques, and Tools 编译原理 | 编译原理的书中最著名的“龙书” | 高级 - 除非你已经扎实的理解了设计模式和运行时的环境,否则不要阅读此书 |
Design Patterns 设计模式 可复用面向对象软件的基础 | 需要抱着很严谨的态度阅读 | 中级 |
Linkers and Loaders Linkers and Loaders | 需要理解程序耦合和运行时加载的,请阅读 | 中级 |
编程 - 语言特性
注意:这里只有很少的几本书的原因是,在网络上对于编程语言有着令人惊讶的资源
标题 | 注释 | 技术等级 |
---|---|---|
Advanced Programming in the UNIX(R) Environment UNIX环境高级编程 | 深入探索linux,mac和BSD编程 | 初级-中级 |
The C Programming Language, 2nd Edition C程序设计语言 | (Brian W.Kernighan和Dennis M.Ritchie的力作)如果你想精通C,请阅读 | 中高级 |
Violent Python Violent Python | 学习python编程并且对于信息安全立刻就能使用上的书籍 | 从基础到高等议题都有 |
逆向工程
标题 | 注释 | 技术等级 |
---|---|---|
Assembly Language Step-by-step 一步一步学习linux汇编语言程序设计(中文版暂未出版) | 学习汇编语言最好的资源,之后的书籍都聚焦在“高级”汇编来作为实际操作指南 | 中高级 |
Hacker Disassembling Uncovered 黑客反汇编揭密 | 在逆向工程方面的一本很好的书,包含许多高层次的主题 | 中高级 |
Hacking the Xbox Hacking the Xbox | 写的很有趣的一本学习逆向的书 | 中级 |
The IDA Pro Book IDA Pro权威指南 | 学习IDA最好的资源 | 中级 |
Reversing: Secrets of Reverse Engineering Reversing:逆向工程揭密 | 我最喜欢的书之一。有一个章节把windows的API逆向成了C语言,并且完美的编译匹配了windows的DLL | 中高级 |
Practical Reverse Engineering Practical Reverse Engineering | Intel和ARM的逆向 | 中级 |
社会工程学 - 数字化方式
标题 | 注释 | 技术等级 |
---|---|---|
Silence on the Wire Silence on the Wire | lcamtuf的对大部分人从没是考过的脆弱点和攻击方式的唐锁。强烈推荐 | 初级-高级 |
社会工程学 - 传统方式
注意:我原来从Grugg的清单里发现了这方面的书
标题 | 注释 | 技术等级 |
---|---|---|
The Art of Intelligence 国家威胁:中情局谍战亲历 | Henry Crumpton对社会工程学和现实世界的分析 | 初级-中级 |
Chinese Intelligence Operations Chinese Intelligence Operations(中文地址) | 一本很有深度的中国情报学教材 | 高级 |
See No Evil See No Evil(中文地址) | CIA对中东的社会工程学的分析课 | 中级 |
Spy Handler: Memoir of a KGB Officer Spy Handler: Memoir of a KGB Officer(中文地址) | 克伯格的高级官员写的关于罗伯特·汉森和阿尔德里奇·阿麦斯的真实故事。学习社会工程学战术和理论的最佳教材 | 初级-中级 |
Terrorism and Counterintelligence: How Terrorist Groups Elude Detection | 现代恐怖组织和反情报政府部门的深度探索 | 中级 |
Thwarting Enemies at Home and Abroad: How to Be a Counterintelligence Officer Thwarting Enemies at Home and Abroad: How to Be a Counterintelligence Officer(中文地址) | 优先阅读 - 讲述怎么成为一个intel高层的关于条款,经营技巧,和战略战术的书籍 | 初级 - 应该成为你的第一本书 |
若发现文中翻译的不准确和不雅之处,请告知以便修改。
相关文章:
(翻译)网络安全书籍推荐列表
注:对于所有的书籍链接,我都会寻找中文版重新链接,如无中文版,则按原文链接英文版。并且所有书籍名称保留英文名称 这是一个我建立的一个有关计算机安全的书籍列表,它们都是很有用的“计算机安全”这个主题的相关数据。…...
TcpServer 服务器优化之后,加了多线程,对心跳包进行优化
TcpServer 服务器优化之后,加了多线程,对心跳包进行优化 TcpServer.h #ifndef TCPSERVER_H #define TCPSERVER_H#include <iostream> #include <winsock2.h> #include <ws2tcpip.h> #include <vector> #include <map> #…...
黑马程序员Java项目实战《苍穹外卖》Day12
苍穹外卖-day12 课程内容 工作台Apache POI导出运营数据Excel报表 功能实现:工作台、数据导出 工作台效果图: 数据导出效果图: 在数据统计页面点击数据导出:生成Excel报表 1. 工作台 1.1 需求分析和设计 1.1.1 产品原…...
经纬度解析到省市区【开源】
现在业务中有需要解析经纬度到省市区。 按理说可以直接使用高德,百度之类的。 但是老板太抠。于是去找开源项目。找了一圈,数据都太老了,而且有时候编码还不匹配。 所以诞生了这个项目,提供完整的一套省市区编码和定位反解析。…...
bug:uniapp运行到微信开发者工具 白屏 页面空白
1、没有报错信息 2、预览和真机调试都能正常显示,说明代码没错 3、微信开发者工具版本已经是win7能装的最高版本了,1.05版 链接 不打算回滚旧版本 4、解决:最后改调试基础库为2.25.4解决了,使用更高版本的都会报错,所…...
旧版本 MySQL 处理字符表情写入问题
报错信息 新增数据 java.sql.SQLException: Incorrect string value: \xF0\x9F\x91\x8D\xE5\x8F... for column解决方案 老项目,而且是旧版本,且表情不影响业务,直接简单粗暴的过滤掉即可,有还原的需求也可以 toUnicode 转为字…...
vue使用v-if和:class完成条件渲染
1.使用v-if 和v-else 完成主body和暂无数据两个<tbody>标签的条件渲染(注意与v-show效果的区别) 2.v-for完成列表渲染 3.:class完成分数标红的条件控制 删哪个就传哪个的id,基于这个id去过滤掉相同id的项,把剩下的项返回 <td><a click.p…...
Docker:WARNING: Published ports are discarded when using host network mode 解决方法
在Docker中,使用主机网络模式(host network mode)时,容器将共享主机的网络命名空间,这意味着容器将直接使用主机的网络接口和端口。因此,当你尝试通过Docker的发布端口功能(publish a port&…...
音视频入门基础:MPEG2-TS专题(12)—— FFmpeg源码中,把各个transport packet组合成一个Section的实现
一、引言 从《音视频入门基础:MPEG2-TS专题(9)——FFmpeg源码中,解码TS Header的实现》可以知道:FFmpeg源码中使用handle_packet函数来处理一个transport packet(TS包),该函数的前半…...
【数据结构】二叉树的性质和存储结构
性质 在二叉树的第i层上至多有2^{i-1}个结点,至少有1个结点 深度为k的二叉树至多有2^{k-1}个结点(k≥1),至少有k个结点 对任何一棵二叉树T,如果其叶子数为n0,度为2的结点数为n2,则n0n21 具有n个结点的完…...
gbase8s之查看锁表的sql
#只能看当前锁表的sql,看不到历史的。 #使用方法:sh 脚本文件名 库名 表名 database$1 table$2 hexoncheck -pt $database:$table|grep -i partnum|awk {printf ("%x|",$3)} #echo $hex #echo ${hex%?} #ownonstat -k |grep -iE ${he…...
URI 未注册(设置 语言和框架 架构和 DTD)
一、问题描述:在springboot项目中的resources中新建mybatis-config.xml文件时,从mybatis文档中复制的代码报错:URI 未注册(设置 | 语言和框架 | 架构和 DTD) 二、解决:在Springboot项目的设置->架构和DTD中添加 红色的网址&…...
Ubuntu上使用system()函数运行不需要输入密码
使用system()运行一些终端命令的时候,需要sudo权限,也就是必须输入密码,那么在程序自启动的时候就无法成功启动。如果设置Ubuntu下所有操作都不需要密码,安全性太低,所以我们可以将需要用到的终端指令给予无需输入密码…...
【MySQL】数据库必备知识:全面整合表的约束与深度解析
前言:本节内容讲述表的约束的相关内容。 表的约束博主将会通过两篇文章进行讲解, 这是第一篇上半部分。 讲到了约束概念。 以及几种常见约束。下面友友们开始学习吧! ps:友友们使用了mysql就可以放心观看喽! 目录 表的约束概念 …...
Windows下Docker快速安装使用教程
在当今软件开发和部署的世界中,Docker 已经成为一个不可或缺的工具。这里不对Docker进行详细阐述,需要系统学习Docker的伙伴可寻求更专业详细的教程或书籍学习。本文主要讲解Windows系统下Docker安装及使用。 一、环境准备 1.1检查电脑是否开启虚拟化 …...
PTA DS 6-2 另类堆栈 (C补全函数)
6-2 另类堆栈 分数 15 全屏浏览 切换布局 作者 DS课程组 单位 浙江大学 在栈的顺序存储实现中,另有一种方法是将Top定义为栈顶的上一个位置。请编写程序实现这种定义下堆栈的入栈、出栈操作。如何判断堆栈为空或者满? 函数接口定义: …...
rk3568之mpp开发笔记mpp移植到开发板
前言: 大家好,今天给大家介绍的内容是rk平台的mpp编解码这块的内容,在rk目前看到有三套框架涉及到编解码内容: 1、rkmedia 2、rockit 3、mpp 这三种不同形式的编解码方式,后面再做详细的框架对比,今天我…...
Vue解决跨域问题
要解决 Vue 项目的跨域问题并通过 vue.config.js 配置代理,可以按照以下步骤修改 vue.config.js 文件。你提供的代码大部分已经正确,只需要做一些格式上的调整。以下是正确的 vue.config.js 配置: // vue.config.jsmodule.exports {devServ…...
Kubernetes Nginx-Ingress | 禁用HSTS/禁止重定向到https
目录 前言禁用HSTS禁止重定向到https关闭 HSTS 和设置 ssl-redirect 为 false 的区别 前言 客户请求经过ingress到服务后,默认加上了strict-transport-security,导致客户服务跨域请求失败,具体Response Headers信息如下; 分析 n…...
TortoiseGit的下载、安装和配置
一、TortoiseGit的简介 tortoiseGit是一个开放的git版本控制系统的源客户端,支持Winxp/vista/win7.该软件功能和git一样 不同的是:git是命令行操作模式,tortoiseGit界面化操作模式,不用记git相关命令就可以直接操作,读…...
如何绕过IP禁令
网站、游戏和应用程序可以屏蔽特定IP地址,从而阻止使用该IP地址的任何人访问其服务。这称为IP禁令。管理员可以出于多种原因(例如发出过多请求或可疑活动)屏蔽IP地址。但是,这些禁令会使收集数据或访问在线内容变得更加困难。 一…...
Vue3的provide和inject实现多级传递的原理
先来看个demo,这个是父组件,代码如下: <template><ChildDemo /> </template><script setup> import ChildDemo from "./child.vue"; import { ref, provide } from "vue"; // 提供响应式的值 c…...
使用html2canvas实现前端截图
一、主要功能 网页截图:html2canvas通过读取DOM结构和元素的CSS样式,在客户端生成图像,不依赖于服务端的渲染。它可以将指定的DOM元素渲染为画布(canvas),并生成图像。多种输出格式:生成的图像…...
使用 Python 爬取某网站简历模板(bs4/lxml+协程)
使用 Python 爬取站长素材简历模板 简介 在本教程中,我们将学习如何使用 Python 来爬取站长素材网站上的简历模板。我们将使用requests和BeautifulSoup库来发送 HTTP 请求和解析 HTML 页面。本教程将分为两个部分:第一部分是使用BeautifulSoup的方法&am…...
深度学习模型中音频流式处理
音频流式处理的介绍 在现代深度学习应用中,音频处理是一个重要的领域,尤其是在语音识别、音乐生成和音频分类等任务中。流式处理(Streaming Processing)是一种有效的处理方式,它允许模型逐帧处理音频数据,…...
C语言(字符数组和字符指针)
字符串实现 在C语言中,表示一个字符串有以下两种形式: 用字符数组存放一个字符串。用字符指针指向一个字符串。 案例 #include <stdio.h>/*** 方式1:使用字符数组实现字符串*/ void str_test1(){// 定义一个伪字符串char str[] &q…...
SkyWalking Helm Chart 4.7.0 安装、配置
https://skywalking.apache.org/events/release-apache-skywalking-kubernetes-helm-chart-4.7.0/https://github.com/apache/skywalking-helm/tree/v4.7.0https://skywalking.apache.org/zh/2020-04-19-skywalking-quick-start/简介 skywalking 是分布式系统的 APM(Applicat…...
微搭低代码AI组件单词消消乐从0到1实践
目录 1 为什么要开发单词消消乐2 需要具备什么功能3 采用什么技术方案实现4 逻辑设计4.1 数据结构设计4.2 游戏的核心逻辑4.3 数据设计 5 代码详解5.1 导入依赖5.2 定义函数组件5.3 数据初始化5.4 状态定义5.5 打乱解释的逻辑5.6 定义选择单词的函数5.7 定义选择解释的函数5.8 …...
23种设计模式之中介者模式
目录 1. 简介2. 代码2.1 Mediator (中介者接口)2.2 ChatRoom (具体中介者类)2.3 User (同事接口)2.4 ChatUser (具体同事类)2.5 Test (测试)2.6 运行结果 3. …...
【Golang】Go语言编程思想(六):Channel,第六节,并发编程模式
并发模式 下例重新对 channel 的用法进行回顾: package mainimport ("fmt""math/rand""time" )func msgGen(name string) chan string {c : make(chan string)go func(name string) { // 在这个 goroutine 当中向外发送数据i : 0fo…...
上海网站推广很好/成人职业技能培训学校
做为系统管理员可能会面对的任务:1.自动批量安装操作系统2.完成系统的本地化 (配置现成的发行版或者软件包,以求符合自己的需要,本地安全规定、文 件存放和网络拓扑的需要,这个过程称为“本地化”)3.给系统打补丁且保持系统的更新 4.管理附加的软件包 程…...
网站一定也做数据库吗/外链网站是什么
首先一句话解释一下new:new 可以实现一个对象继承构造函数的属性以及方法 举个例子: function Parent(name,age){this.name name;this.age age; }Parent.prototype.sayName function(){console.log(my name is ${this.name}) }let child new Parent(…...
推广网站怎样做/app开发多少钱
图像梯度与轮廓Sobel算子Scharr算子laplacian算子Canny边缘检测图像金字塔图像轮廓傅里叶变换滤波Sobel算子 如果出现负数则默认为0 img cv2.imread(data/pie.png,cv2.IMREAD_GRAYSCALE) cv2.imshow("img",img) cv2.waitKey() cv2.destroyAllWindows()dst cv2.Sob…...
网站规划和建设的步骤/建立网站平台需要多少钱
一、什么是Selenium selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。Selenium的核心Seleni…...
沙井做网站公司/中国站免费推广入口
git命令使用:提交前可指定要提交哪些文件,然后使用git commit来提交 样例: git status 输出: Changes to be committed: modified: app/Library/Common.php Changes not staged for commit: modified: .env modified: index…...
陈村网站建设/seo新方法
基于云服务创建离线数据统计分析服务 离线数据统计分析 使用数据工厂、数据计算服务产品,可对多源数据(DB,FILE)整合分析,制定周期性的调度任务,提供任务监控及预警、数据统计分析等功能,可对接BI报表产品…...