x-scan 反向域名解析插件 's

admin 2017年4月22日11:44:35评论829 views字数 2929阅读9分45秒阅读模式
摘要

来源:心路Dns_Name.def

LIBRARY "Dns_Name"
EXPORTS GetPluginInfo
PluginFunc

来源:心路

Dns_Name.def

LIBRARY "Dns_Name"
EXPORTS GetPluginInfo
PluginFunc

Dns_Name.cpp

#include <winsock2.h>
#include <ws2tcpip.h>

#ifdef __cplusplus
extern "C" {
#endif // __cplusplus

#include "XScanLib/XScanLib.h"

#ifdef __cplusplus
}
#endif // __cplusplus

extern "C" __declspec(dllexport) BOOL __stdcall GetPluginInfo(PLUGIN_INFO *);
extern "C" __declspec(dllexport) BOOL __stdcall PluginFunc (VOID *);
extern "C" DWORD WINAPI ResolveName (VOID *);

#pragma comment (lib, "ws2_32")
#pragma comment (lib, "XScanLib/XScanLib.lib")

#define VULN_MEMBER_NAME "反向域名解析"
#define CHECKING_STRING "正在解析域名..."
#define VERSION "0.2"
#define CMD_PARMAS "-dnsname"
#define PROMPT "反向域名解析"
#define AUTHOR "云舒"
#define DESCRIPTION "这个插件将IP地址反向解析为域名"
#define TIMEOUT 10000
#define ICON "winnt.bmp"
#define FILENAME "Dns_Name.xpn"

BOOL APIENTRY DLLMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
{
return TRUE;
}

BOOL __stdcall GetPluginInfo (PLUGIN_INFO *Info)
{
strcpy( Info->szClassName, VULN_MEMBER_NAME );
strcpy( Info->szMemberName, VULN_MEMBER_NAME );
strcpy( Info->szVersion, VERSION );
strcpy( Info->szFileName, FILENAME );
strcpy( Info->szParamsRequest, CMD_PARMAS );
strcpy( Info->szPrompt, PROMPT );
Info->nSingle = 1;
strcpy( Info->szAuthorName, AUTHOR );
strcpy( Info->szDescription, DESCRIPTION );
Info->dwTimeOut = TIMEOUT;
Info->nMark = 1;
strcpy( Info->szImageFile, ICON );

return TRUE;
}

BOOL __stdcall PluginFunc( VOID *Parm )
{
int VulnNumber;

if( !PlugInitLib((struct arglist *)Parm) )
{
return FALSE;
}

PlugSetVulnNum( (struct arglist *)Parm, 0 );

PlugSetCurrentSchedule( (struct arglist *)Parm, CHECKING_STRING );

PlugAddThread( (struct arglist *)Parm, ResolveName, Parm, TIMEOUT );

PlugWaitThread( (struct arglist *)Parm );

VulnNumber = PlugGetVulnNum( (struct arglist *)Parm );

return VulnNumber > 0 ? TRUE : FALSE;
}

DWORD WINAPI ResolveName( void * Parm )
{
char host[256] = { 0 };
char log_type[8] = { 0 };
int verbose = 0;
char message[128] = { 0 };
char host_name[1025] = { 0 };
char serv_name[129] = { 0 };
int ret;

SOCKADDR_IN sin;

strncpy( host, (char *)PlugGetParams((struct arglist *)Parm, "HostName"), 255 );
strncpy( log_type, (char *)PlugGetParams((struct arglist *)Parm, "LogType"), 7 );
verbose = (int)PlugGetParams((struct arglist *)Parm, "ShowVerbose");

sin.sin_family = AF_INET;
sin.sin_addr.s_addr = inet_addr( host );
sin.sin_port = htons( 80 );

sprintf( message, "正在解析 %s的反向域名...", host );
PlugSetCurrentSchedule( (struct arglist *)Parm, message );

if( verbose )
{
PlugAlertUser ( (struct arglist *)Parm, 0, message );
}

ret = getnameinfo( (struct sockaddr *)&sin, sizeof(SOCKADDR_IN), host_name, 1024, serv_name, 128, NULL );

if( ret != 0 )
{
return 0;
}

if( !strcmp( host, host_name) )
{
return 0;
}

if( verbose )
{
memset( message, 0, sizeof(message) );
sprintf( message, "反向解析 %s 成功", host );
PlugAlertUser( (struct arglist *)Parm, AT_NORMAL, message );
}

memset( message, 0, sizeof(message) );

if ( stricmp(log_type, "HTM") && stricmp(log_type, "HTML") )
{
sprintf( message, "机器名: %s/n", host_name );
}
else
{
sprintf( message, "机器名: %s/n", host_name );
}

PlugLogToFile( (struct arglist *)Parm, "none", "NOTE", message );

PlugAddVulnNum((struct arglist *)Parm);

memset( message, 0, sizeof(message) );
sprintf ( message, "%s/n%s/n%s/n", host, VULN_MEMBER_NAME, host_name );

PlugAddToTV ( message, ICON );

return 0;
}

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2017年4月22日11:44:35
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   x-scan 反向域名解析插件 'shttps://cn-sec.com/archives/49061.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息