MyTetra Share
Делитесь знаниями!
004. Бинарный вид файла Access
Время создания: 16.03.2019 23:43
Раздел: Разные закладки - VBA - Access - leadersoft.ru
Запись: xintrea/mytetra_db_adgaver_new/master/base/15313713818w91wn0qs9/text.html на raw.githubusercontent.com

05. Данный пример показывает бинарный вид файла Access. Когда вы сможете читать файлы Access бинарным способом, то Вам не будут страшны программы взломщики. Например, Вы сохранили в базе данных свойства, которые используются для авторизации. Далее нашли в базе данных смещение и расчитали контрольную сумму этих байт. Используя для проверки авторизации это число, то можно понять как прошла авторизация. Если неправильно (взломщик переписал байты), то можно "аккуратно", не выключая программу, "подать к столу" "отравленные" данные (реверс строки, vbNewLine добавить в текст и т.п.).

Все примеры Microsoft Access
'==============================================================
'   Загрузка файла
Public Function funLoadDataBase(strFile As String)
Dim dbs As DAO.Database, rst As DAO.Recordset
Dim j As Long
Dim strСмещение As String
Dim strИсходник As String
Dim strЦифровик As String
Dim ID As Byte, bt As Byte

    'Проверяем файл и читаем его
    If strFile <> "" Then
        Me.Parent.Tag = "start"
        ' Удаляем все из таблицы
        Set dbs = CurrentDb
        dbs.Execute "DELETE * FROM [Пример 05]"
        Me.Requery
        On Error GoTo 999
            ID = FreeFile 'Получаем свободный идентификатор файла
            Set rst = dbs.OpenRecordset("SELECT * FROM [Пример 05]")
            Open strFile For Binary As ID 'Открываем файл
            j = 0
            Do While Not EOF(ID)    ' Проверка конца файла
                strСмещение = j 'или hex(j)
                strИсходник = ""
                strЦифровик = ""
                Me.Parent.myTimer.Caption = " Загрузка: " & Format(j, "000000")
                DoEvents
                Do While Not EOF(ID)    ' Проверка конца файла
                    j = j + 1
                    Get #ID, , bt 'Читаем байты
                    strЦифровик = strЦифровик & Format(CLng(bt), "000") & " "
                    If (bt < 32) Or (bt > 255) Then
                        strИсходник = strИсходник & "."
                    Else
                        strИсходник = strИсходник & Chr(bt)
                    End If
                    If (j \ 16) = (j / 16) Then Exit Do
                Loop
                ' Вставляем строку
                rst.AddNew
                rst!Смещение = strСмещение
                rst!Исходник = strИсходник
                rst!Цифровик = strЦифровик
                rst.Update
                If Me.Parent.Tag = "stop" Then Exit Do
            Loop
            rst.Close
            Me.Parent.myTimer.Caption = " Загрузка завершена"
            Me.Requery
            Close 'Закрываем открытые файлы
    End If
    Exit Function
999:
    MsgBox Err.Description
End Function

Так же в этом разделе:
 
MyTetra Share v.0.67
Яндекс индекс цитирования