Bank Kontostand abfragen (comdirekt,Postbank,DB,Norisbank)

  • Problem wurde komplett gelöst!
    .comdirekt
    Postbank
    Deutsche Bank
    Norisbank

    Hier das ursprüngliche Problem:

    Spoiler anzeigen

    Hallo,
    ich habe mit ein kleines tool erstellt was meinen Kontostand abfragen soll.

    Leider geht es nicht ganz wie ich will.
    Ich wollte das der IE im Hintergrund bleibt.
    macht er aber nicht :(
    und irgenwie arbeitet das script dann net weiter.

    [autoit]

    #include <IE.au3>
    #include <Array.au3>
    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUICreate("Comdirect", 210, 40)
    $Label1 = GUICtrlCreateLabel("Kontostand", 10, 10, 190, 50)
    Opt("GUIOnEventMode", 1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "OnExit")
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    Func OnExit()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($Label1, "Kontostand wird abgefragt...")
    $oIE = _IECreate("https://kunde.comdirect.de/lp/wt/login", 0, 0)
    $fname = _IEGetObjById($oIE, "param1")
    $fpin = _IEGetObjById($oIE, "param3")
    $fsubmit = _IEGetObjById($oIE, "login")
    $name = InputBox("Loginname?", "Bitte geben Sie Ihre Loginnamen ein!", "","*")
    $pin = InputBox("Pin?", "Bitte geben Sie Ihre Pin ein!", "","*")
    _IEFormElementSetValue($fname, $name)
    _IEFormElementSetValue($fpin, $pin)
    _IEFormSubmit($fsubmit)
    _IELoadWait($oIE)
    $oTable = _IETableGetCollection($oIE, 2)
    $aTableData = _IETableWriteToArray($oTable)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _IEImgClick($oIE, "buttonLogout", "name")
    _IEQuit($oIE)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($Label1, "Kontostand:" & $aTableData[2][1])

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    WEnd

    [/autoit]

    seht ihr den fehler?

    danke & gruß
    vip

    2 Mal editiert, zuletzt von Viperdriver2000 (9. Februar 2011 um 18:24) aus folgendem Grund: Problem gelöst!

  • Ich schätze, dass gerade auf Seiten mit so sensiblen Daten eine Automatisierung erkannt und gesperrt wird und es daher nicht geht, bzw. ich persönlich würde so etwas niemals automatisieren.
    Für die Fehlersuche:
    Lass das Fenster mal sichtbar und sieh nach, ob er wirklich Name und Pin in die Felder einträgt. Einen Fehler sehe ich nicht. Meine Theorie würde sich bestätigen, wenn du das Script mal auf einer anderen Seite (z.B. Forum o.ä.) ausprobieren würdest. Falls es dort klappt liegt es an der Seite der Bank.
    Viel Erfolg,
    Aquaplant

  • Bezweifle sowie Aquaplant stark, dass das möglich ist - man könnte daraus ansonsten ganz leicht einen BruteForce - Bot bauen, der Kundendaten knackt... nach ein paar Stunden könnte man ziemlich sicher die ersten Treffer landen - das kann /bzw. darf eigentlich nicht funktionieren.

  • Zugänge zu Onlinebanking per Bruteforce knacken halte ich mal für ein Gerücht. Meine Banken erlauben gerademal 3(?) Fehllogins und dann ist Schicht im Schacht und ohne erneute Aktivierung durch einen Mitarbeiter der Bank bleibt der Zugang gesperrt. Würde wie bereits erwähnt auch dazu raten erstmal im sichtbaren Fenster zu testen, und auch mal zu allen relevanten Befehlen die error codes ausgeben zu lassen um dem Fehler auf die Spur zukommen.

  • Ein ähnliches Script gibt es schon (https://autoit.de/index.php?page=Thread&postID=178400) hat mir aber leider nicht weitergeholfen.

    Zum anderen habe ich die Idee aus der Chip. Die haben das Script veröffentlicht und es soll mit allen gängigen Banken laufen.

    EDIT: auch mit sichtbaren Fenster komme ich nicht weiter.
    hat es einer mal bei sich getestet?

  • Bezweifle sowie Aquaplant stark, dass das möglich ist - man könnte daraus ansonsten ganz leicht einen BruteForce - Bot bauen, der Kundendaten knackt... nach ein paar Stunden könnte man ziemlich sicher die ersten Treffer landen - das kann /bzw. darf eigentlich nicht funktionieren.


    Der PIN hat glaube 5 zeichen richtig.
    Gehen wir mal davon aus, dass man keine sonderzeichen im Pin hat, also gibt es 34^5 moglichkeiten ~ 1 milliarden möglichkeiten richig?

    Der server braucht auch eine gwisse Zeit um zu Antworten. Gehen wir mal davon aus, dass man 50 Anfragen in der Sekunde schafft, dann würde man ~20 mio sekunden oder ~5555 Stunden vrauchen um alle möglichkeit zu Prüfen, wobei der Server das Spiel nicht lange mitspielen würde ;)

    Das geht natürlich von einem PC aus, bei einem Botnetz sieht das natürlich wieder anders aus


    EDIT:

    Außerdem würde eine BruteForce Attacke mit 2 Pws/Sec ja auch nicht nach ein paar Stunden erfolgreich sein.

    2 pw pro Sekunde ? ich denke da wird schon deutlich mehr möglich sein

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.


  • EDIT: auch mit sichtbaren Fenster komme ich nicht weiter.
    hat es einer mal bei sich getestet?


    Ja womit kommst du denn nicht weiter? Bislang hab ich hier noch nicht gelesen wo eigentlich das Problem liegt. Füllt er das Login Formular aus? Klappt das absenden des Formulars? Woran scheiterts denn?
    Testen kann dein Script hier wohl kaum einer, da man dafür gültige Zugangsdaten bräuchte und es recht unwahrscheinlich ist, dass hier allzuviele Kunden von Comdirect unterwegs sind und sich dann auch noch mit Browserautomatisierung auskennen. Ohne Zugang kann man allerhöchstens die Loginpage testen, das wars aber auch schon.

    Beschreib mal vernünftig was geht und was nicht und lass dir alle Variablen und Errorcodes anzeigen (msgbox oder console...). Infos zu den Rückgabewerten bzw. Errorcodes kannst du dann den Hilfeeinträgen der einzelnen Funktionen entnehmen.

  • Du möchtest das der IE im Hintergrund sichtbar bleibt, dann musst Du

    [autoit]

    $oIE = _IECreate("https://kunde.comdirect.de/lp/wt/login", 0, 0)

    [/autoit]

    durch

    [autoit]

    $oIE = _IECreate("https://kunde.comdirect.de/lp/wt/login", 0, 1)

    [/autoit]

    ersetzen.


    LG

    Schnuecks

  • Schnuecks
    danke das war scheinbar das fenster prob.
    obwohl es scheinbar auch an meinem rechner liegt/lag.

    misterspeed
    mittlerweile bekomme ich:

    Code
    >"C:\Users\Administrator\Desktop\install\SciTe\..\autoit3.exe" /ErrorStdOut "C:\Users\Administrator\Desktop\kontostand.au3"    
    --> IE.au3 V2.4-0 Warning from function _IETableGetCollection, $_IEStatus_NoMatch
    --> IE.au3 V2.4-0 Error from function _IETableWriteToArray, $_IEStatus_InvalidDataType
    C:\Users\Administrator\Desktop\kontostand.au3 (34) : ==> Subscript used with non-Array variable.:
    GUICtrlSetData($Label1, "Kontostand: " & $aTableData[2][1])
    GUICtrlSetData($Label1, "Kontostand: " & $aTableData^ ERROR
    >Exit code: 1    Time: 14.692


    dh er ruft die site auf. gibt die daten ein. login klappt auch und dann kommt der fehler...

  • Dann liegt dein Fehler wohl hier:

    [autoit]


    $oTable = _IETableGetCollection($oIE, 2)
    $aTableData = _IETableWriteToArray($oTable)

    [/autoit]

    Vermutlich gibt es die Tabelle '2' nicht.

    Mach mal folgendes:

    [autoit]


    $oTable = _IETableGetCollection($oIE, 2)
    if $oTable = 0 then msgbox(0,"oTable-DEbug-Info", "Wert: " & $oTable & " Errorcode: " & @error) ; Schau in die Hilfe Was der Rückgabewert und der Errorcode bedeutet.
    $aTableData = _IETableWriteToArray($oTable)
    if $aTableData = 0 then msgbox(0,"aTableData-DEbug-Info", "Wert: " & $aTableData & " Errorcode: " & @error) ; Schau in die Hilfe Was der Rückgabewert und der Errorcode bedeutet.

    [/autoit][autoit][/autoit][autoit]

    ; Sollte keine der Messageboxen erscheinen passt das obige. In diesem Fall liegt dein Problem bei der Ausgabe des Arrays, vermutlich verwendest du einen falschen Index, daher lass dir das komplette Array zunächst anzeigen:
    ;...
    _ArrayDisplay($aTableData) ; Achtung falls nicht vorhanden wird das #include <array.au3> am Programmanfang benötigt.
    _IEImgClick($oIE, "buttonLogout", "name")
    _IEQuit($oIE)
    GUICtrlSetData($Label1, "Kontostand:" & $aTableData[2][1])

    [/autoit][autoit][/autoit][autoit]

    While 1
    WEnd

    [/autoit]


    EDIT:

    Zitat

    --> IE.au3 V2.4-0 Warning from function _IETableGetCollection, $_IEStatus_NoMatch

    Sorry hattest die Errorcodes ja schon in deinem Log. Somit ist meine Vermutung bestätitgt, dass Tabele 2 schlichtweg nicht existiert bzw. gefunden wird.


  • ... ich persönlich würde so etwas niemals automatisieren.

    Da gebe ich Aquaplant recht und rate sogar davor ab es zu automatisieren !!!
    Passiert was, bst Du zu 100 v. H. SELBER SCHULD.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • misterspeed
    also bei dem von dir kommt "Wert:0 Errorcode:7" & "Wert:0 Errorcode:3".
    ich werde mir den Kundenbereich dann nochmal genauer angucken. also die Tabellen....

    Alina
    schön. aber was genau ist da automatisiert? benutzername wird selber eingegeben und pin.
    naja wie auch immer. Ihr müsst es ja nicht nutzen.
    ich möchte eigentlich nur hilfe das es geht...

  • Zitat

    ... ich persönlich würde so etwas niemals automatisieren.


    ich auch nicht, wäre aber bereit Deine Version zu testen... wenn es sich lohnt :thumbup:

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o

  • Dietmar
    na dann mal bitte los :D
    misterspeed
    danke für deine denkanstöße!

    Also THX @all die geholfen haben :)
    es geht!

    Hier das Script:
    Es ist für die .comdirekt Bank.
    Abgefragt werden Benutzername und online Passwort.
    Sie werden in KEINER Datei abgelegt. Somit muss es immer wieder eingegeben werden.
    Am ende wir der noch zur verfügung stehende Betrag inkl. Dispo angezeigt!

    [autoit]

    #include <IE.au3>
    #include <Array.au3>
    #include <GUIConstantsEx.au3>

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    GUICreate("Comdirect", 210, 40)
    $Label1 = GUICtrlCreateLabel("Kontostand", 10, 10, 190, 50)
    Opt("GUIOnEventMode", 1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "OnExit")
    GUISetState()

    [/autoit][autoit][/autoit][autoit]

    Func OnExit()
    Exit
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    GUICtrlSetData($Label1, "Kontostand wird abgefragt...")
    $oIE = _IECreate("https://kunde.comdirect.de/lp/wt/login", 0, 0)
    $fname = _IEGetObjById($oIE, "param1")
    $fpin = _IEGetObjById($oIE, "param3")
    $fsubmit = _IEGetObjById($oIE, "login")
    $name = InputBox("Loginname?", "Bitte geben Sie Ihre Loginnamen ein!", "", "")
    $pin = InputBox("Pin?", "Bitte geben Sie Ihre Pin ein!", "","*")
    _IEFormElementSetValue($fname, $name)
    _IEFormElementSetValue($fpin, $pin)
    _IEFormSubmit($fsubmit)
    _IELoadWait($oIE)
    $oTable = _IETableGetCollection($oIE, 1)
    $aTableData = _IETableWriteToArray($oTable)

    [/autoit][autoit][/autoit][autoit]

    _IEImgClick($oIE, "buttonLogout", "name")
    _IEQuit($oIE)
    GUICtrlSetData($Label1, "Du verfügst noch über " & $aTableData[3][1] & " EUR")

    [/autoit][autoit][/autoit][autoit]

    While 1
    WEnd

    [/autoit]

    Viel spaß!

  • Da ich kein konto mehr bei der DB habe kann ich es nicht testen.
    aber sollte nur ein paar Veränderungen nötig sein.

    :D

    mal gucken vielleicht guck ich es mit mal anhand der norisbank an. da habe ich noch ein konto.
    der login ist ja der selbe (ist ja gleiche bank).