Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1864to1868
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

unlesbares log-File erstellen

unlesbares log-File erstellen
25.01.2022 12:19:19
Jörg
Hallo,
ich habe hier (https://www.herber.de/forum/archiv/1256to1260/1258105_LogFile_fuer_vorgenommene_Aenderungen.html) den folgenden Code gefunden:

Option Explicit
Dim mstrOld(1 To 1000, 1 To 16384) As String
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row > 1000 Then Exit Sub
Dim strDatei As String, strText As String
Dim strZeit As String, strUser As String, strZelle As String, strOld As String, strNeu As String
Dim intFile As Integer, rng As Range
Const strDELIM As String = "|"      'Logfile Delimiter - ggf. anpassen
Const lenUser As Integer = 15       'Anzahl Zeichen für Username
Const lenAdresse As Integer = 6     'Anzahl Zeichen für Zelladress
Const lenWert As Integer = 10       'min. Anzahl Zeichen für Wert alt und neu
Const FormatZeit As String = "YYYY-MM-DD hh:mm:ss" 'Format für Zeitstempel
intFile = FreeFile
With ThisWorkbook
'Logbuch in allgemeinem, öffentlichen Verzeichnis, eine Datei je User
strDatei = "C:\Users\Public\Test\Data" & "\LogBuch_" & Environ("Username") & "_" _
& Left(.Name, InStrRev(.Name, ".") - 1) & ".txt"
'Logbuch im Verzeichnis der Datei, eine Datei je User
strDatei = .Path & "\LogBuch_" & Environ("Username") & "_" _
& Left(.Name, InStrRev(.Name, ".") - 1) & ".txt"
'Logbuch im Verzeichnis des Users
strDatei = Environ("USERPROFILE") & "\LogBuch_" & Environ("Username") & "_" _
& Left(.Name, InStrRev(.Name, ".") - 1) & ".txt"
'Logbuch im Verzeichnis der Datei, eine Datei für alle User
strDatei = .Path & "\LogBuch_" & "_" & Left(.Name, InStrRev(.Name, ".") - 1) & ".txt"
End With
Open strDatei For Append As #intFile
If LOF(intFile) = 0 Then
'Texte in Titelzeile
With Application.WorksheetFunction
strZeit = "Zeitstempel"
strZeit = strZeit & VBA.Space(.Max(0, Len(FormatZeit) - Len(strZeit)))
strUser = "User"
strUser = strUser & VBA.Space(.Max(0, lenUser - Len(strUser)))
strZelle = "Zelle"
strZelle = strZelle & VBA.Space(.Max(0, lenAdresse - Len(strZelle)))
strOld = "alter-Wert"
strOld = strOld & VBA.Space(.Max(0, lenWert - Len(strOld)))
strNeu = "neuer-Wert"
strNeu = strNeu & VBA.Space(.Max(0, lenWert - Len(strNeu)))
strText = strZeit & strDELIM & strUser & strDELIM & strZelle & strDELIM & _
strOld & strDELIM & strNeu & strDELIM
End With
Print #intFile, strText
'Text für Trennzeile ("-" und Trennzeichen)
strText = String(Len(strZeit), "-") & strDELIM & String(Len(strUser), "-") & strDELIM _
& String(Len(strZelle), "-") & strDELIM _
& String(Len(strOld), "-") & strDELIM & String(Len(strNeu), "-") & strDELIM
Print #intFile, strText
End If
For Each rng In Target.Cells
If rng.Value  mstrOld(rng.Row, rng.Column) Then
With Application.WorksheetFunction
strZeit = Format(Now, "YYYY-MM-DD hh:mm:ss")
strUser = Environ("username")
strUser = strUser & VBA.Space(.Max(0, lenUser - Len(strUser)))
strZelle = VBA.Replace(rng.Address, "$", "")
strZelle = strZelle & VBA.Space(.Max(0, lenAdresse - Len(strZelle)))
strOld = mstrOld(rng.Row, rng.Column)
strOld = strOld & VBA.Space(.Max(0, lenWert - Len(strOld)))
strNeu = IIf(rng.Value = "", "#gelöscht#", rng.Value)
strNeu = strNeu & VBA.Space(.Max(0, lenWert - Len(strNeu)))
strText = strZeit & strDELIM & strUser & strDELIM & strZelle & strDELIM & _
strOld & strDELIM & strNeu & strDELIM
End With
Print #intFile, strText
End If
Next
Close #intFile
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row > 1000 Then Exit Sub
Dim rng As Range
For Each rng In Target.Cells
mstrOld(rng.Row, rng.Column) = rng.Value
Next
End Sub
Der tut 100% was ich suche, perfekt.
Nun liegen die Log-Files aber im selben Verzeichnis, was ganz ok ist, und sind für jeden les- und änderbar. Was für den bösen Rumpfuscher eine tolle Sache ist, aber nicht für den Sinn.
Kann ich die Einträge irgendwie so verändern, das in einem Texteditor nur Kaudawelsch zu lesen ist und der Inhalt sich nur für den Besitzer einer Entschlüsselungs-Excel-Tabelle zeigt?
(Sorry, hab nicht gefunden wie man hier Code kennzeichnet und deshalb "Zitat" genommen)
Lieben Gruß
Jörg

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: unlesbares log-File erstellen
25.01.2022 13:08:19
ChrisL
Hi Jörg
Bitte die Frage bei Bedarf wieder als offen markieren.
Die rechtlichen Aspekte einer "Überwachung" lasse ich aussen vor.
Mein Tipp wäre, die Log-Datei in einen "abgelegenen" Ordner zu legen. Die Datei könnte man auch noch ausblenden. Das VBA-Projekt schützen, so dass man den Pfad im VBA-Editor nicht sieht.
Natürlich kann man das VBA-Passwort knacken oder zufällig auf die Datei stossen, aber für den Otto-Normalverbraucher sollte der "Schutz" reichen.
Geht natürlich nicht, wenn du überall hin Log-Dateien verteilst. Insbesondere, wenn du dem Benutzer die Datei auch noch ins persönliche Verzeichnis legst.
Zur Frage an sich, könntest du mal das Internet konsultieren. Hier ein paar zufällige Beiträge:
https://stackoverflow.com/questions/43752758/vba-to-create-password-protected-file
https://stackoverflow.com/questions/67294035/basic-encrypting-of-a-text-file
https://stackoverflow.com/questions/139046/easiest-way-to-decrypt-pgp-encrypted-files-from-vba-ms-access
Im ersten Link wird eine Excel-Datei mit Passwort versehen. Ist vielleicht einfacher umzusetzen, wie eine komplexe Verschlüsselung.
Der Grad des Sicherheit ist evtl. bei den anderen Varianten höher, aber gemäss deiner Beschreibung soll ja nur die Möglichkeit der Manipulation erschwert werden. Eine 100% Sicherheit gibt es m.E. bei keiner Variante.
cu
Chris
Anzeige
AW: Base64
25.01.2022 13:21:03
Fennek
Hallo,
wenn das Logfile mit ADODB geschrieben wird, kann es direkt Base64 kodiert werden. Für Leute aus dem Bereich IT-Security/CTF ist das zwar leicht zu lesen, aber für "Normalos" ...
mfg
AW: Base64
25.01.2022 13:35:42
Jörg
Danke für den Tipc, ist aber nur Text, weil es kein dauerhafter Einsatz ist.
(Sorry, ich schnall dieses Forum-Programm einfach nicht, meine Antworten werden fast nie so einsortiert wie ich dachte das es sein müßte)
AW: unlesbares log-File erstellen
25.01.2022 13:32:27
Jörg
Vielen Dank, der mittlere Link ist was ich suche, wenn auch viiiiel zu kompliziert. Mir hätte es schon gereicht, zum ASCII-Code eines Buchstabens einfach 1 hinzuzuaddieren ... oder sowas.
Es geht nicht um Überwachung, aber wir haben einen MA, der manipuliert die Tabelle, was zur Folge hat, das die Produktionsmaschine stehen bleibt. Wie soll man den sonst kriegen?
Danach wird das wieder deaktiviert, weil die logs uns sonst nur die Platten vollmüllen und für uns keinen Wert haben.
Gruß Jörg
Anzeige
AW: unlesbares log-File erstellen
25.01.2022 13:58:02
ChrisL
Hi Jörg
Danke für die Rückmeldung.
Zur Rückfrage kann ich keine Aussage machen. Ich verstehe, dass es ärgerlich ist, aber aus dem Bauch heraus würde ich vermuten, dass deine "Beweisführung" nicht verwertbar und somit kontraproduktiv ist. Letztlich ist es aber keine Fragestellung, welche ein Excel-Forum beantworten kann.
cu
Chris
AW: Caesar
25.01.2022 14:22:05
Fennek
Hallo,
eine "Casar-Verschlüsselung" ist zwar eher etwas für den Kindergeburstag, aber im Prinzip geht das so:

Tx = cells(i,1)
for b = 1 to len(Tx)
out = out & chr(asc(mid(Tx,b,1))+1)
next b
cells(i, 1) = out
mfg
Anzeige
LAMBDA-CRYPT und -RECODE.2.5
27.01.2022 01:20:53
lupo1
http://office-hilfe.com/support/threads/36909#CRYPT
http://office-hilfe.com/support/threads/36909#RECODE25
CRYPT hätte den Vorteil, dass man eine Passphrase zum Ver- und Entschlüsseln verwenden kann, die nur Ihr beide kennt. Reicht das nicht, nimmt man einfach 2 davon und CRYPTet zweimal.
Da in einem Logfile Zeilenumbrüche sind, muss man die zusätzlich durch ein seltenes Zeichen aus ASCII 32-255 ersetzen (und vice versa am Ende).
Natürlich kann man CRYPT und RECODE.2.5 auch ganz einfach durch VBA nachbauen. Damit verschlüsselt dann auch Antik-Excel.
Anzeige
AW: Forensik
27.01.2022 08:44:52
Fennek
Hallo,
der VBA-Code ist ok, aber der falsche Ansatz, da man leicht VBA abschalten kann.
Wie wäre es mit "Forensik"? Da meines Wissens nach solche Ansätze nicht in den Foren besprochen wurden, frage auf http://www.office-loesung.de/p/viewforum.php?f=166, da kann man PM senden.
mfg
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige