D盘

workspace
posts - 165, comments - 53, trackbacks - 0, articles - 0
  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

[推荐]Shadow Security Software

      
      Safety-lab,俄罗斯很NB的一家网络安全的公司,其产品可以说非常的专业,一共有四个NB软件产品,分别为:Shadow Security Scanner;Shadow Database Scanner ;Shadow Web Analyzer;Shadow IM Sniffer。
      该公司的官方网站:http://www.safety-lab.com/en/index.htm
      下面我分别为大家介绍

      Shadow Security Scanner
      来自俄罗斯的老牌安全扫描软件。这是一款非常专业的安全漏洞扫描软件,功能非常强大,老毛子的东西还是很NB的,能扫描服务器各种漏洞,包括很多漏洞扫描、账号扫描、DOS扫描...而且漏洞数据可以随时在线更新。
      SSS(Shadow Security Scanner)在安全扫描市场中享有速度最快,功效最好的盛名,其功能远远超过了其它众多的扫描分析工具。
      - 可以对很大范围内的系统漏洞进行安全、高效、可靠的安全检测,对系统全部扫面之后,
      - 可以对收集的信息进行分析,发现系统设置中容易被攻击的地方和可能的错误,得出对发现问题的可能的解决方法。
      - 使用了完整的系统安全分析算法 - intellectual core(智能核心),该算法已经申请了专利。
      - 其系统扫描的速度和精度足以让你敢和专业的安全机构和那些想侵入你网络的黑客叫板。
      - 不仅可以扫描Windows系列平台,而且还可以应用在UNIX及Linux、FreeBSD、OpenBSD、Net BSD、Solaris等。
      - 由于采用了独特的架构,SSS是世界上唯一的可以检测出思科,惠普及其它网络设备错误的软件,而且它在所有的商用软件中还是唯一能在每个系统中跟踪超过4000个审核的软件。
      目前软件版本为:V7.111 Build 225
      具体信息参见:http://www.safety-lab.com/en/products/securityscanner.htm
      下载地址:http://www.safety-lab.com/SSS.exe
                     http://mirror1.safety-lab.com/SSS.exe

      Shadow Database Scanner
      非常专业的安全漏洞扫描软件,能扫描数据库各种漏洞。功能非常强大,是数据库人员必备软件之一。
      可以支持如下数据库类型:MSSql, oracle, IBMDB2, MiniSql, MySQL, Sybase, SAP DB and Lotus Domino。
      详细的信息参见:http://www.safety-lab.com/en/products/6.htm
      目前软件版本为:V7.75
      下载地址为:http://www.safety-lab.com/SDS.exe
                        http://mirror1.safety-lab.com/SDS.exe

posted @ 2008-05-05 09:26 巴西木 阅读(204) | 评论 (0)编辑 收藏

4.3.3二进制数据类型
     1、BINARY
BINARY数据类型用于存储二进制数据。其定义形式为BINARY(n),n表示数据的长度,取值为1到8000。在使用时必须指定BINARY类型数据的大小,至少应为1个字节。BINARY类型数据占用n+4个字节的存储空间。在输入数据时必须在数据前加上字符“0X”作为二进制标识,如:要输入“abc”则应输入“0xabc”。若输入的数据过长将会截掉其超出部分。若输入的数据位数为奇数,则会在起始符号“0X”后添加一个0,如上述的“0xabc”会被系统自动变为“0x0abc”。
     2、VARBINARY
VARBINARY数据类型的定义形式为VARBINARY(n)。它与BINARY类型相似,n的取值也为1到8000,若输入的数据过长,将会截掉其超出部分。不同的是VARBINARY数据类型具有变动长度的特性,因为VARBINARY数据类型的存储长度为实际数值长度+4个字节。当BINARY数据类型允许NULL值时,将被视为VARBINARY数据类型。
一般情况下,由于BINARY数据类型长度固定,因此它比VARBINARY类型的处理速度快。


    BIT:BIT数据类型占用1个字节的存储空间,其值为0或1。如果输入0或1以外的值,将被视为1。BIT类型不能定义为NULL值(所谓NULL值是指空值或无意义的值)。

4.3.6文本和图形数据类型
    这类数据类型用于存储大量的字符或二进制数据。
     1、TEXT
TEXT数据类型用于存储大量文本数据,其容量理论上为1到2的31次方-1(2,147,483,647)个字节,在实际应用时需要视硬盘的存储空间而定。
SQLServer2000以前的版本中,数据库中一个TEXT对象存储的实际上是一个指针,它指向一个个以8KB(8192个字节)为单位的数据页(DataPage)。这些数据页是动态增加并被逻辑链接起来的。在SQLServer2000中,则将TEXT和IMAGE类型的数据直接存放到表的数据行中,而不是存放到不同的数据页中。这就减少了用于存储TEXT和IMA-GE类型的空间,并相应减少了磁盘处理这类数据的I/O数量。
    2NTEXT
NTEXT数据类型与TEXT.类型相似不同的,是NTEXT类型采用UNICODE标准字符集(CharacterSet),因此其理论容量为230-1(1,073,741,823)个字节。
    3IMAGE
IMAGE数据类型用于存储大量的二进制数据BinaryData。其理论容量为2的31次方-1(2,147,483,647)个字节。其存储数据的模式与TEXT数据类型相同。通常用来存储图形等OLEObjectLinkingandEmbedding,对象连接和嵌入)对象。在输入数据时同BINARY数据类型一样,必须在数据前加上字符“0X”作为二进制标识


还有更多请参考:
http://blog.csdn.net/zgqtxwd/archive/2008/04/26/2331147.aspx

posted @ 2008-05-03 18:47 巴西木 阅读(176) | 评论 (0)编辑 收藏

winXP中安装SqlServer2000出现有挂起安装程序;

1) XP中只能安装SqlServer2000的个人版;
2) 安装过程中弹出窗口提示有挂起的安装程序时:
a、在开始->运行中输入regedit;
b、到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 位置;
c、在右边窗口右击PendingFileRenameOperations,选择删除,然后确认;
3) 安装完基本的SqlServer2000组件后,还必须安装SP4/3才能使连接正常工作;
4) 以上方法对SqlServer SP3/4的安装也同样适合;

P.S. 安装时,服务帐号可使用本地系统帐户,身份验证模式可使用混合模式

posted @ 2008-05-03 15:16 巴西木 阅读(289) | 评论 (0)编辑 收藏

Ethereal简介
Ethereal是一个开放源码的网络分析系统,也是是目前最好的开放源码的网络协议分析器,支持Linux和windows平台。Ethereal起初由Gerald Combs开发,随后由一个松散的etheral团队组织进行维护开发。它目前所提供的强大的协议分析功能完全可以媲美商业的网络分析系统,自从1998年发布最早的0.2版本至今,大量的志愿者为ethereal添加新的协议解析器,如今ethereal已经支持五百多种协议解析。很难想象如此多的人开发的代码可以很好的融入系统中;并且在系统中加入一个新的协议解析器很简单,一个不了解系统的结构的新手也可以根据留出的接口进行自己的协议开发。这都归功于ehereal良好的设计结构。事实上由于网络上各种协议种类繁多,各种新的协议层出不穷。一个好的协议分析器必需有很好的可扩展性和结构。这样才能适应网络发展的需要不断加入新的协议解析器。   Ethereal的捕包平台
网络分析系统首先依赖于一套捕捉网络数据包的函数库。这套函数库工作在在网络分析系统模块的最底层。作用是从网卡取得数据包或者根据过滤规则取出数据包的子集,再转交给上层分析模块。从协议上说,这套函数库将一个数据包从链路层接收,至少将其还原至传输层以上,以供上层分析。
在Linux系统中, 1992年Lawrence Berkeley Lab的Steven McCanne和Van Jacobson提出了包过滤器的一种的实现,BPF(BSD Packet Filter)。Libpcap是一个基于BPF的开放源码的捕包函数库。现有的大部分Linux捕包系统都是基于这套函数库或者是在它基础上做一些针对性的改进
在window系统中,意大利人Fulvio Risso和Loris Degioanni提出并实现了Winpcap函数库,作者称之为NPF。由于NPF的主要思想就是来源于BPF,它的设计目标就是为windows
系统提供一个功能强大的开发式数据包捕获平台,希望在Linux系统中的网络分析工具经过简单编译以后也可以移植到windows中,因此这两种捕包架构是非常现实的。就实现来说提供的函数调用接口也是一致的。
   ethereal网络分析系统也需要一个底层的抓包平台,在Linux中是采用Libpcap函数库抓包,在windows系统中采用winpcap函数库抓包
