FYI: Python und VBA
#1
Hallo,

vermutlich ist dieser Ansatz, Python-Programme mit VBA zu starten, wenig bekannt. 

Code:
ActiveDocument.Shapes("Object 2").Select

Selection.ShapeRange(1).OLEFormat.DoVerb VerbIndex:=wdOLEVerbPrimary

Der Python-Code wird als Object in die (Word-) Datei eingebettet (B2 O (O für Object)):

Code:
oledump.py doc.zip -i
A: word/vbaProject.bin
A1:      348                                'PROJECT'
A2:        71                                'PROJECTwm'
A3: M    1327    1084+243        'VBA/NewMacros'
A4: m    924    767+157            'VBA/ThisDocument'
A5:      2649                              'VBA/_VBA_PROJECT'
gekürzt
A10:      570                              'VBA/dir'
B:                                             word/embeddings/oleObject1.bin
B1:        76                               '\x01CompObj'
B2: O    471                             '\x01Ole10Native'
B3:        6                                '\x03ObjInfo'

Über das Clipboard oder CSV-/TXT-Dateien kann das Ergebnis wieder nach Excel importiert werden.

Bei Interesse teile ich die Quelle per PN.

mfg
Top
#2
Welchen Vorteil bietet dies ggü. Excel Wings (xlwings)?
Top
#3
Hallo,

danke für den Hinweis, XlWings kannte ich noch nicht.

Auf dem Hintergrund der malware-Analyse: Kann man erkennen, ob eine Excel- bzw Word-Datei mit XlWings bearbeitet wurde?

mfg



-------------------------------------------
(Der oben gezeigte Code könnte aus einem Test für malware stammen. Er ist mit den üblichen Prüfprogrammen recht schwer zu erkennen)

(Kann man so einen Ansatz auch für etwas Gutes verwenden? Vermutlich ja, es könnte eine Lücke geben, die mit Python gut, aber nur schlecht mit VBA oder Powershell bearbeitet werden kann. Es gibt so viele Libaries für Python)
Top
#4
Jedes Programm und fast jeder Anwender kann Excel- oder Worddateien verändern, ohne dass man den Verursacher identifizieren kann.
Top
#5
Hallo,

aber diejenigen, die böses im Schilde führen, bringen oft eine Art Signatur rein, sodass man weiss wer's war, wenn auch verklausuliert.
Sonst ist Ruhm & Ehre dahin Wink

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awards
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Top
#6
Xlwings führt nichts Böses im Schilde (ohne Gewähr, aber bestes Wissen).
Top
#7
Hallo,

meine Antwort oben bezog sich ja auch nicht auf xlwings, sondern auf #4 und ist eher ironisch gemeint.

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awards
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Top
#8
@Fen

XLwings schon erwähnt in https://www.snb-vba.eu/VBA_Python_en.html
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#9
@snb:

Danke, ich hatte mich damals eher oberflächlich (wegen mangelnder Python-Kenntnisse) damit beschäftigt.

@maninweb:

Ich meine, es ist komplizierter. Nach "any.run" gibt es ca 10-15 Gruppen, die seit Jahren für die meisten malware-Attacken verantwortlich sind (ohne "state-actors"). Dadurch werden aber alle Firmen gezwungen, emails seht sorgfälltig zu prüfen. (Kostenfaktor) System-Administratoren fühlen sich recht gut gerüstet. Auf der Strecke bleiben diejenigen, die wegen der Kosten oder Unaufmerksamkeit (keine updates) "nicht auf der Höhe der Zeit sind". Es profitiert der Bereich IT-security.

Zumindest für Emotet gibt es so viele aktuelle Informationen, dass ich es ärgerlich finde, dass es auch in seriösen Staaten Tage bis mehr als eine Woche dauert, bis Server, die malware verteilen, abgeschaltet werden.

mfg
Top
#10
Um das Thema abzuschließen: Es war wieder einmal voreilig und nicht genügend geprüft:

"OLEFormat.Verb" sieh zwar interessant aus, ist aber bei allen Versuchen an den Sicherheitseinstellungen gescheitert.

Aber das Einfachste ging:

Code:
Shell "Python c:\temp\write-file.py", vbHide

mit dem Python-Code

Code:
import sys
import os
import tempfile

temp = tempfile.gettempdir() + "\\Kilroy.txt"
f = open(temp, 'w')
f.write ('Kilroy is watching you')
f.close()

mfg
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste