hỏi về giải thuật phá pass (2 người xem)

  • Thread starter Thread starter gintano1
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

gintano1

Thành viên mới
Tham gia
27/7/14
Bài viết
22
Được thích
0
chào các bác, em đọc trên mạng có đoạn code vba phá pass file excel như này mà em không hiểu họ dùng giải thuật gì, nôm na có thể nói là thử từng password nhưng các biến cho chạy từ 65 - 66 hơi khó hiểu, các bác có thể giải thích giúp em được không
Sub PasswordBreaker()
If ActiveSheet.ProtectContents = False Then
MsgBox "Sheet '" & ActiveSheet.Name & "' is unprotected!", vbInformation
Else
If MsgBox("Sheet '" & ActiveSheet.Name & "' is protected, do you want to unprotect it?", _
vbYesNo + vbQuestion, "Unprotect Active Sheet") = vbNo Then Exit Sub
Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer
Dim i1 As Integer, i2 As Integer, i3 As Integer
Dim i4 As Integer, i5 As Integer, i6 As Integer
On Error Resume Next
For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126
ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & _
Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
If ActiveSheet.ProtectContents = False Then MsgBox "Sheet '" & ActiveSheet.Name & "' is unprotected!", vbInformation
End If
End Sub
 
đoạn code VBA phá Pass protect sheet hoặc VBA phá pass protect workbook đã không còn tác dụng đối với excel 2013---2016 rồi
tuy nhiên tôi sẽ không cần code để phá 2 loại này như thường.tất nhiên đã có cách ở GPE rồi không cần dẫn link nữa.
 
Upvote 0
Mọi người đang bàn về giải thuật, mục đích không phải là phá pass.
 
Upvote 0
đoạn code VBA phá Pass protect sheet hoặc VBA phá pass protect workbook đã không còn tác dụng đối với excel 2013---2016 rồi
tuy nhiên tôi sẽ không cần code để phá 2 loại này như thường.tất nhiên đã có cách ở GPE rồi không cần dẫn link nữa.

Tôi không thích chuyện phá này phá nọ. Tôi chỉ nói chuyện phiếm về dãy số AAA... - BBB...
Đồng thời, vì biến đổi giữa A/B là một hình thức ngã cờ 0/1 (flag) cho nên tôi bàn thêm về thuật nhị phân.

Tôi thì tôi sửa như thế này
PHP:
Str = "AAAAAAAAAAA"
Do
    For i = 32 To 126
        ...
        If ... Then Exit Sub
    Next
    Mid(Str, InStrRev(Str, "A")) = "BAAAAAAAAAA"
Loop
Không biết có nhanh không nhưng thấy gọn hơn.

Đây là kỹ thuật nhồi bit. Một hình thức đi từ 0000 sang 0001, 0010, 0011, 0100,... Tức là 0, 1, 2, 3, 4,...
Nó cũng là cách nhị phân.
Khuyết điểm: Vì dùng nhiều hàm chuỗi cho nên nó chậm
Lợi điểm: Vì dùng chuỗi cho nên nó có thể thực hiện chuỗi rất dài, khắc phục được nhược điểm của cách dùng số
Nhược điểm của cách dùng số tôi đã nêu ra trước đây: số nguyên không dấu chỉ đến khoảng 4 tỷ - 32 bits; số thực chỉ chính xác tới 15 chữ số (hình như là 48 bits).
(cách tính số nguyên cũng tương tự số thực. Tôi phân biệt ở đây là vì đối với máy tính, con toán số nguyên nhẹ hơn số thực nhiều. Nếu cần tốc độ thì phải giảm thiểu dùng số thực)
 
Upvote 0
Đúng ra mình không định trả lời vì thái độ của bạn có vẻ như thách thức chứ không phải muốn học hỏi
Nhưng thôi, trả lời theo những gì tôi biết và trả lời cho những ai cần nghe:
- Đối với Excel 2003 trở về trước, mỗi khi ta tạo ra một password để bảo vệ bảng tính (protect sheet, protect workbook) thì ngay lập tức anh Bill sẽ tạo ra một chìa khóa "cửa hậu" để mở
- Cặp chìa khóa này có tính tương tác 2 chiều. Tức bạn Protect Sheet bằng pass A thì bạn có thể Unprotect Sheet bẳng A và "cửa hậu" B nào đó, đồng thời nếu bạn làm ngược lại: Protect Sheet bằng pass B thì chắc chắn bạn có thể Unprotect Sheet được bằng khóa A. Lấy ví dụ tôi Protect Sheet bằng pass ndu và tôi có khóa "cửa hậu" là AABAAABBAAAW. Vậy với 1 bảng tính khác, nếu tôi Protect Sheet bằng pass AABAAABBAAAW thì tôi sẽ Unprotect được bẳng pass ndu
- Các tính chất như đã nêu đều dựa vào lỗ hỏng bảo mật trong các phiên bản office trước đây và từ đó người ta xây dựng code dò tìm (chứ không phải "cưỡng bức" hay "rối loạn tiền đình" gì cả). Bây giờ với phiên bản 2013, 2016 mà dùng code dò theo kiểu đó đến Tết của chưa ra
(Riêng file xlsx được tạo từ phiên bảng Excel 2007 tôi chưa thử nên không chắc)

Nhưng không phải 1 "cửa hậu" đâu Ndu à, số lượng cửa hậu hình như nó phụ thuộc vào độ dài của Pass hay sao ấy.
Mình sửa đoạn Code trên thành:

Sub PasswordBreaker()
Dim Dg
Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer
Dim i1 As Integer, i2 As Integer, i3 As Integer
Dim i4 As Integer, i5 As Integer, i6 As Integer
On Error Resume Next
For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126
ActiveSheet.Protect "SEALAND"
ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & _
Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
If ActiveSheet.ProtectContents = False Then
Dg = Dg + 1
ActiveSheet.Cells(Dg, 1) = Chr(i) & Chr(j) & Chr(k) & _
Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
End Sub


Mục đích là để liệt kê các cửa hậu mà code này tìm được lên cột A và kết quả mình được 6 cửa hậu. Nếu thay Pass= "GPEFORUM" thì được 7 cửa hậu.
 
Upvote 0
Nhưng không phải 1 "cửa hậu" đâu Ndu à, số lượng cửa hậu hình như nó phụ thuộc vào độ dài của Pass hay sao ấy.
Mình sửa đoạn Code trên thành:

Sub PasswordBreaker()
Dim Dg
Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer
Dim i1 As Integer, i2 As Integer, i3 As Integer
Dim i4 As Integer, i5 As Integer, i6 As Integer
On Error Resume Next
For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126
ActiveSheet.Protect "SEALAND"
ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & _
Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
If ActiveSheet.ProtectContents = False Then
Dg = Dg + 1
ActiveSheet.Cells(Dg, 1) = Chr(i) & Chr(j) & Chr(k) & _
Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
End Sub


Mục đích là để liệt kê các cửa hậu mà code này tìm được lên cột A và kết quả mình được 6 cửa hậu. Nếu thay Pass= "GPEFORUM" thì được 7 cửa hậu.
e có 1 file cần hoàn thành mà không biết tìm sự giúp đỡ ở đâu, vì e k dc học về chuyên ngành mềm này,mà ở chỗ làm cần hoàn thành file, bác bào rành macro xin hoàn thiện giúp, chân thành cảm ơn!
 

File đính kèm

Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom