Seite 1 von 1
Passwort übergeben
Verfasst: 26.03.2007 16:38
von Aspirant
Hallo ich Versuche ein Passwort das aus einer SQL kommt und nutzer abhängig ist an ein nicht PB-Programm zu übergeben
was eigentlich auch geht.
erster versuch über durch Zwischenablage geht ohne Probleme.
Code: Alles auswählen
ClearClipboard() : SetClipboardText(ipplan(para)\ippass)
Ist nur Blöd weil die Nutzer so an das Passwort kommen
aber so bekomme ich es nicht hin:
Code: Alles auswählen
Procedure SendAKey(key.s)
Debug key ;zeichen Kontrollausgabe
vk = VkKeyScan_(Asc(key))
If vk>320:keybd_event_(#VK_LSHIFT,1,0,0):EndIf
Debug keybd_event_(vk,1,0,0)
Debug keybd_event_(vk,1,#KEYEVENTF_KEYUP,0)
If vk>320
keybd_event_(#VK_LSHIFT,1,0,0)
keybd_event_(#VK_LSHIFT,1,#KEYEVENTF_KEYUP,0)
EndIf
EndProcedure
also das Problem betrifft die Zeichen >!< >"< >§< sie werden einfach nicht richtig übergeben einen übergabe mittels chr(33),chr(34),chr(167) schlägt auch Fehl.
also bei der Kontrollausgabe werde die Zeichen richtig ausgegeben.
Wenn mir jemand helfen könnte wäre das sehr schön. Dank
Verfasst: 26.03.2007 17:09
von Konne
Hexe das Password oder benutze den Base64Encoder um dumme zeichen zu entfernen.
Verfasst: 26.03.2007 17:59
von Aspirant
Sorry wie meinst du das? mit base64Encoder?
nur damit es noch mal klar ist.
Passwort wird lokal an einen Fremden PC vergeben mit den vorgaben.
10 Zeichen davon 3 Sonderzeichen erlaubt ist fast alles was die Tastatur her gibt.
was Bedeutet das meine 3 Zeichen auch 3 andere hätte sein können.
ich hoffe jetzt ist es klarer
Verfasst: 26.03.2007 19:40
von a14xerus
ich glaube er meint, das du das pw nicht als original versenden sollst, sondern zb mit base64 encodieren sollst und der Empfänger decodiert es wieder.
Da sind dann keine Sonderzeichen drin und es ist noch ein BISSCHEN sicherer
Verfasst: 26.03.2007 19:46
von Thalius
Base64 ist Rückverschlüsselbar... für das nimm lieber MD5 / DES / Blowfish etc.
Aber um über das Zeichenproblem in der regel wegzukommen sollte mal ein Base64 en / decode helfen.
hmmm da es sich nicht um ein PB Prog handelt ... Mehr infos zu dem Programm könnten helfen
EDIT: Whoa, meine Sätze heute wieder.... keine Ahnung von Recktszchreipunk der guhte ... errr ...
Thalius
Verfasst: 26.03.2007 20:13
von Aspirant
es ist eine Client-Server Anwendung zur Maschinen Kontrolle aus dem Bereich SPS-Automatisierung (ABB)
Es gibt 3 Passwort ebnen und 4 Options ebnen
Server läuft Logischerweise in der Anlage ein weiteres Tool stellt die IP und den Port bereit zum I-Net Connect der Client läuft Local und nimmt Verbindung über IP+Port auf, soweit kein Problem. Über eine Vorauswahl werden nun die Optionen festgelegt, die der User treffen soll, was wir hier aber nicht wollen und PB in Spiel kommt.
Der User starte das PB Tool
welche sich die rechte des User hold und die Einstellungen des Clints vornimmt soweit so gut, wenn der Client jetzt zu verbinden versucht will er eins der 3 Passwörter
was der User nicht weis.
Code: Alles auswählen
Procedure.s sehen()
aminparameter ="/connect:"+ipplan(para)\ipip+":"+ipplan(para)\ipport+" /noinput"
;ClearClipboard() : SetClipboardText(ipplan(para)\ippass)
SetWindowState(0, #PB_Window_Minimize)
RunProgram(adminpath+admin, aminparameter, adminpath, #PB_Program_Write)
; WinTitle$ = "Enter password for "+ipplan(para)\ipip
Delay(1000)
handle.l=FindWindow_(0, "Enter password for "+ipplan(para)\ipip)
If handle>0
OpenIcon_(handle)
SetForegroundWindow_(handle)
SetActiveWindow_(handle)
Delay(1000)
a$= ipplan(para)\ippass
For r=1 To Len(a$)
Debug Asc(Mid(a$,r,1))
SendAKey(Mid(a$,r,1))
Next
;SendAKey(Chr(13))
EndIf
Wie hier jetzt hoffentlich deutlich wird wir erwarte der Client eine Locale Passworteingabe über die Tastatur welche PB erledigen soll und mit einem chr(13) abschließt was ja auch geht bist halt die blöden Sonderzeichen
Verfasst: 26.03.2007 20:23
von ts-soft
Mithilfe von AutoIt3.dll solltest Du alle Zeichen senden können, einschließlich
Unicode.
http://purebasic.ts-soft-online.de/dl/autoitx3.zip
Der Wrapper includiert die DLL, ist zwar schon etwas älter aber für PB4
Dt. Hilfe ist auch bei
Verfasst: 27.03.2007 00:51
von Aspirant
Jo also die >>AutoIT3.dll<< hat zum erfolg geführt, für interessierte hier nun der Code:
Code: Alles auswählen
Procedure passwort()
handle.l =0
Repeat: Until (handle = FindWindow_(0, "Enter password for "+ipplan(para)\ipip)) > 0 ;Wartet auf das Fenster zur passwort eingabe
OpenIcon_(handle)
SetForegroundWindow_(handle)
SetActiveWindow_(handle)
Delay(50)
AutoItX3_Init()
AU3_Send(ipplan(para)\ippass, 1) ; übergibt Passwort
AutoItX3_Init()
AU3_Send(Chr(13), 1) ; Übergabe Return
EndProcedure
bei fragen helfe ich gern im Rahmen meiner möglichkeiten
Verfasst: 27.03.2007 01:01
von ts-soft
Nur einmal am Codeanfang!
Am ende noch:
um DLL und Speicher freizugeben