当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 作者:Renaud Deraison(Nessus最主要的编写者,法国人) 翻译:nixe0n 版本:1.0.0pre2 1.简介 1.1.什么是NASL? NASL是一个为网络安全扫描工具Nessus开发的脚本语言。
 

 

 ·50个网络安全工具    »显示摘要«
    摘要:1、 nessus http://www.nessus.org2、 netcat http://www.l0pht.com/~weld/netcat/3、 tcpdump http://www.tcpdump.org4、 snort http://www.snort.org5、 saint http://www.wwdsi.com/saint/6、 ethereal http://ethereal......
 ·腐朽中的腐朽-从研究生说起    »显示摘要«
    摘要:在csdn论坛(http://expert.csdn.net/expert/topic/1487/1487604.xml?temp=.133526)上看到下面这篇文章。作者很诚恳,说的都是切身感受。我相信名副其实的研究生肯定是存在的,不过矫枉必须过正,就来添一点过激的言论:现在的教育制度快要沦落到旧时的科举制度了,都是经世致用之学,旧时是为官,现时是为钱。为钱本身无可厚非,不过如果整个民族的眼睛里......


Nessus安全测试插件编写教程
上一页   ...如果你感觉没有必要接收目标的回应,你可以使用如下调用形式来加速安全测试速度:

【程序编程相关:中小企业服务器配置方案(Modem拨号)

【推荐阅读:中小企业服务器配置方案(Squid代理服

   send_packet(packet,use_pcap:false); 【扩展信息:中小企业服务器配置方案(ISDN拨号)f

  2.5.for与while

  在nasl中也存在for与while两种循环控制,与c语言的几乎完全相同,其语法格式如下:

   for(instruct_start;condition;end_loop_instruction)

    {

     #

     #需要执行的代码

     #

    }

  或者

   for(instruction_start;condition;end_loop_instruction)fuction();

  while的格式:

   while(condition)

    {

     #

     #执行的代码

     #

    }

  或者:

  while(condition)function();

  例如:

   # 显示从1到0

   for(i=1;i〈=10;i=i+1)display("i : ",i,"\n");

   # 显示从1到9以及它们是奇数还是偶数

   for(j=1;j〈=10;j=j+1)

    {

     if (j&1)display(j," is odd\n");

      else display(j," is even\n");

    }

   # 使用while

   i = 0;

   while(i〈10)

    {

     i=i+1;

    }

  2.6.用户定义的函数

  nasl允许用户定义自己的函数.用户可以使用如下的语法定义自己的函数:

   function my_func(argument1,argment2,....)

  用户定义的函数必须使用非匿名(non-anonymous)参数,nasl能够处理递归调用.例如:

   function fact()

    {

     if((n==0)││(n==1))

      return(n);

     else

      return(n*fact(n:n-1));

    }

   display("b! is ",fact(n:5),"\n);

  另外,用户自己定义的函数不能调用其它的用户定义函数(实际上是可以的但是遇到这种情况,nasl解释器会向你发出警告).

  注意:如果你需要让自己的函数返回一个值,需要使用return()函数.因为return()是一个函数,因此需要有括号,下面这种写法就是错误的:

   function func()

    {

     return 1; #这种写法在c语言中是可以的,但是在nasl中不性

    }

  2.7.操作符

  一些标准的c语言操作符也可以用于nasl,包括:+.-.*./与%.目前,nasl还不支持操作符的优先级,但是以后版本将会支持操作符的优先级.另外,nasl也支持c语言的二进制操作符│与&.

  除此之外,nasl还有两个独有的操作符:

  x操作符

  对于某些简单的循环使用for或者while非常不便,而且每次循环还需要对条件进行检查,造成效率的下降.因此nasl引入了一个x操作符来简化某些循环代码.例如:如果你需要发出10次udp报文,使用x操作符,只要下面一行代码就可以了:

   send_packet(udp)x10;

  〉〈操作符

  〉〈操作符是一个布尔型操作符,表示如果一个字符串a包含在另一个字符串b中,就返回真,例如:

   a = "nessus"

   b = "i like nessus";

   if(a〉〈b)

    {

     #结果为真

     display(a " is contained in ",b,"\n");

    }

3.网络相关函数

  3.1.套接字处理

  套接字是使用tcp或者udp协议与其它主机通讯的途径.在nasl中不允许你直接打开一个与测试目标通讯的套接字,因此你只能使用nasl提供的函数打开套接字.

  3.1.1.如何打开一个套接字

  在nasl中,函数open_sock_tcp()与open_sock_udp()分别用于打开一个tcp或者udp套接字.这两个函数使用匿名(anonymous)参数.当前,你每次智能打开一个端口,将来的版本将解决这个问题.例如:你可以使用如下代码分别打开一个tcp与udp套接字:

   #在80端口打开一个tcp套接字

   soc1=open_sock_tcp(80);

   #在123端口打开一个udp套接字

   soc2=open_sock_udp(123);

  如果无法与远程主机建立连接,这两个函数会返回0.不过,通常open_sock_udp()不会失败,因为没有办法确定远程主机的udp端口是否开放,对于open_sock_tcp(),如果远程主机的端口是关闭的,它就会返回0.

  open_sock_tcp()可以用于对tcp端口的简单扫描,例如:

   start = prompt("first port to scan?"); #输入开始的端口

   end = prompt("last port to scan?"); #输入结束的端口

   for(i=start;i〈end;i=i+1)

    {

     soc=open_sock_tcp(i);

     if(soc)

      {

       display("port ",i," is open\n");

       close(soc);

      }

    }

  3.1.2.关闭一个端口

  关闭一个端口使用close()函数,在close()内部,关闭端口之前,它首先会调用shutdown()函数.

  3.1.3.读写套接字

  根据被读写的套接字类型,可以选择使用如下函数完成这两项操作:

   recn(socket:〈socketname〉,length:〈length〉 [,timeout:〈timeout〉])

  从套接字〈socketname〉读取〈length〉个字节,这个函数可以用于tcp与udp.超时(timeout)参数是可选的,以秒为单位.

   recv_line(socket:〈socketname〉,length:〈length〉 [,timeout:〈timeout〉])

  这个函数与recv()函数类似,只是如果遇到换行(\n)操作终止.这个函数只能用于tcp套接字.

   send(socket:〈socket〉,data:〈data〉 [,length:〈length〉])


...   下一页
 ·关于16位的os尝试(2)    »显示摘要«
    摘要:上次的文章结束的时候把一大段我的boot loader贴出来了,可能会让人迷惑.这里我又写了个小小的微缩版的16位实模式下的boot loader,大家看看吧.这里我再次说明一下,这个文章只是记录我自己做16位os的经验,绝不是什么标准的教程.但是我也不会像其它的文章讲个boot loader就结束了.后面我还会做到kernel以及文件系统等很多东西 bits 16org 0x7c00 ent......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE