George Cheng

George Cheng

115 posts
Metasploit

Metasploit 安装时,连接不上7337端口的解决方案

在中文Windows XP系统下安装Metasploit时,系统调用psql后提示could not connect to server: Connection refused (0x0000274D/10061)。因为psql数据库下的地区不兼容SQL_ASCII,所以我们需要手动修改本机的地区。具体操作方法是进入控制面板中的区域和语言选项,在标准和格式栏中选择英语(美国),然后进行安装。安装结束后可以再改回中文(简体,中国)。即可使用

AIR

Adobe AIR 应用程序目录文件访问漏洞

在ActionScript 3.0参考的FileStream条目中,标明了当文件位置位于应用程序目录中,并将fileMode参数设置为“追加”、“更新”或“写入”模式时,FileStream对象的open和openAsync方法会抛出SecurityError异常。亦即AIR程序是没有权限修改应用程序目录中的文件的。应用程序的配置文件则推荐存储于File.applicationStorageDirectory文件夹中。测试后发现,其判断文件位置是否位于应用程序目录中的算法是判断File对象是否是File.applicationDirectory对象的resolvePath方法返回的值,而不是进行nativePath的判断,所以可以通过nativePath的导出再导入的方式突破这个限制。具体来说就是 var f:File = File.applicationDirectory.resolvePath("hello.world").nativePath; var s:FileStream = new FileStream(); s.open(f, FileMode.WRITE); s.close(); 这个过程会在open一行抛出SecurityError异常。

Windows

USB 设备全部失效的解决方案。

Windows XP,USB插什么都无法识别,但是有反应,本来应该是“咚哒”的声音变成了响三声“咚咚咚”。查看设备管理器后发现通用串行总线控制器的下属设备全部是感叹号(无法启动)的状态。详细的错误信息是“由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个硬件设备(代码 19)”。解决方案是展开注册表中的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class目录,下面有很多ClassID的目录,一个一个翻,会有一个右面显示“通用串行总线控制器”的目录。将这个目录中的upperfilter项或lowerfilter项删除。在设备管理器中将通用串行总线控制器下面的所有叹号设备删除,重新扫描硬件设备改动,USB恢复正常。

Java

java7 swing提供以及WinXP提供的所有界面皮肤预览。

import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.UIManager.LookAndFeelInfo; @SuppressWarnings("serial") public class LookAndFeelDemo extends JFrame implements ActionListener { private static class LookAndFeelApplication { private LookAndFeelInfo lookAndFeelInfo; private LookAndFeelApplication(LookAndFeelInfo lookAndFeelInfo) { this.lookAndFeelInfo = lookAndFeelInfo; } public static LookAndFeelApplication[] getInstalledLookAndFeelApplications(

JavaFX

用 JavaFX 1.X SDK + Eclipse JavaFX 构建 JavaFX 编译环境。

Eclipse用的3.8M1,在eclipse官网找最新版下载。 JavaFX SDK用的1.X,最新版本在http://www.oracle.com/technetwork/java/javafx/downloads/previous-jsp-137062.html下载,JavaFX 2.0 beta目前似乎在eclipse上还没有对应的插件。 SDK装好后,做一个改动,在SDK安装目录下有一个timestamp文件,中间有一行开头是 Product: javafx-1.XXX 改成 Product: javafx-1.2.1 即可在Eclipse中使用。 Eclipse JavaFX插件用Eclipse的自动安装,地址是http://javafx.com/downloads/eclipse-plugin/。 安装好后需要重启Eclipse,之后在Window->Preferences-&

Java

Java 内部类的 this 问题

在一个风和日丽的下午,码农A写了一个可以获取数据的组件,代码是这样的: package net.gerhut.example.authora; public class Component { public void getData() { System.out.println("Transferring data..."); }; } 码农B负责整个系统开发,使用码农A设计的组件,认为码农A的获取数据应该有个回调函数,就给它加了一个回调函数,代码是这样的: package net.gerhut.example.authorb; import net.gerhut.example.authora.Component; public class MainSystem { private Component component; private

浏览器

新一代网页弹出窗口系统与弹出窗口拦截系统。

随着浏览器的发展,弹出窗口与弹出窗口拦截的斗争一直没有停息过。在Html5时代,各大浏览器厂商已经基本成功拦截了通过页面脚本进行弹出窗口的操作。但是广告商们并不罢休,它们从浏览器插件下手,总结出了一套新一代的反弹出窗口拦截的系统。 目前,比较流行的浏览器插件主要是Adobe的Flash和Microsoft的SilverLight。此外还有Oracle的老式JavaApplet和新一代的JavaFX。JavaFX目前发展商不成熟,所以反弹出窗口拦截的系统主要架设在了前三者上。而目前的主流浏览器对三者的弹出窗口拦截表现如何呢?我做了一个测试页面,点击可以进入测试。此页面采用了三种技术(Applet, Flash, SilverLight)分别弹出一个窗口,看看你的浏览器能够拦截几个。目前我这里看来是Applet的窗口很难被拦截,其它的窗口大多可以正确拦截。

SQL

老坑重填,SQL LIKE通配符在不同数据库系统中的差别。

首先说说遇到的问题,在Access软件中写了一个带LIKE的SQL语句,可以正常执行,但是复制粘贴到ADO操作里面就出错了。其原因是这样的:如果ADO所采用的数据库引擎是Microsoft Jet Engine,它是以Microsoft SQL Server为基础的,所以即使使用Access数据库作为数据源,也不能使用Access的SQL语法,而要采用SQL Server的语法,而它们的语法虽然很相像,但是还是有一些小区别,如LIKE语句。这是少数不能在本地测试SQL运行结果的情况之一。一个简单的解决方案是在服务器条件允许的情况下采用Access OLE DB Provider作为数据库引擎。 下面总结一下常见数据库系统LIKE子句匹配符的异同点: 匹配单个字符和零到多个字符的两种基本匹配符。 My SQL中使用_匹配单个字符,%匹配零到多个字符。 SQLite中使用_匹配单个字符,%匹配零到多个字符。 Oracle中使用_匹配单个字符,%匹配零到多个字符。 MS SQL中使用_匹配单个字符,%匹配零到多个字符。 Access中分为两种情况: Microsoft Jet引擎中使用_或?匹配单个字符,

Java

从 JDK 中记设计模式

按字母排序,尽量找哪些简单的J2SE的实现。 Abstract Factory:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 例子:java.util.Calendar#getInstance(TimeZone) 提供一个时区参数即可从Calendar中创建需要的Calendar类的子类,而无需指定甚至知道它到底是哪个类调用的是哪个类的构造方法。 Adapter:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 例子:java.io.InputStreamReader(InputStream) 可以将任何InputStream类(如文本流,网络流,内存流)的接口(InputStream)转换成用户希望的Reader抽象类(接口)(InputStreamReader)。可以使得那些原本不兼容Stream但是接受Reader而的组件可以正常工作。 Bridge:将抽象部分与它的实现部分分离,使它们都可以独立地变化。 例子:java.awt.Button 按钮显示成什么样子(抽象部分)根据运行的系统来决定,点击按钮的行为(实现部分)

J2ME

J2ME 中关于 Date 对象的操作

日期时间操作是J2me开发中的一个重点,然而J2me发展到现在,鉴于设备性能的局限性,其Date对象一直是Java 3版本下的简易版本,仅仅提供一个Date对象和uint类型的转换工作以及获取当前时间,其他的格式化等功能完全没有提供。翻了一下API可知,Java 3将Data对象的一些字段操作写在了java.util.Calendar包。 使用Calendar对象操作Date对象主要分为以下三步: 首先要指定时区,但是在模拟器上测试时只能支持+0时区的,实机未测试,一般使用不带参数的getInstance静态方法获取一个Calendar的实例。 其次是使用setDate实例方法传入一个已知的Date对象,如果获取的是当前时间的信息可以省略这一步,不必使用setDate(new Date())获取当前时间。在第一步getInstance之后其内部存储的Date值就是当前时间。 之后就可以使用get和set方法对Date对象的某些字段进行操作,在Calendar类中声明了许多用于作为字段名的常量,如YEAR、MONTH、DATE、DAY_OF_WEEK、HOUR_OF_DAY、HOUR、AM_PM、MINUTE、SECOND,以及MILLISECOND等。使用这些字段时要注意以下几点: MONTH的返回值范围是0-11,

Flex

《Flex4权威指南》毕

和《Flex3权威指南》一样,全书又是贯穿着FlexGrocer这个项目,但是书上的版本是以Flex4.0为SDK的,现在已经出到了Flex4.5.1。所以照着书上的写完了之后又照着Flex4.5.1的文档改成了新的版本。 最终版本是http://gerhut.net/flexgrocer/。 《Flex4权威指南》与《Flex3权威指南》相比,着重讲解了Spark组件的前后台分离功能,这也是Flex4的主要亮点。删除了许多与服务器通信的内容。同时也删除了有关动画的内容,这一块还没有看文档,估计Flex4相对Flex3没有更新动画相关内容。 Flex4是一个过渡性的版本,整个版本的目标就是将Flex的旧的古老的Halo组件逐渐的升级为Spark组件。Halo组件虽然发展很成熟,但是它没有完全做到显示与实现相分离。而Spark组件就完全的做到了显示与实现的相分离。具体的来说,在后台的ActionScript端,只需要声明该组件需要几个子组件以及几个状态;前台MXML端根据后台需求将它们安放在合理的位置并指定样式,即完成一个组件的设计工作。而且,对其内部控件的样式设计可以直接建立在其原有样式代码的基础上。换句话说,可以名正言顺的修改系统自带的组件的任何部分使其符合整体的设计要求。 Halo与Spark组件在MXML中的另一个显著区别是对State的描述更加人性化。Halo的State记录的是变更。Spark的State直接限制组件的存在和属性。 鉴于Spark组件在皮肤设计能力的较大提升,

ASP

网络爬虫习作 PG wiki 资料抽出器

http://gerhut.net/pokedata 每次调取页面都是从PGwiki上读取即时内容然后自动抽取出内容整理出来的。 应该是理论上看到同样内容下耗费流量最低值了,适合流量限制的终端使用。 核心抽取代码: function loadPage(url) { var req = Server.CreateObject("MSXML2.XMLHTTP"); req.open("GET", url, false); req.send(); if(req.readyState != 4) return "ReadyState=" + req.readyState; if(req.status != 200) return "

J2ME

EclipseME + J2ME WTK + Antenna Jar搭配J2ME环境成功

Eclipse用的3.8M1,在eclipse官网找最新版下载。 EclipseME用Eclipse的自动安装,地址是http://eclipseme.org/updates/。 J2ME WTK要下载http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javame-419430.html#sun_java_wireless_toolkit-2.5.2_01b-oth-JPR的版本,从3.0开始Sun内置了NetBeans的IDE,且不再主动兼容Eclipse。 Antenna去http://antenna.sourceforge.net/下一个最新的存到WTK的安装目录即可。 设置Eclipse,在JavaME页面下设置Antenna JAR的地址为第四步存的jar,设置WTK Root为第三步的安装目录。 设置JavaME下的Device Management,Import,目录下写安装目录然后Refresh,扫到了四个Device,

Windows

屏蔽 Flashget 的右下角广告

网上给了一个办法似乎对新版快车不起作用了。事实上开广告的时候打开任务管理器会发现有一个名字长长的都不带藏着掖着的进程叫FlashGetAdProcess.exe。所以干掉它就可以了。删掉或者改名的话快车启动失败,所以得采取一点瞒天过海的策略。 Flashget启动时会检查FlashGetAdProcess.exe这个文件及其内容。所以限制它的读取权限,甚至构造一个和它一样大的同名文件都会启动失败。所以对权限的限制还要再精细一点才能蒙混过关。 具体方法如下: 右击FlashGetAdProcess.exe选择属性 点击安全选项卡 点击高级按钮打开高级安全设置。 点击添加打开选择用户或组 在输入要选择的对象名称中输入自己的用户名 点击检查名称,此时输入的内容会变成计算机名\用户名的格式 点击确定。 在遍历文件夹/运行文件的拒绝列中打勾 一路确定下来,就搞定了。 此时Flashget可以正常运行,但是右下角的广告已经不会再出现了。 我现在用的是XP,其他版本估计大同小异,总之就是采取允许读取但是禁止运行的权限设置就搞定了。 今天的废话结束了,该睡觉了。

Flash

只有仅限于文件系统的 SWF 文件和可信的本地 SWF 文件可以访问本地资源

自从Flash8以后,为了安全考虑,本地SWF文件是不能访问其他资源的。但是有两个例外,即“仅限于文件系统的 SWF 文件”和“可信的本地 SWF 文件”,下面我们分别讨论这两个例外。 解决方案一:Flex编译参数增加-use-network=false或Flash输出选项Access local files only 确保Flex程序不能访问网络连接。即”仅限于文件系统的 SWF 文件“。此时SWF文件只能在本地运行。此方法通常适用于本机运行的一些SWF程序,如CD的autorun文件。缺点是传到网上不能运行,也不能在本地访问网上的东西。即本地网络相隔离。 解决方案二、在%windir%/System32/Macromed/Flash/FlashPlayerTrust(对单用户是Application Data\Macromedia\Flash Player\#Security\FlashPlayerTrust)