⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 VC++编写的类似Sniffer的网络数据包监听程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "clipbrd.hpp"
#include "main.h"
#include "dict.h"
#include "report.h"
#include "function_net.h"
#include "function_1.h"
#include "thread_ping.h"
#include "syncobjs.hpp"
//#include "windows.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
extern unsigned long ping_ip_start;
extern unsigned long ping_ip_stop;//开始,结束的ip
extern int cur_ip,ping_thread_no;//已工作的ip数
extern int share_ip_no,share_thread_no;//已工作的ip数
extern boolean thread_run;//已工作的ip数
extern boolean only_ping;
extern boolean lookup_name;
extern boolean lookup_user;//查找用户信息
extern boolean lookup_system;//查找系统信息
extern boolean lookup_Services;//查找系统信息
extern boolean do_select;//只对选择的工作
extern int pass_no;//生成内定密码的位置
extern TStringList * port_lists;
extern TStringList * main_list;

extern int scan_thread_no;//scan线程数量
extern int scan_port_ip;//scan当前的IP
extern int scan_port_no;//scan当前的端口号
extern int thread_type;//scan线程数量

TCriticalSection *ping_CriticalSection;//全局临界变量
int Version=98;//版本控制

Tmain_f *main_f;
//---------------------------------------------------------------------------
__fastcall Tmain_f::Tmain_f(TComponent* Owner)
        : TForm(Owner)
{
}

//-扫描共享资料--------------------------------------------------------------------------
void __fastcall Tmain_f::Button2Click(TObject *Sender)
{
 if (!(check_ip(Edit5->Text)&&check_ip(Edit6->Text)))
     return;//检查IP是否合法
  ping_ip_start=strtoip(Edit5->Text);  ping_ip_stop=strtoip(Edit6->Text);
  cur_ip=0;
  share_ip_no=0;
//  main_f->Edit10->Text="0";
  Bar->Max=ping_ip_stop-ping_ip_start;
  thread_run=true;

  if (CheckBox3->Checked)
    creat_ping(StrToInt(Edit13->Text)); //建立线程
   else
   {
    tree_ping->Items->Clear();Edit9->Text="0";
    creat_ping(StrToInt(Edit13->Text)); //建立线程
   }

}

//---------------------------------------------------------------------------
void __fastcall Tmain_f::FormCreate(TObject *Sender)
{
//系统检测
  init_main_f();//初始数据
  Edit35->Text=IntToStr(this->ComponentCount);
  Application->OnException=my_Exception;

  OSVERSIONINFOEX osvi;
  BOOL bOsVersionInfoEx;
  ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
  osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
   if( !(bOsVersionInfoEx = GetVersionEx ((OSVERSIONINFO *) &osvi)) )
   {
      osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
      if (! GetVersionEx ( (OSVERSIONINFO *) &osvi) )
         return;
   }
   switch (osvi.dwPlatformId)
   {
      case VER_PLATFORM_WIN32_NT:
         if ( osvi.dwMajorVersion <= 4 ) Version=40;//是nt4.0
         if ( osvi.dwMajorVersion == 5 ) Version=2000;//windows2000
          break;
       case VER_PLATFORM_WIN32_WINDOWS:
        if ((osvi.dwMajorVersion > 4) ||
            ((osvi.dwMajorVersion == 4) && (osvi.dwMinorVersion > 0)))
            Version=98;//是widnows98
         else Version=95;//是 Windows 95
         break;
      case VER_PLATFORM_WIN32s:
            Version=32;//"Microsoft Win32;
   }

  ping_CriticalSection=new TCriticalSection();//全局临界变量

 WSAData GInitData;
 if (WSAStartup(101,&GInitData)!=0)
    ShowMessage("初始化SOCKET函数失败!");

  port_lists=new TStringList();
  main_list=new TStringList();
}
//---------------------------------------------------------------------------
void __fastcall Tmain_f::FormClose(TObject *Sender, TCloseAction &Action)
{
  save_main_f();//保存数据
  ado_q->Close();ado_pub->Close();
  port_lists->Free();
  main_list->Free();
  ping_CriticalSection->Free();
}
//---------------------------------------------------------------------------


void __fastcall Tmain_f::share_checkClick(TObject *Sender)
{
 BitBtn4->Enabled=!share_check->Checked;
 main_f->BitBtn5->Enabled=!share_check->Checked;
}
//---------------------------------------------------------------------------


void __fastcall Tmain_f::BitBtn4Click(TObject *Sender)
{
 int no=StrToInt(Edit15->Text);
 share_ip_no=0;
 share_thread_no=0;
 Edit10->Text="0";
 thread_run=true;
 main_f->BitBtn4->Enabled=false;
 main_f->BitBtn5->Enabled=false;
 if (do_select)//若只对选择工作,则一个线程足已
  {
   creat_share();
  }
  else
  {  while (no>0)
     {
       creat_share();
       no--;
      }
  }
}
//---------------------------------------------------------------------------

void __fastcall Tmain_f::N4Click(TObject *Sender)
{
 ((TMemo *)memo_m->PopupComponent)->Clear();
// tree_share->Items->Clear();
}
//---------------------------------------------------------------------------

void __fastcall Tmain_f::N1Click(TObject *Sender)
{
 ((TTreeView *)share_tree_m->PopupComponent)->FullExpand();

}
//---------------------------------------------------------------------------

void __fastcall Tmain_f::N2Click(TObject *Sender)
{
 ((TTreeView *)share_tree_m->PopupComponent)->FullCollapse();
}
//---------------------------------------------------------------------------




//-扫描端口------------------------------------
void __fastcall Tmain_f::Button1Click(TObject *Sender)
{
 if (!(check_ip(Edit1->Text)&&check_ip(Edit2->Text)))
     return;//检查IP是否合法
  ping_ip_start=strtoip(Edit1->Text);  ping_ip_stop=strtoip(Edit2->Text);

  thread_run=true;
  thread_type=10;//1代表是端口扫描的线程

  if (!(CheckBox6->Checked))
   {scan_ip->Text="";scan_edit2->Text="0";scan_edit3->Text="0";
    scan_edit4->Text="0";
    Tree_port->Items->Clear();
   }
  creat_scan_ping(StrToInt(Edit13->Text)); //建立线程
}
//---------------------------------------------------------------------------

void __fastcall Tmain_f::CheckBox1Click(TObject *Sender)
{
  only_ping=CheckBox1->Checked;
}
//---------------------------------------------------------------------------

void __fastcall Tmain_f::CheckBox2Click(TObject *Sender)
{
 lookup_name=CheckBox2->Checked;
}
//---------------------------------------------------------------------------



void __fastcall Tmain_f::BitBtn1Click(TObject *Sender)
{
  int i;
  boolean temp;
 if (open_port->Execute())
  {
   port_lists->LoadFromFile(open_port->FileName);
   port_list->Items->Clear();
   for (i=0;i<port_lists->Count;i++)
    {
     temp=(port_lists->Strings[i][1]=='+');
     port_list->Items->Add(Trim(port_lists->Strings[i].Delete(1,2)));
     port_list->Checked[i]=temp;
    }
   port_lists->Clear();
  }
}
//---------------------------------------------------------------------------

void __fastcall Tmain_f::BitBtn3Click(TObject *Sender)
{
  int i;
 if (save_port->Execute())
  {
   port_lists->Clear();
   for (i=0;i<port_list->Items->Count;i++)
    {
     if (port_list->Checked[i])
       port_lists->Add("+,"+port_list->Items->Strings[i]);
      else
       port_lists->Add("-,"+port_list->Items->Strings[i]);
    }
   port_lists->SaveToFile(save_port->FileName);
   port_lists->Clear();
  }
}
//---------------------------------------------------------------------------

void __fastcall Tmain_f::BitBtn2Click(TObject *Sender)
{
  int i;
   for (i=0;i<port_list->Items->Count;i++)
    {
     port_list->Checked[i]=false;
    }
}
//---------------------------------------------------------------------------

void __fastcall Tmain_f::BitBtn8Click(TObject *Sender)
{
  int i;
   for (i=0;i<port_list->Items->Count;i++)
    {
     port_list->Checked[i]=true;
    }
}
//---------------------------------------------------------------------------







void __fastcall Tmain_f::Button18Click(TObject *Sender)
{
if  (Button18->Caption=="连接")
 {ado_pub->Close();
 ado_pub->ConnectionString="Provider=SQLOLEDB;Password="+Edit31->Text
              +";Persist Security Info=True;User ID="+Edit30->Text
              +";Initial Catalog=master;Data Source="+Edit29->Text;
 ado_pub->Open();
 }else ado_pub->Close();

}
//---------------------------------------------------------------------------

void __fastcall Tmain_f::ado_qAfterOpen(TDataSet *DataSet)
{
 sql_cmd->Lines->Add("shell:\""+Edit32->Text);
 DataSet->First();
 while (!(DataSet->Eof))
  {
   sql_cmd->Lines->Add(DataSet->FieldByName("output")->AsString);
   DataSet->Next();
  }
 sql_cmd->Lines->Add("操作完成");
}
//---------------------------------------------------------------------------

void __fastcall Tmain_f::BitBtn9Click(TObject *Sender)
{
 ado_q->Close();
 ado_q->SQL->Text="exec xp_cmdshell '"+Edit32->Text+"'";
 ado_q->Open();
}
//---------------------------------------------------------------------------

