หากมีคำถาม ขอให้ไปโพสต์ลง เว็บบอร์ดจีทูจีเน็ตดอตคอม ตัวใหม่แทนน่ะครับ

หรือติดต่อเข้ามาทาง Inbox ที่ เฟซบุ๊ค ผมครับ

หน้าหลัก
ข่าวสาร - บทความ ทั้งหมด
VB 6/VB.Net
ASP/ASP.Net
จับฉ่ายคอมพิวเตอร์
เรียนรู้ผ่าน Flash Movie
บทความที่มีผู้ตอบล่าสุด  
 RSS Feeds
 ดาวน์โหลดโปรแกรม RSS Reader ได้ที่นี่ ...   Download โปรแกรม RSS Reader

Forum - www.g2gnet.com
Webmaster - www.g2gnet.com
Visitors - Session views
 5 5 9 1 7 4 9

7 ธันวาคม พ.ศ.2549
108 Users On-Line.
Visitors - Page views
 8 9 4 6 7 9 9
1 กุมภาพันธ์ พ.ศ.2551

Google   
เว็บ g2gnet.com
ขนาดตัวอักษร:  

แจกฟรีโค้ดโปรแกรม VB6 ป้องกันการคัดลอกข้อมูลจากคอมพิวเตอร์ไปยัง Flash Drive

Category »  VB 6/VB.Net
โดย : Webmaster เมื่อ 27/3/2554   เวลา: 11:27
(อ่าน : 33952) 
จุดประสงค์หลักๆที่จะนำเสนอในครั้งนี้คือ การป้องกันไม่ให้เกิดการคัดลอกข้อมูล (Copy) จากเครื่องคอมพิวเตอร์ของเรา เข้าไปยัง USB Flash Drive ได้ พร้อมทั้งยัง ไม่อนุญาตให้ใช้งาน Registry Tools หรือ RegEdit เพื่อเข้าไปแก้ไขข้อมูล Registry ระบบได้นั่นเองครับ แม้ว่ามันอาจจะไม่ได้มีผลอะไรมากมาย แต่ก็คง ป้องกันผู้ใช้คนอื่นที่ไม่ค่อยมีความรู้คอมฯมากนัก (ที่ชอบแอบมาจิ๊กคลิปลับๆของเราไป 55555+) ... ดังนั้นผมก็เลยมีจุดประสงค์รองคือ ในบางครั้งเครื่องเราอาจจะโดนไวรัส ทั้งที่เจตนา หรือไม่ได้เจตนาสร้างให้เป็นไวรัส (โดยเฉพาะพวก 3 กอ คือ เกรียน กาก กวน) โดยมีเป้าหมายเข้าไปทำลายข้อมูลบางอย่างใน Registry ของระบบ ซึ่งพวก Anti Virus มันก็มักไม่ได้มาคอยช่วยในส่วนนี้มากนัก ทำให้เราต้องมาแก้ไขเอาเอง ... บทความนี้จะเป็นการเรียกใช้งาน Script ผ่านทาง Visual Basic 6 โดยตรง ซึ่งคำว่า Script นี่เองแหละที่เป็นรูโหว่ให้กับเหล่าไวรัส หรือ หนอนน้อย (Worm) ต่างๆเข้ามาโจมตีระบบได้ เมื่อป้องกันได้ยาก เราก็ควรศึกษาเรียนรู้ถึงการแก้ปัญหาก็แล้วกันครับ ... พี่น้อง
    Script Object หลักๆที่ใช้งานบน MS Windows
  • Scripting.FileSystemObject (FSO) พวกนี้เป็น Object ที่เกี่ยวข้องกับไฟล์ โฟลเดอร์ต่างๆ (อ่านรายละเอียดเพิ่มเติมที่นี่)
  • Wscript.Network Object เป็น Object ที่เกี่ยวข้องกับการเชื่อมต่อระบบ Network เช่น การ Mapped Network Drive ... โอกาสหน้าจะนำมาเสนออีกทีครับ
  • WScript.Shell Object คือ Object ที่เกี่ยวข้องกับ Registry ของระบบ ซึ่งผมนำมาเสนอในบทความนี้
      หลักการทำงานของโปรแกรม
    1. ปกติเราสามารถเข้าไปแก้ไข Registry ของระบบโดยตรงผ่านทาง Registry Tools คือ คำสั่ง RegEdit ดังนี้
      การล็อค USB Flash Drive
      HKLM\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies\WriteProtect

      เมื่อ WriteProtect = 0 คือ สามารถใช้งาน USB Flash Drive ได้ตามปกติ (Enable)
      เมื่อ WriteProtect = 1 คือ ไม่สามารถเขียนข้อมูล ลบข้อมูลออกจาก USB Flash Drive ได้ (Disable)

      การล็อคไม่ให้ใช้งาน Registry Tools ได้ (ป้องกันไม่ให้ผู้ใช้เข้าไปแก้ไขใน RegEdit เอง)
      HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools
      เมื่อ DisableRegistryTools = 0 คือ สามารถใช้งาน Registry Tools ได้ตามปกติ (Enable)
      เมื่อ DisableRegistryTools = 1 คือ ไม่สามารถใช้งาน Registry Tools ได้ (Disable)

      นั่นคือเราใช้วิธีการแบบ Manual หรือ เข้าไปแก้ไขเอาเอง (หรืออาจจะเขียนเป็น Script ที่มีนามสกุล VBS ก็ได้) ... ดังนั้นก่อนที่เขียนโปรแกรมขึ้นมาเพื่อ Interface กับผู้ใช้งาน เราก็ต้องรู้ทั้งตำแหน่ง และ Key ต่างๆที่ใช้ด้วยว่า มันมีค่าอะไรอยู่บ้างน่ะครับ

    2. มาว่าถึงตัวโปรแกรม ... เริ่มต้นด้วยการสร้าง Object ขึ้นมาเพื่อทำการทดสอบด้วย RegRead Method เพื่ออ่านค่าก่อนว่า Key ที่ต้องการนั้น มีค่าเป็น 0 หรือ 1 แล้วให้ปรากฏผลอยู่ที่ Option Control เพื่อแสดงหน้าจอติดต่อกับผู้ใช้งาน (GUI)
    3. เมื่อเลือกปรับค่าทั้ง 2 ตัวว่าจะให้ทำงาน หรือ ไม่ทำงานเสร็จเรียบร้อยแล้ว ก็จะให้ Object ทำงานด้วย RegWrite Method เพื่อเขียนข้อมูลกลับเข้าไปที่ Registry ระบบ
ดาวน์โหลด Source Code สำหรับผู้ใช้งาน Visual Basic 6
ดาวน์โหลด Source Code สำหรับ MS Visual Basic 6.0 - Service Pack 6
 ดาวน์โหลด Visual Basic 6.0 SP5: Run-Time Redistribution Pack
 ดาวน์โหลด Microsoft Data Access Object (MDAC) และ Jet 4.0 Update
 ดาวน์โหลด Microsoft Visual Basic Service Pack 6
ข้อมูลเพิ่มเติม
เมื่อกดปุ่ม Ctrl+Alt+Del พิชิตมารไม่ได้ ... การเปิด/ปิดการใช้งาน Task Manager
การอ่านไฟล์ และ โฟลเดอร์ใน Remove Drive (Flash/Thumb/Handy Drive) ภาค 1
การอ่านไฟล์ และ โฟลเดอร์ใน Remove Drive (Flash/Thumb/Handy Drive) ภาค 2 - เสียบเป็นเจอ
การเปลี่ยนชื่อโฟลเดอร์ และ ชื่อไฟล์ให้เป็นตัวอักษรตัวเล็กทั้งหมด


การออกแบบหน้าจอ (Design Time) ประกอบด้วย Control หลักดังนี้

  • CommandButton Control 2 ตัว
  • Option Control 4 ตัว (ใช้ Index เข้าช่วย)


    เมื่อสั่งให้โปรแกรมทำงาน (Run Time)


    แจ้งผลที่ได้ออกมา


    เมื่อล็อคแล้ว ก็จะไม่สามารถคัดลอกข้อมูล เข้าไปสู่ USB Flash Drive ได้ (แต่สามารถคัดลอกข้อมูลออกมาจาก Flash Drive ได้)


    เมื่อล็อคแล้ว ก็จะไม่สามารถลบข้อมูลออกจากตัว USB Flash Drive ได้


    สำหรับการล็อค Registry Tools (ลักษณะแบบนี้พวกเกรียนชอบมากครับ ... พี่น้อง)

    รายการหมกเม็ด ... ให้เกรียนไปหาเอาเอง

    ในกรณีที่ Key ที่ต้องการจะอ่าน มันไม่มีอยู่ใน Registry ... จะเกิด Error ขึ้นทันที

    มาดูโค้ดกันเถอะ ...
    
    Option Explicit
    
    '---------------------------------------------------------------------------------------------------------
    Private Sub Form_Load()
    '---------------------------------------------------------------------------------------------------------
        Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2
        
        Dim strKey As String
    
        ' กำหนดค่าที่ใช้ในการทำ Registry Edit เพื่อทดสอบว่ามีการเปิด หรือ ปิดการใช้งาน Registry Tool หรือไม่
        strKey = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\" & _
                    "Policies\System\DisableRegistryTools"
        ' ผมใช้การเขียนเป็นฟังค์ชั่นเพื่อลดจำนวนโค้ดลงไป หากเรามีการปรับค่าใน Registry จำนวนมากๆ
        
        ' ส่งค่า Key ที่เราต้องการทดสอบไป โดยพิจารณาจากค่า DisableRegistryTools
        ' หากคืนค่ากลับมาเป็น 0 แสดงว่าสามารถใช้งาน Registry Tools ได้
        ' หากคืนค่ากลับมาเป็น 1 แสดงว่าปิดการใช้งาน Registry Tools เอาไว้
        If RegRead(strKey) = 0 Then
            optRegistryTool(0).Value = True
        Else
            optRegistryTool(1).Value = True
        End If
        
        ' กำหนดค่าที่ใช้ในการทำ Registry Edit เพื่อทดสอบว่ามีการป้องกันการเขียนข้อมูลลงไปที่ USB Flsh Drive หรือไม่
        strKey = "HKLM\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies\WriteProtect"
        
        ' ส่งค่า Key ที่เราต้องการทดสอบไป โดยพิจารณาจาก WriteProtect
        ' หากคืนค่ากลับมาเป็น 0 (Enable) แสดงว่าเปิดใช้งาน USB Flash Drive
        ' หากคืนค่ากลับมาเป็น 1 (Disable) แสดงว่าล็อคการใช้งาน USB Flash Drive
        If RegRead(strKey) = 0 Then
            optWriteProtect(0).Value = True
        Else
            optWriteProtect(1).Value = True
        End If
        
    End Sub
    
    '---------------------------------------------------------------------------------------------------------
    ' โปรแกรมย่อยที่รับค่า Key ในการทดสอบเข้ามา และคืนค่ากลับเป็น 0 หากเปิดใช้งาน (Enable)
    ' คืนค่ากลับเป็น 1 หากปิดการใช้งาน (Disable)
    Public Function RegRead(strKey As String) As Byte
    ' จะคืนค่ากลับเป็น Boolean (True/False) ก็ได้น่ะครับ ... ลองเล่นดู
    '---------------------------------------------------------------------------------------------------------
        ' ประกาศตัวแปรแบบ Object
        Dim Obj As Object
        ' เรียกใช้งาน WScript Object
        Set Obj = CreateObject("WScript.Shell")
        
        If Obj.RegRead(strKey) = 0 Then
            RegRead = 0
        Else
            RegRead = 1
        End If
        
        Set Obj = Nothing
    
    End Function
    
    '---------------------------------------------------------------------------------------------------------
    ' เหตุการณ์ (Events) ที่ต้องการปรับเปลี่ยนค่าใน Registry Edit
    Private Sub cmdOK_Click()
    '---------------------------------------------------------------------------------------------------------
        Dim Msg As String
        Msg = ""
        
        ' โจทย์ให้ไปคิดแก้ไขเพิ่มเติมเอาเองครับ ... นั่นคือ WriteProtectFlashDrive กับ RegistryTools
        ' เราสามารถลดโค้ดโดยการใช้งานโปรแกรมย่อยร่วมกันตัวเดียวก็ได้ ดูตัวอย่างจากฟังค์ชั่น RegRead
        
        ' เลือก Option (Index = 0) แสดงว่าไม่ได้ล็อคการใช้งาน USB Flash Drive
        If optWriteProtect(0).Value Then
            Call WriteProtectFlashDrive(True)
            Msg = Msg & "คุณอนุญาตให้สามารถเขียนข้อมูลลงใน USB Flash Drive ได้" & vbCrLf
        
        ' เลือก Option (Index = 1) แสดงว่าล็อคการใช้งาน USB Flash Drive
        Else
            Call WriteProtectFlashDrive(False)
            Msg = Msg & "คุณไม่อนุญาตให้สามารถเขียนข้อมูลลงใน USB Flash Drive ได้" & vbCrLf
        End If
        
        ' เลือก Option (Index = 0) แสดงว่าไม่ได้ล็อคการใช้งาน Registry Tools
        If optRegistryTool(0).Value Then
            Call RegistryTools(True)
            Msg = Msg & "คุณอนุญาตให้สามารถใช้งาน Registry Tool ได้"
        
        ' เลือก Option (Index = 1) แสดงว่าล็อคการใช้งาน Registry Tools เอาไว้
        Else
            Call RegistryTools(False)
            Msg = Msg & "คุณไม่อนุญาตให้สามารถใช้งาน Registry Tool ได้"
        End If
        
        ' รายงานผล
        MsgBox Msg, vbOKOnly + vbInformation, "รายงานสถานะ"
    
    End Sub
    
    '---------------------------------------------------------------------------------------------------------
    ' Tips:
    ' โปรแกรมย่อย WriteProtectFlashDrive และ RegistryTools
    ' สามารถลดคำสั่งให้เป็นโปรแกรมย่อยตัวเดียวกัน เพื่อให้ใช้งานร่วมกันได้
    '---------------------------------------------------------------------------------------------------------
    
    '---------------------------------------------------------------------------------------------------------
    ' การรับค่าของฟังค์ชั่นตัวนี้ หากเราไม่ส่งค่าอะไรมาเลย ก็ให้ถือว่า blnEnable เป็นจริง
    Public Sub WriteProtectFlashDrive(Optional ByVal blnEnable As Boolean = True)
    '---------------------------------------------------------------------------------------------------------
        ' ประกาศตัวแปรแบบ Object
        Dim Obj As Object
        ' เรียกใช้งาน WScript Object
        Set Obj = CreateObject("WScript.Shell")
        
        ' หากเลือก Option  Control ตัวแรก นั่นคือเรากำหนดให้สามารถเขียนข้อมูลลงใน USB Flash Drive ได้
        If blnEnable Then
            Obj.Regwrite "HKLM\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies\" & _
                            "WriteProtect", 0, "REG_DWORD"
        Else
            Obj.Regwrite "HKLM\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies\" & _
                            "WriteProtect", 1, "REG_DWORD"
        End If
        
        Set Obj = Nothing
    
    End Sub
    
    '---------------------------------------------------------------------------------------------------------
    ' การรับค่าของฟังค์ชั่นตัวนี้ หากเราไม่ส่งค่าอะไรมาเลย ก็ให้ถือว่า blnEnable เป็นจริง
    Public Sub RegistryTools(Optional ByVal blnEnable As Boolean = True)
    '---------------------------------------------------------------------------------------------------------
        ' ประกาศตัวแปรแบบ Object
        Dim Obj As Object
        ' เรียกใช้งาน WScript Object
        Set Obj = CreateObject("WScript.Shell")
        
        ' หากเลือก Option  Control ตัวแรก นั่นคือเรากำหนดให้สามารถใช้งาน Registry Tools ได้
        If blnEnable Then
            Obj.Regwrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\" & _
                        "Policies\System\DisableRegistryTools", 0, "REG_DWORD"
        Else
            Obj.Regwrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\" & _
                        "Policies\System\DisableRegistryTools", 1, "REG_DWORD"
        End If
        
        Set Obj = Nothing
        
    End Sub
    
    '---------------------------------------------------------------------------------------------------------
    Private Sub cmdExit_Click()
    '---------------------------------------------------------------------------------------------------------
        Set frmWriteProtectUSBFlash = Nothing
        End
    End Sub
    
    Conclusion:
    การเรียนรู้ ฝึกฝน การเขียนโปรแกรมนั้น มันก็คงไม่ได้หมายความว่า จะต้องมาทำงานสายโปรแกรมเมอร์แต่เพียงอย่างเดียวหรอกน่ะครับ เหมือนที่หลายๆคนกลัว หรือ ไม่ชอบ (ทั้งๆที่จบด้านคอมพิวเตอร์มาโดยตรง) ส่วนสายงานทางด้าน IT Support หรือ Technical ก็ยังสามารถนำไปประยุกต์ใช้งานในองค์กรที่สังกัดได้ เพราะนอกจากจะได้พัฒนาเพิ่มพูนขีดความสามารถ แล้วก็ยังได้เป็นผลงานของตัวเองอีกด้วย ... จากนั้นก็ค่อยรวบรวมเอา Registry ระบบที่สำคัญๆ เก็บเอาไว้ใช้งานให้อยู่ในโปรแกรมตัวเดียวกัน จะได้ไม่ต้องมานั่งจดจำ หรือ นำไฟล์ Visual Basic Script (VBS) ติดตัวไปเพียบให้เกะกะเอาเปล่าๆครับ ... พี่น้อง

  • จี ทู จี เน็ต ดอต คอม - g2gNet Dot Com
    เลขทะเบียนพาณิชย์อิเล็กทรอนิกส์ 0407314800231
    CopyLeft © 2004 - 2099 g2gNet.Com All rights reserved.
    Email: [email protected] หรือ โทร. 08-6862-6560