in

Mit VBScript wichtige Daten im Text Datei anonymisieren(manupulieren)

Letzter Beitrag 06-03-2012 11:46 von Peter_Punkt. 5 Antworten.
Seite 1 von 1 (6 Treffer)
Beiträge sortieren: Zurück Weiter
  • 05-24-2012 16:44

    • Ibo
    • Nicht gereiht
    • Registriert am 05-24-2012
    • Beiträge 3

    Sad [:(] Mit VBScript wichtige Daten im Text Datei anonymisieren(manupulieren)

    Hallo

    Kann jemand mir helfen? Ich sollte in einem Text File in bestimmte Spalten Daten abändern oder(Zahlen mit Zahlen, Buchstaben mit Buchstaben) ersetzen.

    Danke für schnelles Antwort

    Gruss

    Ibo

    Abgelegt unter:
    • IP-Adresse ist Registriert
  • 05-25-2012 18:04 Antwort zu

    • Peter_Punkt
    • Top 10 Mitwirkender
    • Registriert am 03-28-2007
    • VS Community 2015, VB, C#, Office 2010, Win 10
    • Beiträge 2.605

    AW: Mit VBScript wichtige Daten im Text Datei anonymisieren(manupulieren)

    Du mußt Dich schon genauer ausdrücken.

    Am besten wäre eine Musterzeile (wie sieht sie vorher aus, wie nachher) zu posten.

    Zwar weiß ich viel, doch möcht' ich alles wissen.
    Dass ich erkenne, was die Welt im Innersten zusammenhält
    • IP-Adresse ist Registriert
  • 05-31-2012 11:01 Antwort zu

    • Ibo
    • Nicht gereiht
    • Registriert am 05-24-2012
    • Beiträge 3

    AW: Mit VBScript wichtige Daten im Text Datei anonymisieren(manipulieren)

    Ja Peter Sicher;

    Orginal Daten

    GSLOH MLEFF NACHN VORNA STRAS TELEF EMAIL
    888888 8888.55 Maler Meier Antonstrasse 43 059 553 00 12 hans@hotmail.com
    888888 8888.7 Gipser Peter Feuerstrasse 28 099 399 97 37

    meier@hotmail.com

     

     

    Danach

     

     

     

    damit die Daten nicht erkennbar sind.

    Danke!

    GSLOH MLEFF NACHN VORNA STRAS TELEF EMAIL
    230862 207671 GFLL31 UMEA65 VPYV45 9728067786 YEED11@dummy.com
    248975 173755 WKUW80 ZGLR50 CCAX13 5256567454 SPZP76@dummy.com

     

     

    • IP-Adresse ist Registriert
  • 06-01-2012 7:56 Antwort zu

    • Roland
    • Top 10 Mitwirkender
    • Registriert am 06-27-2007
    • VB,VBA,Visual S.2005,Datenbanken,Hardware
    • Beiträge 1.046

    AW: Mit VBScript wichtige Daten im Text Datei anonymisieren(manipulieren)

    z.B.:
    Set WshShell=WScript.CreateObject("WScript.Shell")
    Set Fso=WScript.CreateObject("Scripting.FileSystemObject")
    Set Data=CreateObject("Scripting.FileSystemObject")

    Datei="C:\Dokumente und Einstellungen\r.geier\Desktop\script\org_daten.txt"
    Set File1=Data.OpenTextFile(Datei)
    i=1
    Do until File1.AtEndOfStream
    ReDim Preserve Zeile(i)
       Zeile(i)=File1.ReadLine   'Alles lesen, wird jedoch nicht mehr beachtet!
    i=i+1
    Loop
    File1.Close
    Set File1=Nothing

    Datei="C:\Dokumente und Einstellungen\r.geier\Desktop\script\out.txt"
    Set File2=Fso.OpenTextFile(Datei,2,true)
    For i=1 to UBound(Zeile)
    if i<>1 then
    ausgabe =""
    MeinArray =Split(Zeile(i),chr(9),-1,1)
    ausgabe ="ersetze1" & i & chr(9) & "ersetze2" & i & chr(9) & "ersetze3" & i
     else
    ausgabe =Zeile(i)
    end if
    File2.WriteLine(ausgabe)
    Next
    File2.Close
    Set File2=Nothing


    Du solltest natürlich statt des "ersetze"...  Eine Funktion eingeben, die den Wert von MeinArray() konvertiert und Dir das Ergebnis ausgiebt. Ich habe jetzt auch ausgabe nicht für alle "Felder" gecoded, da ich dazu zu faul war. Bei Dir wäre dies also von MeinArray(0) bis MeinArray(6).
    Gruß, Roland

    • IP-Adresse ist Registriert
  • 06-01-2012 10:39 Antwort zu

    • Ibo
    • Nicht gereiht
    • Registriert am 05-24-2012
    • Beiträge 3

    AW: Mit VBScript wichtige Daten im Text Datei anonymisieren(manipulieren)

    Vielen Dank Roland, ich werde es testen Yes
    • IP-Adresse ist Registriert
  • 06-03-2012 11:46 Antwort zu

    • Peter_Punkt
    • Top 10 Mitwirkender
    • Registriert am 03-28-2007
    • VS Community 2015, VB, C#, Office 2010, Win 10
    • Beiträge 2.605

    AW: Mit VBScript wichtige Daten im Text Datei anonymisieren(manipulieren)

    So geht's:

    Die Herausforderung liegt nicht im Lesen und Schreiben der Textdatei, sondern im Generieren einer Zufallszeichenfolge zur nicht umkehrbaren Verfremdung (Anonymisierung) der Feldinhalte.

    Nachfolgend ein Beispiel für eine mögliche Lösung auf der Grundlage von Zufallszahlen.

    Code-Beispiel

    
    ' Projekt:    Felder einer Textdatei durch Zufallszeichenfolge anonymisieren
    '             Problem: http://www.vb-magazin.de/forums/forums/t/6302.aspx
    '
    ' Autor:      Peter_Punkt
    '
    ' Version:    01 - 03.06.2012
    
    Option Explicit
    
    
    Dim I, Zeile, Felder, PosAtZeichen, PosPunktZeichen
    Dim WshShell, Fso, DateiEin, DateiAus
    
    Const EINGABEDATEI= "D:\$PP\$TXT\TextAnonymEin.txt"
    Const AUSGABEDATEI= "D:\$PP\$TXT\TextAnonymAus.txt"
    
    Const ForReading = 1
    Const ForWriting = 2
    
    Set WshShell=WScript.CreateObject("WScript.Shell")
    Set Fso=WScript.CreateObject("Scripting.FileSystemObject")
    
    Set DateiEin = Fso.OpenTextFile(EINGABEDATEI, ForReading)
    Set DateiAus = Fso.OpenTextFile(AUSGABEDATEI, ForWriting, True)        ' Erstellen falls noch nicht vorhanden
     
    DateiAus.WriteLine(DateiEin.ReadLine)                    ' 1.Zeile unverändert in Ausgabe übernehmen
    
    Do until DateiEin.AtEndOfStream
        Zeile = DateiEin.ReadLine
    
    
        If Trim(Zeile) = "" Then                        ' Leerzeile ausgeben
            DateiAus.WriteLine("")
    
        Else
            Felder = Split(Zeile, vbTab, -1, 1)                ' Zeile in die einzelnen Felder splitten
    
            Zeile = ZufallsString(0, Len(Felder(0)), False) & vbTab _
                  & ZufallsString(0, Len(Felder(1)), False) & vbTab _
                  & ZufallsString(Len(Felder(2)), 0, False) & vbTab _
                  & ZufallsString(Len(Felder(3)), 0, False) & vbTab _
                  & ZufallsString(Len(Felder(4)), 2, False) & vbTab _
                  & ZufallsString(0, Len(Felder(5)), False) & vbTab
    
            ' Email-Adresse aus Einzelteilen erstellen
            PosAtZeichen = Instr(Felder(6), "@")                ' Position des @ in der Email-Adresse
            PosPunktZeichen = InstrRev(Felder(6), ".")            ' Position des letzten . in der eMail-Adresse
            Zeile = Zeile & ZufallsString(PosAtZeichen - 1, 0, False) _
                          & "@" & ZufallsString(PosPunktZeichen - PosAtZeichen - 1, 0, False) _
                          & "." & ZufallsString(Len(Felder(6)) - PosPunktZeichen, 0, False)
    
            DateiAus.WriteLine(Zeile)                    ' Anonymisierte Zeile ausgeben
        End If
    Loop
    
    DateiEin.Close                                ' Dateien schließen
    DateiAus.Close
    
    Set DateiEin = Nothing                            ' Ressourcen freigeben
    Set DateiAus = Nothing
    Set Fso = Nothing
    Set WshShell = Nothing
    
    MsgBox "Fertig"
    
    
    ' ***********************
    ' Parameter
    '       BuchstabenAnzahl:       Anzahl der zufällig ausgewählen Buchstaben für die Zeichenfolge
    '       Ziffernanzahl:          Anzahl der an die Zeichenfolge angehängten, zufällig ausgewählen Ziffern
    '       Durchmischen:           True/False - die Zeichen in der Zeichenfolge werden abschließend 
    '                               nach dem Zufallsprinzip umgestellt ("durchgemischt")
    
    Function ZufallsString(BuchstabenAnzahl, ZiffernAnzahl, Durchmischen)
    
        Dim I, J
        Dim Anzahl
        Dim ZeichensatzArray
        Dim AktuellerZeichensatz
        Dim ZufallsPosition
        Dim NeuerString
        Dim FertigerString
    
        ZeichensatzArray = Array(Array(BuchstabenAnzahl, "ABCDEFGHIJKLMNOPQRSTUVWXYZ"), _
                                 Array(ZiffernAnzahl, "0123456789"))
    
        Randomize()                            ' Zufallsgenerator initialisieren
    
        NeuerString = ""
        FertigerString = ""
        
        ' String aus Buchstaben und Ziffern erstellen
        For I = 0 To UBound(ZeichensatzArray)
            Anzahl = ZeichensatzArray(I)(0)                ' Wie lang soll der String werden?
            AktuellerZeichensatz = ZeichensatzArray(I)(1)        ' Welcher Zeichensatz soll verwendet werden?
    
            For J = 1 To Anzahl
                ZufallsPosition = Int( Rnd( ) * Len(AktuellerZeichensatz)) + 1    ' ZufallsPosition errechnen ...
                ' ... und entsprechendes Zeichen aus Zeichensatz entnehmen und an String anfügen
                NeuerString = NeuerString & Mid(AktuellerZeichensatz, ZufallsPosition, 1)
            Next
        Next
    
        ' Anschließend Reihenfolge der Zeichen im neuen String nach Zufallsprinzip umstellen('Durchmischen')
        If Durchmischen Then
            Do While Len(NeuerString) > 0
                ZufallsPosition = Int(Rnd( ) * Len(NeuerString)) + 1    ' ZufallsPosition errechnen ...
    
                FertigerString = FertigerString & Mid(NeuerString, ZufallsPosition, 1)    ' Zeichen an ZufallsPosition entnehmen ...
            ' ... und den bisherigen String an dieser Position zusammenschieben (um Lücke zu schließen)
                NeuerString = Left(NeuerString, ZufallsPosition - 1) & Mid(NeuerString, ZufallsPosition + 1)
            Loop
        Else
            FertigerString = NeuerString
        End If
    
    
        ZufallsString = FertigerString
    
      End Function
    
    ' ***********************
    Zwar weiß ich viel, doch möcht' ich alles wissen.
    Dass ich erkenne, was die Welt im Innersten zusammenhält
    Abgelegt unter:
    • IP-Adresse ist Registriert
Seite 1 von 1 (6 Treffer)