[分享]在CMD中使用位运算转换目标数字到二进制数.

发表于

把一个十进制转成2进制的常分规方法是,一直除2求余.

这里介绍另一种方法,

一个把数值转换成二进制数的批处理脚本.

批处理加参数使用.支持把10,16,或8进制数转成二进制,其中16进制以0X开头,8进制以0开头.

@echo off
::来源:        http://chenall.net
SETLOCAL
::初使化变量并检测输入的数字是否合法
::VV最终结果保留值,N从0开始的值

set/A VV=0x7fffffff-%1 || goto :eof
IF %VV% lss 0 (echo.无效数字.目前只支持32位正整数的计算.&goto :eof)
set VV=
SET N=0

::生成二进制数的函数.
:LOOP
:: 原理很简单.通过位运算符"或"对比来确定某位的值.
:: 例子:
:: 9的二进制: 1001
:: 分别和1,2,4,8进行"或运算"确定对应位的值.
:: 其中1,2,4,8,分别对应二进制1,10,100,1000
::
set /a a="(%1|(1<<%N%))-%1"
if %a% GTR %1 goto :完成
if %a% EQU 0 (set VV=1%VV%) ELSE (SET VV=0%VV%)
SET /AN+=1
GOTO :LOOP

:完成
echo.输入的数字:        %1
echo.得到二进制:        %VV%
ENDLOCAL
goto :eof

以上系原创脚本,如有雷同,纯属巧合..

[OpenVPN] OpenVPN简单用户密码验证实例.

发表于

OpenVpn使用用户名和密码验证方法.本例为了方便使用是的批处理.

方法如下.

服务端

  1. 在配置文件中添加如下语句,(如果已经有就修改一下)
     #用于用户名和密码验证,使得可以在变量中取到密码.
      script-security 3 system
      #开启用户密码验证脚本,(脚本文件名author.cmd),使用环境变量的方式验证.
      auth-user-pass-verify author.cmd via-env
    
  2. 产生一个author.cmd文件在配置文件同目录下.
    内容如下.把以下内容另存为author.cmd.

     @echo off
     ::初使化
     set chk_pass=0&set chk_user=0&set chk_active=0
     for /f “skip=2 usebackq tokens=1,2,3 delims=,“ %%i in (`find /i “%username%,“ users`) do (
         if “%%i“==“%username%“ (
             set chk_user=1
             ::再进一步验证用户名和证书用户名,注释掉以下语句就可以了.
             ::if /i not “%username%”==”%common_name%” set chk_user=0
             if /i “%%k“==“1“ set chk_active=1
             if /i “%%j“==“%password%“ set chk_pass=1
         )
     )
    
     ::验证通过,直接返回一个值,0代表验证通过。
     if “%chk_user%%chk_pass%%chk_active%“==“111“ exit /b 0
    
     ::可选验证操作记录,如果不记录,直接删除或注释掉该代码就可以了
     echo.%time%        用户名:%username%        证书用户名:%common_name%验证失败!::::错误代码:%chk_user%,%chk_pass%,%chk_active% >>用户登录.log
    
     ::验证失败,让程序返回一个失败值1.
     exit /b 1
    
  3. 脚本已经弄好了,接下来就是添加用户名和密码文件.上面的脚本指定的用户名和密码文件是存放在一个文件名为users的文件中.
    在配置文件同目录中新建一个USERS文件.内容按以下格式添加.
    使用”,”作为分隔符,格式:用户名,密码,是否启用(1,启用,0,禁用)

     用户,密码,启用
      user1,passowrd1,1
      user2,password2,0
    

客户端

只要在配置文件中添加如下语句开启用户和密码验证即可使用.

auth-user-pass
#可选的语句,一般建议加上,用途,加上以后就不会在内存中保存用户密码.
auth-nocache

[OpenVPN] OpenVPN脚本应用之--简介.

发表于

经过几天的试用,发现OpenVPN的稳定性还是挺不错的,而且功能也很强大,可以丢掉SoftEther了.

OpenVPN,可以在一些特定的情况下自动运行多种脚本,通过这些脚本,可以实现很多非常有用的功能.还可以提高安全性.

例子.

验证证书的时候,tls-verify

用户和密码验证脚本.auth-user-pass-verify

使用好这些脚本,可以实现OpenVPN的统一管理,证书密码,权限之类的.

例举几个比较实用的功能,

  1. 可以通过这些脚本来管理证书.
    一般情况下证书如果丢失了需要吊销(使用REVOKE-full.bat脚本来处理),这样子吊销可能比较麻烦.
    其实通过一些自动运行的脚本同样可以达到这种目的,还可以通过数据库统一管理,在脚本里面自动连接数据库,根据数据库里面的内容来确定这个证书是否充许使用.
    tls-verify cmd

    注:也可以在其它地方验证.(一般情况下还是使用这个来验证.因为这个是每一个小时自动验证一次的,验证通过就保持连接,否则就断开连接)

  2. 使用用户名和密码验证.
    auth-user-pass-verify cmd [via_env|via-file]

    同样的可以通过脚本连接到数据库来管理用户.

  3. 禁止某个IP登录./只充许部份指定的IP进行登录.
    在大部份自动运行的脚本中都可以应用.

  4. 在连接或断开时自动运行.
    up cmd(在连接上以后执行,可以用于处理路由等)
    down-pre cmd (在断开之时执行,)
    down cmd(在断开之后执行)

要注意的是.
在OpenVPN 2.1_rc9.以后的版本中配置文件中要使用如下语句

script-security 2 system(不保存密码在环境变量中)或script-security 3 system(保存密码在环境变量中)

当使用

auth-user-pass-verify cmd via_env

验证密码时,如果script-security 2时就不能验证密码了,需要使用script-security 3

后面SYSTEM参数的作用是,

The method parameter indicates how OpenVPN should call external commands and scripts. Settings for method:

  • execve — (default) Use execve() function on Unix family OSes and CreateProcess() on Windows.
  • system — Use system() function (deprecated and less safe since the external program command line is subject to shell expansion).

如果不加这个参数使用默认的(execve),那在执行脚本时一般情况下只能使用内置命令.

(当然了这个环境也可以说比较安全).可以通过指定路径来运行外部程序,但不一定都是可以运行成功的.

使用SYSTEM参数后,就可以得到一个比较完整的环境

例子.脚本是一个批处理文件.

up test.cmd

test.cmd内容就以下一句话

@set>test.log

使用加SYSTEM参数前后对比生成文件的内容就可以发现其中的区别.
```

[OpenVPN] OpenVPN独立配置文件

发表于

[OpenVPN] OpenVPN 独立配置文件

前言: OpenVPN使用证书连接可以加强安全性但是如果客户端多了要分发证书很不方便,还有如果一个客户端需要连接多个不同的服务器,一般情况下证书文件都使用默认的文件名

例子对于CA根证书一般使用如下语句:

ca ca.crt

由于不同的服务器需要的证书是不一样的,所以只能改名这样一来也很麻烦

OpenVPN 2.1 版新增功能,可以把证书文件等内置到配置文件中(Inline files)

需要 OpenVPN 2.1-beta7 以上的版本才支持..!!!

[分享] WINDOWS OpenVPN安装实战

发表于

利用OpenVPN实现虚拟网实战.之前一直使用SOFTETHER,因为它配置简单,使用方便.而且它也支持RIP协议,方便自动配置路由.SOFTETHER可以从这里下载,

http://www.onlinedown.net/soft/34495.htm

现在由于SOFTETHER 已经不支持VISTA之类的系统了,所以想寻找一个替代品.OpenVpn 之前也有尝试过,可能是当时还不懂配置或是什么其它的原因,发现它不支持RIP路由协议.而且配置也不方便所以就没有使用了.

最近又尝试了一下,发现它支持RIP和OSPF路由协议了,这里记录一下安装过程,供有需要的人参考.

需要准备的软件OpenVpn可以从它的主页下载.http://openvpn.net/index.php/downloads.html

本文是使用2.1RC15版配置的.其它版本应该差不多.

[原创]网易邮箱通用自动登录批处理脚本[2010-05-23更新]

发表于

网易邮箱自动登录批处理脚本.具体请看里面的使用说明.

可以自动登录网易邮箱.批处理调用.

使用方法:

  • 直接在批处理里面输入用户名和密码.
  • 使用命令行方加参数启动.第一个参数为用户名和邮箱名,第二个参数为密码
  • 直接在本批处理中使用call :登录网易邮箱 邮箱地址 密码
    具体见下面的例子
    例子: call mail.cmd “mymail@163.com” “mypass”
    用户名是mymail@163.com密码是mypass登录到163邮箱

代码

把以下代码另存为一个批处理文件比如mail.cmd就可以使用了.

@echo off 
::网易邮箱自动登录批处理.===http://chenall.net=======chenall=================== 
::        使用方法. 
::                1,直接在批处理里面输入用户名和密码. 
::                2.使用命令行方加参数启动.第一个参数为用户名和邮箱名,第二个参数为密码
::                3.直接在本批处理中使用call :登录网易邮箱 邮箱地址 密码
::                  具体见下面的例子
::        例子: call mail.cmd "mymail@163.com" "mypass" 
::                用户名是mymail@163.com密码是mypass登录到163邮箱 
:: 
::用户名后面需要加邮箱后辍。如mymail@126.com(登录126邮箱) 或mymail@163.com(登录163邮箱) 
:: 
::如转载请保留完整出处!  http://chenall.net/2009/05/mail/
:: 最后修改日期 2010-05-23.

if not "%~2"=="" goto :登录网易邮箱
::直接在本批处理中使用call批量登录方法,按照下面的方法添加语句在本注释之后goto :eof之前就可以了
::call :登录网易邮箱 mymail@163.com my163pass
::call :登录网易邮箱 mymail@126.com my26pass

goto :eof

:登录网易邮箱
set "user=%1" 
set "pass=%2" 
if not defined user goto :eof 
if not defined pass goto :eof
::过滤用户名密码中的引号 
set user=%user:"=%&set pass=%pass:"=% 
setlocal enabledelayedexpansion 
::修改密码中出现的#和&,否则会登录不了 
set "pass=!pass:#=%%23!"
set "pass=!pass:&=%%26!"
endlocal&set "pass=%pass%" 
set user=%user: =% 
set pass=%pass: =% 
setlocal
for /f "tokens=1,2 delims=@" %%i in ("%user%") do ( 
    if /i "%%~nj"=="163" set "login.action=https://reg.163.com/logins.jsp?type=1&product=mail163&url=http://entry.mail.163.com/coremail/fcg/ntesdoor2?lightweight%3D1%26verifycookie%3D1%26language%3D-1%26style%3D" 
    if /i "%%~nj"=="126" set "login.action=https://reg.163.com/logins.jsp?type=1&product=mail126&url=http://entry.mail.126.com/cgi/ntesdoor?hid%3D10010102%26lightweight%3D1%26verifycookie%3D1%26language%3D0%26style%3D" 
    if /i "%%~nj"=="yeah" set "login.action=https://reg.163.com/logins.jsp?type=1&product=mailyeah&url=http://entry.mail.yeah.net/cgi/ntesdoor?lightweight%3D1%26verifycookie%3D1%26style%3D" 
    if /i "%%~nj"=="netease" set "login.action=https://reg.163.com/logins.jsp?type=1&url=http://entry.yeah.net/cgi/ntesdoor?lightweight%3D1%26verifycookie%3D1%26style%3D-1" 
    echo.正在自动登录%USER%的邮箱%%j……
) 
start "正在自动登录中" "%login.action%&username=%user%&password=%pass%" 
endlocal
goto :eof

[转] DropBox的版本控制功能

发表于

经过一段时间的试用,喜欢上了dropbox(虽然速度有点慢).版本控制功能也很好用.可以无所顾忌的删除修改文件了.大不了就还原一下.
由于是采用版本控制,所以同步时它并不是整个文件上传的而是diff方式,也就是只传不同的部份.这样上传快了很多.(不知会不会有什么后遗问题,^_^)

在几台需要同步的电脑装上dropbox就可以后台自动实时同步,也不用担心版本问题.

另外个人认为还是使用可移动版的dropbox比较方便..
可移动版的dropbox可以在这里下到.(需要有dropbox帐户)或以下地址.

http://dl.getdropbox.com/u/50461/DropboxPortable/DropboxPortable%200.6.507.zip(Windows only)

来源: http://www.netbusy.cn/roy/post/dropboxbb.html

[分享]影子系统 POWERSHADOW 2.6免费版 精简版 for 2k,xp,2003

发表于

软件主页: http://www.powershadow.com

【软件介绍】:


好消息:
PowerShadow目前免费发放给中国用户使用。


PowerShadow构建现有操作系统的虚拟影像,即影子模式(shadow mode),它和真实的系统完全一样,用户可随时选择启用或者退出这个虚拟影像。用户进入影子模式(shadow mode)后,所有操作都是虚拟的,不会对真正的系统产生影响,一切改变将在退出Shadow模式后消失。因此所有的病毒、木马程序、流氓软件都无法侵害真正的操作系统,它们的所有操作都只是假象。

PowerShadow目前免费发放给中国用户使用,注册信息:
用户名:PowerShadow 序列号:VVR29E-R4WCK2-K4T111-V1YHTP-4JYJDD

精简版的内容.

只保留了主要的系统SYS文件.安装时只需要一个SYS文件就可以了.
snpshot.2k对应2000系统.
snpshot.xp对应XP和2003的系统.
Install.cmd安装批处理脚本.(已经按上面的序列号自动注册,安装完成即可使用).

喜欢的可以下载测试.(不带控制台).

http://chenall.ys168.com soft 目录下shadow.rar文件

后注: 建议配合GRUB4DOS启动管理来获取更高的安全选项.使用GRUB4DOS可以让菜单上只显示保护模式,以防止他人随便进入正常模式.自己要使用时通过GRUB4DOS来转换.

vi 编辑器使用指南

发表于

一、Unix编辑器概述

编辑器是使用计算机的重要工具之一,在各种操作系统中,编辑器都是必不可少的部件。Unix及其相似的ix操作系统系列中,为方便各种用户在各个不同的环境中使用,提供了一系列的ex编辑器,包括 ex, edit,ed 和vi.其中ex,edit,ed都是行编辑器,现在已很少有人使用,Unix提供他们的原因是考虑到满足各种用户特别是某些终端用户的需要。

值得庆幸的是,Unix提供了全屏幕的Vi编辑器,这使我们的工作轻松不少。不少DOS用户抱怨Vi编辑器不象DOS下的编辑器如edit那么好用,这是因为Vi考虑到各种用户的需要,没有使用某些通用的编辑键(在各个不同的终端机上他们的定义是不同的,在某些终端机上甚至没有这些键)。而是采用状态切换的方法,但这只是习惯的问题,一旦你熟练的使用上了vi你就会觉得它其实也很好用。虽然 Vi采用了状态切换的方法,但电脑的硬件及操作系统多种多样,某些电脑的键盘上没有特定的几个功能键!那麽不就有某些功能不能用了?这个问题在 Unix 系统上也一样,几乎各大电脑厂商都有自己的Unix 系统,而 vi 的操作方法也会随之有点出入。这里我们采用 PC 的键盘来说明 vi 的操作,但在具体的环境中还要参考相应的资料,这一点是值得注意的。

二、Vi入门

(一)、进入vi

在系统提示字符(如$、#)下敲入vi <档案名称>,vi 可以自动帮你载入所要编辑的文件或是开启一个新文件(如果该文件不存在或缺少文件名)。进入 vi 后萤幕左方会出现波浪符号,凡是列首有该符号就代表此列目前是空的。

(二)、两种模式

如上所述,vi存在两种模式:指令模式和输入模式。在指令模式下输入的按键将做为指令来处理:如输入a,vi即认为是在当前位置插入字符。而在输入模式下,vi则把输入的按键当作插入的字符来处理。指令模式切换到输入模式只需键入相应的输入命令即可(如a,A),而要从输入模式切换到指令模式,则需在输入模式下键入ESC键,如果不晓得现在是处於什麽模式,可以多按几次 [ESC],系统如发出哔哔声就表示已处于指令模式下了。

付:有指令模式进入输入模式的指令:

新增 (append)

a :从光标所在位置後面开始新增资料,光标後的资料随新增资料向後移动。

A: 从光标所在列最後面的地方开始新增资料。

插入 (insert)

i: 从光标所在位置前面开始插入资料,光标後的资料随新增资料向後移动。

I :从光标所在列的第一个非空白字元前面开始插入资料。

开始 (open)

o :在光标所在列下新增一列并进入输入模式。

O: 在光标所在列上方新增一列并进入输入模式。

(三)、退出vi

在指令模式下键入:q,:q!,:wq或:x(注意:号),就会退出vi。其中:wq和:x是存盘退出,而:q是直接退出,如果文件已有新的变化,vi会提示你保存文件而:q命令也会失效,这时你可以用:w命令保存文件后再用:q退出,或用:wq或:x命令退出,如果你不想保存改变后的文件,你就需要用:q!命令,这个命令将不保存文件而直接退出vi。

(四)、基本编辑

配合一般键盘上的功能键,像是方向键、[Insert] 、[Delete] 等等,现在你应该已经可以利用 vi 来编辑文件了。当然 vi 还提供其他许许多多功能让文字的处理更为方便。

何谓编辑?一般认为是文字的新增、修改以及删除,甚至包括文字区块的搬移、复制等等。先这里介绍 vi的如何做删除与修改。(注意:在 vi 的原始观念里,输入跟编辑是两码子事。编辑是在指令模式下操作的,先利用指令移动光标来定位要进行编辑的地方,然後才下指令做编辑。)

删除与修改文件的命令:

x: 删除光标所在字符。

dd :删除光标所在的列。

r :修改光标所在字元,r 後接著要修正的字符。

R: 进入取替换状态,新增文字会覆盖原先文字,直到按 [ESC] 回到指令模式下为止。

s: 删除光标所在字元,并进入输入模式。

S: 删除光标所在的列,并进入输入模式。

其实呢,在PC上根本没有这麽麻烦!输入跟编辑都可以在输入模式下完成。例如要删除字元,直接按[Delete] 不就得了。而插入状态与取代状态可以直接用 [Insert] 切换,犯不著用什麽指令模式的编辑指令。不过就如前面所提到的,这些指令几乎是每台终端机都能用,而不是仅仅在 PC 上。
在指令模式下移动光标的基本指令是 h, j, k, l 。想来各位现在也应该能猜到只要直接用 PC 的方向键就可以了,而且无论在指令模式或输入模式下都可以。多容易不是。
当然 PC 键盘也有不足之处。有个很好用的指令 u 可以恢复被删除的文字,而 U 指令则可以恢复光标所在列的所有改变。这与某些电脑上的 [Undo] 按键功能相同。
三、附件:vi详细指令表
(一)、基本编辑指令:
新增 (append)

a :从光标所在位置後面开始新增资料,光标後的资料随新增资料向後移动。

A: 从光标所在列最後面的地方开始新增资料。

插入 (insert)

i: 从光标所在位置前面开始插入资料,光标後的资料随新增资料向後移动。

I :从光标所在列的第一个非空白字元前面开始插入资料。

开始 (open)

o :在光标所在列下新增一列并进入输入模式。

O: 在光标所在列上方新增一列并进入输入模式。

x: 删除光标所在字符。

dd :删除光标所在的列。

r :修改光标所在字元,r 後接著要修正的字符。

R: 进入取替换状态,新增文字会覆盖原先文字,直到按 [ESC] 回到指令模式下为止。

s: 删除光标所在字元,并进入输入模式。

S: 删除光标所在的列,并进入输入模式。

(二)、光标移动指令:
由於许多编辑工作是藉由光标来定位,所以 vi 提供许多移动光标的方式,这个我们列
几张简表来说明(这些当然是指令模式下的指令):

指令 说明  功能键
0 移动到光标所在列的最前面 [Home]
$  移动到光标所在列的最後面 [End]
[CTRL][d] 向下半页  [PageDown]
[CTRL][f] 向下一页
[CTRL][u] 向上半页
[CTRL][b] 向上一页 [PageUp]

指令 说明
H 移动到视窗的第一列
M 移动到视窗的中间列
L 移动到视窗的最後列
b 移动到下个字的第一个字母
w 移缴细鲎值牡谝桓鲎帜?nbsp; 
e 移动到下个字的最後一个字母
^ 移动到光标所在列的第一个非空白字元

指令 说明 
n- 减号移动到上一列的第一个非空白字元前面加上数字可以指定移动到以上 n 列
n+ 加号移动到下一列的第一个非空白字元前面加上数字可以指定移动到以下 n 列
nG 直接用数字 n 加上大写 G 移动到第 n 列
指令 说明
fx
往右移动到 x 字元上
Fx 往左移动到 x 字元上 
tx 往右移动到 x 字元前
Tx 往左移动到 x 字元前
; 配合 f&t 使用,重复一次
, 配合 f&t 使用,反方向重复一次
/string 往右移动到有 string 的地方
?string 往左移动到有 string 的地方
n  配合 /&? 使用,重复一次
N  配合 /&? 使用,反方向重复一次

指令 说明 备注
n(
左括号移动到句子的