WScript/VBScript命令行参数使用srvany.exe创建自定义服务

之前写过一篇文章 介绍srvany.exe 这个小工具的,今天有网友反映能否使用命令行方式创建基于srvany.exe的Windows服务,我想到之前编写的 SrvanyUI软件 没有命令参数直接调用的功能,本来想完善一下SrvanyUI这个软件的,苦于最近较忙,于是先用VBScript凑合写着一个命令行控制的脚本 srvany.vbs ,其中用到了 RestartService 子过程来自 Rob van der Woude ,在此表示感谢!

基本的思路很简单,就是先创建srvany.exe为可执行映像的NT系统服务,然后在利用注册表修改其间的配置参数,最后再启动服务。

先把 srvany.vbs 的代码贴在这儿,具体的使用方法稍后附上。

Posted in:
  • VBScript/JavaScript/Python
  • 系统应用程序开发
Tagged
  • wscript
  • 系统工具
  • Windows服务
  • vbscript

解决客户端AJAX脚本失效或禁用导致显示JSON的问题

今天浏览oschina.net的 《网站出bug了??还是被人黑了啊??》 发现的这个问题,发表评论采用了Ajax技术,但是直接提交Ajax没有起作用,导致返回了原本由JavaScript处理的JSON结果,出现这种情况多数是因为页面JavaScript加载失败或者用户禁用了脚本所致,回想到我以前的设计,有个小技巧可以解决这个问题,现与大家分享下:

基本思路就是在Ajax提交前加入自定义的HTTP请求header,然后结果处理页判断是否有这个header,如果有就说明对方是通过Ajax提交的数据,显示JSON结果;如果没有则说明Ajax没有起作用,然后就直接输出用户友好的标准结果页。

Posted in:
  • 前端开发与用户体验
  • 网络编程与数据库
  • Web开发及相关
Tagged
  • 浏览器兼容
  • 用户体验
  • ajax

利用SQL注入获得教育考试院查询中心管理员账户密码

突然想起年初时到某省教育考试院查询考试成绩无意间发现的漏洞,通过漏洞可以获取管理员账号和密码哈希,后来提交到WooYun网站了,过了很长时间没有关注这个事情,今天偶然想起,于是去看看厂商处理得怎么样,当时漏洞提交的地址在 《江苏教育考试院查询中心查询中心管理员账号密码泄露漏洞》 ,看样子厂商早已经修复了,漏洞细节早已经公开,我在这里再叙述一遍留作备忘吧。

漏洞所在URL地址 http://stat.jseea.cn/jseea_query/input.do?catlog=1&database= 21%2Cdb_169 ,通过测试猜测到江苏省教育考试中心查询系统采取分数据库操作,各个数据库的选择通过Query String参数database来实现,其中以 database=21%2Cdb_169 为例,21表示查询模板(用于生成各类表单供用户填写), %2C 表示编码的逗号, db_169 表示数据库名称,上述解码后为 21,db_169 ,当数据库名称不存在时构造SQL语句出现错误,程序崩溃(显示Java错误)可以看到SQL语句:

Posted in:
  • 网络编程与数据库
  • Web开发及相关
Tagged
  • Web安全
  • SQL注入

WScript/VBScript实现ZIP文件的压缩或解压(ZipCompressor)

用了一段时间的Python后,发现VBScript竟然写得不是那么顺手,由于要实现脚本的压缩或者解压,本来觉得用Python来写说不定会方便些,可是想到这个脚本程序主要面对的是非编程人员,总不能要求他们也去安装Python吧,更何况大多数用户对于安装新软件会有抵触情绪。

不过一定要解决这个问题,也不是不可能的,我们可以把Python解释器和库文件打包一起发送给用户,比如可以通过 py2exe 这个实用工具。

好了,扯多了,今天讲的是使用WScript/VBScript来实现这个功能,Windows系统自带WScript/VBScript环境,妥妥的:-)

通常情况下系统会自带有压缩解压工具,最典型的就是makecab命令,以及可以使用其图形化界面iexpress,打开“开始”菜单,在“运行”对话框中输入iexpress,即可打开“IExpress Wizard”。当然配合makecab压缩命令使用的还有expand解压命令,关于这些命令的详细使用网上有很多我就不多说了,这里简单举个例子。

Posted in:
  • VBScript/JavaScript/Python
  • 系统应用程序开发
Tagged
  • vbscript
  • 压缩解压

解决树莓派(Raspberry Pi)安装Raspbian显示器没有反应问题

前段时间看到Raspberry Pi(树莓派)比较火,于是在element14上也购买了一块,512MB内存,700M的ARM CPU,对于我来说512MB内存已经是绰绰有余了,何况我博客还是架在128MB内存的VPS上呢,不过CPU略差一些,编译神马的都明显比较慢,不过这玩意儿可玩性还是不错的。

首先到 官方网站 上下载了Raspbian——基于Debian wheezy专为Raspberry Pi定制的Linux系统,然后在Windows下使用 Win32DiskImager 刻录到新买的Class 10 SD卡上去了,本来由于树莓派仅支持HDMI图像输出,所以商家还推荐HDMI to DVI转接线,我找了下家里的显示器,貌似显示器都是VGA的,于是另外购买了HDMI to VGA的转换线,话说这类转VGA的价格老贵了。

通过转接线直接通电启动树莓派,由于其不带BIOS,所以全靠刻录到SD卡的系统进行引导,我尝试了很多次无奈显示器没有任何输出。

Posted in:
  • 计算机应用及维护
  • Unix/Linux/BSD系统
Tagged
  • Linux
  • debian
  • 单片机
  • RaspberryPi

解决Excel"该工作簿中含有一种既无法被禁用又无法被签署的宏"导致打不开问题

最近单位收发上来的Excel文件包含有一种宏病毒,常常导致较高安全级别的Excel不能正常打开,会提示如下问题:

该工作簿中含有一种既无法被禁用又无法被签署的宏(Microsoft Excel 4.0 版本宏)。因此,该工作簿无法在“高安全级”下打开。如果要打开此工作簿,请单击“工具”菜单上的“宏”,然后单击“安全性”,再单击“安全性”对话框中的“中”。

之前提示同事使用宏病毒专杀工具进行查杀,基本上被识别的病毒都能被正常清理,但是有些提示不是病毒,或者是残留导致出现这种情况,而且我们又不希望调低安全级别(低安全级别往往会导致病毒乘虚而入),即使你被迫运行了宏程序并正常打开了Excel,若这份Excel再发送给其他人,对于高级别安全设置的Excel依旧打不开,给对方也带来了麻烦。

Posted in:
  • 计算机应用及维护
  • Windows系统
Tagged
  • excel
  • 木马病毒

解决virtualenv下安装Python PIL的support not available问题

配置的Debian Web服务器,通过virtualenv构建了Pyramid项目,大部分代码运行挺正常,到一个验证码程序时出错了,检查日志得到如下Python异常:

ImportError: No module named PIL

但是我PIL明明是通过easy_install直接安装的啊,求助于网络找到了这么一篇解决方案 《The problem with installing PIL using virtualenv or buildout》 ,原文的意思是在pypi上的PIL版本不兼容于setuptools,所以不能被easy_install正常安装,必须指定url安装兼容版本,比如如下命令:

pip install --no-index -f http://dist.plone.org/thirdparty/ -U PIL

经过这么一折腾,确实测试下来 import PIL 不会报错了,但是原程序依旧不能正常运行,继续检查日志后得到下面的异常:

ImportError: The _imagingft C module is not installed
Posted in:
  • 计算机应用及维护
  • Unix/Linux/BSD系统
Tagged
  • Linux
  • debian
  • python

Debian环境 Python + Pyramid + Nginx + uWSGI配置备忘

前面我写过一篇文章讲解如何在 Debian环境下配置Python + Django + Nginx + uWSGI + MySQL ,也是具有借鉴意义的,欢迎大家先阅读那篇文章。

nginx安装我就不介绍了,直接apt-get即可。

Python大部分Linux系统里应该预装了,我也不介绍安装了,基本上我们这里需要Python 2.7即可,通过命令 python --version 确认一下默认Python的版本号。

通过命令安装uwsgi:

sudo apt-get update
sudo apt-get install uwsgi uwsgi-plugin-python

注意这个uwsgi-plugin-python是必不可少了,否则uwsgi的log日志会提示 -- unavailable modifier requested: 0 --

好了,下面我们介绍如何安装Pyramid,大家也可以参考Pyramid的官方文档 《Installing Pyramid》 ,我这里再简单的叙述下:

Posted in:
  • 计算机应用及维护
  • Unix/Linux/BSD系统
Tagged
  • nginx
  • Linux
  • debian
  • python
  • uwsgi
  • pyramid

Debian安装PostgreSQL及配置备忘

用惯了MySQL后,想尝试使用下PostgreSQL,据说这玩意儿也很强大,我在网上搜索了下相关中文书籍,可惜相关书籍远远没有MySQL那么多,不过我在官方找到了由志愿者翻译的文档(参考 9.1文档翻译项目 ),说实话我英文文档阅读能力还是比较纠结的,所以有中文文档当然优先中文了。

在Debian下可以通过apt-get命令直接安装:

sudo apt-get install postgresql postgresql-client postgresql-server-dev-all

安装完成后,PostgreSQL默认就创建了名为postgres用户,这个和MySQL的root以及SQL Server的sa账户一样,是超级管理员账户,与MySQL不一样的是,其还创建了postgres的Unix系统账户,和SQL Server的master数据库一样,PostgreSQL的默认数据库是template1,你可以用命令行管理工具psql来管理它,当然前提是要切换到postgres的系统账户:

# su - postgres
$ psql
Posted in:
  • 计算机应用及维护
  • Unix/Linux/BSD系统
Tagged
  • 数据库
  • Linux
  • debian
  • postgresql

Debian下将Subversion(SVN)的svnserve加入启动服务项

前面两篇文章简单的介绍了SVN的使用,其中讲到了如何通过svnserve直接启动SVN服务,但是每次都使用 svnserve -d -r ~/repos 这样的命令还是略显麻烦,尤其是当我们需要停止或者重启svnserve时还要调用kill命令,十分不便,接下来介绍的是如何将其作为系统服务,让其可以被Debian的invoke-rc.d命令管理。

说是系统服务,说白了就是我们需要启动脚本,大家可以到 /etc/init.d 路径下看到一堆启动脚本,比如有我们熟悉的nginx,有了初始脚本(initscript)我们就可以通过update-rc.d创建文件链接的方式将其链入启动级别(runlevel)中去了,同样也可以被invoke-rc.d管理。

你可以随意查阅 /etc/init.d 路径下的某些程序的脚本文件,大体上能知道这类文件的写法,当然今天我不是介绍initscript的写法的,更何况网上已经有现成的脚本可用了,参考文章 《running Subversion's svnserve on a Debian system》 ,我将其脚本修改如下:

Posted in:
  • 计算机应用及维护
  • Unix/Linux/BSD系统
Tagged
  • Linux
  • debian
  • svn
  • Linux服务

© Wang Ye / 王 晔. All rights reserved.