目录

Active Directory

Active Directory 的查询基础语法

什么是BaseDN

什么是Naming Context

什么是LDAP(轻量级目录访问协议)

过滤规则

LDAP 查找中的按位搜索

Active Directory 访问查询工具

ADSI 编辑器

LDP

Active Directory Explorer

Adfind

LDAP 查找中的 objectClass 和 objectCategory

objectClass

objectCategory


Active Directory

Active Directory简单来说,就是Microsfot提供的一项功能服务,它充当集中存储库并存储与Active Directory用户、计算机、服务器和组织内的其他资源等对象相关的所有数据,它使系统管理员的管理变得容易。但它的主要功能是提供一种在域环境中对用户和机器进行身份验证的方法。使用Active Directory,可以远程管理用户、工作站及其权限等资源。因此,它是一个可从网络上的任何地方访问的单一管理界面。它主要是Microsoft Windows的一项功能,但其他操作系统也可以加入其中,例如你可以在Active Directory环境中加入Linux主机。

Active Directory 的查询基础语法

什么是BaseDN

BaseDN 即基础可分辨名称,其指定了这棵树的根。比如指定 BaseDN 为DC=whoamianony,DC=org就是以DC=whoamianony,DC=org为根往下搜索,类似于在文件系统中指定了一个根目录:

若指定 BaseDN 为CN=Computers,DC=whoamianony,DC=org那么就是以CN=Computers,DC=whoamianony,DC=org为根往下搜索

什么是Naming Context

微软将 Active Directory 活动目录划分为若干个分区,这个分区我们称为 Naming Context,简称 NC,每个 Naming Context 都有其自己的安全边界。

由于 Active Directory 活动目录具有分布式的特性,一个林中可能有若干个域,每个域内可能有若干台域控,每台域控又都有一个独立的 Active Directory。这个时候如果不将数据隔离到多个分区中的话,则每个域控制器都必须复制林中的所有数据。若隔离为若干个分区之后,就可以有选择性的复制某几个分区。

每一个域都有一个域 Naming Context,不同的域环境有不同的域 Naming Context,其中包含特定域的数据。这个域 Naming Context 的跟由域的专有名称 DN 表示,比如 whoamianony.org 域的 DN 为DC=whoamianony,DC=org。

Active Directory 活动目录预定义了以下三个 Naming Context

域目录分区

域目录分区,即 Domain NC (DomainName NC),每一个域各有一个域目录分区,其中存储着与该域有关的对象。每一个域控各自拥有一份域目录分区,它只会被复制到该域内的所有域控中,并不会复制到其他域的域控中。前 Naming Context 图中的DC=whoamianony,DC=org就是域目录分区。

我们之前说过域内所有计算机、域用户的信息都存储在 Active Directory 活动目录下,具体来说就是存储在 Active Directory 活动目录的这个域的 Naming Context 里面。下面我们使用 AD Explorer 工具查看域目录分区中的内容有哪些:

主要包括以下内容:

RDN 说明
CN=Builtin 该容器内置了本地域组的安全组
CN=Computers 机器用户容器,其中包含了所有加入域的主机
OU=Domain Controllers 域控制器的容器,其中包含了域内所有的域控制器
CN=ForeignSecurityPrincipals 包含了域中所有来自森林外部域的组中的成员
CN=Managed Service Accounts 托管服务帐户的容器
CN=System 种预配置对象的容器,其中包括了信任对象,DNS 对象和组策略对象
CN=Users

用户和组对象的默认容器

配置目录分区

配置目录分区,即 Configuration NC (Configuration NC),整个林共享一份相同的配置目录分区,是域林配置信息的主要存储库,其中存储着有关站点、服务以及整个活动目录结构,例如有哪些域、哪些域控等信息。配置目录分区会被复制到林中所有域的所有域控上。前 Naming Context 图中的CN=Configuration,DC=whoamianony,DC=org就是配置目录分区。

下面我们使用 AD Explorer 工具查看域目录分区中的内容有哪些:

主要包括以下内容:

CN=DisplaySpecifiers 定义了 Active Directory 活动目录管理单元的各种显示格式
CN=Extended-Rights 扩展权限对象的容器
CN=ForestUpdates 包含用于表示森林状态和与域功能级别更改的对象
CN=Partitions 包含每个 Naming Context,Application Partitions 以及外部 LDAP 目录引用的对象
CN=Physical Locations 包含位置对象,可以将其与其他对象关联以表示该对象的位置
CN=Services 存储有关服务的配置信息,比如文件复制服务
CN=Sites 包含所有站点拓扑和复制对象
CN=WellKnown Security Principals 包含常用的外部安全性主题的对象,比如 Anonymous,Authenticated Users,Everyone 等等

 架构目录分区

架构目录分区,即 Schema NC (Schema NC),整个林内所有域共享一份相同的架构目录分区,其中存储着整个林中所有对象与属性的定义数据,也存储着如何建立新对象与属性的规则。架构目录分区会被复制到林中所有域的所有域控制器中。前 Naming Context 图中的CN=Schema,CN=Configuration,DC=whoamianony,DC=org就是架构目录分区

什么是LDAP(轻量级目录访问协议)

LDAP协议用于访问目录服务,并为应用程序和其他系统提供与目录服务器通信和交互的机制。它负责跟踪网络上的内容,应用程序可以使用LDAP来检索Active Directory数据库的任何对象和属性,甚至可以对其进行修改。当我们从AD枚举信息时,在后端使用的是LDAP。不仅如此,LDAP还允许我们修改对象,如修改组成员、更改对象的属性。许多枚举工具都使用LDAP从AD中查询信息,例如Powerview 或Sharpound等。任何使用Active Directory的人,如管理员、红队渗透人员或编写与AD交互程序的开发人员,那么对LDAP的透彻了解将会对充分利用Active Directory非常重要。

LDAP 端口

LDAP的端口是389

LDAP加密(LDAPS)端口是636

LDAP语法

了解一下ldap的基本语法对于使用ldap访问对象层次结构是很有帮助的。

DAP使用canonical name (规范名称)或cn。如果您想访问一个名为John的对象,使用cn=john。如果存在多个cn=John对象,那么我们需要通过提供更多细节来区分这个特定的John和其他对象,比如对象所在的位置,以便我们可以唯一地定位该对象。这可以通过DN(Distinguished Name)实现。DN是最重要的LDAP属性,因为它可以唯一的标识一个条目,比如cn=john,ou=users,dc=rootdse,dc=lab。

在LDAP中每个条目由三个部分组成:

1、Distinguished Name (DN) //专有名称

2、Object Classes //对象类

3、Attributes //属性

专有名称 (DN)该条目在整个树中的唯一名称标识。比如,对于用户对象SQLServiceAccount,其DN标识为:CN=SQLServiceAccount,CN=Users,DC=rootdse,DC=lab。

**objectClass(对象类)**是一种特殊类型的属性。LDAP中的所有对象都必须具有objectClass属性。objectClass定义指定每个LDAP对象需要哪些属性,并指定条目的对象类。该属性的值可以被客户端修改,但objectClass属性本身不能被删除。objectClass定义本身存储在Schema(模式)文件中。后面会讨论Schema。

**Attributes(属性)**保存条目的数据。每个属性都有一个类型、选项和一组值。属性值可以自定义。下面是顶级类中可用的一些属性的列表,这些属性在Active Directory中创建的每个对象上定义。

属性 描述
cn 大多数对象类的 RDN 属性,也称为通用名称
whenCreated 创建对象时的时间戳
description 可用作存储对象描述的通用字段的属性
displayName 管理界面中显示的对象的名称
distinguishedName 对象专有名称
whenChanged 本地服务器上次更改对象时的时间戳
name    RDN of the object 对象的 RDN。此属性的值将反映命名属性(例如 cn、ou、dc)
nTSecurityDescriptor 分配给对象的安全描述符
objectCategory 用作具有相似目的的对象(例如Person)的分组机制。
objectClass 派生对象类的类列表
objectGUID 对象的全局唯一标识符
uSNChanged 在上次更改对象后更新本地服务器分配的序列号(USN)
uSNCreated 创建对象时本地服务器分配的 USN
属性 描述
objectClass 用户对象的objectClass属性将标识top、person、organizationalPerso和user类。当创建对象实例时,系统将设置objectClass值,并且不能更改。
objectCategory 对象类的每个实例还具有一个objectCategory属性,该属性是一个单值属性,它包含对象是其实例或其某个超类的类的专有名称。 创建对象时,系统会将其objectCategory属性设置为其对象类的defaultObjectCategory属性指定的值。 不能更改对象的objectCategory 属性。

在Powershell中可以通过内置的.NET接口执行LDAP查询,使用[adsisearcher] 类型加速器,我们可以传递LDAP查询并获得结果,因为这允许我们访问Active Directory对象而无需导入额外的PowerShell模块

过滤规则

LDAP 搜索过滤器语法有以下逻辑运算符:

运算符 说明
& AND 运算符
| OR 运算符
! NOT 运算符
= 用与名称和值做相等比较
* 通配符

下面举几个例子

(uid=testuser):匹配 uid 属性为 testuser 的所有对象

(uid=test*):匹配 uid 属性以 test 开头的所有对象

(!(uid=test*)):匹配 uid 属性不以 test 开头的所有对象

(&(department=1234)(city=Paris)):匹配 department 属性为1234且city属性为Paris的所有对象

(|(department=1234)(department=56*)):匹配 department 属性的值刚好为1234或者以56开头的所有对象。

一个需要注意的点就是运算符是放在前面的,跟我们之前常规思维的放在中间不一样。

LDAP 查找中的按位搜索

在 LDAP 里面,有些属性字段是位字段,这里以 userAccountControl 举例,其记录了用户的 AD 账号的很多属性信息,该字段就是一个的位字段。之所以说 userAccountControl 是一个位字段,是因为它是由一个个位构成:

Property flag Value in hexadecimal Value in decimal
SCRIPT 0x0001 1
ACCOUNTDISABLE 0x0002 2
HOMEDIR_REQUIRED 0x0008 8
LOCKOUT 0x0010 16
PASSWD_NOTREQD 0x0020 32
PASSWD_CANT_CHANGE 0x0040 64
ENCRYPTED_TEXT_PWD_ALLOWED 0x0080 128
TEMP_DUPLICATE_ACCOUNT 0x0100 256
NORMAL_ACCOUNT 0x0200 512
INTERDOMAIN_TRUST_ACCOUNT 0x0800 2048
WORKSTATION_TRUST_ACCOUNT 0x1000 4096
SERVER_TRUST_ACCOUNT 0x2000 8192
DONT_EXPIRE_PASSWORD 0x10000 65536
MNS_LOGON_ACCOUNT 0x20000 131072
SMARTCARD_REQUIRED 0x40000 262144
TRUSTED_FOR_DELEGATION 0x80000 524288
NOT_DELEGATED 0x100000 1048576
USE_DES_KEY_ONLY 0x200000 2097152
DONT_REQ_PREAUTH 0x400000 4194304
PASSWORD_EXPIRED 0x800000 8388608
TRUSTED_TO_AUTH_FOR_DELEGATION 0x1000000 16777216

比如一个账户,他的 userAccountControl 属性只有 LOCKOUT 和 NOT_DELEGATED 这两个位有值,其他的位都没有,那这个用户的 userAccountControl 属性的值就为 0x100000+0x0010,是个32 位 INT 类型。

现在,如果我要搜索域内所有设置了 NOT_DELEGATED 位的所有对象,那么像之前那样简单的 LDAP 搜索语法肯定是不行了。因为简单的 LDAP 搜索语法只能对某个属性进行过滤,还不能对属性里面的某个具体的位进行过滤,这就引出了 LDAP 的按位搜索。

LDAP 的按位搜索的语法如下:

<属性名称>:<BitFilterRule-ID>:=<十进制比较值>

其中的<BitFilterRule-ID>指的是位过滤规则所对应的 ID,大致内容如下:

位过滤规则 OID
LDAP_MATCHING_RULE_BIT_AND 1.2.840.113556.1.4.803
LDAP_MATCHING_RULE_OR 1.2.840.113556.1.4.804
LDAP_MATCHING_RULE_TRANSITIVE_EVAL 1.2.840.113556.1.4.1941
LDAP_MATCHING_RULE_DN_WITH_DATA 1.2.840.113556.1.4.2253

比如我们查询域内所有设置了 NOT_DELEGATED 位的所有对象,NOT_DELEGATED 对应的十进制比较值位 1048576,那么根据语法,我们便可以构造以下过滤语法:

(userAccountControl:1.2.840.113556.1.4.803:=1048576)

Active Directory 访问查询工具

ADSI 编辑器

DSI Edit(AdsiEdit.msc)是一个 Microsoft Windows Server 工具,可用于通过 Active Directory 活动目录服务接口(ADSI)查看和编辑原始 Active Directory 目录服务属性。ADSI Edit 适用于编辑 Active Directory 中的单个对象或少量对象。ADSI Edit 不具备搜索功能。因此,必须预先知道要编辑的对象及其在 Active Directory 中的位置。

在域控中(普通域成员主机没有 ADSI 编辑器)执行 adsiedit.msc 打开 ADSI 编辑器,“操作” —> “连接” 即可:

LDP

LDP 是微软自带的一款域内信息查询工具,在域控中执行 ldp 即可打开 LDP。普通域成员主机默认是没有LDP的,可以自行上传 ldp.exe 工具上去。

打开 LDP 后,输入域控的 IP 和 389 端口进行连接:

然后点击 “连接” —> “绑定”,输入账号密码进行认证:

然后再点击 “查看” —> “数”,输入一个 BaseDN 基础可分辨名称,指定这棵树的根,便可以用指定 BaseDN 作为根根往下搜索了。这里的 BaseDN 可以参照如下:

DC=whoamianony,DC=org
CN=Users,DC=whoamianony,DC=org
CN=Builtin,DC=whoamianony,DC=org
CN=Computers,DC=whoamianony,DC=org
CN=Deleted Objects,DC=whoamianony,DC=org
OU=Domain Controllers,DC=whoamianony,DC=org
CN=ForeignSecurityPrincipals,DC=whoamianony,DC=org
......

比如这里我们输入 BaseDN 为DC=whoamianony,DC=org,则 LDP 会以DC=whoamianony,DC=org为根往下搜索:

如果想要查看某个条目的信息,则 “右键” —> “搜索”,即可对指定的 BaseDN 进行过滤搜索:

Active Directory Explorer 

Active Directory Explorer(AD Explorer)是微软的一款域内信息查询工具,它是独立的可执行文件,无需安装。它能够列出域组织架构、用户账号、计算机账号等,它可以帮助你寻找特权用户和数据库服务器等敏感目标。

我们可以使用 AD Explorer 工具连接域控来访问活动目录,它可以方便的帮助用户进行浏览 Active Directory 数据库、自定义快速入口、查看对象属性、编辑权限、进行精确搜寻等操作。如下,在域内任意一台主机上,以域用户身份进行连接即可:

Adfind

AdFind一款 C++ 编写的域内查询信息的命令行工具,在域渗透里面的出场率极高。还有一个叫做 Admod ,可以修改。使用方法如下:

AdFind.exe [switches]  [-b basedn]  [-f filter]  [attr list]

-b:指定指定一个 BaseDN 基础可分辨名称作为查询的根节点

-f:LDAP 过滤条件

attr list:需要显示的属性

# 搜索 whoamianony.org 域下 objectcategory=computer 的所有对象,会显示出所有对象以及对象的所有属性
Adfind.exe -b dc=whoamianony,dc=org -f "objectcategory=computer"# 搜索 whoamianony.org 域下 objectcategory=user 的所有对象,会显示出所有对象以及对象的所有属性
Adfind.exe -b dc=whoamianony,dc=org -f "objectcategory=user"

# 搜索 whoamianony.org 域下 objectcategory=computer 的所有对象,过滤出 name 和 operatingSystem 属性
Adfind.exe -b dc=whoamianony,dc=org -f "objectcategory=computer" name operatingSystem# 搜索 whoamianony.org 域下 objectcategory=user 的所有对象,过滤出 cn 和 createTimeStamp 属性
Adfind.exe -b dc=whoamianony,dc=org -f "objectcategory=user" cn createTimeStamp

更多查询命令:

Adfind.exe -f objectclass=trusteddomain    # 信任关系
Adfind.exe -sc u:<username>    # 查询指定用户
Adfind.exe -sc getacls -sddlfilter ;;;;; -recmute    # 导出整个域的 ACL
Adfind.exe -sc u:<username> objectSid    # 查询指定用户的 SID
Adfind.exe -f "(&(objectCategory=person)(objectClass=user))"    # 查询所有用户
Adfind.exe -sc dclist    # 查询域控制器列表
Adfind.exe -schema -s base objectversion    # 查询域控制器版本
Adfind.exe -sc gpodmp    # 导出域内所有的 GPO
Adfind.exe -b "dc=whoamianony,dc=org" -f "mobile=*" mobile mail displayName title -s Subtree -recmute -csv mobile    # 导出域内所有的手机号为 csv 格式
Adfind.exe -b "dc=whoamianony,dc=org" -f "mail=*" mail displayName title -s Subtree -recmute -csv mobile    # 导出域内所有的邮箱为 csv 格式
Adfind.exe -b "dc=whoamianony,dc=org" -f "&(servicePrincipalName=*)(admincount=1)" servicePrincipalName    # 查询域内高权限的 SPN 服务主体名称
Adfind.exe -b "dc=whoamianony,dc=org" -f "useraccountcontrol:1.2.840.113556.1.4.803:=4194304" -dn    # 查找域内所有开启了 "Do not require Kerberos preauthentication" 选项的用户

并且 Adfind 还给我们提供了一个快捷的按位查询方式,可以直接用来代替那些复杂的 BitFilterRule-ID:

位过滤规则 OID Adfind BitFilterRule
LDAP_MATCHING_RULE_BIT_AND 1.2.840.113556.1.4.803 :AND:
LDAP_MATCHING_RULE_OR 1.2.840.113556.1.4.804 :OR:
LDAP_MATCHING_RULE_TRANSITIVE_EVAL 1.2.840.113556.1.4.1941 :INCHAIN:
LDAP_MATCHING_RULE_DN_WITH_DATA 1.2.840.113556.1.4.2253 :DNWDATA:

如下实例:

Adfind.exe -b dc=whoamianony,dc=org -f "(userAccountControl:AND:=524288)" -bit -dn

LDAP 查找中的 objectClass 和 objectCategory

objectClass

对象的 objectClass 属性里面,可以看到这个对象是哪一个类的实例,以及这个类所继承的所有父类。例如,域内主机CN=EWS,CN=Computers,DC=whoamianony,DC=org这个条目的objectClass属性的值中包括 top、person、organizationalPerson、user 和 computer:

根据类的继承关系可知,该对象是 computer 类的一个实例,而 computer 是 user 的子类,user 是 organizationalPerson 的子类,organizationalPerson 是 person 的子类,person 是 top 的子类。那么我们通过以下过滤语法都可以找到这个对象:

objectClass=user)
(objectClass=organizationalPerson)

由于所有的类都是 top 类的子类,所以当我们使用(objectClass=top)语句进行过滤时,域内所有的对象都可以搜索到

objectCategory 

对象类的每个实例还具有一个 objectCategory 属性,该属性是一个单值属性。并且建立了索引。其中包含的值为该实例对象的类或该类所继承的父类之一的专有名称。如下所示:

域内主机CN=EWS,CN=Computers,DC=whoamianony,DC=org这个条目的objectCategory属性的值为CN=Computer,CN=Schema,CN=Configuration,DC=whoamianony,DC=org。如果我们想过滤所有 objectCategory 的属性为CN=Computer,CN=Schema,CN=Configuration,DC=whoamianony,DC=org的对象,使用以下语法即可:

(objectCategory=CN=Computer,CN=Schema,CN=Configuration,DC=whoamianony,DC=org)

但是这样的话需要记住完整的 DN,为了方便,对象所属的类中还有一个 lDAPDisplayName 属性,用于指定该类所显示的名称。我们可以看到,对象CN=EWS所属的类存储在CN=Computer,CN=Schema,CN=Configuration,DC=whoamianony,DC=org中,里面有一个 lDAPDisplayName 属性的值正是 computer:

而且, LDAP 是支持直接使用类的 lDAPDisplayName 属性作为条件进行搜索的,所以如果我们想要查找所有 objectCategory 的属性为CN=Computer,CN=Schema,CN=Configuration,DC=whoamianony,DC=org的对象,可以直接用 lDAPDisplayName 属性的值代替那一长串 DN:

(objectCategory=computer)

二者查询效果相同。

由于 objectCategory 建立索引,所以查询时间比较快,在对 Active Directory 进行查询时可以将二者结合使用以提高查询效率。

相关文章:[内网渗透测试:活动目录 Active Directory 的查询 - FreeBuf网络安全行业门户]

域渗透基础知识(二)之活动目录 Active Directory 的查询相关推荐

  1. 【Windows Server 2019】活动目录 (Active Directory) ——将计算机加入域和脱离域

    目录 8. 将计算机加入域和脱离域 8.1 将客户机加入到fjnu.local域中 8.2 验证客户机加入到域后的信息 8.3 使用域账户用户在客户机上登录 8.4 使用本地账户用户在计算机上登录 8 ...

  2. 【Windows Server 2019】活动目录 (Active Directory) ——在同一区域安装多台域控制器

    目录 6. 安装多台域控制器 实验目的 6.1 配置服务器DNS2的IP地址 6.2 安装Active Diretory服务 6.3 将服务器DNS2提升为fjnu.local的域控制器 (1)进入[ ...

  3. 【Windows Server 2019】活动目录 (Active Directory) ——安装Acitve Directory域服务和提升为域控制器

    目录 5. 安装 Active Directory 域服务 实验目的 5.1 配置服务器的IP地址 5.2 安装Active Diretory服务 (1)添加角色和功能 (2)进入[开始之前]界面 ( ...

  4. 活动目录(Active Directory) 介绍

    比较三个概念: ◆  域(domain):主要用来描述公司的系统架构.是由多台计算机所构成,并且有统一管理特性的系统架构.域的概念和工作组相对应. ◆ 活动目录(Active Directory) 简 ...

  5. 【Windows Server 2019】活动目录 (Active Directory) ——理论

    目录 1. Acitve Directory 的定义与作用 1.1 Acitve Directory 的定义 1.2 Acitve Directory 的作用 2. Acitve Directory ...

  6. 系统工程师加薪必备技能-活动目录 (Active Directory)

    一.活动目录的概述 活动目录是:基于LDAP协议将网络中的资源统一组织.集中地存储到目录数据库中(ntds.dit),可以实现集中.分散式的管理与控制,主要体现在可以查找数据库中的资源,可以对数据库添 ...

  7. 域渗透基础知识(五)之OU组织单位、ACL、SeEnableDelegationPrivilege特权

    目录 OU组织单位 OU 与容器的区别 OU跟组的区别 组织单位的创建 OU委派 OU查询 ACL(Access Control List)访问控制列表 Windows访问控制模型 ACE ACL的判 ...

  8. Kali Linux渗透基础知识整理(四):维持访问

    Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...

  9. 域渗透基础_域渗透实战下gpo策略利用

    计划任务 每次需要删除计划的配置文件 ,更改任务名 重新下发文件,计划任务的文件路径放在sysvol目录下,域渗透实战下gpo策略利用. startup 重启登录 文件必须放在 gpo配置的指定目录下 ...

最新文章

  1. html5 jquery版工作流设计器,基于jQuery的web在线流程图设计器GooFlow
  2. MySQL 中的 FOUND_ROWS() 与 ROW_COUNT() 函数
  3. 程序的加载和执行(三)——《x86汇编语言:从实模式到保护模式》读书笔记23
  4. 利用MyBatis Generator进行数据层代码自动生成
  5. Yii2.0学习资源
  6. 从源码深处体验Spring核心技术--面试中IOC那些鲜为人知的细节
  7. css 缩放_【开发小技巧】06—如何使用CSS在鼠标悬停时缩放图像?
  8. C#IList 取区间数据
  9. .NET Exceptionless 日志收集框架本地环境搭建
  10. 如何安装Genymotion虚拟机以及Genmotion的eclipse插件
  11. DEDECMS给图集图片{dede:productimagelist}自动编号
  12. java 网络实验_java网络聊天室实验
  13. c语言printf源码浮点数,printf以%d输出浮点数
  14. 如何查看一个文件中间的20至30行内容?
  15. caffe 安装(only cpu)
  16. 置为底层_C语言之C语言的底层操作
  17. 联想启天m428进入bios安装ubuntu
  18. 38岁超任模拟器设计者自杀!死前留下真名与神秘自拍照,最后一刻开源higan
  19. 腾讯游戏天美工作室实习感悟
  20. 编译ORB-SLAM2遇到的问题及解决方法

热门文章

  1. 内网穿透——T1-ngrok 内网穿透 端口修改
  2. 【报告分享】2021中国互联网呼吸健康趋势白皮书-CBNData(附下载)
  3. 计算机上mac怎么用,教你如何在Mac苹果电脑上用Office办公软件
  4. Python密码学入门:凯撒密码
  5. OFDM(Orthogonal Frequency Division Multiplexing)即正交频分复用技术
  6. 【C语言】猴子吃桃问题。
  7. 基于HTML5的超酷图片画廊 -Juicebox Lite
  8. 机器学习笔试面试题——day3
  9. 中年人学C语言Windows程序设计,26控件ListBox
  10. 全球与中国斑马纸(HSC)市场现状及未来发展趋势2022-2028