|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » нужна помощь по кодированию строки |
|
|
нужна помощь по кодированию строки
|
Новый участник Сообщения: 13 |
Профиль | Отправить PM | Цитировать полная предыстория:
есть такой jabber клиент jajc хочется его развернуть в домене доменное имя пользователя = имя юзера на jabber сервере так вот jajc хранит логин/пароль в реестре в шифрованном виде идея такая - при первом запуске юзером jajc писать в реестр все настройки вопрос: как писать в реестр уже шифрованное значение? оговорюсь сразу программист из меня не очень что удалось выяснить: строку jajc хранит там в Base 64 вроде как если поможет то на оф. форуме эта тема поднималась но я если честно не очень понял как сделать пример строки: admin на выходе получаем cQf4Zvo= |
|
Отправлено: 08:42, 11-09-2009 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Другими словами, нужно перекодировать строку в Base64 и/или обратно?
Вот функции для этого: $sEncode = _Base64Encode("admin") $sDecode = _Base64Decode($sEncode) ConsoleWrite("_Base64Encode: " & $sEncode & @CRLF) ConsoleWrite("_Base64Decode: " & $sDecode & @CRLF) Func _Base64Decode($Data) Local $Opcode = "0xC81000005356578365F800E8500000003EFFFFFF3F3435363738393A3B3C3DFFFFFF00FFFFFF000102030405060708090A0B0C0D0E0F10111213141516171819FFFFFFFFFFFF1A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132338F45F08B7D0C8B5D0831D2E9910000008365FC00837DFC047D548A034384C0750383EA033C3D75094A803B3D75014AB00084C0751A837DFC047D0D8B75FCC64435F400FF45FCEBED6A018F45F8EB1F3C2B72193C7A77150FB6F083EE2B0375F08A068B75FC884435F4FF45FCEBA68D75F4668B06C0E002C0EC0408E08807668B4601C0E004C0EC0208E08847018A4602C0E00624C00A46038847028D7F038D5203837DF8000F8465FFFFFF89D05F5E5BC9C21000" Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]") DllStructSetData($CodeBuffer, 1, $Opcode) Local $Ouput = DllStructCreate("byte[" & BinaryLen($Data) & "]") Local $Ret = DllCall("user32.dll", "int", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _ "str", $Data, _ "ptr", DllStructGetPtr($Ouput), _ "int", 0, _ "int", 0) Return BinaryToString(BinaryMid(DllStructGetData($Ouput, 1), 1, $Ret[0])) EndFunc Func _Base64Encode($Data, $LineBreak = 76) Local $Opcode = "0x5589E5FF7514535657E8410000004142434445464748494A4B4C4D4E4F505152535455565758595A6162636465666768696A6B6C6D6E6F707172737475767778797A303132333435363738392B2F005A8B5D088B7D108B4D0CE98F0000000FB633C1EE0201D68A06880731C083F901760C0FB6430125F0000000C1E8040FB63383E603C1E60409C601D68A0688470183F90176210FB6430225C0000000C1E8060FB6730183E60FC1E60209C601D68A06884702EB04C647023D83F90276100FB6730283E63F01D68A06884703EB04C647033D8D5B038D7F0483E903836DFC04750C8B45148945FC66B80D0A66AB85C90F8F69FFFFFFC607005F5E5BC9C21000" Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]") DllStructSetData($CodeBuffer, 1, $Opcode) $Data = Binary($Data) Local $Input = DllStructCreate("byte[" & BinaryLen($Data) & "]") DllStructSetData($Input, 1, $Data) $LineBreak = Floor($LineBreak / 4) * 4 Local $OputputSize = Ceiling(BinaryLen($Data) * 4 / 3) $OputputSize = $OputputSize + Ceiling($OputputSize / $LineBreak) * 2 + 4 Local $Ouput = DllStructCreate("char[" & $OputputSize & "]") DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _ "ptr", DllStructGetPtr($Input), _ "int", BinaryLen($Data), _ "ptr", DllStructGetPtr($Ouput), _ "uint", $LineBreak) Return DllStructGetData($Ouput, 1) EndFunc |
------- Отправлено: 09:28, 11-09-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 13
|
Профиль | Отправить PM | Цитировать здорово
но не то возвращает что нужно admin на выходе должно быть cQf4Zvo= а получаем YWRtaW4= гляньте на оф. форум то что я ссылку давал может что то прояснится почему |
Отправлено: 09:57, 11-09-2009 | #3 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата BrAWo:
$sDecrypt = Decrypt(_Base64Decode("cQf4Zvo="), 4235) ConsoleWrite("Decode: " & $sDecrypt & @CRLF) Func Decrypt($S, $Key) Const $c1 = 51472, $c2 = 30759 $aS = StringSplit($S, "") $S = "" For $i = 1 To $aS[0] $S &= Chr(BitXOR($aS[$i], BitShift($Key, 8))) $Key = ($aS[$i] + $Key) * $c1 + $c2 Next $result = $S ;UTF8Decode($X) Return $result EndFunc Func _Base64Decode($Data) Local $Opcode = "0xC81000005356578365F800E8500000003EFFFFFF3F3435363738393A3B3C3DFFFFFF00FFFFFF000102030405060708090A0B0C0D0E0F10111213141516171819FFFFFFFFFFFF1A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132338F45F08B7D0C8B5D0831D2E9910000008365FC00837DFC047D548A034384C0750383EA033C3D75094A803B3D75014AB00084C0751A837DFC047D0D8B75FCC64435F400FF45FCEBED6A018F45F8EB1F3C2B72193C7A77150FB6F083EE2B0375F08A068B75FC884435F4FF45FCEBA68D75F4668B06C0E002C0EC0408E08807668B4601C0E004C0EC0208E08847018A4602C0E00624C00A46038847028D7F038D5203837DF8000F8465FFFFFF89D05F5E5BC9C21000" Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]") DllStructSetData($CodeBuffer, 1, $Opcode) Local $Ouput = DllStructCreate("byte[" & BinaryLen($Data) & "]") Local $Ret = DllCall("user32.dll", "int", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _ "str", $Data, _ "ptr", DllStructGetPtr($Ouput), _ "int", 0, _ "int", 0) Return BinaryToString(BinaryMid(DllStructGetData($Ouput, 1), 1, $Ret[0])) EndFunc |
|
------- Отправлено: 15:37, 11-09-2009 | #4 |
Новый участник Сообщения: 13
|
Профиль | Отправить PM | Цитировать нет нужно наоборот зашифровывать и писать это в реестр
может ключевая фраза там (оф. форум) "Параметр Key для имени - 4235" |
|
Отправлено: 19:39, 11-09-2009 | #5 |
Старожил Сообщения: 307
|
Профиль | Отправить PM | Цитировать Цитата BrAWo:
|
|
------- Отправлено: 20:24, 11-09-2009 | #6 |
Старожил Сообщения: 367
|
Профиль | Отправить PM | Цитировать beve, ты про декодирование без ключа? эм... по идее это невозможно
но по той ссыле говорят что ключ известен |
------- Отправлено: 23:47, 11-09-2009 | #7 |
Старожил Сообщения: 307
|
Профиль | Отправить PM | Цитировать Цитата kaster:
|
|
------- Отправлено: 23:58, 11-09-2009 | #8 |
Новый участник Сообщения: 13
|
Профиль | Отправить PM | Цитировать спасибо всем
списался с разработчиком он ответил что использует некий свой механизм шифровки и раскрывать его не хочет так что угадывать можно долго будем думать как по другому сделать |
Отправлено: 18:35, 12-09-2009 | #9 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Тема еще актуальна? Я на основе делфёвой функции сделал енкодер/декодер если кому-то это еще нужно - пишите в личку
|
Отправлено: 20:53, 05-12-2009 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Нужна помощь | ponch_31 | Мобильные ОС, смартфоны и планшеты | 2 | 12-03-2009 17:36 | |
нужна помощь | NiceSindy | Хочу все знать | 11 | 01-05-2004 10:16 | |
нужна помощь | Garry73 | Хочу все знать | 1 | 27-03-2004 16:04 | |
Нужна помощь | TVI | Microsoft Windows 2000/XP | 6 | 26-04-2003 21:31 |
|