网络间谍:你的共享文件夹网络监视器

 ivanx著于发表 2008-1-14

C#,.NET 2.0,.NET 3.0/3.5

原文:http://www.msproject.cn/article/NetworkSpy.aspx

翻译
英文原文来自Abhijit Jana著
Net Spy: Your Network Spy (原代碼地址)
ivanx翻译 for msproject.cn

Download SpyNet_New_Release.zip - 62.43 KB
Download NetWorkSpy_Source_Code_New_Release.zip - 717.85 KB

简介
这是一个小Windows工具,可以对你的共享文件夹进行持续监控。一旦有网络上的用户访问你的文件夹的时候,它就会给出消息提示。你可以得到详细的对方系统的信息,并且产生日志,记录哪些文件夹被访问了,及所有被修改、删除、创建及重命名的文件和文件夹。

特性:
1. 在网格中显示所有的共享目录
2. 当用户访问你的系统时,给出提示
3. 列出所有用户访问过的目录
4. 记录被用户改变、删除、创建、重命名的文件和文件夹。
5. 远程用户操作系统的详细信息
6. 系统托盘图标

设计

SpyNet将运行在网络中一个单机系统上面,当有网络上的用户A访问你的文件夹的时候,它就会给出消息提示"“User A” is accessing you System"。这个工具包含一个Data Grid来显示用户信息,跟踪所有用户的修改动作。


细节描述

1. 共享目录
2. 当前会话
3. 访问文件夹
4. 文件夹监视

文件夹监视又包含下面内容:
A. 创建
B. 删除
C. 重命名
D. 修改

1. 共享目录
在主界面上,用户将能够得到一个本机所有已经共享的目录列表。可以看到他们的共享目录名称、路径、描述及状态。当用户访问一个共享文件夹的时候,一个监视器产生,开始记录其修改动作。


2. 当前会话
当前会话,用来记录那个远程用户正在访问你的共享目录,访问了多长时间,远程IP,操作系统的名字。如果一个用户连接了两次,会有两个Session被创建。

 


用户访问时,你得到下面的警告框:


3. Accessed Folder(被访问的目录)

记录访问过的目录


4. Folder Watcher(文件夹监视):
这是SpyNet工具的主要部分。包括4个小节。

a)Created (创建文件):
记录远程用户在你的共享目录中创建了文件,创建的时间,文件路径。
c

b)Deleted (删除):
共享文件夹中的每个文件被删除的时候,都会得到记录

 
c) Renamed(重命名):
SpyNet还记录重命名的文件,并跟踪改名之前的文件名和新的文件名,以及修改的时间日期。

 


d) Changed (文件修改):
当文件被远程用户修改的时候,程序会记录其时间,文件名及路径。


当本程序运行的时候,你可以从托盘图标上看到,你可以关闭或者重启它。


技术细节

这个工具是使用C#开发的,我使用了WMI ( Windows Management Instrumentation ) 和 MQL ( Management Query Lanagauge)得到系统的信息。
主要的文件是:System.management.dll

读取所有共享文件夹的代码如下:


  
  
private   void  Read_Shared_Folder()
        
{
            
int cnt = 0;
            
try
            
{
               
// MQL for Shaer Information
                ManagementObjectSearcher searcher =
                    
new ManagementObjectSearcher("root/CIMV2","SELECT * FROM Win32_Share");

                
foreach (ManagementObject queryObj in searcher.Get())
                
{
                    RDirPath 
= queryObj["Path"].ToString();
                    
if (!RDirPath.Equals(""|| RDirPath.Equals("IPC$"|| RDirPath.Equals("ADMIN___FCKpd___0quot;) )
                    {
                        File_Watcher(RDirPath);
                    }

                    load_Shared_Item(cnt, queryObj[
"Name"].ToString(), queryObj["Path"].ToString(), queryObj["Description"].ToString(), queryObj["Status"].ToString() );
                    cnt
=cnt+1;

                }

            }

catch (ManagementException e)
            
{
                MessageBox.Show(
"An error occurred while querying for WMI data: " + e.Message);
            }

        }

读取当前会话的用户名的程序:

 

private   void  Read_Current_Session()
        
{
            
int counter = 0;
            
int ActiveTime;
            
int itime;
            
string sharename;
            
try
            
{
                ManagementObjectSearcher searcher 
=
                   
new ManagementObjectSearcher("root/CIMV2",
                   
"SELECT * FROM Win32_ServerConnection");
                ManagementObjectSearcher searcher2 
=
                   
new ManagementObjectSearcher("root/CIMV2",
                   
"SELECT * FROM Win32_ServerSession");
                
// Read the object 
               foreach (ManagementObject ServerQobjin searcher2.Get())
                
{
                    RemoteOS 
= ServerQobj["ClientType"].ToString();
                    IDealTime 
= ServerQobj["IdleTime"].ToString();
                    itime 
= Int32.Parse(IDealTime) / 60;
                    IDealTime 
= itime.ToString();
                }


                
foreach (ManagementObject queryObjin searcher.Get())
                
{
                    RemoteIPAddress 
= queryObj["ComputerName"].ToString();
                    RemoteUserName 
= queryObj["UserName"].ToString();
                    RemoteActiveTime 
= queryObj["ActiveTime"].ToString();
                    ActiveTime 
= (Int32.Parse(RemoteActiveTime)) / 60;
                    RemoteActiveTime 
= ActiveTime.ToString();
                    sharename 
= queryObj["ShareName"].ToString();
                    
if (!sharename.Equals("IPC
监视文件创建信息 quot;))

                    {
                        Load_Current_Session(counter, RemoteIPAddress, RemoteUserName, RemoteActiveTime,IDealTime,RemoteOS);
                        load_Access_folder(counter, RemoteUserName, sharename);
                        counter 
+= 1;
                    }

                }

            }

            
catch (ManagementException e)
            
{
                MessageBox.Show(
"An error occurred while querying for WMI data: " + e.Message);
            }

        }

 
监视文件和文件夹:

___FCKpd___1

  
  
protected   void  mywatcher_created( object  sender,FileSystemEventArgs  e)
{
     CheckForIllegalCrossThreadCalls 
= false;
     DateTime current 
= DateTime.Now;
     lstCreate.Items.Add(e.FullPath.ToString() );
     lstCreate.Items[cCount].SubItems.Add(current.ToShortDateString());
     lstCreate.Items[cCount].SubItems.Add(current.ToShortTimeString());
     cCount 
+= 1;
}

任务栏初始化的代码:


  
  
private   void  TaskBar_Initilization()
{
    taskbarNotifier1.SetBackgroundBitmap(
"Skin.bmp", Color.FromArgb(2550255));
    taskbarNotifier1.SetCloseBitmap(
"close.bmp", Color.FromArgb(2550255), new Point(1278));
    taskbarNotifier1.TitleRectangle 
= new Rectangle(4097025);
    taskbarNotifier1.ContentRectangle 
= new Rectangle(84113368);
    taskbarNotifier1.TitleClick 
+= new EventHandler(TitleClick);
    taskbarNotifier1.ContentClick 
+= new EventHandler(ContentClick);
    taskbarNotifier1.CloseClick 
+= new EventHandler(CloseClick);
}

弹出消息警告框的代码片段:


  
  
void  Show_popUP()
{
            
string t1 = "500";
            
string t2 = "3000";
            
string t3 = "500";
            taskbarNotifier1.CloseClickable 
= true;
            taskbarNotifier1.TitleClickable 
= false;
            taskbarNotifier1.ContentClickable 
= true;
            taskbarNotifier1.EnableSelectionRectangle 
= true;
            taskbarNotifier1.KeepVisibleOnMousOver 
= true;    
            taskbarNotifier1.ReShowOnMouseOver 
= true;            
            taskbarNotifier1.Show(
"NetSpy", RemoteUserName + "  Is Now Accessing Your System ", Int32.Parse(t1), Int32.Parse(t2), Int32.Parse(t3));
}

引用

I have used following code From CodeProject For taskbar notification module TaskBar Notification

Points of Interest

This is a Tool which make your system secure !!! Code is available so you can customized it in your own way

Future Target

1. One Log file to store the Log Records
2. Clear Log History
3. Some Advance Settings for monitor user.

History

NwtSpy Version 1.0 Released 02/01/2008

License

This article is licensed under The Code Project Open License (CPOL)

About the Author

Abhijit Jana, From Kolkata, He has done MCA.Now Working in a Software MNC as Software Engineer ,at Noida,U.P,India

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值