美国骇客年会(Black Hat 2008) 观察:第二天

如何处理动态语言(Python / JS)的“隐形”调用链? 本文揭示动态语言(Python/JS)中静态AST解析导致调用链“断链”的核心问题,提出通过运行时追踪补全图谱的解决方案。基于Code-Graph-RAG的cgr trace机制,分别利用pytest插件与V8 Profiler捕获真实调用路径,将动态边合并至静态图谱,并在权重体系中提升动态边优先级。实践表明,该方法可显著提升图谱覆盖率,实现“结构+行为”双视角理解代码,为MCP与Rerank系统提供可靠支持。 阅读详情
 

说真的如果不是要来 Black Hat / DEFCON,我是绝对不会想到这边来的。我去过不少城市,但是了解我的人应该都知道,这边除了骇客年会,还真没有东西可以吸引我。

今天的 keynote 是美国政府资安界的当红新人炸子鸡 Rod Beckstrom,大家都来看他的风采。Rod 是我们营运长 Matt 的 Stanford MBA 学长,也是一位有名的创业家,他之前以 twiki 作者的身份,创办了 TWIKI.NET。今年叁月20日,他正式接受美国国土安全部(DHS、Department of Homeland Security)的邀请,担任底下一个新成立的单位:「国家资安中心(National Cyber Security Center、NCSC)」的首席。NCSC 是一个新的跨部门单位,负责协调各资安部门之间情报的交换。

NCSC 的成立以及这项任命,是源自于布希于今年一月签同的一项机密的指引,主要用以扩大情报界对于目前日益严重的针对美国的网路攻击之掌握度,因为之前美国情报单位对于资安攻击的掌握过渡零散,缺乏一个中央协调的组织。Rod Beckstrom 其实并没有资安背景,但是他有创业家的经验,对业界很熟,成功创办 TWIKI.NET 帮助企业用 wiki 观念协调资讯交换,以及着有很畅销的「The Starfish and the Spider」一书,提出新的分散式企业管理概念,这些都是美国国土安全部(DHS)看中他的原因。

Rod 讲了很多美国政府的历史与政府在资安方面的历史,基本上我觉得就是帮政府建立形象啦,表示美国政府从电报的年代就很懂资安与情报的重要。我对美国政府的历史没有兴趣,我对骇客的历史比较有兴趣,但是我觉得 Rod 的加入对布希政府在形象上一定是一大加分,因为 Rod 感觉很有业界经验,不会让外界觉得政府都闭门造车。

Rod 讲了他认为目前资安难做的原因,我非常的认同。他说,有些球类,进攻难,防守易,例如足球,所以分数都不高(几比几);有些球类,则是进攻容易,防守难,例如篮球,所以分数都很高(可以破百)。资安比较像篮球;事实上在资安里面,防守比攻击要难太多太多了,这也就是资安难做的原因。

这个我完全认同。是的,要有好的防守,必须很懂得敌人,很懂得敌人所用的攻击方法。所以重要的骇客年会我们都会派人参加。但是这只是基本功而已。懂得攻击之后,要设计防守,又更加困难。为什么?因为攻击成本低,防守成本高!就拿防毒软体来说,其实测不到,不是防毒厂商没有样本,可是防毒软体不能佔用系统太多资源,所以样本不能无限制的长大,必须有所选择,在尽量不影响到系统效能的前提下,达到最高的侦测率。

又像如果打生物战,那么一样,设计病毒,只需能感染让人致死就好,可是设计解药,不但要杀死病毒,还要保存人体不被破坏。不论在网路空间或实际生活中,攻击总比防守简单太多,这是资安难做的原因。再加上攻击处于主动,何时攻击可以自行选择,但是防守处于被动,何时被攻击无法预期,所以无时无刻都需要检查与防範,而这些无时无刻都需要做的检查与防範,都是成本的增加,这也是资安难做的原因。

另外 Rod 探讨了一些我们在业界常探讨的资安的投资报酬率问题。感觉他有观念,但是毕竟他之前不在资安产业,探讨的东西都还太浅了些。以下是两张投影片,基本上是说,如果 x 轴是资安的投资,y 轴是因为资安投资而减低的损失,那么需要找到投资报酬率最高的点。但是 Rod 你说用一条 45 度的线跟曲线取交点,是这样吗?我高中毕业很久了,博班资格考也没考微积分,但是我怎么直觉觉得,要分析要看此曲线斜率,所以要做一下一次微分后分析...


听完之后去帮 Jeremiah 捧场,听他同事 Arian Evans(大会)讲“Encoded, Layered, and Trancoded Syntax Attacks: Threading the Needle past Web Application Security Controls”

这个题目就不翻译了,基本上整个演讲在说一件事:Web 上的攻击,如果加上各种不同的编码方式,那么穿透率几乎可以达 100%,没有任何 Web 防火墙可以阻挡。这是指 Web 防火墙设定成利用黑名单的情况下,如果花时间设白名单的话,一样可以阻挡,可是一般稍微有规模的站,我看到大部分都是用黑名单方式,因为设白名单是很繁琐的事情,需要找到好的厂商才行。

讲到这里,其实我深深觉得资安业,找对公司比找对产品重要多了。不论是源码检测或 Web 防火墙,如果卖方只是想塞产品给您,那么买了再好的,牌子在大的产品也没有用,一样会失败,最后还是会发生资安事件。如果找对好的 partner,有心服务客户,长期经营,技术能量也够,那即使用免费的开放源码 ModSecurity 做 Web 防火墙,一样能设定到让您高枕无忧。其实对方有没有心做服务,还是只想塞产品,还有对方的技术团队有没有实力,通常很快就能看出来。

这张明天要去卖 Arian 了,拍得太好了 :)


投影片一拿出来就开始讲今年初进行到现在的大规模 SQL Injection 加网页挂马攻击(阿码新闻稿,PC World(IDG),ITHome)。Arian 拿当初 Neil Carpenter 蒐集到的攻击字串做例子:

2008-03-08 13:37:13 /dir1/archive.asp id=z%27%20ANd%20char(124)%2Buser%2Bchar(124)=0%20and%20%27%25%27=%27

这是一行 web server 的 log。在这个例子里,%XX(例如 %27、%20、%2B)是 URL encoding 的一部份,会被 web server decode,decode 完变成:

2008-03-08 13:37:13 /dir1/archive.asp id=z' ANd char(124)+user+char(124)=0 and '%'='

然后整个 SQL injection 字串,会被 SQL server 解码成:

id=z ANd |user|=0 and '%'='

不要说多层编码,即使只用一层的 URL 编码,就可以因为 UTF-8,而使同一个字串几乎有无限种编码可能。譬如一个简单的:

GET / indexA.html HTTP/1.1

就可以被编码成:

GET /index%41.html HTTP/1.1
GET /index%2541.html HTTP/1.1 (double percent)
GET /index%%34%31.html HTTP/1.1 (double nibble)
GET /index%%341.html HTTP/1.1 (first nibble)
GET /index%4%31.html HTTP/1.1 (second nibble)

然后如果再利用 2-byte or 3-byte UTF-8 编码的话,变化又更多了。

但是这整个演讲的内容其实对我来说一点都不新,这些编码来穿透 Web 防火墙的方式大概四五年前很多书还有 paper 都已经介绍得很完整了。整理起来,整个演讲的重点就两个:

一、由于 UTF-8,攻击字串几乎有无限种编码方式。

二、攻击可以分层的编码,像上述例子,一层给 web server 解,一层给 SQL server 解。或穿插 URI % encoding 或 UTF-8 encoding、HTML decimal entity encoding、SQL server encoding(char())等混合使用。

听完后去听好友 Billy Hoffman的演讲:“击败 javascript 分析工具(Circumventing Automated JavaScript Analysis Tools)”。Billy着有「Ajax Security」,上次在 RSA 2008 办签名会,我一口气签了很多本回来送朋友,让他高兴得不得了。既然是 Billy,当然要照帅一些啰!有没有注意到左下方 Billy 的笔电?併购后笔电也该 HP 啰!

今年讲网站挂马的演讲真是多,其实这个题目去年就很红了,今年年初再加上两点,使得这个议题红到不行:

一、年初的大规模自动 SQL Injection 加 网页挂马(阿码新闻稿,PC World(IDG),ITHome)

二、网路挂马所使用的 javascript 语言,其编码与变形太过容易(除了大家熟悉的 MPack 自动化犯罪工具包,现在线上的 javascript 编码/变形服务也到处都是:看这里和这里。)

Billy 在他的摘要里就直接提到:“拜 MPack 所赐,大部分恶意 javascript 都编码过
(Obfuscated JavaScript payloads are the norm thanks to malware frameworks like MPACK.)”

的确,根据“IBM X-Force 2008 年终趋势报告(IBM X-Force 2008 Mid-Year Trend Statistics)”,2007年后半年,网页挂马中 javascript 编码变形以达 100%:“A year later,
in the second half of 2007, Web browser attack obfuscation approached 100
percent.”

在这个 talk 中,Billy 讲了恶意程式变形技术与侦测技术间永无止境的斗智游戏。这是我很期待的一个 talk,因为跟我们 HackAlert 非常相关。

Billy 今年的研究延续去年 Ben Feinstein跟 Daniel Peck 讲的 Caffeine Monkey 。

OKOK,继续之前,我们先来看看这些人到底在讲什么。

现在的大规模自动网站挂马,ITHome)都是利用 SQL Injection 漏洞在网页里安插恶意的 javascript。这些 javascript 都经过变形(或称编码)。利用 MPack,甚至可以动态变形,也就是说,每一个访客所下载到的网页,里头的 javascript 都经过不同的变形。

变形的 javascript 到底长什么样子?我们就拿我之前写的“神秘 Web 攻击绑架剪贴簿”来看好了,其中用的一段範例 javascript:

function IE_ClipBoard()
{
  if (window.clipboardData) {
    window.clipboardData.setData("Text","Hello from Wayne!");
  }
}

1、好,现在我们用 malwareguru 上的线上编码工具 Vanishing Point Packer(网页、malwareguru 上提供的线上 demo),把上面这一段 javascript 贴进去,按「pack」,塬本的 javascript 就变成了以下这段了:

eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}k=[function(e){return d[e]}];e=function(){return'//w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('//b'+e(c)+'//b','g'),k[c])}}return p}('4 3(){2(1.0){1.0.5("8","7 6 9!")}}',10,10,'clipboardData|window|if|IE_ClipBoard|function|setData|from|Hello|Text|Wayne'.split('|'),0,{}))

2、网路上随便 Google 「javascript obfuscator」或「javascript packer」,可以找到一堆线上的服务,每一个变形出来都不太一样。举几个例子:

Yellopipe source code encrypter:


document.write(unescape("function%20IE_ClipBoard%28%29%20%20%0D%0A%7B%20%20%0D%0A%20%20if%20%28window.clipboardData%29%20%7B%20%20%0D%0A%20%20%20%20window.clipboardData.setData%28%22Text%22%2C%22Hello%20from%20Wayne%21%22%29%3B%20%20%0D%0A%20%20%7D%20%20%0D%0A%7D%20%20"));


3、Audit My PC HTML Encoder:

document.write('/u0066/u0075/u006E/u0063/u0074/u0069/u006F/u006E/u0020/u0049/u0045/u005F/u0043/u006C/u0069/u0070/u0042/u006F/u0061/u0072/u0064/u0028/u0029/u0020/u0020/u000D/u007B/u0020/u0020/u000D/u0020/u0020/u0069/u0066/u0020/u0028/u0077/u0069/u006E/u0064/u006F/u0077/u002E/u0063/u006C/u0069/u0070/u0062/u006F/u0061/u0072/u0064/u0044/u0061/u0074/u0061/u0029/u0020/u007B/u0020/u0020/u000D/u0020/u0020/u0020/u0020/u0077/u0069/u006E/u0064/u006F/u0077/u002E/u0063/u006C/u0069/u0070/u0062/u006F/u0061/u0072/u0064/u0044/u0061/u0074/u0061/u002E/u0073/u0065/u0074/u0044/u0061/u0074/u0061/u0028/u0022/u0054/u0065/u0078/u0074/u0022/u002C/u0022/u0048/u0065/u006C/u006C/u006F/u0020/u0066/u0072/u006F/u006D/u0020/u0057/u0061/u0079/u006E/u0065/u0021/u0022/u0029/u003B/u0020/u0020/u000D/u0020/u0020/u007D/u0020/u0020/u000D/u007D/u0020/u0020');

4、中国的「网?免? 孤程?雪」线上服务:

t="97,108,101,114,116,40,39,72,101,108,108,111,32,102,114,111,109,32,87,97,121,110,101,32,111,102,32,65,114,109,111,114,105,122,101,33,39,41,59"
t=eval("String.fromCharCode("+t+")");

5、嗯嗯,图很熟悉吧?各位 IT 应该都不陌生...是的,这种编码方式很受到前一波挂马骇客的喜爱,很多网站挂马都长得很像图 5...所以我们把这个「网?免? 孤程?雪」站的话面贴出来一下好了:

6、编码还可以分很多层,可以用不同的编码器编过几层。看到这些,我们想一想,现在很多 gateway 产品,都号称他们可以及时侦测与阻挡恶意网页...现在网路频宽都很大,在这么大的频宽下,一个 gateway 装置要 buffer 住所有的 HTTP response,然后即时的执行 javascript 解码,然后识别恶意程式...您相信吗?

看着5的图,您也许会想,编码过的 javascript 都有一些特徵,例如都是一堆的数字,侦测这些特徵,不就可以侦测到恶意的 javascript 了吗?问题是这会有很多的误判。因为塬本这些 javascript 编码器,都不是拿来做网站挂马的,而是用来保护 javascript 的智慧财产权的。Javascript 必须要在浏览器上执行,所以不论你花多少时间写 javascript,最后谁都可以拿到你的程式,因为 javascript 不会编译成执行档,而是直接以程式码的方式传到浏览器上,再由浏览器执行。所以为了要保护 javascript 程式不要轻易的被有心人研究,许许多多的程式设计师,都会将自己的 javascript 利用上述这些编码器编码或变形。也就是说,编码过的 javascript 不见得都是恶意的,很多大型网站上,拥有非常多编码过的 javascript,大部分商售的 javascript,也都经过编码变形。究竟有多少 javascript 编码器?很多,连 Yahoo! 都提供 Yahoo! 的 javascript 编码器,也介绍其他好用的编码器。

好吧,那到底该如何侦测呢?HackAlert用的是实际的浏览器环境,所以没有问题,不论什么样的 javascript 变形方式,或者此 javascript 攻击什么样的未知的 0day 弱点,反正只要试图攻击,就一定测得到。可是这样的技术要对 windows 环境以及各 browser 的构造很熟才行。

这次在 Black Hat / DEFCON,在会后的一些 meeting 中,我发现一个很有趣的现象,就是在侦测网站挂马方面,“使用者”(大银行,大企业,军方,情报单位)的功力,有时反而比厂商甚至讲师更强。探讨下来,因为网站挂马太严重了,可是厂商都没有好的解决方案,号称可以测到的,其实都是用静态分析或黑名单方式,没有办法即时,辨识率也偏低,所以这一年下来,“使用者”只好 DIY,自己利用 Caffeine Monkey(paper、投影片、程式码)或 spidermonkey 来侦测(SANS最近也玩了一下),但是就如同 SANS 的 Daniel Wesemann 说的:”But SpiderMonkey is only a JavaScript engine - it doesn't emulate the browser and doesn't even have a "document" or "location" object...“。Caffeine Monkey就是建构在Spidermonkey 之上。SpiderMonkey 是 Mozilla 的 javascript 执行器,但是不是一个浏览器,还缺很多环境,Caffeine Monkey 一方面设法补足,一方面增加了一些自动侦测的技巧。

Billy 今年的 talk,则是针对诸多以 SpiderMonkey 为基础的侦测方式做破解,列了一打以上的破解方式,不过基本上可以粗分为两类:

一、侦测抓网页的是否是真的人还是要侦测的机器人(执行 SpiderMonkey 之类的)

二、直接用一些方法,让以SpiderMonkey 为基础的的自动侦测失效。

对于(一),Billy 列了很多的方法,包含了 HTTP/browser fingerprinting、DOM testing and encrypting、Doman and Network testing、Execution environment testing、cross plugin communication testing 等等。Billy 的演讲是针对 SpiderMonkey 和 Caffeine Monkey 设计的,所以这次讲的方法对以这些为基础的技术或产品真的很有效。以这些为基础的产品很多吗?非常多,因为这些是开放源码的程式,现在很多公司都是看到客户有需要了,不做研究,不花功夫,拿一些开放源码的程式整合一下,就把产品推出了。有的时候从客户那边听到这些业务的语言,我真的不敢相信,怎么大家都这么敢虎!客户又不是笨蛋,你说你功能都有,其实是那一些开放源码堆起来的,客户难道就不会测试吗?我接触的客户技术水準都越来越高,这些说话不打草稿的业务,应该会越来越吃亏。

Billy 讲的方法,基本上对 HackAlert 都无效,因为 HackAlert 后端基本上就是一套跟使用者一模一样的环境,是我们自己开发的,不是拿开放源码的程式凑的。

对于(二),则分两方面。一方面,因为 SpiderMonkey 毕竟不是整个浏览器环境,所以很容易可以用一些方法侦测出,执行的环境是「人」在用的浏览器,还是侦测用的环境。如果次侦测用的环境,那就不发动攻击,环境也就测不出来了。另一方面则是利用 SpiderMonkey 环境跟真正浏览器环境的不同,把 javascript 设计成,在 SpiderMonkey 环境下无法成功执行,那么 SpiderMonkey 就测不到了。

一样,对 SpiderMonkey 很有效,对 HackAlert 则无效。

但是看这两种攻击,其实用一句 Billy 最后讲的话就可以总结了:”现在我碰到的网站挂马越来越多是用 vbscript 而非 javascript。SpiderMonkey 和 Caffeine Monkey 都只支援 javascript,所以一旦恶意程式用 vbscript,所有这些侦测方法都完蛋了。“

写到这边,如果您回去看 图 6,左上角的第二个和第叁个按钮:”VB 网页加密“、”VBS 脚本加密“,也就说明了一切--在必要的情况下,骇客用 vbscript。

于是 Billy 在演讲中强调又强调,目前没有开放源码的 vbscript parser,造成他研究的瓶颈。我会后跟他说,vbscript 虽然是很烂的语言,但是文法还是能表示出来,我们约花一个月时间就做出 vbscript 的 parser 了。所有语言里面,vbscript 的语法最模拟两可,最难用 lalr 表示出来,但是解译不只需要 parser,还需要处理如 scoping 等等,几乎等于需要一个 compiler,所以即使他弄出了 parser,后面的功夫还很大。他问我们为何这么快可以完成 vbscript parser。问题是...我们本来就是源码检测的公司,parser 跟 grammar 对于源码检测或 compiler 的公司来说,是基本功。我们原本做 vbscript parser,是为了 CodeSecure 对 ASP 语言的支援,不是要侦测恶意程式。

至于我们的 vbscript parser,是否会用在 HackAlert 中,辅助侦测网站挂马呢?目前看起来没有必要。不论是 javascript 或 vbscript,这些都是 interpreted 语言,不是 compiled 语言。Interpreted 语言,动态可以产生新程式,语法也较不严谨,太多状态需 runtime 时才能决定,非常不利于静态分析技术。HackAlert 目前动态侦测方面,完全模拟使用者环境,侦测率很高,不需要再靠其他方式。

最后 Billy 你说我们的 vbscript grammar 可否开放源码,这我们得思考看看了。

这里可以看到 Daniel Peck (Caffeine Monkey 作者之一)
blog 对于 Billy 这场演讲的看法。

Billy 的演讲一向都很受欢迎,如果您想要听,他有一场 2007 年底在 Google Toolkit Conference 上讲的 Ajax Security:

Ok,我必须承认,在 Billy 演讲的中间,我落跑了 20 分鐘... 我去听了 Justin Clarke 的短演讲:「SQL Injection 蠕虫:为了兴趣也为了利益(SQL Injection Worms for Fun and Profit)」。看这就知道今年网页挂马热到什么程度了,竟然同一时间有两个演讲,逼不得已只好跟 Billy 请个假了!

Justin Clarke 是 Network Security Tools (O'Reilly)的作者,也是 SQL Brute 工具的作者。

Justin 主要就是讲今年年初开始的大规模 SQL injection 加网站挂马攻击,但是我发现,我们对这些攻击的掌握度似乎更快。基本上他所有讲的,我们在之前都公开过了:阿码新闻稿,PC World(IDG),ITHome

整理重点:大规模攻击,SQL Injection 指令设计得很好,针对微软的平台,利用 Google (?q=)找寻攻击点,SQL Injection 的目的是为了要挂马...等等。这边重点是,虽然 HackAlert 可以侦测挂马,但是为何会被入侵挂马?都是因为有 SQL Injection 漏洞,故需把程式改好,才是彻底解决之道。今天听到现在已经第叁场讲大规模 SQL 加挂马了,大家的 SQL 漏洞快修修吧!

听完又回去捧场 Jeremiah 了,这回他带同事一起讲:”Get Rich or Die Trying - ‘Making Money on The Web, The Black Hat Way’“。

Jeremiah 这次讲的,跟我上次安排他来台北(他blog的游记1、游记2,值得看)讲的”商业逻辑错误(Business Logic Flaws)(他的 blog、paper)“其实是一样的,只是多花了一些时间整理出更有去的内容:怎样可以利用这些逻辑错误来赚钱(其实也就是会造成什么损失啦!)。但是所介绍的逻辑错误本身,跟在台北讲的那场差不多。他带着年轻的同事 Trey 一起讲,感觉是要训练后辈,而 Trey 以这么轻的年纪,这么满的一间,台风算很好了,应该没让 Jeremiah 失望啦!

最后去了 Matthieu Suiche 的演讲:”Windows Hibernation File for Fun and Profit“。Matthieu 是专门分析 Windows 休眠档工具 Sandman 的作者。

他对于这次演讲的 blog 在这里,投影片在这里:PDF、PPTX,demo 环境在这里。其实内容跟我们在台北办的 SySCAN Taipei 2008 里 PK 讲的「犯罪现场: Windows 记忆体内容撷取与鑑识」差不多,基本上就是 demo 从分析记忆体或休眠档,可以取出非常多的资讯。PK 那场讲得非常好,我很感谢他。PK 的许多内容应该都是参考 Matthieu Suiche的,因为 Matthieu 是这方面的先驱,修眠档的资安问题方面研究,他算是祖师,他的 Sandman也是现在这方面最领先的工具之一。

好啦!终于写完啦!感谢各位花时间看完。这些资安会议多跑几个,攻击的趋势,技术的进步,产业的趋势就都很容易掌握了。没有时间去的就看我的 blog 啰。另外我们在台湾办的会议,品质也都很好,有空可以多来

NL2SQL实践系列(1):深入解析Prompt工程在text2sql中的应用技巧 阅读详情

相关推荐

Python pydub实现语音停顿切分

将pcm文件批量处理成wav文件 import wave import os filepath = "data/" # 添加路径 filename = os.listdir(filepath) # 得到文件夹下的所有文件名称 #f = wave.open(filepath + filename[1], 'rb') #print(filename) for i in range(len(fi...

wangqianqianya的博客 1万+

常用的一些注入命令

//看看是什么权限的and1=(SelectIS_MEMBER('db_owner'))Andchar(124)%2BCast(IS_MEMBER('db_owner')asvarchar(1))%2Bchar(124)=1;--//检测是否有读取某数据库的权限and1=(SelectHAS_DBACCESS('master'))Andchar(124)%...

weixin_33724570的博客 222

K型热电偶分度表读取方法

K型热电偶分度表读取方法

guaizaiguaizai的博客 5917

常用的一些注入命令,方便一下大家哦

//看看是什么权限的and 1=(Select IS_MEMBER(db_owner))And char(124)%2BCast(IS_MEMBER(db_owner) as varchar(1))%2Bchar(124)=1 ;--//检测是否有读取某数据库的权限and 1= (Select HAS_DBACCESS(master))And char(124)%2

魔拉宝 651

PTA-浙大版 《Python程序设计》 第三章编程题目及答案

博主第一次写优快云的博客,所以排版上可能有些不尽人意,代码部分均为自己的思路,可能复杂或者考虑欠妥,欢迎大家一起讨论~ 第一题:大于身高的平均值 这里用了np数组求得平均数,当然for循环累加也是可以的 import numpy as np data = input().split() data = list(map(int,data)) avg = np.mean(data) for i in data: if i > avg: print(i,end = '

Legendwqs的博客 1万+

YT8531 PHY芯片硬件设计与MDIO/RGMII实战指南

以太网PHY芯片是FPGA系统实现网络通信的物理层核心,其关键在于标准接口(如MDIO管理总线和RGMII数据接口)的正确实现与协同。MDIO作为IEEE 802.3定义的低速配置通道,负责寄存器级控制与状态监控;RGMII则通过双沿采样精简引脚,在千兆速率下兼顾性能与PCB布线可行性。技术价值体现在电压兼容性(支持1.8V/2.5V/3.3V)、可编程时序调节(RX_DELAY/TX_DELAY)及多级环回测试能力,显著提升国产FPGA平台(如Xilinx Zynq)的工程鲁棒性。典型应用场景涵盖嵌入式网

weixin_42453228的博客 1339

美國駭客年會 Black Hat 2008 觀察--第二天

http://huaidan.org/archives/2259.html

cnbird's blog 682

华为硬件工程师笔试题

1、基尔霍夫定理的内容是什么?(仕兰微电子)   基尔霍夫定理包括电流定律和电压定律。   电流定律(KCL):在集总电路中,任何时刻,对任一结点,所有流出结点的支路电流的代数和恒等于零。   电压定律(KVL):在集总电路中,任何时刻,沿任一回路,所有支路电压的代数和恒等于零。   2、平板电容公式(C=εS/4πkd)。(未知)   3、最基本的如三极管曲线特性。(未知)   4、描述反馈电路...

weixin_33717117的博客 2万+

美國駭客年會 Black Hat 2008 觀察--第一天

美國駭客年會 Black Hat 2008 觀察--第二天  转自:http://armorize-cht.blogspot.com/2008/08/black-hat-2008_18.html此文續「美國駭客年會 Black Hat 2008 觀察--第一天」... 1. Rod Beckström: 國家安全 2. Arian Evans: Encoded, Layered,

tjs1214的专栏 635

南大计算机2024保研笔试:编译原理等5门专业课考点分布与408复习避坑指南

本文详细解析了南京大学计算机2024保研笔试的考点分布与复习策略,重点突出编译原理(占比28%-32%)和离散数学的特色考核。提供跨课程复习方法、真题题型分析及高效备考建议,帮助考生突破传统408框架,应对南大独特的命题风格。

weixin_29304985的博客 347

STM32 CubeMX实战:手把手教你用I2C驱动IST8310磁力计(附完整代码)

本文详细介绍了如何使用STM32 CubeMX和I2C驱动IST8310磁力计,从硬件连接到代码实现的完整流程。重点讲解了I2C通信异常处理、传感器初始化序列优化以及中断驱动数据采集方案,帮助开发者快速搭建可靠的地磁场数据采集系统。

weixin_42531163的博客 190

Black Hat 2008 观察第一天

 编者按:全球瞩目的信息安全会议Black Hat USA 2008上周在美国拉斯维加斯开幕,众多的安全厂商和独立安全研究人员都在会上发表了自己最新的研究成果。作为亲身经历的Wayne,将自己的所见、所闻、所想与大家分享。会场就在我住的旅馆的对面,但是还是很早起床,因为每天都很忙,除了听一些 talk 还有很多人要碰。今天天气很好,有太阳时才发现我房间看出去的view还不错:screen.widt

1590

C++(Qt)软件调试---gdb调试入门用法(12)

学习GDB可以帮助程序员更好地调试程序,找到程序中的错误和问题,提高程序的质量和稳定性。 在开发大型软件时,程序中可能存在许多错误和问题,这些问题可能会导致程序崩溃或者出现不可预期的行为。 使用GDB可以帮助程序员更快地找到这些问题,并且提供一些调试工具来帮助程序员更好地理解程序的行为。

mahuifa的博客 5562

工作中使用到的单词(软件开发)

1.エイリアス   alias 别名 powershell使用 get-help 命令时,会得到与此命令 相关(别名)的命令 2.プロキシ proxy 代 理 3.プロモート   promote 促进,提升   开发的系统新功能上线发布,有时会使用到这个词,比如 STプロモート 还有使用リリース这个词的。比如STリリース。个人认为两者含义相同。 4.見逃し み................................................................

sun0322 6万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Web 版翻译者资料库

本项目是桌面版《翻译者资料库》的 Web 移植版,基于 Spring Boot 3.3、Thymeleaf、Bootstrap 5.3 与 MySQL 8.0 构建。它面向翻译写作提供资料、词汇、句库、文本工具、对照制作、查找、备份恢复及旧库迁移等功能,完整继承桌面版核心业务规则,支持一键启动与离线访问。

howard2005的专栏 150

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 351

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

副队长BootStrap5探究(2)--按钮与按钮组

本文系统讲解Bootstrap 5按钮组件的使用与底层原理。通过CDN引入框架,掌握btn基础类及primary、success等主题色应用,学习轮廓按钮(btn-outline-*)、尺寸控制(btn-lg/sm)、块级布局(d-block)和禁用状态(disabled)等实用功能。结合源码解析,深入理解其基于CSS的圆角、过渡动画、伪类交互实现机制,实现“快速上手+原理掌握”的双重目标,助力前端技能进阶。

编程副队长 682

DSH (DeepSeek Harness) Windows 升级安装指南20261107

注意:如果在普通窗口执行 nvm 提示找不到命令,或执行 nvm use 提示 Access is denied,请务必关闭当前窗口,重新打开一个管理员CMD 执行上述完整路径命令。找到 .credentials.yaml,将其重命名为 .credentials.yaml.bak(备份并使其失效)。Node.js Storage Location:可改到非系统盘(如 D:\dev\nvm,避免路径含空格或中文)。打开文件资源管理器,进入 C:\Users<你的用户名>.dsh\。

fengye207161的博客 233

SpringBoot「衣依」服装销售平台:144个Java文件180个接口,从挑衣服到收货评价整条链路都在

# SpringBoot「衣依」服装销售平台:144个Java文件180个接口,从挑衣服到收货评价整条链路都在 > 这是一套基于 Spring Boot 的服装销售平台源码,配套 `db.sql` 建表脚本,业务覆盖商品展示、购物车、订单流转、收货地址、订单评价、商品评论、在线客服、轮播图和资讯。形态是**前后台双端**:前台是顾客逛的商城,后台是管理员管的控制台。本文带你看清里面有什么、怎么跑

面朝大海 227

汽车租赁系统(协同过滤算法、支付宝沙盒支付、 腾讯地图接入、WebSocket在线沟通、ECharts运营分析、三角色协同、还车费用处理)

本系统基于B/S架构,采用前后端分离设计,集成SpringBoot3、Vue2、MySQL等技术,实现用户、商家、管理员三角色协同管理。亮点包括:车型加权推荐与话题协同过滤算法提升个性化体验;支付宝沙盒支付、腾讯地图定位、WebSocket在线沟通保障流程闭环;还车费用智能计算与ECharts多维数据可视化助力运营分析,全面支持租车全生命周期管理。

paopaokaka_luck的博客 164

微信小程序-wxs

在微信开发者工具中右键创建.wxs后缀的文件。每个.wxs文件也是一个独立模块,同样使用导出内容。示例(文件return d;FOO: foo,bar: bar(外联定义参考官方文档)

dreams_dream的博客 374

设计模式(unity游戏研发版)

当你使用图形用户界面类时通常会遇到一个问题。比如,你创建了自定义按钮类并允许客户端在按钮中注入自定义代码,这样当用户按下按钮时就会触发这些代码。观察者模式允许任何实现了订阅者接口的对象订阅发布者对象的事件通知。你可在按钮中添加订阅机制,允许客户端通过自定义订阅类注入自定义代码。在Unity中,这就像UnityEvent在Inspector中绑定多个回调。

m0_63330263的博客 109

【技术专题】JavaScript 网页技术 - JavaScript 流程控制

小锋老师推出《一天学会JavaScript(无废话版)》视频教程,涵盖基础语法、流程控制、函数、数组对象、DOM操作及ES6新特性。内容精炼,配套课件与源码打包下载,助力快速入门。重点讲解if/else、switch、for/while循环、for...of/in遍历及break/continue使用场景,并通过成绩判断实例演示实际应用。适合零基础学习者高效掌握核心技能。

java1234的博客 167

基于 FastAPI+LangChain+LangGraph+Agent+Vue3+MySQL 的房产数据采集与房价预测分析平台

本文介绍一个完整的「房产数据采集+AI房价预测」全栈项目,涵盖FastAPI异步后端、LangGraph Agent智能问答、爬虫采集、机器学习预测与Vue3前端,实现从数据采集到AI交互的闭环。项目融合多技术栈,具备真实业务场景与生产级设计(如降级策略、流式输出、多模型对比),兼具简历亮点与答辩演示优势,可系统性提升工程能力,并附高频面试题解析,是理想的技术综合实践项目。

深耕开发,专注编程实战。分享源码解析、项目搭建、问题排查笔记,沉淀技术,持续更新。 246

副队长BootStrap5探究(11)--单选框 radio

本文详解Bootstrap 5中单选框(radio)的使用与底层实现原理。通过引入Bootstrap CSS,掌握基础用法、默认选中、禁用状态及横向排列等特性。核心在于隐藏原生input,利用~兄弟选择器配合伪元素::before和::after绘制圆形外圈与实心圆点,实现统一视觉风格。重点解析了position、z-index、opacity及:checked状态控制等CSS技巧,巩固前端样式设计能力。

编程副队长 243
上一篇: Black Hat 2008 观察第一天
下一篇: 循环复用DNS实现多服务器的负载均衡
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值