层次化的数据包协议分析方法
取得捕包函数捕回的数据包后就需要进行协议分析和协议还原工作了。由于OSI的7层协议模型,协议数据是从上到下封装后发送的。对于协议分析需要从下至上进行。首先对网络层的协议识别后进行组包还原然后脱去网络层协议头。将里面的数据交给传输层分析,这样一直进行下去直到应用层
     Ip
     |  \
   Tcp  udp
    |    \
  HTTP   TFTP
由于网络协议种类很多,就ethereal所识别的500多种协议来说,为了使协议和协议间层次关系明显。从而对数据流里的各个层次的协议能够逐层处理。Ethereal系统采用了协议树的方式。上图就是一个简单的协议树。如果协议A的所有数据都是封装在协议B里的,那么这个协议A就是协议B是另外一个协议的儿子节点。我们将最低层的无结构数据流作为根接点。那么具有相同父节点的协议成为兄弟节点。那么这些拥有同样父协议兄弟节点协议如何互相区分了?ethereal系统采用协议的特征字来识别。每个协议会注册自己的特征字。这些特征字给自己的子节点协议提供可以互相区分开来的标识。比如tcp协议的port字段注册后。 Tcp.port=21就可以认为是ftp协议,特征字可以是协议规范定义的任何一个字段。比如ip协议就可以定义proto字段为一个特征字。
在ethereal中注册一个协议解析器首先要指出它的父协议是什么。另外还要指出自己区别于父节点下的兄弟接点协议的特征。比如ftp协议。在ethereal中他的父接点是tcp协议,它的特征就是tcp协议的port字段为21。
这样当一个端口为21的tcp数据流来到时。首先由tcp协议注册的解析模块处理,处理完之后通过查找协议树找到自己协议下面的子协议,判断应该由那个子协议来执行,找到正确的子协议后,就转交给ftp注册的解析模块处理。这样由根节点开始一层层解析下去。
由于采用了协议树加特征字的设计,这个系统在协议解析上由了很强的扩展性,增加一个协议解析器只需要将解析函数挂到协议树的相应节点上即可。
 

 原文地址 185.html


〔转〕编译Ethereal On Windows - [技术前沿]

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://bigwhite.blogbus.com/logs/4167864.html


原始出处:http://bigwhite.blogbus.com/logs/4167864.html
作者:Tony Bai

最近在研究项目下一期中新增的信令跟踪功能,在这个开源盛行的时代,开源工具当然是首选。我们发现了Ethereal,一款强大的网络分析工具包。我们不仅仅要使用Ethereal,而是在Ethereal上做二次开发,增加一个新dissector或者一个plugin,用来分析我们自己的应用层协议。

之所以选择Ethereal还有一个很重要的原因就是它已经支持300多个协议包了,这说明Ethereal的框架已经很成熟了,在其上面做二次开发具备可行性。我们最终要形成的成果物可能要运行在Solaris上,但是家里的服务器环境都是没有显示终端的,也看不到运行画面,所以我决定现在Windows上作开发,然后移植到Solaris上。Ethereal底层的图形接口采用的是GTK,GTK是一种可在跨平台的图形界面开发包,它屏蔽了不同OS的底层细节,便于我们的程序在各个OS平台上移植。由于GTK的使用,我才觉得我的开发方案是正确的:)。另外开发一个新的dissector涉及到的代码都应该是可移植的,所需的接口Ethereal都已经提供了,调用即可。所以我在想在Windows上开发成功后,拿到Solaris下重新编译后是应该能正确运行的,有些过于理想了^_^。

目前第一步工作就是先在Windows上编译Ethereal包,通过浏览Ethereal的Developer's Guide和网上的一些资料得知,编译Ethereal并非易事呀,因为Ethereal依赖很多开源包以及一些其他工具(如Cygwin等)。虽然Ethereal提供的自动化构建脚本会自动下载依赖包,但是大多时候都会下载失败,我在公司的网络和家里的网络都尝试过,无一成功,无奈之中只好手工下载。依赖的开源工具包在Readme.win32中有列出。

(一)首先我们需要一个编译器,一般在Windows上编译Ethereal用的都是VC6.0的编译器,切记在装完VC6.0后运行一下vcvars32.bat,设置一下环境变量,一般VC的安装向导程序在最后一步都会提示你是否设置环境变量的,你同意即可。

(二)其次,编译Ethereal需要Cygwin这个工具,Cygwin呢,我在机器上早已经安装过了,我一直用它在Windows下写一些Unix下的小测试程序的。不过我当时安装的时候没有把所有的包都选择上,导致我还得重新运行Cygwin的Setup.exe程序。那么如何检查你的Cygwin中缺少哪些软件包呢,可以按照如下步骤来检查:
1. 将cygwin的bin目录作为环境变量加入到系统环境变量path中;
2. 在Windows命令提示符窗口下进入到Ethereal的源码包目录下,找到config.nmake文件,修改ETHEREAL_LIBS=C:\ethereal-win32-libs
   CYGWIN_PATH=c:\cygwin\bin;
3. 在Windows命令提示符窗口下运行:nmake -f Makefile.nmake verify_tools
如果有工具包没有装全,我们会从该命令的执行结果中看到的,比如我在运行该命令之后的输出结果为:
Microsoft (R) Program Maintenance Utility   Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.

Checking for required applications:
        cl: /cygdrive/d/Program Files/Microsoft Visual Studio/VC98/bin/cl
        link: /cygdrive/d/Program Files/Microsoft Visual Studio/VC98/bin/link
        nmake: /cygdrive/d/Program Files/Microsoft Visual Studio/VC98/bin/nmake

        bash: /usr/bin/bash
        bison: /usr/bin/bison

ERROR: Can't find flex. This is probably an optional cygwin package not yet inst
alled. Try to install it using cygwin's setup.exe!

NMAKE : fatal error U1077: 'bash' : return code '0x1'
Stop.

可以看出flex这个工具包没有安装,还好找到一个很好的cygwin各种包的下载站点xmission,速度很快,缺少什么就上去下载,然后到cygwin的根目录'/'下,
bzip2 -d xx.tar.bz2
tar xvf xx.tar即可。
反复执行上面步骤直到运行verify_tools顺利通过为止。

下面是verify_tools运行通过的输出结果:
D:\Ethereal\ethereal-0.99.0>nmake -f Makefile.nmake verify_tools

Microsoft (R) Program Maintenance Utility   Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.

Checking for required applications:
        cl: /cygdrive/d/Program Files/Microsoft Visual Studio/VC98/bin/cl
        link: /cygdrive/d/Program Files/Microsoft Visual Studio/VC98/bin/link
        nmake: /cygdrive/d/Program Files/Microsoft Visual Studio/VC98/bin/nmake

        bash: /usr/bin/bash
        bison: /usr/bin/bison
        flex: /usr/bin/flex
        env: /usr/bin/env
        grep: /usr/bin/grep
        /usr/bin/find: /usr/bin/find
        perl: /usr/bin/perl
        env: /usr/bin/env
        python: /usr/bin/python
        sed: /usr/bin/sed
        unzip: /usr/bin/unzip
        wget: /usr/bin/wget

这里有一个小插曲,verify_tools命令使用的应该是cygwin中的bash shell,但是我起初运行verify_tools时始终提示我'which'包找不到,我检查了cygwin,明明'which'包已经安装了,我疑惑的查看了系统环境变量path,终于发现了蛛丝马迹,原来我以前安装过'UnxUtils'软件包,运行verify_tools时用的是该包里的bash shell。把UnxUtil从path中删除,问题解决。

(三)我们要找全编译Ethereal所依赖的包,Readme.win32中也列出了依赖包的列表,以及这些包解压后应该释放到的位置:
必选的:
Package                                Location
    -------                               ----------------
    glib-2.4.7.zip                        C:\ethereal-win32-libs\glib
    glib-dev-2.4.7.zip                    C:\ethereal-win32-libs\glib
    gtk+-1.3.0-20030717.zip               C:\ethereal-win32-libs\gtk+
    gtk+-dev-1.3.0-20030115.zip           C:\ethereal-win32-libs\gtk+
    libiconv-1.9.1.bin.woe32.zip          C:\ethereal-win32-libs\libiconv-1.9.1.bin.woe32
    gettext-runtime-0.13.1.zip            C:\ethereal-win32-libs\gettext-runtime-0.13.1
    net-snmp-5.2.1.2.zip                  C:\ethereal-win32-libs
    wpdpack_3_0.zip                       C:\ethereal-win32-libs

可选的:
Package                                Location
    -------                               ----------------
    adns-1.0-win32-04.zip                 C:\ethereal-win32-libs
    pcre-4.4.zip                          C:\ethereal-win32-libs
    zlib123-dll.zip                       C:\ethereal-win32-libs\zlib123-dll

尽量按照Package的版本下载,否则除了问题很难搞定,这里面除了net-snmp我没有找到5.2.1.2版本,我用了5.2.3替代之外,其余的都可以找到,这里有个站点http://mirror.sg.depaul.edu/pub/security/ethereal/win32/development/,几乎可以下载到上面所有的软件。net-snmp我下载的是源码包,需要先编译一下,记住编译Release版本即可。

(四)最后一步执行:nmake -f Makefile.nmake all
编译过程中的几个问题:
1. 编译过程中经常会中断,很多是因为'can't open the file 'unistd.h''这个头文件,如果出现这样的问题,可以修改出错源文件的代码,将#include <unistd.h>修改为
#ifdef HAVE_UNISTD_H
#include<unistd.h>
#endif
即可。

2. 另外在编译过程中还发现需要lua5.1这个包。
3. 如果你下载的是gtk 1.x的包,你就是用gtk+这个目录,并且需要在config.nmake中注释掉GTK2_DIR=$(ETHEREAL_LIBS)\gtk2这项,我在编译中如果不注释掉该项,始终编译不过去。

编译过程很耗时,也许是我的本本CPU主频低的缘故,这可是考验耐性的活儿呀^_^。

posted @ 2008-04-17 10:31 巴西木 阅读(1273) | 评论 (0)编辑 收藏

我们的一个小程序总是在open session的时候停止响应,而且非常规律得在操作第四次时停止。查阅很多资料,发现下面这篇文章很有启发,摘录如下:


前几天用spring+hibernate+struts写了个增/删/改/查的例子。调试期间问题就来了,当查询结果翻页好几次就没N久没有响应了。最后控制报错。网上查了,它说数据库连接(池)问题。

出现错误如下:

<2007-9-30 下午120303 CST> <Error> <WebLogicServer> <BEA-000337> <ExecuteThread: '13' for queue: 'weblogic.kernel.Default' has been busy for "901" seconds working on the request "Http Request: /admin/school.do", which is more than the configured time (StuckThreadMaxTime) of "600" seconds.>

先说下我配置

1.环境:

spring 2.0.6,hibernate 3.2.3,struts 1.2.9,oracle 10.2,weblogic 8.1.4

jdbc是ojdbc14.jar

2.连接池用DBCP

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">   
    
<property name="driverClassName" value="${jdbc.driverClassName}"/>   
    
<property name="url" value="${jdbc.url}"/>   
    
<property name="username" value="${jdbc.username}"/>   
    
<property name="password" value="${jdbc.password}"/>   
bean>   

3.分页方法(参考springside的),此类继承HibernateDaoSupport
public Page listByPage(Class entityClass, int pageNo, int pageSize, List criterions, List orders) {    
    Criteria criteria 
= createCriteria(entityClass, criterions);    
    CriteriaImpl impl 
= (CriteriaImpl) criteria;    
   
    
// 先把Projection和OrderBy条件取出来,清空两者来执行Count操作    
    Projection projection = impl.getProjection();    
    
//获取总记录数    
    int totalCount = ((Integer) criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();    
   
        
    
if(totalCount < 1) {    
        
return new Page();    
    }    
        
    
//加排序    
    if(orders != null) {    
        
for(int i=0; i 
            criteria.addOrder((Order) orders.get(i));    
        }    
    }    
    
//原来的投影    
    criteria.setProjection(projection);    
    
int startIndex = Page.getStartOfPage(pageNo, pageSize);    
    
//取得结果    
    List list = criteria.setFirstResult(startIndex).setMaxResults(pageSize).list();    
        
    
return new Page(startIndex, totalCount, pageSize, list);    
}    
   
public Criteria createCriteria(Class entityClass, List criterions) {    
    Criteria criteria 
= getSession().createCriteria(entityClass);    
    
if(criterions != null) {    
        
for(int i=0; i 
            criteria.add((Criterion) criterions.get(i));    
        }    
    }    
        
    
return criteria;    
}   

另外,没有用OpenSessionInViewFilter,struts与spring的整合:DelegatingRequestProcessor、action path与bean name同名。

 

翻页不过10次,服务器就没响应了,最后出现上面的错误的了。

刚用weblogic,也刚用ssh套餐。郁闷。

前天解决了。

问题解决,问题的原因是数据库连接耗尽,我用HiberanteDaoSupport的getSession()方法取得Session后没有释放Session。

出问题的代码处(红色部分):

public Criteria createCriteria(Class entityClass, List criterions) {        
    Criteria criteria 
= getSession().createCriteria(entityClass);        
    
if(criterions != null) {        
        
for(int i=0; i     
            criteria.add((Criterion) criterions.get(i));        
        }        
    }        
            
    
return criteria;        
}   

用完Session释放后就没事了,调用HiberanteDaoSupport的releaseSession(session);方法后即可解决。


现在正确的代码:


public Page listByPage(Class entityClass, int pageNo, int pageSize, List criterions, List orders) {    
    Session session 
= getSession();    
    
//创建criteria    
    Criteria criteria = session.createCriteria(entityClass);    
    
//为criteria添加criterions    
    createCriteria(entityClass, criteria, criterions);    
    CriteriaImpl impl 
= (CriteriaImpl) criteria;    
   
    
// 先把Projection和OrderBy条件取出来,清空两者来执行Count操作    
    Projection projection = impl.getProjection();    
    
//获取总记录数    
    int totalCount = ((Integer) criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();    
   
        
    
if(totalCount < 1) {    
        
return new Page();    
    }    
        
    
//加排序    
    if(orders != null) {    
        
for(int i=0; i 
            criteria.addOrder((Order) orders.get(i));    
        }    
    }    
    
//原来的投影    
    criteria.setProjection(projection);    
    
int startIndex = Page.getStartOfPage(pageNo, pageSize);    
    
//取得结果    
    List list = criteria.setFirstResult(startIndex).setMaxResults(pageSize).list();    
    
//释放hiberante资源,一定要释放,要不然就数据库连接耗尽.    
    releaseSession(session);    
    
return new Page(startIndex, totalCount, pageSize, list);    
}    
   
public Criteria createCriteria(Class entityClass, Criteria criteria, List criterions) {    
    
if(criterions != null) {    
        
for(int i=0; i 
            criteria.add((Criterion) criterions.get(i));    
        }    
    }    
        
    
return criteria;    
}   


^_^


chenlb.blogjava.net

posted @ 2008-04-03 17:16 巴西木 阅读(1952) | 评论 (0)编辑 收藏

仅列出标题
共33页: First 20 21 22 23 24 25 26 27 28 Last