Jump to content

passwd decoding problem


phew
 Share

Recommended Posts

hi!

password encoded: 77-106-113-117-116

password plaintext: Hallo

each number stands for a char written in decimal.

if its an odd number, then the decimal must be decreased by 5 and then be translated from dec to chr so you get the password plain letter.

77 / 2 == 38.5 (odd) => 77 - 5 = 72 => decimal: 72 == char: H

if its an even numer, then the decimal must be decreased by 9 and then be translated from dec to chr so you get the password plain letter.

106 / 2 == 53 (even) => 106 - 9 = 97 => decimal: 97 == char: a

now i am using Mod($decimal_value, 2) to find out if the decimal is even or odd, but somehow my way of decoding doesn't work properly.

here is my code:

decodepw("77-106-113-117-116")

Func decodepw($pass)
    $passwd = StringSplit($pass, "-", 0)
    For $i = 1 To $passwd[0]
        MsgBox(0, "", $passwd[$i])
        $x = Mod($passwd[$i], 2)
        If ($x = 0) Then
            MsgBox(0, "", Chr($passwd[$i] - 9))
        Else
            MsgBox(0, "", Chr($passwd[$i] - 5))
        EndIf
    Next
EndFunc

decoding with my code gives out smtn like: Halp<strange sign>

should be: Hallo

what am i doing wrong?

EDIT: "odd" and "even" might be the wrong words, well if Mod() returns 0 then -9 if it returns 1 then -5 =) sorry for my bad english

greetings

Edited by phew
Link to comment
Share on other sites

  • Moderators

You're trying to subtract a string value from an integer.

MsgBox(0, 0, decodepw("77-106-113-117-116"))

Func decodepw($pass)
    Local $passwd = StringSplit($pass, "-", 0)
    Local $s_hold = ""
    For $i = 1 To $passwd[0]
        If Mod($passwd[$i], 2) Then
            $s_hold &= Chr(Int($passwd[$i]) - 5)
        Else
            $s_hold &= Chr(Int($passwd[$i]) - 9)
        EndIf
    Next
    Return $s_hold
EndFunc

Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

Link to comment
Share on other sites

Func decodepw($pass)
    $passwd = StringSplit($pass, "-", 0)
    For $i = 1 To $passwd[0]
        MsgBox(0, "", $passwd[$i])
        $x = Mod($passwd[$i], 2)
        If ($x = 0) Then
            MsgBox(0, "", Chr(Int($passwd[$i]) - 9))
        Else
            MsgBox(0, "", Chr(Int($passwd[$i]) - 5))
        EndIf
    Next
EndFunc

doesn't work either, your code also returns "Halpk" instead of "Hallo" for me

Link to comment
Share on other sites

Func decodepw($pass)
    $passwd = StringSplit($pass, "-", 0)
    For $i = 1 To $passwd[0]
        MsgBox(0, "", $passwd[$i])
        $x = Mod($passwd[$i], 2)
        If ($x = 0) Then
            MsgBox(0, "", Chr(Int($passwd[$i]) - 9))
        Else
            MsgBox(0, "", Chr(Int($passwd[$i]) - 5))
        EndIf
    Next
EndFunc

doesn't work either, your code also returns "Halpk" instead of "Hallo" for me

That's because "77-106-113-113-120" is "Hallo" and "77-106-113-117-116" is... "Halpk" Edited by trancexx
Link to comment
Share on other sites

mhh strange, so it's encoded in some other way.

a friend of mine made me a msl script that decodes correctly, perhaps one of you knows msl and can figure out what i'm doing wrong by then:

alias dc {
  var %char 0
  var %i 1
  var %output ""
  while ($gettok($1-,%i,45)) {
    set %char $gettok($1-,%i,45)
    if ($calc(%i % 2) == 0) { set %output $+(%output, $chr($calc(%char - 9))) } 
    if ($calc(%i % 2) == 1) { set %output $+(%output, $chr($calc(%char - 5))) }
    inc %i
  }
  echo $active %output
}

test passwords:

encoded plaintext

77-106-113-117-116 - Hallo

60-61-58-60-55-58-59 - 7453216

103-123-102-126-120-110 - brause

Link to comment
Share on other sites

  • Moderators

mhh strange, so it's encoded in some other way.

a friend of mine made me a msl script that decodes correctly, perhaps one of you knows msl and can figure out what i'm doing wrong by then:

alias dc {
  var %char 0
  var %i 1
  var %output ""
  while ($gettok($1-,%i,45)) {
    set %char $gettok($1-,%i,45)
    if ($calc(%i % 2) == 0) { set %output $+(%output, $chr($calc(%char - 9))) } 
    if ($calc(%i % 2) == 1) { set %output $+(%output, $chr($calc(%char - 5))) }
    inc %i
  }
  echo $active %output
}

test passwords:

encoded plaintext

77-106-113-117-116 - Hallo

60-61-58-60-55-58-59 - 7453216

103-123-102-126-120-110 - brause

What language is that?

Anyway, it's not using the decimal of the char to figure out the mod... it's using the loop number.

MsgBox(0, 0, decodepw("77-106-113-117-116"))
#cs
77-106-113-117-116 - Hallo
60-61-58-60-55-58-59 - 7453216
103-123-102-126-120-110 - brause
#ce

Func decodepw($pass)
    Local $passwd = StringSplit($pass, "-", 0)
    Local $s_hold = ""
    For $i = 1 To $passwd[0]
        If Mod($i, 2) Then
            $s_hold &= Chr(Int($passwd[$i]) - 5)
        Else
            $s_hold &= Chr(Int($passwd[$i]) - 9)
        EndIf
    Next
    Return $s_hold
EndFunc
($calc(%i % 2) == 1)

Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...