Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

VB + VBS um Email in Txt zu speicher, auszuwerten und Aktion auszulösen. Teil 2

Frage Entwicklung Batch & Shell

Mitglied: Borob14

Borob14 (Level 1) - Jetzt verbinden

22.09.2014, aktualisiert 25.09.2014, 1026 Aufrufe, 15 Kommentare

Fortführung zu Thema: http://www.administrator.de/frage/-248907.html

Letzter Stand:
Dim strClientname, fso, regex, strContent, matches
Set fso=CreateObject("Scripting.FileSystemObject")
Set regex = CreateObject("vbscript.regexp")
regex.IgnoreCase = True
regex.Pattern = "Kryptik"
strContent = fso.OpenTextFile("C:\PFAD\DATEI.txt").ReadAll()
Set matches = regex.Execute(strContent)
If matches.Count > 0 Then
regex.Pattern = "Clientlist: SERVER / ([^,\r\n]+)"
Set matches = regex.Execute(strContent)
If matches.Count > 0 Then
strClientname = Trim(matches(0).submatches(0))
msgbox strClientname
End If
End If


Hallo noch mal, habe doch noch ein Anliegen: Ich muss leider ne Sicherung einbauen.
Es ist möglich das 2 oder mehr mal Zeile 9 (Clientlist: SERVER / ) Bedingung in der Textdatei erfüllt wird (sehr selten aber doch möglich)
Dadurch muss die Abfrage eine Abbruchbedingung bekommen, damit nicht der falsche Client bearbeitet wird.
Ich weiß das das mit For Each funktioniert. Allerdings nicht wie im Zusammenhang mit diesen "Regex.pattern" das gemacht wird.

Es reicht halt kein If / Else mehr, da das matches abbricht, sobald es einmal den String gefunden hat.

wenn 1 -> Bedingung A
wenn 0 -> Bedingung B
wenn >1 -> Bedingung C

Ich stehe etwas mit Schleifen auf Kriegsfuß und hoffe mir hilft wer

Danke

Mit freundlichen Grüßen Rob
Mitglied: colinardo
22.09.2014, aktualisiert um 15:16 Uhr
Hallo Rob,
du kannst mit REGEX auch mehrere Vorkommen eines Pattern matchen lassen. Dies legst du mit
regex.Global = True
fest. Dann werden alle Vorkommen in das Matches-Array mit aufgenommen, und du kannst mit matches(x) auf den gewünschten Match zugreifen.
Über alle Matches lässt sich dann ebenfalls iterieren:
01.
For Each myMatch In matches 
02.
	if myMatch.SubMatches(0) = "?????" then 
03.
            'usw. 
04.
        end if 
05.
Next
Oder du passt das Regex so an das nur der gewünschte Part gematcht wird. Hiermit wird z.B. der letzte Eintrag dieser Art genommen:
regex.Pattern = "[\s\S]*Clientlist: SERVER / ([^,\r\n]+)" 
Du musst halt wissen welchen Eintrag du haben willst ...

Grüße Uwe

p.s. für die Arbeit mit Regular Expressions kann ich RegexBuddy wärmstens empfehlen.
Bitte warten ..
Mitglied: Borob14
22.09.2014 um 15:18 Uhr
und wieder einmal danke dir
schaue es mir morgen früh gleich an, heute wird's nix mehr. Gleich Feierabend und Stress mit Umzug. Wollt mir schon längst mal die Seite antuen aber komme einfach nicht dazu.
Bitte warten ..
Mitglied: Borob14
23.09.2014 um 17:02 Uhr
So ich mach das mal etwas ausführlicher, ich komm damit einfach nicht klar

Zum Log:
Der Log wird fortlaufend von einem Virenscanner gefüllt und alle 5 Minuten per VBS überprüft (und anschließend gelöscht) ob es ein bestimmten Befall gibt. Wenn der Befall auftritt wird der Client ausgelesen und per CMD Befehl wird der Client vom Netz gekappt, damit im Netzwerk keine Daten verseucht werden)

Das kleine Problem was ich nun noch habe, an einem Beispiel:
Es kann vorkommen das innerhalb der 5 Minuten mehrere Clients auffallen.
Client 1 hat eine Bedrohung z. Bsp. Verseuchte Seite wird geblockt
Client 2 hat den gesuchten bösartigen Virus
Client 3 hat wieder "nur" ein HTTP Block

Möglichkeit A) Lese LogFile aus > wenn mehr als ein Client -> Ende / Benachrichtigung per Mail
Möglichkeit B) Er kann den richtigen Client korrekt auslesen. (wäre mir lieber, da es ein Eingreifen unnötig macht und die Variable im Feierabend eingreifen zu müssen, verkleinert


Hier mal eine zufällig Log mit 3 Clients, ich müsste meine Abfrage so ändern das er immer nach dem gleichen Muster fragt.
1. Ist "Clientlist: SERVERNAME / CLIENTNAME" vorhanden? -> Client in Variable speichern
2. Ist "Echtzeit-Dateischutz" vorhanden
3. Ist Schädling Beispiel "Kryptik" oder "Test" vorhanden (ich brauche hier eine einfache Erweiterung auf 2 oder mehr Abfragen)
4. Prüfen ob Ende von Log oder ob es nächsten Eintrag "Clientlist: SERVERNAME / CLIENTNAME" gibt, wenn ja -> 2.


Bsp. Log (3 mal HTTP Block, andere Sachen sind gleich aufgebaut):
[2014-09-23 08:37:00.024] V1 [5421150c1875] [00000e7c] <NOTIFICATION_ACTION_INFO> Clientbedrohung, Message:
Clientlist: SERVERNAME / CLIENTNAME
Primäre Clients mit Warnung zum Schutzstatus
Server: SERVERNAME
Logfile: 16895, SERVERNAME / CLIENTNAME, 2014-09-23 08:26:24 , ZENSUR, E-Mail-Schutz - Outlook, Warnung, E-Mail-Nachricht, Von: MMS An: ZENSUR Betreff MMS = MIME = 04122013JBGOAL.zip, Win32/TrojanDownloader.Wauchos.X Trojaner, gelöscht,


[2014-09-23 10:07:00.068] V1 [54212a242a76] [00001370] <NOTIFICATION_ACTION_INFO> Clientbedrohung, Message:
Clientlist: SERVERNAME / CLIENTNAME
Primäre Clients mit Warnung zum Schutzstatus
Server: SERVERNAME
Logfile: 16899, SERVERNAME / CLIENTNAME, 2014-09-23 10:05:20 , ZENSUR, E-Mail-Schutz - Outlook, Warnung, E-Mail-Nachricht, Von: Info An: ZENSUR Betreff Re: Entstellung von Konten = MIME = order_59.zip, VBA/TrojanDownloader.Agent.AV Trojaner, gelöscht,


[2014-09-23 10:37:00.015] V1 [5421312c30ee] [0000023c] <NOTIFICATION_ACTION_INFO> Clientbedrohung, Message:
Clientlist: SERVERNAME / CLIENTNAME
Primäre Clients mit Warnung zum Schutzstatus
Server: SERVERNAME
Logfile: 16905, Dd1vws01 / CLIENTNAME, 2014-09-23 10:31:25 , ZENSUR, E-Mail-Schutz - Outlook, Warnung, E-Mail-Nachricht, Von: huynhs@thp.uni-koeln.de An: ZENSUR Betreff Re: Der Prozess ist abgeschlossen = MIME = order_10.zip, VBA/TrojanDownloader.Agent.AV Trojaner, gelöscht,


Mein derzeitiger Script (Auszug, Befehle wurden zum größten Teil durch msg derzeit ersetzt um besser testen zu können):

'Definition der Variablen (Regex 1-X und matches1-X sind wichtig für die Bedrohungsarten-Namensfilter)
Dim strClientname, fso, regex, regex2, strContent, matches, matches2, FileName
Set fso=CreateObject("Scripting.FileSystemObject")
Set regex = CreateObject("vbscript.regexp")
Set regex2 = CreateObject("vbscript.regexp")
regex.global = True
regex2.global = True
FileName = "C:\Virenschutz\Bedrohung.txt"

'Ping Funktion - überprüfung ob Client anpingbar / Aufruf mit "ping"
Function Ping(strHost)
Dim oPing, oRetStatus, bReturn
Set oPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_PingStatus where address='" & strHost & "'")

For Each oRetStatus In oPing
If IsNull(oRetStatus.StatusCode) Or oRetStatus.StatusCode <> 0 Then
bReturn = False
Else
bReturn = True
End If
Set oRetStatus = Nothing
Next
Set oPing = Nothing

Ping = bReturn
End Function


'Falls die Logfile exisitiert, überprüfe Sie ob "Kryptik" vorhanden ist, ansonsten beende Script.
If FSO.FileExists(FileName) Then
msgbox "LogFile da"
regex.IgnoreCase = True
regex.Pattern = "Echtzeit-Dateischutz"
strContent = fso.OpenTextFile("C:\Virenschutz\Bedrohung.txt").ReadAll()
Set matches = regex.Execute(strContent)
If matches.Count > 0 Then
strContent = fso.OpenTextFile("C:\Virenschutz\Bedrohung.txt").ReadAll()

'entweder Kryptik
regex.IgnoreCase = True
regex.Pattern = "Kryptik"
Set matches = regex.Execute(strContent)

'oder Test als auslöser
regex2.IgnoreCase = True
regex2.Pattern = "Test"
Set matches2 = regex2.Execute(strContent)

'Falls Kryptik vorhanden ist, lese Clientnamen aus und lösche LogFile. Falls nicht lösche LogFile und beende Script.
If matches.Count > 0 OR matches2.Count > 0 Then
'msgbox "LogFile da, Kryptik vorhanden"
regex.Pattern = "Clientlist: SERVER / ([^,\r\n]+)"
Set matches = regex.Execute(strContent)
If matches.Count > 0 Then
strClientname = Trim(matches(0).submatches(0))
Else
'msgbox "LogFile da, Kryptik vorhanden, Client nicht identifizierbar"
'FSO.DeleteFile("C:\Virenschutz\Bedrohung.txt")
WScript.Quit
End If
Else
'FSO.DeleteFile("C:\Virenschutz\Bedrohung.txt")
WScript.Quit
End If
Else
'FSO.DeleteFile("C:\Virenschutz\Bedrohung.txt")
WScript.Quit
End If
'Falls Kryptik+Clientname auslesbar, deaktiviere und beende den DHCP Dienst des Clients.
set WshShell = WScript.CreateObject("WScript.Shell")
msgbox strClientname
If Ping(strClientname) Then
msgbox "Client anpingbar"
Else
msgbox "KRYPTIK Alarm - " & strClientname & " NICHT MEHR ERREICHBAR, Netzwerkkarte konnte nicht deaktiviert werden!"
WScript.Quit
End if
Else
msgbox "LogFile nicht da"
WScript.Quit
End if

'End-Prüfung ob DHCP Deaktivierung und beenden geklappt hat
WScript.Sleep 30000
If Ping(strClientname) Then
msgbox "KRYPTIK Alarm - " & strClientname & " wurde NICHT erfolgreich vom Netzwerk getrennt"
Else
msgbox "KRYPTIK Alarm - " & strClientname & " wurde erfolgreich vom Netzwerk getrennt"
End If

______________________________________________

Ich hatte Heute leider auch nicht viel Zeit dafür, mal schauen ob es morgen besser wird. Solltest du dich fragen warum der ganze Aufwand: Wir hatten dieses Jahr einen Virenangriff der Netzlaufwerke von einem Client aus verschlüsselt hatte ;)
Bitte warten ..
Mitglied: colinardo
23.09.2014, aktualisiert 24.09.2014
Das ist kein Problem die Blöcke im Log lassen sich mit Regex zerlegen und nur im jeweiligen Block auf eine beliebige Anzahl an Stichworten durchsuchen (mache dir morgen mal ein Beispiel)... aber bevor wir hier weiter machen mal so als Anmerkung:

Die Vorgehensweise ist doch ziemlich Fehleranfällig, erstens wird immer erst nach 5 Minuten geprüft und in dieser Zeit kann der Virus schon eine beträchtliche Anzahl an Files verschlüsselt haben; zweitens hat der Virenscanner den Schädling erkannt und sollte ihn soweit blockieren das kein Schaden entsteht (wenn nicht, solltet ihr über ein anderes Antivirus-Produkt nachdenken!); drittens kommt so etwas normalerweise nur vor wenn auf den Clients mit Updates geschlampt wird und Policies, Rechte und Backups zu lasch umgesetzt sind.; viertens kämst du mit dem
Nachpflegen von Virenvarianten in dein Script nicht rechtzeitig hinterher (die Virenproduzenten sind einfach schneller)

Hier wäre ein grundlegendes Umdenken angesagt, oder ein anderes Antivirenprodukt die Lösung der Wahl. Es gibt nämlich Produkte die solch ein trennen der Verbindung oder verschieben in ein Quarantänenetz beherrschen. Im Zusammenhang mit einem Network Policy Server (NPS) ist das schön umzusetzen, und kann wesentlich schneller auf die Bedrohung reagieren.
Zusammen mit regelmäßigen Schattenkopien und Backups auf den Fileservern, kannst du so etwas gelassen sehen.

Das Gefrickel mit dem Script wäre mir die absolut allerletzte Wahl, das wird dir hier jeder Bestätigen. Erst neulich ist damit ein Kollege so ziemlich auf die Fresse gefallen.

Grüße Uwe
-edit- dieser Code extrahiert die jeweiligen Blöcke und checkt diese nach einer Liste von Keywords. Der Code geht davon aus das zwischen den Blöcken und am Ende mindestens eine Leerzeile vorhanden ist.

Als Hilfe: Der Regex-Match sieht bildlich so aus:

505a7f8acf7d5a18cebbdbfdf3a24725 - Klicke auf das Bild, um es zu vergrößern
01.
Dim strClientname, fso, regex, strContent, matches, arrKeywords 
02.
'Array-Liste der Keywords 
03.
arrKeywords = Array("TrojanDownloader","Kryptik") 
04.
 
05.
Const FileName = "C:\Virenschutz\Bedrohung.txt" 
06.
 
07.
Set fso = CreateObject("Scripting.FileSystemObject") 
08.
Set regex = CreateObject("vbscript.regexp")  
09.
regex.IgnoreCase = True 
10.
regex.MultiLine = True 
11.
regex.Global = True 
12.
regex.Pattern = "^\[\d{4}-\d{2}-\d{2}[\s\S]+?Clientlist:.*?/\s?([^\r\n]+)[\s\S]+?^\s+$" 
13.
strContent = fso.OpenTextFile(FileName).ReadAll() 
14.
' Regex ausführen 
15.
Set matches = regex.Execute(strContent) 
16.
If matches.Count > 0 Then 
17.
	For Each match In matches 
18.
		Dim isKeywordMatch 
19.
		isKeywordMatch = False 
20.
		'Clientname extrahieren 
21.
		strClientname = Trim(match.Submatches(0)) 
22.
		'Checke den Inhalt des Blocks auf die Liste der Keywords 
23.
		For i = 0 To UBound(arrKeywords) 
24.
			If InStr(1,match,arrKeywords(i),1) Then 
25.
				isKeywordMatch = True 
26.
				Exit For 
27.
			End If 
28.
		Next 
29.
		If isKeywordMatch Then 
30.
			' Wenn eines der Keywords gefunden wurde mache etwas ... 
31.
			MsgBox "Ein Keyword aus der Liste wurde gefunden bei Client: " & strClientname 
32.
		Else 
33.
			' Es wurde für diesen Client kein Keyword gefunden, mach was anderes. 
34.
		End If 
35.
	Next 
36.
End If
Bitte warten ..
Mitglied: Borob14
24.09.2014 um 14:17 Uhr
Danke für deine Anmerkungen, sehe ich ähnlich aber leider ist kein Virenscanner perfekt.
Zu 90% holt ein Virus andere Tierchen mit auf den Client, was das Anschlagen des Virenscanners erhöht.
Wenn der Client selber krachen geht, ist das halb so schlimm, nur wenn unbemerkt Terabyte von Daten verschlüsselt werden, ist das ein Heiden Aufwand über die Backups das zurückzuholen (wir haben ne gute Bandsicherung + Festplattensicherung) . Ich bin immer offen für Ideen allerdings ist es mit einer nicht IT-Geschäftsführung drüber, nicht so leicht etwas durchzusetzen (gerade in einem > 400 Personen Unternehmen ). Ein Wechsel des Virenscanners kommt derzeit nicht in Frage (Kosten der laufenden Lizenzen) man müsste die Verlängerung abpassen. Bisher macht ESET aber einen guten Job was Virenerkennung angeht.(Für die Zukunft was würdest du empfehlen?) Was du meinst ist natürlich richtig, es ist schade das Eset solche Sachen nicht unterstützt (trennen vom Netz etc.) Betreffs Rechte ist es sehr schwer bei uns, wir haben sehr viele Softwareprodukte die ADM Rechte benötigen, meist wegen schlechter Programmierung, veralteter Varianten oder oder oder. Das zu erklären würde sehr lange dauern Ich bin gerade dabei das etwas umzustellen ist aber über GPOs bei so vielen nicht Standard Software sehr schwer und wir haben wenig PCs die gleich ausgestattet sind.

zwecks Script schau ich mir an sobald ich Luft habe, diese Woche kommt irgendwie keine Ruhe rein immer ist wieder was anderes ^^

Trotzdem Danke erst mal, bin guter Dinge das es klappen wird und keine Sorge, das ist nur eine zusätzliche Sicherheitsmaßnahme. Man könnte Sie auch schnell umlegen um viele Clients zu deaktivieren oder was auch immer

Mit freundlichen Grüßen Rob
Bitte warten ..
Mitglied: Borob14
24.09.2014, aktualisiert um 15:19 Uhr
Habs mal getestet und klappt leider noch nicht, habe mich mit msgBoxen vorgetastet:
Er führt die Keyword Abfrage nicht durch oder sucht an einer falschen Stelle.

If InStr(1,match,arrKeywords(i),1) Then
isKeywordMatch = True
Exit For
End If

Setze ich ein Keyword "" dann findet er es, setze ich nur ein Zeichen wie "a" oder ähnliches findet er nix.
Die Clients gibt er korrekt bei jeder Schleife zurück. Habe auch mal den Syntax für regex.Pattern = "Clientlist: SERVER / ([^,\r\n]+)" genommen um auszuschließen das er die Clients nicht korrekt identifiziert. (es ist nur ein SERVER das bleibt quasi gleich)

Zusätzlich hab ich noch die kleine Frage: Es darf nicht nur nach dem Keyword gesucht werden, ein absolutes muss ist der "Echtzeit-Dateischutz"
da ansonsten alle PCs betroffen sind die mal eine Email oder einen gesperrten Link haben

Wird noch bissel rumprobieren, nur so als Zwichenstand, keine Ahnung wie oft du Zeit hast hier reinzuschauen.

Mit freundlichen Grüßen Rob

P.S. bin Froh das du mir hilfst ich würde sonst Jahre meiner Zeit verballern
DANKE DANKE DANKE


EDIT: " " findet er auch
Bitte warten ..
Mitglied: colinardo
24.09.2014, aktualisiert um 15:22 Uhr
Da du hier für deinen bsp. Code keine Code-Tags verwendet hast, habe ich das schon halb vermutet. Bei Regular Expressions kommt es auf jedes Zeichen an ! Am besten wäre natürlich eine Original-Datei mit unveränderter Formatierung ...

Es darf nicht nur nach dem Keyword gesucht werden, ein absolutes muss ist der "Echtzeit-Dateischutz"
einfach eine Zusatzabfrage mit Instr() durchführen.
Bitte warten ..
Mitglied: Borob14
24.09.2014, aktualisiert 25.09.2014
Das verstehe ich jetzt nicht, hat doch vorher mit den IF Abfragen auch funktioniert nur das er jetzt quasi zwischen:
"Clientlist: SERVER / " und "Clientlist: SERVER / "
nach den Keywords suchen soll. Gerade das Beispiel Kryptik hat immer andere Varianten, es darf nur nach diesem Keyword gesucht werden und es muss egal sein ob davor etwas anderes steht, zum Beispiel Blablu0815.Kryptik oder ähnliches, die Schreibweise ändert sich ja leider dauernd und auch die Stelle/Position wo Kryptik steht kann sich ändern. Ist das somit überhaupt suchbar?

P.S. nen Originalen Log kann ich dir nicht geben, da stehen zu viele Firmen internen Sachen drin. "Clientlist: SERVER / " ist aber Original.
Bitte warten ..
Mitglied: colinardo
24.09.2014, aktualisiert um 17:07 Uhr
Zitat von Borob14:

Das verstehe ich jetzt nicht, hat doch vorher mit den IF Abfragen auch funktioniert nur das er jetzt quasi zwischen:
"Clientlist: Dd1vws01 / " und "Clientlist: Dd1vws01 / "
nach den Keywords suchen soll. Gerade das Beispiel Kryptik hat immer andere Varianten, es darf nur nach diesem Keyword gesucht
werden und es muss egal sein ob davor etwas anderes steht, zum Beispiel Blablu0815.Kryptik oder ähnliches, die Schreibweise
ändert sich ja leider dauernd und auch die Stelle/Position wo Kryptik steht kann sich ändern. Ist das somit
überhaupt suchbar?
funktioniert hier mit deinem Beispiel-Posting einwandfrei ...
eventuell musst du bei dir das regex so abändern:
regex.Pattern = "^\[\d{4}-\d{2}-\d{2}[\s\S]+?Clientlist:.*?/\s?([^\r\n]+)[\s\S]+?^\s*$" 
die Schreibweise ändert sich ja leider dauernd und auch die Stelle/Position wo Kryptik steht kann sich ändern. Ist das somit überhaupt suchbar?
klar, kein Problem ...

> P.S. nen Originalen Log kann ich dir nicht geben, da stehen zu viele Firmen internen Sachen drin. "Clientlist: Dd1vws01 /
Dann empfehle ich dir dich mal mit dem Regular Expressions Tutorial auseinanderzusetzen.
Bitte warten ..
Mitglied: Borob14
24.09.2014, aktualisiert 25.09.2014
01.
[2014-09-24 17:27:00.008] V1 [5422e2c43d17] [00000d4c] <NOTIFICATION_ACTION_INFO> AAAAAA-Clientbedrohung, Message:  
02.
 
03.
Clientlist: SERVER / CLIENT 
04.
 
05.
Primäre Clients mit Warnung zum Schutzstatus 
06.
 
07.
Server: SERVER 
08.
 
09.
Logfile: 16913, SERVER /CLIENT, 2014-09-24 17:20:53 , AAAAA\t02, Echtzeit-Dateischutz, Warnung, Datei, G:\syshost.exe, Variante von Win32/Kryptik.CKVI Trojaner, Gesäubert durch Löschen - in Quarantäne kopiert, Ereignis beim Erstellen einer neuen Datei durch die Anwendung: C:\Program Files\7-Zip\7zG.exe.
Hab mal was mit ner Testmaschine provoziert, hoffe das ist besser (habe nur den Firmennamen geändert, die Buchstaben sind die gleiche Anzahl und auch in groß) . Deine Änderung greift noch nicht ganz, einzelne Buchstaben findet er nun.
Mit den RegEx stimmt natürlich, aber ich packs derzeit einfach nicht mich dort reinzulesen, dafür ist mein Kopf zu sehr mit anderen Sachen abgelenkt.
Ich bin leider so ein Praktiker/Pragmatiker der sich mit Theoretischen "belesen" sehr schwer tut.
Bitte warten ..
Mitglied: colinardo
24.09.2014, aktualisiert um 17:42 Uhr
Zitat von Borob14:
Hab mal was mit ner Testmaschine provoziert, hoffe das ist besser (habe nur den Firmennamen geändert, die Buchstaben sind die
jetzt ist alles klar, du hast hier ja Leerzeilen zwischen den einzelnen Zeilen und nicht nur zischen den Blöcken !!! So kann der Pattern natürlich nicht richtig arbeiten, da er ja eine leere Zeile quasi als Trenner benutzt ...
melde mich später oder morgen nochmal.

p.s. sind die Logs die du verarbeitest immer nur von einem Rechner oder sammelst du die von allen in einem Logfile ??

Schönen Abend
Grüße Uwe
Bitte warten ..
Mitglied: Borob14
24.09.2014 um 17:49 Uhr
Hm blödes Notepad hat mir die Leerzeilen auch nie angezeigt, ist mir selber nie aufgefallen, im Notepad++ sieht mans aber auch. Sorry!

schönen Abend ebenfalls
Mit freundlichen Grüßen Rob
Bitte warten ..
Mitglied: colinardo
LÖSUNG 24.09.2014, aktualisiert 25.09.2014
hatte doch noch gerade einen Moment. das hier läuft mit deinem aktualisierten Schnippsel:
(ergänzt: Prüfung ob im jeweiligen Block der String Echtzeit-Dateischutz vorkommt, und prüft nur dann die Keywords)
01.
Dim strClientname, fso, regex, strContent, matches, arrKeywords, strLogInfo 
02.
'Array-Liste der Keywords 
03.
arrKeywords = Array("TrojanDownloader","Kryptik") 
04.
 
05.
Const Filename = "C:\Virenschutz\Bedrohung.txt"  
06.
 
07.
Set fso = CreateObject("Scripting.FileSystemObject") 
08.
Set regex = CreateObject("vbscript.regexp")  
09.
regex.IgnoreCase = True 
10.
regex.MultiLine = True 
11.
regex.Global = True 
12.
regex.Pattern = "^\[\d{4}-\d{2}-\d{2}[\s\S]+?Clientlist:.*?/\s?([^\r\n]+)[\s\S]*?^Logfile:(.*)" 
13.
strContent = fso.OpenTextFile(Filename).ReadAll() 
14.
' Regex ausführen 
15.
Set matches = regex.Execute(strContent) 
16.
If matches.Count > 0 Then 
17.
	For Each match In matches 
18.
		Dim isKeywordMatch 
19.
		isKeywordMatch = False 
20.
		'Clientname extrahieren 
21.
		strClientname = Trim(match.Submatches(0)) 
22.
		'Part in dem gesucht wird 
23.
		strLogInfo = match.Submatches(1) 
24.
		'checke ob der String Echtzeit-Dateischutz im Block vorkommt 
25.
		If InStr(1,strLogInfo,"Echtzeit-Dateischutz",1) Then			 
26.
			'Checke den Inhalt des Blocks auf die Liste der Keywords 
27.
			For i = 0 To UBound(arrKeywords) 
28.
				If InStr(1,strLogInfo,arrKeywords(i),1) Then 
29.
					isKeywordMatch = True 
30.
					Exit For 
31.
				End If 
32.
			Next 
33.
		End If 
34.
		If isKeywordMatch Then 
35.
			' Wenn eines der Keywords gefunden wurde mache etwas ... 
36.
			MsgBox "Ein Keyword aus der Liste wurde gefunden bei Client: " & strClientname 
37.
		Else 
38.
			' Es wurde für diesen Client kein Keyword gefunden, mach was anderes. 
39.
		End If 
40.
	Next 
41.
End If
-edit- nochmal abgeändert das nur hinter Logfile: gesucht wird.
Bitte warten ..
Mitglied: Borob14
24.09.2014 um 17:59 Uhr
Bist ein Hero: hab jetzt keine Zeit mehr zum testen aber mach ich morgen Früh gleich.

DANKE!
Bitte warten ..
Mitglied: Borob14
25.09.2014 um 07:46 Uhr
Guten Morgen, klappt eins a! Ich muss nur noch ne Abbruch Bedingung reinbauen, wenn die Log nicht da ist. DANKE DANKE DANKE bist echt meine Rettung! Damit hab ich in der Hinsicht erst mal Ruhe

Eventuell kannst du mir ja auch noch mit nem VPN Problem helfen ^^
http://www.administrator.de/forum/md-befehl-sc-exe-per-vpn-nicht-m%c3%b ...
Hab ich mittlerweile aufgegeben, scheint in der jetzigen Konstellation nicht zu gehen.

Ansonsten einen wunderschönen Tag noch.

Mit freundlichen Grüßen Rob
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(3)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Outlook & Mail
gelöst Email Anhänge speichern VB Script aber nur bestimmte Dateitypen (Outlook) (4)

Frage von LindeUnimog zum Thema Outlook & Mail ...

Visual Studio
gelöst Email Versenden Mit VB (2)

Frage von UltraZz zum Thema Visual Studio ...

Visual Studio
gelöst Email versenden mit vb.net (10)

Frage von drentsch zum Thema Visual Studio ...

Outlook & Mail
gelöst Notwendige bzw Überflüssige Angaben in Geschäftlicher Email-Signatur (11)

Frage von Knorkator zum Thema Outlook & Mail ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...