Snort安装IDMEF插件

Snort作为一款开源的入侵检测系统,可以与其它各种网络设备连接协同工作,其中IDMEF插件可以实现设备之间报警信息的共享,在安装该插件时,需要注意以下几个问题:

  1. IDMEF插件依赖于libidmeflibxml2libntp库,所以在安装Snort之前,需要首先安装这三个库。

  2. 配置Snort时,需要加上"--enable-idmef"参数,如下所示:

./configure --enable-idmef
make
make install

入侵检测与响应系统的信息共享

引言

入侵检测系统(IDS)与其它系统(如防火墙)交互过程中,需要遵循一定的规范和协议,然而生产IDS的各个厂家的报警日志及数据格式均有所区别,所以在不同设备之间交互会遇到很多麻烦。早先知道的是CheckPoint提出的OPSec协议和天融信提出的TOPSec协议,凡是遵循这两个协议的网络安全设备均可与相应的IDS进行交互,协同防护网络安全。在2007年,IETF针对这种交互情况形成了四份相关文档,分为三个部分,分别是隧道轮廓(RFC3620 - The TUNNEL Profile)、入侵检测消息交换格式和要求(RFC4765 - IDMEF, RFC4766 - IDMER)、入侵检测交换协议(RFC4767 - IDXP)。

值得注意的是,IETF规定IDS对其它设备交互的方式采用XML格式存储和传输,和SOAP似乎有些相似,XML跨平台跨语言结构清晰等优点使它的应用范围越来越广,几乎达到了无处不用XML的程度。

1 入侵检测消息交互过程

1.1 建立连接

使用IDXP传输数据的入侵检测实体被称为IDXP对等体。对等体只能成对出现,这些对等体通过BEEP会话中的一个或多个BEEP信道进行数据传输。对等体可能是管理器或分析器。

在分析器和管理器之间很可能是多对多的关系。即一个分析器可以和多个管理器通信,同样,一个管理器也可以和多个分析器通信;在不同的管理器之间也可以是多对多的关系。所以,一个管理器可以通过多个中间管理器接收大量的来自分析器的报警信息。但是 …


字符串中单词逆序的实现

在Java中可以用压栈/弹栈的方式:

import java.util.Stack;

public class StackTest {
    public static void main(String argv[]) {
        Stack<String> stack = new Stack<String>();
        for(String s : "I have a round peach".split(" ")) {
            // 按字符串原顺序压栈
            stack.push(s);
        }

        while(!stack.empty()) {
            // 弹栈并输出
            System.out.print(stack.pop() + " ");
        }
    }
}

运行后系统将输出 "peach round a have I "。


正斜杠与反斜杠的分析

正斜杠(左斜杠),符号是"/";反斜杠(右斜杠),符号是"\"。

在Unix/Linux中,路径的分隔采用正斜杠"/",比如"/home/hutaow";而在Windows中,路径分隔采用反斜杠"\",比如"C:\Windows\System"。

有时我们会看到这样的路径写法,"C:\\Windows\\System",也就是用两个反斜杠来分隔路径,这种写法在网络应用或编程中经常看到,事实上,上面这个路径可以用"C:/Windows/System"来代替,不会出错。但是如果写成了"C:\Windows\System",那就可能会出现各种奇怪的错误了。

至于上述问题出现的原因,要从字符串解析这方面来分析。

学过编程的人都应该知道,在C里面,输出字符串时,如果想输出一个换行,那就要加上'\n'这个标志,类似的,输出一个TAB,就加上'\t',也就是说,反斜杠 …


HTC Diamond 两个有意思的功能

这两天一直折腾 HTC Diamond,发现了两个很有意思的功能:

  1. Diamond的手写笔不像其它手机那样有卡槽卡住,而是像有磁铁一样把笔"吸"进去,实际上功能远不止这个。在Diamond关闭屏幕时,拔出手写笔,屏幕会自动亮起,还有比这更神奇的,在打电话时,如果拔出手写笔,Diamond会打开便签,并且便签已经包含了通话对象、时间等信息,方便记录;

  2. Diamond的重力感应不仅用在玩游戏上,来电话时,只要把手机面向下放,就可以关闭铃声(静音)。这避免了在开会等类似场合突然遇到来电手忙脚乱情况的发生。


Xmarks(原Foxmarks)被墙之后更新的方法

最近重新装上Xmarks书签同步之后,发现不能用了,还以为设置出了问题,上官网发现已经上不去了,被GFW屏蔽了。于是上网查找解决办法,总结如下:

1. 手动添加域名解析的地址,即向“C:\Windows\System32\Drivers\etc\hosts"文件中添加如下内容:

# Xmarks
64.147.188.86 www.xmarks.com
64.147.188.92 api.xmarks.com
64.147.188.89 login.xmarks.com
64.147.188.87 sync.xmarks.com
64.147.188.86 …

标记ATL控件为安全控件

用ATL开发网页控件时,IE总会出现“该控件不是安全的”之类的提示,去掉这个提示的方法就是使用 IObjectSafety 将其标记为可安全初始化的控件。

实现方法如下:

首先在需要将 IObjectSafetyImpl 添加到该控件的派生类中,然后在映射列表中添加 IObjectSafety,具体添加的代码如下:

class CHutaow : 
    // 添加到控件的派生类列表中
    public IObjectSafetyImpl<CHutaow, INTERFACESAFE_FOR_UNTRUSTED_CALLER|INTERFACESAFE_FOR_UNTRUSTED_DATA>
    ...
    {
        public:

        BEGIN_COM_MAP(CHutaow)

        COM_INTERFACE_ENTRY(IObjectSafety) //创建IObjectSafety的映射

        ...

        END_COM_MAP()
        ...
    }

PS: 如果出现"'IObjectSafetyImpl' : base class undefined"的错误,则需要添加"atlctl.h"头文件。


SQL语句实现某一字符串的替换

使用update+replace语句:

update table_name set column_name = replace(column_name,hutaow_original_string,'hutaow_new_string);

其中,table_name是表的名字,column_name是要替换数据的列的名字,hutaow_original_string是待替换的原始字符串,hutaow_new_string是新字符串,MySQL下验证成功。


Java中十六进制字符串与字节数组的相互转换

原理很简单,直接贴源代码吧。

/**
 * @author wangtao
 * @version 2008.8.14
 */
public class Util {
    public static char[] hexDigits = 
    {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};

    /**
     * @notes 字节数组转化为字符串
     * @param bytes
     * @return String
     */
    public static String toHexString(byte[] bytes) {
        char[] chars = new char[bytes.length * 2 …

终端下使用代理的方法

很长时间都不知道怎么设置,今天突然发现,设置四个环境变量就行了,"HTTP_PROXY"、"http_proxy"和"FTP_PROXY"、"ftp_proxy",在"~/.bash_profile"中添加以下几行:

export HTTP_PROXY=http://username:password@proxy.server:8080
export FTP_PROXY=http://username:password@proxy.server:8080
export http_proxy=http://username:password@proxy.server:8080
export ftp_proxy=http://username:password@proxy.server:8080

其中,username和password是用户名和密码,用在需要验证的代理服务器上;proxy.server是代理服务器的地址,后面的8080是端口号。

修改保存后重启终端或在执行 …