void __fastcall Tmain_f::ado_pubAfterConnect(TObject *Sender)
{
 sql_cmd->Lines->Add("user:"+Edit30->Text+" Pass:"+Edit31->Text+" ->已连接成功!");
 Button18->Caption="断开";
 
 }
//---------------------------------------------------------------------------

void __fastcall Tmain_f::ado_pubBeforeConnect(TObject *Sender)
{
 sql_cmd->Lines->Add("正在连接...请稍等!");
}
//---------------------------------------------------------------------------

void __fastcall Tmain_f::ado_pubAfterDisconnect(TObject *Sender)
{
 sql_cmd->Lines->Add("连接已断开!");
 Button18->Caption="连接";
}
//---------------------------------------------------------------------------

void __fastcall Tmain_f::Edit32KeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
 if (Key==13)
   {
    Edit32->Items->Add(Edit32->Text);
    BitBtn9Click(NULL);
    Edit32->SelectAll();
   }
}
//---------------------------------------------------------------------------
//屏蔽错误
void __fastcall Tmain_f::my_Exception(TObject *Sender,Exception *E)
{
//  Application->MessageBoxA(E->Message.c_str(),"洗碗虫",0);
}
void __fastcall Tmain_f::Button13Click(TObject *Sender)
{
 dict_f->Show();
}
//---------------------------------------------------------------------------

void __fastcall Tmain_f::Button8Click(TObject *Sender)
{
 if (!(check_ip(Edit17->Text)&&check_ip(Edit18->Text)))
     return;//检查IP是否合法
  ping_ip_start=strtoip(Edit17->Text);  ping_ip_stop=strtoip(Edit18->Text);

  Bar->Max=ping_ip_stop-ping_ip_start;
  thread_run=true;

  if (CheckBox4->Checked)
    creat_sql_ping(StrToInt(Edit26->Text)); //建立线程
   else
   {
    ListBox2->Items->Clear();Edit24->Text="0";Edit21->Text="0";
    creat_sql_ping(StrToInt(Edit26->Text)); //建立线程
   }

}
//---------------------------------------------------------------------------

void __fastcall Tmain_f::sql_cmdDblClick(TObject *Sender)
{
 if (sql_cmd->Left!=3)
  {
   sql_cmd->Left=3;
   sql_cmd->Width=550;
   Edit32->Left=3;
   Edit32->Width=524;
  } else
  {
   sql_cmd->Left=261;
   sql_cmd->Width=292;
   Edit32->Left=261;
   Edit32->Width=267;
  }
}
//---------------------------------------------------------------------------

void __fastcall Tmain_f::ListBox2DblClick(TObject *Sender)
{
 Edit29->Text=ListBox2->Items->Strings[ListBox2->ItemIndex];
}
//---------------------------------------------------------------------------


void __fastcall Tmain_f::N9Click(TObject *Sender)
{
  if (save_port->Execute())
   {
    ((TMemo *)memo_m->PopupComponent)->Lines->SaveToFile(save_port->FileName);
   }
}
//---------------------------------------------------------------------------

void __fastcall Tmain_f::MenuItem5Click(TObject *Sender)
{
  if (open_port->Execute())
   {
    ((TTreeView *)share_tree_m->PopupComponent)->LoadFromFile(open_port->FileName);
   }
}
//---------------------------------------------------------------------------

void __fastcall Tmain_f::N5Click(TObject *Sender)
{
  if (save_port->Execute())
   {
    ((TListBox *)listbox_m->PopupComponent)->Items->SaveToFile(save_port->FileName);
   }

}
//---------------------------------------------------------------------------

void __fastcall Tmain_f::N6Click(TObject *Sender)
{
  if (open_port->Execute())
   {
    ((TListBox *)listbox_m->PopupComponent)->Items->LoadFromFile(open_port->FileName);
   }
}
//---------------------------------------------------------------------------

void __fastcall Tmain_f::MenuItem4Click(TObject *Sender)
{
  if (save_port->Execute())
   {
    ((TTreeView *)share_tree_m->PopupComponent)->SaveToFile(save_port->FileName);
   }
}
//---------------------------------------------------------------------------

void __fastcall Tmain_f::N10Click(TObject *Sender)
{
  if (open_port->Execute())
   {
    ((TMemo *)memo_m->PopupComponent)->Lines->LoadFromFile(open_port->FileName);
   }
}
//---------------------------------------------------------------------------

void __fastcall Tmain_f::MenuItem7Click(TObject *Sender)
{
 ((TTreeView *)share_tree_m->PopupComponent)->Items->Clear();
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -