📄 function_1.cpp
字号:
#include <vcl.h>
#include "main.h"
#include "thread_ping.h"
#include "thread_share.h"
#include "thread_scan_ping.h"
#include "thread_scan_port.h"
#include "function_1.h"
#include "thread_sql_ping.h"
#include "thread_sql_pass.h"
#include "share_pass.h"
#include "pop3_scan.h"
#include "pop3_detect.h"
#include "report.h"
//全局变量
unsigned long ping_ip_start;
unsigned long ping_ip_stop;//开始,结束的ip
int cur_ip;//已工作的ip数
int ping_thread_no=0;//ping线程数量,
int share_thread_no=0;//share线程数量
int share_ip_no=0;//share工作的位置指示
boolean thread_run=false;//中止线程
boolean only_ping=true;
boolean lookup_name=false;//查找名称
boolean lookup_user=true;//查找用户信息
boolean lookup_system=false;//查找系统信息
boolean lookup_Services=false;//查找系统信息
boolean do_select=false;//是否只对选择的工作
boolean report_show=false;//指示report_f窗体是否显示
int scan_thread_no=0;//scan线程数量
int scan_port_ip=0;//scan当前的IP
int scan_port_no=0;//scan当前的端口号
TStringList * main_list;//可用的IP地址列表(内容为:ItemsId与IP),
TStringList * port_lists;//可用端口列表
int thread_type=0;//指定当前运的线程是啥类型
boolean const_pass=true;//是否使用内定密码
int pass_no=0;//生成内定密码的位置
//------------------------------------------------------------------------
void creat_ping(int number)
{
Tmy_thread1 *bubble;
ping_thread_no=0;//ping线程数量
main_f->Edit10->Text="0";
share_thread_no=0;
for (int i=0;i<number;i++)
{
TPing *temp_ping=new TPing(main_f);
// temp_ping->OnEchoReply=Form1->Ping1->OnEchoReply;
temp_ping->Tag=100;
temp_ping->Timeout=StrToInt(main_f->Edit12->Text);
bubble = new Tmy_thread1(temp_ping,false);
}
}
//------------------------------------------------------------------------
void creat_scan_ping(int number)
{
Tmy_scan_ping *bubble;
ping_thread_no=0;//ping线程数量
cur_ip=0;
scan_port_ip=0;
scan_port_no=0;
scan_thread_no=0;
main_list->Clear();//清空先前的数据
get_port_list(); //获取数据列表
main_f->Bar->Max=(ping_ip_stop-ping_ip_start)*port_lists->Count;
if (main_f->Bar->Max==0) main_f->Bar->Max=ping_ip_stop-ping_ip_start;
for (int i=0;i<number;i++)
{
bubble = new Tmy_scan_ping(false);
}
}
//------------------------------------------------------------------------
void creat_scan_port(int number)
{
int i;
Tmy_scan_port *bubble;
if (port_lists->Count<=0) return;
for (i=0;i<number;i++)
if (scan_thread_no<StrToInt(main_f->Edit26->Text)&&(scan_port_ip<main_list->Count))
{
bubble = new Tmy_scan_port(false);
}
}
//------------------------------------------------------------------------
void creat_sql_ping(int number)
{
int i;
Tmy_sql_ping *bubble;
ping_thread_no=0;//ping线程数量
cur_ip=0;
for (i=0;i<number;i++)
{
bubble = new Tmy_sql_ping(false);
}
}
//------------------------------------------------------------------------
void creat_share(void)
{
Thread_share *bubble;
if ((share_thread_no<StrToInt(main_f->Edit15->Text))&&
(share_ip_no<main_f->tree_ping->Items->Count))
{
bubble = new Thread_share(false);
}
}
//------------------------------------------------------------------------
//找共享密码线程
void creat_share_pass(void)
{
tshare_pass *bubble;
bubble = new tshare_pass(false);
}
//------------------------------------------------------------------------
void creat_sql_pass(void)//检测SQL服务器
{
Tsql_pass *bubble;
bubble = new Tsql_pass(false);
}
//------------------------------------------------------------------------
Boolean check_ip(AnsiString&str)
{
if (inet_addr(str.c_str())==-1)
{
ShowMessage("非法的IP地址!");
return false;
} else return true;
}
//------------------------------------------------------------------------
void creat_pop3_scan(int number)//检测信箱主机
{ int i;
TPop3_scan *bubble;
for (i=0;i<number;i++)
{
if (ping_thread_no<StrToInt(main_f->Edit45->Text))
{
bubble = new TPop3_scan(false);
} else break;
}
}
//------------------------------------------------------------------------
void creat_pop3_detect(void)//检测信箱
{ int i;
TPop3_Detect *bubble;
for (i=0;i<StrToInt(main_f->Edit47->Text);i++)
{
if (share_thread_no<StrToInt(main_f->Edit47->Text)){
bubble = new TPop3_Detect(false);
} else break;
}
}
//------------------------------------------------------------------------
//将XXX.XXX.XXX.XXX格式的字符串分解成IP数字
unsigned long strtoip(AnsiString&str)
{
unsigned long f_ip=inet_addr(str.c_str());
AnsiString temp=str;
f_ip=StrToInt(temp.SubString(1,temp.AnsiPos(".")-1))*256*256*256;
temp.Delete(1,temp.AnsiPos("."));
f_ip=f_ip+StrToInt(temp.SubString(1,temp.AnsiPos(".")-1))*256*256;
temp.Delete(1,temp.AnsiPos("."));
f_ip=f_ip+StrToInt(temp.SubString(1,temp.AnsiPos(".")-1))*256;
temp.Delete(1,temp.AnsiPos("."));
f_ip=f_ip+StrToInt(temp);
return f_ip;
}
//------------------------------------------------------------------------
AnsiString iptostr(unsigned long ip)
{
AnsiString temp="";
unsigned long i=ip;
int f=i/(256*256*256);
if ((f<0)||(f>255)) { ShowMessage("IP转换错误!");return "";}
temp=IntToStr(f)+".";
i=i-f*(256*256*256);
f=i/(256*256);
if ((f<0)||(f>255)) { ShowMessage("IP转换错误!");return "";}
temp=temp+IntToStr(f)+".";
i=i-f*(256*256);
f=i/256;
if ((f<0)||(f>255)) { ShowMessage("IP转换错误!");return "";}
temp=temp+IntToStr(f)+".";
i=i-f*256;
if ((i<0)||(i>255)) { ShowMessage("IP转换错误!");return "";}
temp=temp+IntToStr(i);
return temp;
}
//------------------------------------------------------------------------
AnsiString gethostbyip(AnsiString &ip)
{
struct sockaddr_in addr;
struct hostent *host;
addr.sin_addr.s_addr=inet_addr(ip.c_str());
host=gethostbyaddr((char*)&addr.sin_addr,4,AF_INET);
if (host==NULL)
return("[不知]");
else
return(host->h_name);
}
//------------------------------------------------------------------------
//取数字部分
AnsiString get_intstr(AnsiString&str)
{ int i=1;
while (i<=str.Length())
{ if ((str[i]>='0')&&(str[i]<='9'))
i++;
else break;
}
return (str.SetLength(i-1));
}
//------------------------------------------------------------------------
void get_port_list(void)
{
int i=0;
int start=StrToInt(main_f->port_start->Text);
int stop=StrToInt(main_f->port_stop->Text);
int temp;
AnsiString str;
if (start>stop){temp=start;start=stop;stop=temp;}
port_lists->Clear();
if (main_f->port_option->Text=="")
{
for (i=0;i<main_f->port_list->Items->Count;i++)
{
if (main_f->port_list->Checked[i])
port_lists->Add(main_f->port_list->Items->Strings[i]);
}
} else
switch (main_f->port_option->Text[1])
{case '1': port_lists->AddStrings(main_f->port_list->Items);
break;
case '2':
for (i=0;i<main_f->port_list->Items->Count;i++)
{
if (main_f->port_list->Checked[i])
port_lists->Add(main_f->port_list->Items->Strings[i]);
}
break;
case '3':
while(i<main_f->port_list->Items->Count)
{ temp=StrToInt(get_intstr(main_f->port_list->Items->Strings[i]));
if ((temp>=start)&&(temp<=stop))
port_lists->Add(main_f->port_list->Items->Strings[i]);
i++;
}
break;
case '4':
if (start>stop){temp=start;start=stop;stop=temp;}
for (i=start;i<=stop;i++)
{
port_lists->Add(IntToStr(i));
}
i=0;
while(i<main_f->port_list->Items->Count)
{
str=Trim(get_intstr(main_f->port_list->Items->Strings[i]));
start=StrToInt(str);
if (start>stop) break;
temp=port_lists->IndexOf(str);
if (temp!=-1)
port_lists->Strings[temp]=main_f->port_list->Items->Strings[i];
i++;
}
break;
default :
for (i=0;i<main_f->port_list->Items->Count;i++)
{
if (main_f->port_list->Checked[i])
port_lists->Add(main_f->port_list->Items->Strings[i]);
}
}
}
//------------------------------------------------------------------------
void init_main_f(void)//初始化窗体
{
AnsiString str=ChangeFileExt(ParamStr(0), ".INI");
TComponent *com;
if (FileExists(str))
{
TStringList *list=new TStringList();
list->LoadFromFile(str);
int i;
for (i=0;i<list->Count-1;i++)
{
str=list->Strings[i];
com=main_f->FindComponent(str.SetLength(str.Pos("=")-1));
str=list->Strings[i];
if (com!=NULL)
{
if ((AnsiString)com->ClassName()=="TEdit") ((TEdit*)com)->Text=str.Delete(1,str.Pos("="));
else
if ((AnsiString)com->ClassName()=="TMemo") ((TMemo*)com)->Lines->CommaText=str.Delete(1,str.Pos("="));
else
if ((AnsiString)com->ClassName()=="TCheckBox") ((TCheckBox*)com)->Checked=(str.Delete(1,str.Pos("="))=="true");
}
}
list->Free();
}
}
//------------------------------------------------------------------------
void save_main_f(void)//保存窗体的参数
{
AnsiString str;
TComponent *com;
int i;
TStringList *list=new TStringList();
for (i=0;i<main_f->ComponentCount-1;i++)
{
str="";
if ((AnsiString)main_f->Components[i]->ClassName()=="TEdit")
{
if (!((TEdit*)main_f->Components[i])->ReadOnly)
str=main_f->Components[i]->Name+"="+((TEdit*)main_f->Components[i])->Text;
}
else
if ((AnsiString)main_f->Components[i]->ClassName()=="TMemo")
{
if (!((TMemo*)main_f->Components[i])->ReadOnly)
str=main_f->Components[i]->Name+"="+((TMemo*)main_f->Components[i])->Lines->CommaText;
} else
if ((AnsiString)main_f->Components[i]->ClassName()=="TCheckBox")
if (((TCheckBox*)main_f->Components[i])->Checked)
str=main_f->Components[i]->Name+"=true";
else str=main_f->Components[i]->Name+"=false";
if (str!="") list->Add(str);
}
list->SaveToFile(ChangeFileExt(ParamStr(0), ".INI"));
list->Free();
}
//接常用的名称与密码的关系生成密码
AnsiString ABCToCBA(AnsiString&str)
{ AnsiString temp_str=str;
int i,len=str.Length()+1;
for (i=1;i<len;i++)
{temp_str[i]=str[len-i];
}
return(temp_str);
}
AnsiString NameToPass(AnsiString&str,int &i)
{
AnsiString temp_str=ABCToCBA(str);//取反
i++;
switch (i)
{
case 1: return(str);// 与名称相同
case 2: return(temp_str);//名称相反
case 3: return(str+temp_str);//名称+相反
case 4: return(str+str);//名称+名称
case 5: return(str+123);//名称+123
case 6: return(str+12345);//名称+123345
case 7: return("123");
case 8: return("1234");
case 9: return("12345");
case 10: return("123456");
case 11: return("1234567");
case 12: return("12345678");
case 13: return("8888");
case 14: return("88888888");
case 15: temp_str=str;temp_str[1]=UpCase(temp_str[1]);
return(UpperCase(str+temp_str));//名称第一个大写
case 16: return("1111");
case 17: return("11111");
case 18: return("111111");
case 19: return("11111111");
case 20: return("0000");
case 21: return("00000000");
case 22: return("aaaa");
case 23: return("aaaaaaaa");
default: return("");
}
}
//test用,看人们一般用什么的密码
AnsiString NameToPass3(AnsiString&str,int &i)
{
AnsiString test_str=" 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^&*(){}[],.?/;+-";
i++;
if (i>test_str.Length())
return("");
else {
AnsiString temp_str=test_str[i];
return (temp_str+temp_str+temp_str+temp_str);
}
}
//test用,看人们一般用什么的密码
AnsiString NameToPass2(AnsiString&str,int &i)
{
AnsiString test_str=" 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^&*(){}[],.?/;+-";
i++;
if (i>test_str.Length())
return("");
else {
AnsiString temp_str=test_str[i];
return (temp_str+temp_str+temp_str+temp_str+temp_str+temp_str+temp_str+temp_str);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -