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