当前位置:编程学习 > 网站相关 >>

文件夹伪装工具原代码

白色猎人(Unicorn)
来源:易做图八进制安全小组 中国

  前阵子特别无聊,我在自己电脑里整理黑软,无意中发现了个文件夹加密工具,经过半小时的分析,发现了它的加密原理,心想反正没事情做,于是根据它的原理用vb自己写了一个文件夹伪装程序,哈哈,自己动手丰衣足食。其原理和代码如下:

  (PS:下面的+s、+r、+h、+a分别表示系统属性、只读属性、隐藏属性和存档属性。)
   
    1.文件夹必须是+s +r的
    2.desktop.ini必须是+s +a +h +r
    3.[.ShellClassInfo]
    CLSID={21ec2020-3aea-1069-a2dd-08002b30309d}
   
    (这里的CLSID可以是:
      1、CLSID={21ec2020-3aea-1069-a2dd-08002b30309d}   控制面板 ‘如果是写入的代码是这个的话,文件夹会伪装成控制面板
      2、CLSID={20D04FE0-3AEA-1069-A2D8-08002B30309D}   我的电脑 ‘如果是写入的代码是这个的话,文件夹会伪装成我的电脑
      3、CLSID={645FF040-5081-101B-9F08-00AA002F954E}   回收站   ‘如果是写入的代码是这个的话,文件夹会伪装成回收站
    CLSID不同伪装出来的效果也不同的。)

  满足以上三个条件就可以实现文件夹的伪装了。
   
下面是核心部分的原代码(其实里面一些代码根本不完善。考虑也不周到的,希望大家看了自己完善吧。),上面我写上了注释,代码很简单,大家慢慢看吧,编程高手看了可别笑哦:

==加密部分的代码==
_one>
Dim n(20), i, mima, mima1, load
Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Dim syspath As String         获取系统路径的API函数
Dim len5 As Long

Private Sub Command2_Click()
    Form4.Show
End Sub

Private Sub syspath1()
  syspath = String(255, 0)
  len5 = GetSystemDirectory(syspath, 256)
  syspath = Left(syspath, InStr(1, syspath, Chr(0)) - 1)
End Sub

Private Sub Command3_Click()
    Call syspath1
    mima = Trim(Text2.Text)
    light = Len(mima)           检查密码的长度
      If light < 0 Or light > 20 Then         判断密码的长度,如果密码长度不在0-20之间就报错
        MsgBox "你输入的密码长度不在0-20间,请重新输入", vbExclamation + vbOKOnly, "出错拉!"
        Text1.Text = ""
        Text2.Text = ""
        Text2.SetFocus
        End If
    For i = 1 To light         ’这里是密码加密的算法,算法很简单,是个异或运算(这里出现这个是因为伪装文件夹后需要输入密码才可以恢复,这里的密码就是这个拉。)
      n(i) = Asc(Mid(mima, i, 1))
      n(i) = Chr(n(i) Xor (i + light))
      mima1 = mima1 & n(i)
    Next
 
    Open Dir1.Path & "/mm.ini" For Output As #1     ’打开需要伪装的文件夹所在的路径,在这个文件夹中写入mm.ini文件,里面用来记录加过迷的密码
    Print #1, mima1
        MsgBox "密码设置成功,请记住你的密码哦", vbInformation + vbOKOnly, "恭喜!"
    Close #1
   
    Open syspath & "mm.ini" For Output As #4   ’顺便将密码写入到系统目录下,防止丢失,为了便于恢复和解密,为此我专门写了个解密工具,扯远了
    Print #4, mima1
    Close #4
   
    Open Dir1.Path & "/desktop.ini" For Output As #2
    Print #2, "[.ShellClassInfo]"
    Print #2, "CLSID={21ec2020-3aea-1069-a2dd-08002b30309d}"
    Close #2
 
    Open App.Path & "/add.bat" For Output As #3   ’输出一个批处理是实现文件夹伪装的。里面的几条命令对各位黑哥应该都很熟悉了吧。
    Print #3, "attrib +s +a +h +r" & Chr(32) & Dir1.Path & "/desktop.ini"
    Print #3, "attrib +s +r" & Chr(32) & Dir1.Path
    Print #3, "del" & Chr(32) & "add.bat"
    Close #3
    Shell App.Path & "/add.bat", vbHide
    Unload Me
    Form1.Show
End Sub

Private Sub Command4_Click()
    Unload Me
    Form1.Show
End Sub

Private Sub Dir1_Change()
  Text1.Text = Dir1.Path
End Sub

Private Sub Drive1_Change()
    On Error Resume Next
    Dir1.Path = Drive1.Drive
End Sub

Private Sub Form_Load()
    Text1.Text = ""
    Text2.Text = ""
    Text2.PasswordChar = "*"
End Sub
 
 

 

==解密部分的代码==
解密部分的代码其实和加密部分的代码差不多的,我就不在多解释了,相信大家都能看的懂的。
_one>
Dim n(20)
Private Sub Command2_Click()
  Form4.Show
End Sub
Private Sub Command3_Click()
On Error GoTo gg
Open Dir1.Path & "mm.ini" For Input As #1
  Do Until EOF(1)
      Line Input #1, Unicorn$         ----读入的密码放入变量Unicorn中-----
  Loop
  light = Len(Unicorn$)
      If light < 0 Or light > 20 Then
      MsgBox "你输入的密码长度不在0-20间,请重新输入", vbExclamation + vbOKOnly, "出错拉!"
      End If
  For i = 1 To light
      n(i) = Asc(Mid(Unicorn$, i, 1))
      n(i) = Chr(n(i) Xor (i + light))
      mima = mima & n(i)
  Next
  If Trim(Text2.Text) = mima Then
    MsgBox "成功解密拉!", vbInformation, "恭喜"
    Open App.Path & "/m.bat" For Output As #2
        Print #2, "attrib -s -a -h -r" & Chr(32) & Dir1.Path & "desktop.ini"
        Print #2, "attrib -a " & Chr(32) & Dir1.Path & "mm.ini"
        Print #2, "attrib -s -r" & Chr(32) & Dir1.Path
        Print #2, "del" & Chr(32) & Dir1.Path & "desktop.ini"
        Print #2, "del" & Chr(32) & Dir1.Path & "mm.ini"
        Print #2, "del" & Chr(32) & "m.bat"
    Close #2
    Shell App.Path & "/m.bat", vbHide
    Form1.Show
    Unload Me
  Else
    MsgBox "你输入的密码有问题,如果你不是非法用户,别紧张,再试试", vbExclamation + vbOKOnly, "密码错误"
    Text1.Text = ""
    Text2.Text = ""
    Text2.SetFocus
  End If
gg:
Close #1
End Sub
Private Sub Command4_Click()
  Form1.Show
  Unload Me
End Sub
Private Sub Dir1_Change()
  Text1.Text = Dir1.Path
End Sub
Private Sub Drive1_Change()
  On Error Resume Next
  Dir1.Path = Drive1.Drive
End Sub
Private Sub Form_Load()
  Text1.Text = ""
  Text2.Text = ""
  Text2.PasswordChar = "*"
End Sub
 
 

以上

补充:综合编程 , 安全编程 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,