Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 23.12.2014, 18:45   #11
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
Репутация: 76
По умолчанию

Перевожу encrypt_6, как перевести это?

Код:

chash=(unsigned char*)hash+0x1c;  // тот самый buf40-0xac
phash=(unsigned char*)hash;

Объявление переменных
Код:

unsigned int hash[26];
unsigned char* chash;
unsigned char* phash;

WinCoder вне форума   Ответить с цитированием
Старый 23.12.2014, 19:00   #12
Slym
Профессионал
 
Регистрация: 07.12.2011
Адрес: Siberia
Сообщений: 1,021
Репутация: 759
По умолчанию

Код:

unit encrypt_4;
//
//  Калькулятор nlock-кодов для модемов Huawei с новым алгоритмом v201
//  Автор - forth32
//  2014 год
//  Портировал Delphi - Slym
//  Ветка для вычисления кодов с индексом 3
//

interface
function Encrypt(const imei:string;version:integer):string;

implementation

uses SysUtils, HashMD5;

function Encrypt(const imei:string;version:integer):string;
var
  S:string;
  MD5:T4LongWordRecord;
  buf:PByteArray;
  i,r:integer;
  res:array[0..3] of byte;
begin
  if version=2 then
    S:='hwideadatacard'
  else
    S:='dfkdkfllekkodk';
  MD5:=HashValueStr(S);
  SetString(S,PChar(@MD5),SizeOf(MD5));
  s:=imei+s;
  MD5:=HashValueStr(s);

  buf:=PByteArray(@MD5);
  for i:=0 to 3 do
    res[i]:=(buf^[i] xor buf^[i+4]) xor (buf^[i+8] xor buf^[i+12]);

  r:=0;
  for i:=0 to 3 do
    r:=(r shl 8) or (res[i] and $ff);
  r:=(r or $2000000) and (not $fc000000);
  result:=IntToStr(r);
end;

end.

Вложения
Тип файла: zip HashMD5.zip (2.5 Кб, 50 просмотров)
__________________
Не стесняемся, плюсуем!

Последний раз редактировалось Slym; 23.12.2014 в 19:24. Причина: перезалил HashMD5.pas
Slym вне форума   Ответить с цитированием
Старый 23.12.2014, 19:14   #13
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
Репутация: 76
По умолчанию

Slym encrypt_4 считает не верно.

Последний раз редактировалось WinCoder; 23.12.2014 в 20:35.
WinCoder вне форума   Ответить с цитированием
Старый 23.12.2014, 20:52   #14
Человек_Борща
Модератор
Заслуженный модератор
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Адрес: Республика Беларусь, г. Минск
Сообщений: 11,447
Репутация: 2769
По умолчанию

Там не просто так дан rehash4 и всякие извраты с массивом от rehash4 . Encrypt_4 использует их. чего не вижу в вашем переводе.

Encode_4 перевел, лежит на рабочем компе.. завтра закину.
Человек_Борща вне форума   Ответить с цитированием
Старый 23.12.2014, 20:59   #15
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
Репутация: 76
По умолчанию

Человек_Борща Ждём. Хотя я уже начинаю сомневаться, а нужен ли перевод. Это ассемблер, а не оригинальная функция хеширования. Достать бы оригинальную...
WinCoder вне форума   Ответить с цитированием
Старый 23.12.2014, 21:08   #16
Slym
Профессионал
 
Регистрация: 07.12.2011
Адрес: Siberia
Сообщений: 1,021
Репутация: 759
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Там не просто так дан rehash4 и всякие извраты с массивом от rehash4 . Encrypt_4 использует их. чего не вижу в вашем переводе.

Encode_4 перевел, лежит на рабочем компе.. завтра закину.
Там MD5, я его перелопачивать не стал а взял из левого заведомо рабочего модуля

хм у меня верно считает... давай твой imei

3 ветка
357239005314800 calc201- 41028861
356239005314800 calc2- 57050088

Код:

unit encrypt_5_v2;
//
//  Калькулятор nlock-кодов для модемов Huawei с новым алгоритмом v2
//  Автор - forth32
//  2014 год
//  Портировал Delphi - Slym
//  Ветка для вычисления кодов с индексом 3
//
interface

function Encrypt(const imei:string;version:integer):string;

implementation

function Encrypt(const imei:string;version:integer):string;
const
  PW_table:string = '5739146280098765432112345678905\000';
var
  buf:string;
  i:integer;
  b1,b2:byte;
begin
  result:=StringOfChar('0',8);
  buf:=imei+'Z';
  for i:=1 to length(result) do
  begin
    b2:=(byte(buf[i]) xor byte(buf[i+8])) and $ff;
    b1:=b2 and $0f;
    result[i]:=PW_table[(b2 shr 4)+b1+1];
  end;
  if result[1]='0' then
  begin
    i:=2;
    while i<=8 do
    begin
      if result[i]<>'0' then
        break;
      inc(i)
    end;
    result[1]:=Chr(i-1+ord('0'));
  end;
end;

end.

__________________
Не стесняемся, плюсуем!

Последний раз редактировалось Slym; 23.12.2014 в 21:11.
Slym вне форума   Ответить с цитированием
Старый 23.12.2014, 23:09   #17
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
Репутация: 76
По умолчанию

Так это код ветки Encrypt_5, а переодресация IMEY 357239005314800 идёт на Encrypt_4. Какой индекс выдаёт proc_index?
WinCoder вне форума   Ответить с цитированием
Старый 23.12.2014, 23:35   #18
Slym
Профессионал
 
Регистрация: 07.12.2011
Адрес: Siberia
Сообщений: 1,021
Репутация: 759
По умолчанию

Выкладываю весь проект
у меня считает правильно
Вложения
Тип файла: zip huaweicalc_d7.zip (11.1 Кб, 66 просмотров)
__________________
Не стесняемся, плюсуем!
Slym вне форума   Ответить с цитированием
Старый 24.12.2014, 01:38   #19
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
Репутация: 76
По умолчанию

Смотри не совпадения с оригинальной программой
Цитата:
Ветка 0
352239005314800 calc201- 29081473
355239005314800 calc2- 48821554
Ветка 1
354239005314800 calc201- 95001296
354238005314800 calc201- 29181796
353239005314800 calc2- 92430611
Ветка 3
357239005314800 calc201- 41028861
356239005314800 calc2- 57050088
Ветка 4
354239005314800 calc2- 66469054

Результаты со скомпилированного СИ

Ветка 0
352239005314800 calc201- 29081473
355239005314800 calc2- 38560202 // НЕ СОВПАЛО
Ветка 1
354239005314800 calc201- 95001296
354238005314800 calc201- 29181796 // этот не верен, но совпадает первый. Убери
с кода чтоб не путаться
353239005314800 calc2- 66469054 // НЕ СОВПАЛО
Ветка 3
357239005314800 calc201- 41028861
356239005314800 calc2- 93534458 //НЕ СОВПАЛО
Ветка 4
354239005314800 calc2- 66469054
WinCoder вне форума   Ответить с цитированием
Старый 24.12.2014, 01:41   #20
Человек_Борща
Модератор
Заслуженный модератор
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Адрес: Республика Беларусь, г. Минск
Сообщений: 11,447
Репутация: 2769
По умолчанию

все склонен дyмать что там своя магия. мд5 используется явно от ssl.
Человек_Борща вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Algo 2 -=$mile_Cr@Ft=- Паскаль 0 28.11.2008 16:59
calculator II leonw Общие вопросы Delphi 3 08.08.2008 11:09


00:44.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru