分类目录: 软件技术

2014年9月曝出的Bash ShellShock漏洞简析

昨天,Bash曝出在调用环境变量设置命令或者接口时,可以任意执行Bash命令语句,绕过用户权限的限制。基本原理是:

$ env x='() { :;}; echo vulnerable'

如上bash脚本,本来只是定义一个环境变量x,但是其后面的内容全部都会被当作语句来执行,这也就是当以函数的形式来对环境变量来进行赋值时,会导致函数后面的命令被执行。即,env命令在执行赋值语句时未检查函数的边界,导致函数之后的内容也被执行。运行如上代码,屏幕如果显示“vulnearable”,那么系统的bash就存在该问题。目前确知的是,4.3版本之前的bash都存在该问题。该漏洞的代码为:CVE-2014-6271。

这个本身好像并没有多可怕的,因为一般能拿到shell,那么就有了整个环境的操纵权限,也不需要去用命令注入的方式来攻击了。但是存在一些场景允许远程执行Bash命令,正好又会在命令中调用环境变量设置函数。如CGI、DHCP等。

阅读全文 »

| 1 分2 分3 分4 分5 分 (4.92- 12票) Loading ... Loading ... | 同时归档在:WEB网络, 实用脚本 | 标签: , , , |

扫描目录自动生成VS2005/2008工程文件

对于喜欢使用Visual Studio看代码和写代码的同学而言,没有VS工程,手动建工程通常是一件非常痛苦的事情。之前一直使用一个叫做MPC的工具生成各个版本的VS工程文件,该工具依赖perl语言,而且只能遍历一级目录,不能递归到所有的子目录(也可能工具提供,但是是我没有深入研究工具的配置),而且工具集成到右键菜单,不是经常使用的功能集成到右键菜单不是很好。重新安装了操作系统后,再也不想安装复杂的MPC了,在网上找新的替代工具,找到了如下网址提供的DIY式的工具:链接

感觉工具中写死工程名字不是很好,稍作了一点修改。使用目录名作为工程名,同时省去了第三个参数。这样只需要将目录拖拽到工具上面就可以在目录内部生成一个与目录名同名的工程文件。该工程文件为VS2005和VS2008兼容的vcxproj格式的文件。对于高版本打开该工具生成的工程时,打开时,会提示升级。以下代码在VS2013编译通过。

vcmaketool

阅读全文 »

| 1 分2 分3 分4 分5 分 (5.00- 9票) Loading ... Loading ... | 同时归档在:C/C++ | 标签: , , |

如果是乔布斯发布iPhone 6和Apple Watch

转载自:Quora:How would Steve Jobs have introduced the iPhone 6 and Apple Watch?(需要外网才能访问)。

如果你对昨天的苹果发布会感到不快,那么“你并不是一个人” :)。有一些失望,并不是因为新产品的特性或者硬件配置而是发布会传递出来的讯息。

“比更大还大”作为宣传标语,当你听到它,会感觉一股冷气从背后袭来,又像寒冷的冬天不小心触摸到了冰冷的铁窗栏。这就是苹果的先进技术带给我们的感官上的全部了。

其实,我们对苹果的期待并不是先进的技术,需要的是人性的温暖,一种更加充实更加有意义的生活体验。

阅读全文 »

| 1 分2 分3 分4 分5 分 (4.90- 10票) Loading ... Loading ... | 同时归档在:数码硬件, 移动互联 | 标签: , , |

OpenStack Swift源码导读之——可插拔的后端设备实现

Swift作为一个存储的具体实现出现在OpenStack中,与Cinder的定位有差别,这导致Swift的兼容并包性不够强。必须基于XFS文件系统来存储数据?显然Swift也希望能将数据存储到更多的后端设备中,这样Swift可以与具体的XFS文件系统解耦,作为独立的存储软件存在。这能使得Swift存储的构建更加灵活,同时也能吸引更多的存储厂商投入到其怀抱中。

Swift提供了一种简单机制来实现后端存储设备的pluggable——可插拔的后端。这篇文章想探讨一下该机制。在亚特兰大峰会上面,这一特性是Swift的热门话题之一,对于亚特兰大OpenStack峰会涉及Swift的话题这里有汇总:链接

阅读全文 »

| 1 分2 分3 分4 分5 分 (5.00- 12票) Loading ... Loading ... | 同时归档在:Swift, 云计算/云存储, 架构设计 | 标签: , , , , , |

[转]处理器微结构史话

转载自:破布的博客

【注:这是经过小幅修改扩充的版本,刊登在中科院计算所计算机体系结构国家重点实验室的内刊《体系结构国重快讯》上,与《弯曲评论》上已刊登的版本小有不同,带来阅读不便表示抱歉。】

1945 年8月6日与9日,广岛和长崎两座日本本土城市先后在惊天动地的原子弹爆炸中被毁灭,核武器由此首次步入公众视野。全世界都被那两朵巨大蘑菇云的威力所震 慑。这两道重击也直接摧毁了日本最后的抵抗意志,一周后的8月15日,日本宣布无条件投降,在人类历史上写下最惨痛一页的第二次世界大战终于结束。核武器 横绝古今沛然莫御的威力,使得它成为战后制衡国际局势的一大王牌,对它的研究和制造在战后仍然未曾停息。而我们这一系列连载故事的主角,盈盈栖息于指尖之 上,不过毫厘见方的微型处理器,和这两朵摧枯拉朽的蘑菇云其实有着千丝万缕的联系。

Atomic_bombing_of_Japan 
(图注:两次原子弹爆炸的照片,来自维基百科。)

阅读全文 »

| 1 分2 分3 分4 分5 分 (5.00- 11票) Loading ... Loading ... | 同时归档在:奇趣见闻, 数码硬件, 架构设计 | 标签: , , , , |

一张图记住常用Linux系统性能诊断工具

首先是在陈利人的微博上面看到这张图,找了一下图片的演变过程,如下网页做了较详细的介绍,链接。另外这里给出了Linux性能监控、测试和优化的三个版本的工具:链接
Linux Performance Observability Tools

| 1 分2 分3 分4 分5 分 (5.00- 5票) Loading ... Loading ... | 同时归档在:IO编程, 实用脚本 | 标签: , , |

两步验证确保云上个人数据安全

苹果的“艳照门”事件在让广大屌丝看到了任何时尚成人杂志都无法看到的“绝密”照片外,也引发了一些思考。在云技术日益普及,并给我们的工作生活带来极大便利的同时,云安全始终是一个隐藏的巨大威胁。云不像本地的物理设备,可以隔绝网络,放到保险箱里面锁起来,云必须是互联互通的,只要有网络的地方,就有黑客的攻击路径。题外话,即使是本地硬盘,也可能数据泄漏,08年的香港娱乐圈的“艳照门”事件即是苹果电脑送修引发。

两步验证应该是目前最安全的账户保护机制。所有的网银、网购账号无不是使用该方案。形式多样,本质都是使用另外一个手持设备或者微型密钥生成器,来进行第二道认证。只有同时知道账号的密码并且拿到了密钥生成器才能访问账号。频繁使用的服务,敲一次密码都觉得麻烦,还要额外加上一次设备验证,着实麻烦了些。但是,要想到,即使是苹果这样的公司都会疏忽,忘记对“Find My iPhone”服务限制密码试错的次数,其他服务就更难说了,因此我们能做到就是尽可能减小自己的账号被泄漏的机会。

阅读全文 »

| 1 分2 分3 分4 分5 分 (4.82- 11票) Loading ... Loading ... | 同时归档在:云计算/云存储, 移动互联 | 标签: , , , , |

并发流程控制—CountDownLatch

假如有这样一个需求,当我们需要解析一个Excel里多个sheet的数据时,可以考虑使用多线程,每个线程解析一个sheet里的数据,等到所有的sheet都解析完之后,程序需要提示解析完成。

在这个需求当中要实现主线程等待所有线程完成sheet的解析操作,最简单的做法是使用join。代码如下:

阅读全文 »

| 1 分2 分3 分4 分5 分 (4.75- 12票) Loading ... Loading ... | 同时归档在:Java, 多线程编程, 语言基础 | 标签: , , |

家用电脑中高档配机方案

中规中矩的中高端家用配机方案。据称,E3Core i7 4770是同一条线上出来的,后者针对桌面做了优化,但是自带的那个HD 4600的显卡实在太渣。A卡的性价比比较高,这块HD 7870更是,接近R9 270X的性能,好于GTX660,但是比二者都要便宜,也说明R9 270X还有降价空间。

其他配件综合了京东和淘宝店销量数据。主板选择比较低端,主要考虑并不需要太多的接口。只需要能够带动E3和显卡即可。电源有冗余。被罗技的M525坑伤了,微软的应该不错。可适当配一块机械硬盘,120G的SSD实在有点小了,不过简单分析了一下这块,MLC颗粒里面价格相对来说比较低的了。SSD这种就不要考虑寿命了,用个两年,也许价格能降到机械硬盘的水平了。音箱用了入门级的书架音箱,主要是出于个人比较喜欢使用音箱听音乐,之前有试过2.1的,的确是重低音比较浓厚,但是没有百听不厌的感觉,可以尝试一下书架音箱。

阅读全文 »

| 1 分2 分3 分4 分5 分 (4.69- 16票) Loading ... Loading ... | 同时归档在:数码硬件, 移动互联 | 标签: , , , , |

关于回调函数和this指针探讨

在C里面,经常需要提供一个函数地址,注册到结构里,然后在程序执行到特定阶段时,回调该函数。创建线程,注册线程运行的主函数就是一个典型的例子。这里以简单的回调实例,说明C++中回调函数为成员函数时有关this指针的问题。由于C++对C的继承关系,C++没有自己的线程封装技术,一般而言我们创建线程时,还是用C的回调函数机制。类似的例子也挺多的。在Java等纯粹的面向对象语言,则不一样,不光有自己的独立的线程类型,对于回调,也是注册整个对象,而不是注册一个方法,如常用的观察者模式。这里,在网上查阅了大量关于this指针、类成员函数和静态成员函数的相关知识点,结合自己的理解作一些总结。

阅读全文 »

| 1 分2 分3 分4 分5 分 (4.89- 19票) Loading ... Loading ... | 同时归档在:C/C++, 语言基础 | 标签: , , |