Seite 1 von 3

kleines tool brauche Hilfe

Verfasst: 26.01.2008 15:08
von guldokat
Hallo,
ich bin leider blutiger Anfänger...ein wenig Basic Kenntnisse aus meiner PC Anfangszeit habe ich noch doch ich verzweifele an einem blöden kleinen tool...
Und zwar...
Ich möchte gerne eine MAC adresse eingeben und nach return soll einfach eine mathematische Formel ausgeführt werden zb. eingegebene zahl +10 dann geteilt duch 4 mal8 und dann auf 10 stellen ausgegeben werden....bekomme es einfach nicht hin...kann mir jemand von euch bitte helfen...wäre euch sehr dankbar...

gruss
Holger

Re: kleines tool brauche Hilfe

Verfasst: 26.01.2008 15:13
von Kiffi
guldokat hat geschrieben:bekomme es einfach nicht hin...
dann zeig doch mal, was Du bisher schon an Code hast.

Grüße ... Kiffi

Verfasst: 26.01.2008 15:21
von guldokat
Hi Kiffi...

hier ist mein code...etwas abgewandelter code von danilo...
problem ist das ich einfach die eingegebene zahl *2 multipliziere...er multipliziert jedoch *2 ascii...

Code: Alles auswählen

Procedure.l WaitKey2(string$)

  ; waits until the users presses a key
  ; specified in string$
  Repeat
    asc = Asc(Inkey())
    If asc > 0 And asc < 127
      If FindString(string$,Chr(asc),1)
        key = asc
      EndIf
    EndIf
    Delay(10)
  Until key
  ProcedureReturn key
EndProcedure

OpenConsole() 
PrintN(""):Print("Passwort Generator fuer VSE") 
PrintN("")
PrintN("")
PrintN(""):Print("Bitte geben sie die 12-stellige MAC Adresse OHNE - Zeichen ein: ") 


For a = 1 To 12
  key = WaitKey2("0123456789ABCDEF."+Chr(13))
  If key=13 ; return
    Break
  EndIf
  Print(Chr(key))
  num$+Chr(key*2)
Next a
  
PrintN(""):PrintN(""):PrintN("Das Passwort lautet: "+num$)
PrintN("")
PrintN("")
PrintN("<return> zum beenden druecken") 
WaitKey2(Chr(13)) 

Debug Val(num$)
__________________________________________________
Code-Tags wurde hinzugefügt
(RSBasic)

Verfasst: 26.01.2008 15:46
von gnasen
Ich bin mir nicht sicher, ob ich ganz verstanden habe, was du meinst, aber ich denke das hier wirds sein:

Code: Alles auswählen

num$+Chr(key*2)
Soll jetzt zB aus einer "8" eine "16" werden, oder aus chr( 8 ) chr( 16 ) ? Der Unterschied liegt darin, dass du mit chr() ein anderes Zeichen zurückbekommst. Wäre gut wenn du das noch klären könntest, was genau passieren soll.

So?
Asc("4") = 52
Chr(52*2) = "h"

Oder so?

zahl = asc("4") - 48 = 4
zeichen = str(zahl * 2) = "8"

Verfasst: 26.01.2008 19:06
von guldokat
Hallo,
also ich möchte gerne anhand von einer MAC adresse einen code bzw. ein password generieren ohne das jemand drauf kommt wie dies zusammenhängt.
deshalb meine idee einfach die mac adresse nehmen und durch ein paar mathematische formeln jagen und das ergebnis ist mein passwort....
also die mac eingeben ohne minuszeichen zb. 12A4DF13F574
dann denke ich mal wandeln in eine normale zahl 1211414161316574
dann diese zahl durch formeln verädern...zb. *4, /9, +6499
dann das ergebnis wieder ohne nachkommastellen wandeln...
das ergebnis kann von mir aus hex oder normal zahl sein...nur keine nachkomma stellen.

denke ich habe es gut genug erklärt...hoffe ich ;-)

gruss
Holger

Verfasst: 27.01.2008 15:06
von Thorsten1867
Dieser Code wandelt Namen (Buchstaben) in "Seriennummern" um.
Mit ein paar kleinen Änderungen (ASCII Codes der Zahlen, anstatt der Buchstaben verwenden), sollte er sich auch für eine Mac-Adresse benutzen lassen. Mit einer ASCII-Tabelle sollten sich sinnvolle Verschiebungen ermitteln lassen.

Code: Alles auswählen

Procedure.s  EncodeSerNr(name$) 
  SerNr$ = ""
  name$ = UCase(name$)
  For b = 1 To Len(name$)
    ZC = Asc(Mid(name$,b,1))
    If ZC >= 65 And ZC <= 74
      SerNr$ + Chr(ZC - 17)
    ElseIf ZC >74 And ZC <= 90
      SerNr$ + Chr(ZC - 10) 
    ElseIf ZC = 32
      SerNr$ + "-"
    Else
      SerNr$ + Chr(ZC) 
    EndIf 
  Next b
  ProcedureReturn SerNr$
EndProcedure

Verfasst: 27.01.2008 15:27
von Thorsten1867
Mit PB Mittel ist es auch möglich:

Code: Alles auswählen

MAC.s = "12A4DF13F574"

; MD5 => 13 stellige Nummer
*MAC = @MAC
MD5$ = MD5Fingerprint(*MAC, MemoryStringLength(*MAC))
Debug "Code: " + MD5$

; Nur die ersten 8 Zeichen der MAC werden benutzt
code.s = DESFingerprint(MAC, "geheim")
Debug "Code2: " + code

Verfasst: 27.01.2008 16:05
von guldokat
Hallo thorsten,

danke erstmal für deine hilfe...theoretisch verstehe ich deinen code aber praktisch habe ich leider nicht genug ahnung diesen in meinen zu implementieren...irgendwie blick ich das nicht...sorry...kannst du mir hilfe geben?

danke und gruss
Holger

Verfasst: 27.01.2008 16:14
von Thorsten1867
Ich lese den String zeichenweise aus, ermittel den ASCII-Wert und verschiebe die Buchstaben um einen bestimmten Wert, so dass es ein sinnvolles Zeichen ergibt.
z.B.: A bis J (65 bis 74) == -17 ==> 0 bis 9 (48 bis 57)

Am besten nimmst du dir dazu die ASCII-Tabelle aus der PB Hilfe.

Verfasst: 27.01.2008 17:13
von guldokat
Hallo,

so bin jetzt soweit:

Procedure.l WaitKey2(string$)

; waits until the users presses a key
; specified in string$
Repeat
asc = Asc(Inkey())
If asc > 0 And asc < 127
If FindString(string$,Chr(asc),1)
key = asc
EndIf
EndIf
Delay(10)
Until key
ProcedureReturn key
EndProcedure

OpenConsole()
ConsoleTitle("Passwort Generator fuer VSE")
PrintN("")
PrintN(""):Print("Bitte geben sie die 12-stellige MAC Adresse OHNE - (minus) Zeichen ein")
PrintN(""):Print("und druecken Sie dann <return> ")
PrintN("")
PrintN(""):Print("MAC Adresse: ")

MAC.s = Input()
;MD5 => 13 stellige Nummer
*MAC = @MAC
MD5$ = MD5Fingerprint(*MAC, MemoryStringLength(*MAC))
Debug "Code: " + MD5$
; Nur die ersten 8 Zeichen der MAC werden benutzt
code.s = DESFingerprint(MAC, "schwingung")
Debug "Code2: " + code

PrintN("")
PrintN("")
PrintN("Das Passwort lautet: "+ code)
PrintN("")
PrintN("")
PrintN("<return> zum beenden druecken")
WaitKey2(Chr(13))


jeodch würde ich die eingabe genau auf 0123456789ABCDEF begrenzen und nach 12 stelliger eingabe keine weiteren eingaben mehr zulassen ausser return....
ansonsten finktioniert das schon sehr gut...danke bis dahin

gruss
Holger