nmap源代码分析文档格式.docx

上传人:b****5 文档编号:16025805 上传时间:2022-11-17 格式:DOCX 页数:20 大小:24.34KB
下载 相关 举报
nmap源代码分析文档格式.docx_第1页
第1页 / 共20页
nmap源代码分析文档格式.docx_第2页
第2页 / 共20页
nmap源代码分析文档格式.docx_第3页
第3页 / 共20页
nmap源代码分析文档格式.docx_第4页
第4页 / 共20页
nmap源代码分析文档格式.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

nmap源代码分析文档格式.docx

《nmap源代码分析文档格式.docx》由会员分享,可在线阅读,更多相关《nmap源代码分析文档格式.docx(20页珍藏版)》请在冰豆网上搜索。

nmap源代码分析文档格式.docx

///NewTargets为Singleton模式,产生单个实例

/*Pre-ScanandPost-Scanscriptresultsdatastructure*/

ScriptResults*script_scan_results=NULL;

#endif

char**host_exp_group;

intnum_host_exp_groups;

HostGroupState*hstate=NULL;

unsignedintideal_scan_group_sz=0;

Target*currenths;

char*host_spec=NULL;

charmyname[MAXHOSTNAMELEN+1];

intsourceaddrwarning=0;

/*Havewewarnedthemyetaboutunguessable

sourceaddresses?

*/

unsignedinttargetno;

charhostname[MAXHOSTNAMELEN+1]="

"

;

structsockaddr_storagess;

size_tsslen;

char**fakeargv=NULL;

now=time(NULL);

local_time=localtime(&

now);

///设置错误log输出函数

if(o.debugging)

nbase_set_log(fatal,error);

else

nbase_set_log(fatal,NULL);

if(argc<

2)printusage(-1);

/*argvfakingsilliness*/

fakeargv=(char**)safe_malloc(sizeof(char*)*(argc+1));

for(i=0;

i<

argc;

i++){

fakeargv[i]=strdup(argv[i]);

}

fakeargv[argc]=NULL;

Targets.reserve(100);

#ifdefWIN32

win_pre_init();

#endif

///调用parse_options进行命令参数的解析

parse_options(argc,fakeargv);

///在Linux下设置终端为只读非阻塞方式,在Windows平台为空函数。

tty_init();

//Putthekeyboardinrawmode

///将解析命令时需要延迟执行的操作在此处处理

apply_delayed_options();

///调用WSAStartup启动WinsockDLL,后续网络解析等需要用到。

win_init();

///如果用户使用了参数--iflist,那么会在此处打印网卡和路由表信息,然后退出。

///该选项对于显示指定发送网卡非常有帮助,可以提供基本的网络设备信息。

if(delayed_options.iflist){

print_iflist();

exit(0);

///quashargv部分用于修改命令行参数,将程序名字更改为FAKE_ARGV(默认为“pine”),

///并将剩余的各个参数都清空。

///在命令中加入-q可实现quashargv功能。

这最初是为了逃避ps等程序名称显示,便于隐蔽Nmap。

///不过在Windows系统上并无实效。

/*morefakeargvjunk,BTWmalloc'

ingextraspaceinargv[0]doesn'

twork*/

if(o.quashargv){

size_tfakeargvlen=strlen(FAKE_ARGV),argvlen=strlen(argv[0]);

if(argvlen<

fakeargvlen)

fatal("

Ifyouwantmetofakeyourargv,youneedtocalltheprogramwithalongername.Trythefullpathname,orrenameitfyodorssuperdedouperportscanner"

);

strncpy(argv[0],FAKE_ARGV,fakeargvlen);

memset(&

argv[0][fakeargvlen],'

\0'

strlen(&

argv[0][fakeargvlen]));

for(i=1;

i++)

memset(argv[i],'

strlen(argv[i]));

///如果使用FTPbouncescan的扫描方式,那么需要首先保证该FTP网站是可以访问到的。

///关于FTPbouncescan更多介绍,请参考:

http:

//nmap.org/nmap_doc.html#bounce

/*IfhewantstobounceoffofanFTPsite,thatsitebetterdamnwellbereachable!

if(o.bouncescan){

if(!

inet_pton(AF_INET,ftp.server_name,&

ftp.server)){

if((target=gethostbyname(ftp.server_name)))

memcpy(&

ftp.server,target->

h_addr_list[0],4);

else{

FailedtoresolveFTPbounceproxyhostname/IP:

%s"

ftp.server_name);

}elseif(o.verbose){

log_write(LOG_STDOUT,"

ResolvedFTPbounceattackproxyto%s(%s).\n"

ftp.server_name,inet_ntoa(ftp.server));

///<

Start--------------扫描信息输出-----------------Start>

fflush(stdout);

fflush(stderr);

timep=time(NULL);

///准备将基本的扫描输出到文件与控制台中

/*Briefinfoincasetheyforgetwhatwasscanned*/

Strncpy(mytime,ctime(&

timep),sizeof(mytime));

chomp(mytime);

///去掉字符串末尾换行符

char*xslfname=o.XSLStyleSheet();

///XML样式表

xml_start_document();

if(xslfname){

xml_open_pi("

xml-stylesheet"

xml_attribute("

href"

"

%s"

xslfname);

type"

text/xsl"

xml_close_pi();

xml_newline();

std:

:

stringcommand;

if(argc>

0)

command+=fakeargv[0];

for(i=1;

command+="

"

command+=fakeargv[i];

xml_start_comment();

xml_write_escaped("

%s%sscaninitiated%sas:

%s"

NMAP_NAME,NMAP_VERSION,mytime,join_quoted(fakeargv,argc).c_str());

xml_end_comment();

log_write(LOG_NORMAL|LOG_MACHINE,"

#"

%s%sscaninitiated%sas:

NMAP_NAME,NMAP_VERSION,mytime);

command.c_str());

\n"

xml_open_start_tag("

nmaprun"

scanner"

nmap"

args"

join_quoted(fakeargv,argc).c_str());

start"

%lu"

(unsignedlong)timep);

startstr"

mytime);

version"

NMAP_VERSION);

xmloutputversion"

NMAP_XMLOUTPUTVERSION);

xml_close_start_tag();

output_xml_scaninfo_records(&

ports);

verbose"

level"

%d"

o.verbose);

xml_close_empty_tag();

debugging"

o.debugging);

/*Beforewerandomizetheportsscanned,letsout

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 工作总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1