引言: 作者:Renaud Deraison(Nessus最主要的编写者,法国人) 翻译:nixe0n 版本:1.0.0pre2 1.简介 1.1.什么是NASL? NASL是一个为网络安全扫描工具Nessus开发的脚本语言。
摘要: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〉]) ...
下一页 摘要:上次的文章结束的时候把一大段我的boot loader贴出来了,可能会让人迷惑.这里我又写了个小小的微缩版的16位实模式下的boot loader,大家看看吧.这里我再次说明一下,这个文章只是记录我自己做16位os的经验,绝不是什么标准的教程.但是我也不会像其它的文章讲个boot loader就结束了.后面我还会做到kernel以及文件系统等很多东西
bits 16org 0x7c00
ent......