Hallo,
hier mal ein Versuch, das Internetbanking zu automatisieren und ein wenig "abhörsicherer" zu machen.
Alle relevanten Erläuterungen sind im Script als Komentare eingefügt.
Spoiler anzeigen
; ----------------------------------------------------------------------------
;
; call Banks
; Michael Pusch Programs 2011-2012
; tested and compiled May, 19., 2012
;
; ----------------------------------------------------------------------------
; Beschreibung:
; Dieses Script wurde erstellt, um Internetbanking zu automatisieren und sicherer zu machen,
; da keine Benutzernamen und Bank-ID's über die Tastatur eingegeben werden müssen (Key-Logger!!!)
; Die notwendigen Angaben werden aus einer kleinen vorab angelegten externen Textdatei (auf Floppy, CD, Stick ...) via
; copy & paste an den entsprechenden Stellen im IE eingegeben.
; Nach Beendigung des INet-Bankings wird die Textdatei automatisch geschlossen und zum Entfernen
; des externen Datenträgers aufgefordert.
; Dieses Script ist zum Aufruf von 3 verschiedenen Geldinstituten gedacht, kann aber mit etwas Aufwand
; auf beliebig viele Aufrufe geändert werden.
;
;============================================================================================
; Dieses Script ist so nicht lauffähig!
; Es muß vorher an den mit ";<--- Muss angepasst werden" Stellen vom Benutzer angepasst werden
;=============================================================================================
;
#NoTrayIcon
; benötigte Bibliotheken integrieren
#include <IE.au3>
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
AutoItSetOption("MustDeclareVars", 1)
;
call(doMiPsBankCalls())
;
Func doMiPsBankCalls()
; Definition Variable
Global $runAppl_1, $runAppl_2, $dlgName, $dlgText, $dlg, $lwFloppy, $ieFenstername, $urlBank, $inFensterNamen_1, $inFensterNamen_2, $inFensterNamen_3
Global $radioCN_1,$radioCN_2, $radioCN_3, $oButton_1, $oButton_2, $iPath, $i_1, $i_2, $i_3
;
$dlgName = "Bankaufruf"
$dlgText = "!! ACHTUNG !! ---- !! ACHTUNG !! ---- !! ACHTUNG !!" & chr(13) & _
"================================" & chr(13) & chr(13) & _
"Datenträger mit Zugangsdaten eingelegt ?" & chr(13) & chr(13)
$dlg = MsgBox(33, $dlgName, $dlgText)
; Wenn ja, dann Aufruf benutzerdefinierter Dialog zur Auswahl des Geldinstitutes
; Die Koordinaten bzw. Abmessungen der Dialogfeldelemente müssen ggf. angepasst werden.
If $dlg = 1 then
$lwFloppy = "[Laufwerk, ext. Datenträger]:\" ;<--- Muss angepasst werden
If DriveStatus($lwFloppy) = "READY" Then
; $iPath = "[Laufwerk:\Pfad\" <--- Falls im Dialogfeld Icons verwendet werden sollen ;<--- Muss angepasst werden
; $i_1 = "Icon1.ico" <--- Falls im Dialogfeld Icons verwendet werden sollen ;<--- Muss angepasst werden
; $i_2 = "Icon2.ico" <--- Falls im Dialogfeld Icons verwendet werden sollen ;<--- Muss angepasst werden
; $i_3 = "Icon3.ico" <--- Falls im Dialogfeld Icons verwendet werden sollen ;<--- Muss angepasst werden
GUICreate("Auswahl Kreditinstitute",270,195)
GUICtrlCreateGroup("Bitte Bank auswählen:", 10, 10, 250, 145)
; GUICtrlCreateIcon($iPath & $i_1,-1,20,30,32,32) <--- Falls im Dialogfeld Icons verwendet werden sollen ;<--- Muss angepasst werden
; GUICtrlCreateIcon($iPath & $i_2,-1,20,70,32,32) <--- Falls im Dialogfeld Icons verwendet werden sollen ;<--- Muss angepasst werden
; GUICtrlCreateIcon($iPath & $i_3,-1,20,110,32,32) <--- Falls im Dialogfeld Icons verwendet werden sollen ;<--- Muss angepasst werden
$radioCN_1 = GUICtrlCreateRadio("[Name Geldinstitut_1]", 70, 36, 170, 20) ;<--- Muss angepasst werden
$radioCN_2 = GUICtrlCreateRadio("[Name Geldinstitut_2]", 70, 77, 170, 20) ;<--- Muss angepasst werden
$radioCN_3 = GUICtrlCreateRadio("[Name Geldinstitut_3]", 70, 118, 170, 20) ;<--- Muss angepasst werden
GUICtrlSetState($radioCN_1, $GUI_CHECKED)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$oButton_1 = GUICtrlCreateButton("OK",20,165,80,20)
$oButton_2 = GUICtrlCreateButton("Cancel",170,165,80,20)
GUICtrlSetState($oButton_1, $GUI_FOCUS)
GUISetState(@SW_SHOW)
While 1
$dlg = GUIGetMsg()
If $dlg = $GUI_EVENT_CLOSE Then
Exit
ElseIf $dlg = $oButton_1 Then
GUISetState(@SW_HIDE)
ExitLoop
ElseIf $dlg = $oButton_2 Then
Exit
EndIf
WEnd
; Die nachfolgenden $inFensterNamen_x - Variablen sind notwending, um alle im IE-Fenster
; möglichen Varianten des Banknamens in der später folgenden StringInStr()-Funktion
; abfangen zu können. (Beruht auf meinen Erfahrungswerten.)
if GUICtrlRead($radioCN_1) = 1 Then
$urlBank = "https://[Loggin Geldinstitut_1]" ;<--- Muss angepasst werden
$inFensterNamen_1 = "Bank1" ;<--- eindeutiger Teil aus dem Fensternamen, ;<--- Muss angepasst werden
$inFensterNamen_2 = "bank1" ;<--- eindeutiger Teil aus dem Fensternamen, ;<--- Muss angepasst werden
$inFensterNamen_3 = StringUpper($inFensterNamen_2)
EndIf
If GUICtrlRead($radioCN_2) = 1 Then
$urlBank = "https://[Loggin Geldinstitut_2]" ;<--- Muss angepasst werden
$inFensterNamen_1 = "Bank2" ;<--- eindeutiger Teil aus dem Fensternamen, ;<--- Muss angepasst werden
$inFensterNamen_2 = "bank1" ;<--- eindeutiger Teil aus dem Fensternamen, ;<--- Muss angepasst werden
$inFensterNamen_3 = StringUpper($inFensterNamen_2)
EndIf
If GUICtrlRead($radioCN_3) = 1 Then
$urlBank = "https://[Loggin Geldinstitut_3]" ;<--- Muss angepasst werden
$inFensterNamen_1 = "Bank3" ;<--- eindeutiger Teil aus dem Fensternamen, ;<--- Muss angepasst werden
$inFensterNamen_2 = "bank3" ;<--- eindeutiger Teil aus dem Fensternamen, ;<--- Muss angepasst werden
$inFensterNamen_3 = StringUpper($inFensterNamen_2)
EndIf
$runAppl_1 = "C:\windows\system32\notepad.exe " & "[Laufwerk]:\Zugang.txt" ;<--- Muss angepasst werden
; Notepad mit der Zugangs.txt wird gestartet
Run($runAppl_1, "A:\", @SW_RESTORE)
; IE mit "blanken" Fenster wird gestartet. Dies ist notwending, da die IE.au3 die direkte Eingabe
; von "https://" nicht unterstützt.
$dlg = _IECreate("about:blank")
_IELoadWait($dlg)
; ich mag's im Vollbild, daher nachfolgende Send() - Funktion
send("!{SPACE}x")
; jetzt wird das eigentliche Bank-Login an den IE gesendet
$dlg = _IENavigate($dlg, $urlBank)
_IELoadWait($dlg)
AutoItSetOption("WinTitleMatchMode",2)
; Die beiden folgenden "While - Wend" - Schleifen ermöglichen im Zusammenhang mit den weiter oben
; definierten $inFensterNamen_x - Variablen, dass das Script auf jeden Fall pausiert, solange das
; IE-Bank-Fenster geöffnet ist.
While StringInStr(StringUpper(WinGetTitle($inFensterNamen_1,"")),$inFensterNamen_3) > 0
WEnd
While StringInStr(StringUpper(WinGetTitle($inFensterNamen_2,"")),$inFensterNamen_3) > 0
WEnd
; Wenn das IE-Bank-Fenster geschlossen wird .....
; Notepad wird aktiviert, dann geschlossen
$dlg = WinActivate("Zugang.txt - Editor", "")
$dlg = WinClose("Zugang.txt - Editor", "")
; Abfrage, ob noch eine weiteres Geldinstitut besucht werden soll ...
$dlgText = "Soll ein weiter Bankaufruf getätigt Werden?"
$dlg = MsgBox(36, $dlgName, $dlgText)
if $dlg = 6 Then
; ...wenn ja, alle Variablen auf "" und erneuter Func - Aufruf
Call(SetVarOnNothing())
Call(doMiPsBankCalls())
EndIf
; ... wenn nein, Prüfunf auf Vorhandensein des externen Datenträgers und
; ggf. Aufforderung zum Entfernen.
while DriveStatus($lwFloppy) = "READY"
$dlgText = "Nicht vergessen:" & chr(13) & "EXTERNEN DATENTRÄGER ENTFERNEN !!"
$dlg = MsgBox(65, $dlgName, $dlgText)
If $dlg = 2 Then
Call(SetVarOnNothing())
Exit
EndIf
WEnd
;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Starten des "CCleaners" zum entfernen der temp. INet-Dateien
; Dies ist ein optionaler Programmteil
If $dlg = 1 Then
$runAppl_2 = "[Install-LW:\Install-Pfad\]CCleaner.exe /Auto" ;<--- Muss angepasst werden
Run($runAppl_2, "", @SW_HIDE)
EndIf
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;
; Wenn bei Start des Scripts der erwartete externe Datenträger nicht verfügbar ist...
; Abfrage, ob Vorgang wiederholt werden soll. Alle Variablen werden auf "" gesetzt und
; die Func erneut aufgerufen (oder beendet).
ElseIf DriveStatus($lwFloppy) = "NOTREADY" Then
$dlgText = "Datenträger mit Zugangsdaten ist nicht eingelegt!" & chr(13) & _
"Soll der Vorgang wiederholt werden?"
$dlg = MsgBox(52, $dlgName, $dlgText)
If $dlg = 6 then
Call(SetVarOnNothing())
Call(doMiPsBankCalls())
EndIf
EndIf
EndIf
;
Call(SetVarOnNothing())
;
EndFunc
Func SetVarOnNothing()
$runAppl_1 = ""
$runAppl_2 = ""
$dlg = ""
$dlgName = ""
$dlgText = ""
$lwFloppy = ""
$urlBank = ""
$inFensterNamen_1 = ""
$inFensterNamen_2 = ""
$inFensterNamen_3 = ""
$radioCN_1 = ""
$radioCN_2 = ""
$radioCN_3 = ""
$oButton_1 = ""
$oButton_2 = ""
$iPath = ""
$i_1 = ""
$i_2 = ""
$i_3 = ""
EndFunc
Viel Spass beim Ausprobieren ... Für Anregungen, Verbesserungen, Kritik usw. bin ich dankbar.
MfG.,
HalleMike