Сейчас на форуме: -Sanchez- (+9 невидимых)

 eXeL@B —› Основной форум —› NI Kontakt кейген (разбор алгоритма серийника)
Посл.ответ Сообщение


Ранг: 213.0 (наставник), 4thx
Активность: 0.220
Статус: Участник
Тот ещё Lamer

Создано: 08 декабря 2018 17:28
· Личное сообщение · #1

доброго времени суток!
попала мне в руки библиотека для контакта. регистрируется через её же интерфейс (система NI не задействована), всё читается хексом.
подобные проверки встречал частенько, но там всё ограничивалось сложением/вычитанием, здесь же немного мудрёнее.
короче, вот кусок кода:
Code:
  1. function AuthorizeSerial
  2.  
  3.          if (%DrumdropsSerial[3] = (((%DrumdropsSerial[0] mod %DrumdropsSerial[1]) * %DrumdropsSerial[2]) * %DrumdropsSerial[0]) mod $SerialDivisor or %DrumdropsSerial[3] = ((((%DrumdropsSerial[0] mod %DrumdropsSerial[1]) * %DrumdropsSerial[2]) * %DrumdropsSerial[0]) mod $SerialDivisor)*-1)
  4.                  set_control_par_str(get_ui_id($SER_Status),$CONTROL_PAR_PICTURE,"Serial1")
  5.                  $Authorized := 1

что известно:
$SerialDivisor := 731
части серийника (не смотря на возможность ввести число до 1000000) - > 99999

весь файл скидывать не стоит, думаю - 150 мб кода, который по сути бесполезен без всей библиотеки, которая весит больше 2 гигов.

пробовал высчитывать серийник - не принимает. упёрся в mod - как оно высчитывается?

подправить код не проблема, но хочется именно серийник.

-----
Do Not Get Mad Get Money! ;)




Ранг: 158.4 (ветеран), 123thx
Активность: 0.140.49
Статус: Участник

Создано: 08 декабря 2018 17:52
· Личное сообщение · #2

Code:
  1. ((x0 % x1) * x2 * x0) % 731 == x3


Выбираем рандомные x0, x1, x2, считаем выражение слева и присваиваем его x3.




Ранг: 213.0 (наставник), 4thx
Активность: 0.220
Статус: Участник
Тот ещё Lamer

Создано: 08 декабря 2018 18:00
· Личное сообщение · #3

rmn пишет:
Выбираем рандомные x0, x1, x2, считаем выражение слева и присваиваем его x3

а сам пробовал посчитать так? =) там такие числа получаются... mod - это не посто деление

-----
Do Not Get Mad Get Money! ;)




Ранг: 158.4 (ветеран), 123thx
Активность: 0.140.49
Статус: Участник

Создано: 08 декабря 2018 18:01 · Поправил: rmn
· Личное сообщение · #4

Talula
mod - это остаток от целочисленного деления. Результат всегда меньше делителя.

Вот, прочекай серийники:
Code:
  1. user@remcomp:~$ cat serial.
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. int main (int argc, char** argv)
  6. {
  7.     unsigned int x[4], i;
  8.     
  9.     for (i=0; i<10; i++)
  10.     {
  11.         x[0] = 99999 + rand() % 1000000;
  12.         x[1] = 99999 + rand() % 1000000;
  13.         x[2] = 99999 + rand() % 1000000;
  14.         x[3] = ((x[0] % x[1]) * x[2] * x[0]) % 731;
  15.         
  16.         printf ("%u - %u - %u - %u\n", x[0], x[1], x[2], x[3]);
  17.     }
  18.     
  19.     return 0;
  20. }
  21.  
  22. user@remcomp:~$ ./serial
  23. 389382 - 1030885 - 792776 - 473
  24. 736914 - 847792 - 338334 - 193
  25. 985385 - 860491 - 616648 - 325
  26. 741420 - 302361 - 590026 - 125
  27. 468689 - 620058 - 997762 - 82
  28. 613925 - 280539 - 483425 - 662
  29. 189171 - 555735 - 105210 - 635
  30. 695367 - 802566 - 1056428 - 412
  31. 565781 - 121529 - 822861 - 583
  32. 765122 - 274066 - 803134 - 28


| Сообщение посчитали полезным: sefkrd


Ранг: 213.0 (наставник), 4thx
Активность: 0.220
Статус: Участник
Тот ещё Lamer

Создано: 08 декабря 2018 18:09
· Личное сообщение · #5

rmn, ну да... именно это и ставит в тупик. давай в числах пример, а то у меня уже мозг вскипает.

Добавлено спустя 3 минуты
rmn, каждая часть серийника - меньше 99999 - не более 5 цифр

-----
Do Not Get Mad Get Money! ;)





Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 08 декабря 2018 18:13
· Личное сообщение · #6

Code:
  1. = a - (a/731)*731 ;b = a mod 731

третий класс вторая четверть

-----
2 оттенка серого


| Сообщение посчитали полезным: sefkrd

Ранг: 158.4 (ветеран), 123thx
Активность: 0.140.49
Статус: Участник

Создано: 08 декабря 2018 18:16 · Поправил: rmn
· Личное сообщение · #7

Talula пишет:
rmn, каждая часть серийника - меньше 99999 - не более 5 цифр

Какое было изначально условие, под такое и писал. Поменяй тогда на
Code:
  1. x[...] = 1 + rand() % 99999;


Code:
  1. 7427 - 39356 - 9595 - 143
  2. 54062 - 67371 - 42578 - 408
  3. 92585 - 76990 - 22615 - 138
  4. 53318 - 12615 - 3533 - 128
  5. 76524 - 31085 - 18213 - 542
  6. 33602 - 94192 - 98830 - 300
  7. 92213 - 68771 - 5562 - 722
  8. 585 - 5515 - 73699 - 429
  9. 69147 - 30141 - 25650 - 296
  10. 67460 - 95519 - 7823 - 701





Ранг: 213.0 (наставник), 4thx
Активность: 0.220
Статус: Участник
Тот ещё Lamer

Создано: 08 декабря 2018 18:26 · Поправил: Talula
· Личное сообщение · #8

rmn, не работает это всё.

Добавлено спустя 2 минуты
говорю же, что закипает, элементарщину путаю %)
$SER_Enter1 > 99999
т. е. больше 99999, но максимум - 1000000
при этом в КАЖДОМ поле для ввода, не 3 и 4 цифры, во всех больше 99999 должно быть

-----
Do Not Get Mad Get Money! ;)




Ранг: 158.4 (ветеран), 123thx
Активность: 0.140.49
Статус: Участник

Создано: 08 декабря 2018 18:33
· Личное сообщение · #9

Talula
Так ты уже определись, больше или меньше В первом наборе все числа больше 99999, во втором - все меньше. Последнее, четвертое, больше 731 быть, разумеется, не может.




Ранг: 213.0 (наставник), 4thx
Активность: 0.220
Статус: Участник
Тот ещё Lamer

Создано: 08 декабря 2018 18:47
· Личное сообщение · #10

rmn, больше =)
во-первых, не все - результаты трёхзначные
во-вторых, там и больше 100000 есть

блин, последняя часть серийника > 99

аааааа, по-моему, я окончательно запутался...

-----
Do Not Get Mad Get Money! ;)




Ранг: 158.4 (ветеран), 123thx
Активность: 0.140.49
Статус: Участник

Создано: 08 декабря 2018 18:50
· Личное сообщение · #11

Talula пишет:
во-вторых, там и больше 100000 есть

Где "там"?

Вот цифирки: 985385 - 860491 - 616648 - 325, проверь кабанчиком Вроде, под все твои условия подпадают и больше 99999 и больше 99...




Ранг: 213.0 (наставник), 4thx
Активность: 0.220
Статус: Участник
Тот ещё Lamer

Создано: 08 декабря 2018 18:52
· Личное сообщение · #12

rmn пишет:
985385 - 860491 - 616648 - 325, проверь кабанчиком

invalid serial number

-----
Do Not Get Mad Get Money! ;)




Ранг: 158.4 (ветеран), 123thx
Активность: 0.140.49
Статус: Участник

Создано: 08 декабря 2018 18:56
· Личное сообщение · #13

Значит в первом посте не весь код по проверке серийника. Этот последний дворд больше похож на контрольную сумму, чем на полную валидацию.




Ранг: 213.0 (наставник), 4thx
Активность: 0.220
Статус: Участник
Тот ещё Lamer

Создано: 08 декабря 2018 19:03
· Личное сообщение · #14

rmn, так... посмотрю я ещё этот код...

-----
Do Not Get Mad Get Money! ;)





Ранг: 77.2 (постоянный), 73thx
Активность: 0.190.15
Статус: Участник

Создано: 08 декабря 2018 20:10
· Личное сообщение · #15

Talula
Давай все, что ниже $Authorized := 1




Ранг: 213.0 (наставник), 4thx
Активность: 0.220
Статус: Участник
Тот ещё Lamer

Создано: 08 декабря 2018 20:11
· Личное сообщение · #16

глянул ещё раз, вот самые интересные места
Code:
  1. declare $BlinkState
  2.  
  3.          {SerialSystem}
  4.                  declare $Authorized
  5.  
  6.                  declare ui_value_edit $SER_Enter1(0,1000000,1)
  7.                  set_text($SER_Enter1,"")
  8.                  set_control_par(get_ui_id($SER_Enter1),$CONTROL_PAR_HEIGHT,25) 
  9.                  set_control_par(get_ui_id($SER_Enter1),$CONTROL_PAR_WIDTH,60)
  10.  
  11.                  declare ui_value_edit $SER_Enter2(0,1000000,1)
  12.                  set_text($SER_Enter2,"")
  13.                  set_control_par(get_ui_id($SER_Enter2),$CONTROL_PAR_HEIGHT,25) 
  14.                  set_control_par(get_ui_id($SER_Enter2),$CONTROL_PAR_WIDTH,60)
  15.  
  16.                  declare ui_value_edit $SER_Enter3(0,1000000,1)
  17.                  set_text($SER_Enter3,"")
  18.                  set_control_par(get_ui_id($SER_Enter3),$CONTROL_PAR_HEIGHT,25) 
  19.                  set_control_par(get_ui_id($SER_Enter3),$CONTROL_PAR_WIDTH,60)
  20.  
  21.                  declare ui_value_edit $SER_Enter4(0,1000000,1)
  22.                  set_text($SER_Enter4,"")
  23.                  set_control_par(get_ui_id($SER_Enter4),$CONTROL_PAR_HEIGHT,25) 
  24.                  set_control_par(get_ui_id($SER_Enter4),$CONTROL_PAR_WIDTH,60)
  25.  
  26.                  declare %DrumdropsSerial[4]
  27.                  %DrumdropsSerial[0] := 0
  28.                  %DrumdropsSerial[1] := 0
  29.                  %DrumdropsSerial[2] := 0
  30.                  %DrumdropsSerial[3] := 0
  31.                  declare $SerialID
  32.  
  33.                  declare $SerialDivisor := 731
  34.                  declare ui_slider $ANM_Serial(1,30)
  35.  
  36.                  $ANM_Serial := 1
  37.  
  38.                  declare ui_button $SER_Authorize
  39.                  set_text($SER_Authorize,"")
  40.  
  41.                  declare ui_button $SER_Status
  42.                  set_text($SER_Status,"")


Code:
  1. on ui_control ($SER_Authorize)
  2.  
  3.                  if ($SER_Enter1 > 99999)
  4.                         %DrumdropsSerial[0] := $SER_Enter1
  5.                  else
  6.                         %DrumdropsSerial[0] := -1
  7.                  end if
  8.  
  9.                  if ($SER_Enter1 > 99999)
  10.                         %DrumdropsSerial[1] := $SER_Enter2
  11.                  else
  12.                         %DrumdropsSerial[1] := -1
  13.                  end if
  14.  
  15.                  if ($SER_Enter1 > 99999)
  16.                         %DrumdropsSerial[2] := $SER_Enter3
  17.                  else
  18.                         %DrumdropsSerial[2] := -1
  19.                  end if
  20.  
  21.                  if ($SER_Enter1 > 99999)
  22.                         %DrumdropsSerial[3] := $SER_Enter4        
  23.                  else
  24.                         %DrumdropsSerial[3] := -1
  25.                  end if 
  26.  
  27.                  call AuthorizeSerial
  28.  
  29.                  {SaveArray}
  30.                         if ($Authorized = 1)
  31.                               save_array(%DrumdropsSerial,1)
  32.                         end if                 
  33.  
  34.                  end on


Code:
  1. call GUIView
  2.  
  3.                         end if
  4.  
  5.                  end if
  6.  
  7.          if ($NI_ASYNC_ID = $MappingID)
  8.  
  9.                  if ($NI_ASYNC_EXIT_STATUS = 1)
  10.  
  11.                         call ArticulationFunction1
  12.  
  13.                         end if
  14.  
  15.                  end if
  16.  
  17.          if ($NI_ASYNC_ID = $MappingID2)
  18.  
  19.                  if ($NI_ASYNC_EXIT_STATUS = 1)
  20.  
  21.                         call ArticulationFunction1
  22.  
  23.                         end if
  24.  
  25.                  end if          
  26.  
  27.    if ($NI_ASYNC_ID = $SerialID)
  28.        
  29.        if ($NI_ASYNC_EXIT_STATUS = 1)
  30.  
  31.                         if (%DrumdropsSerial[0] > 99999)
  32.                               %DrumdropsSerial[0] := %DrumdropsSerial[0]
  33.                         else
  34.                               %DrumdropsSerial[0] := -1
  35.                         end if
  36.  
  37.                         if (%DrumdropsSerial[1] > 99999)
  38.                               %DrumdropsSerial[1] := %DrumdropsSerial[1]
  39.                         else
  40.                               %DrumdropsSerial[1] := -1
  41.                         end if
  42.  
  43.                         if (%DrumdropsSerial[2] > 99999)
  44.                               %DrumdropsSerial[2] := %DrumdropsSerial[2]
  45.                         else
  46.                               %DrumdropsSerial[2] := -1
  47.                         end if
  48.  
  49.                         if (%DrumdropsSerial[3] > 99)
  50.                               %DrumdropsSerial[3] := %DrumdropsSerial[3]
  51.                         else
  52.                               %DrumdropsSerial[3] := -1
  53.                         end if         
  54.  
  55.                         if (%DrumdropsSerial[3] = (((%DrumdropsSerial[0] mod %DrumdropsSerial[1]) * %DrumdropsSerial[2]) * %DrumdropsSerial[0]) mod $SerialDivisor or %DrumdropsSerial[3] = ((((%DrumdropsSerial[0] mod %DrumdropsSerial[1]) * %DrumdropsSerial[2]) * %DrumdropsSerial[0]) mod $SerialDivisor)*-1)
  56.                               
  57.                               set_control_par(get_ui_id($BG_Serial),$CONTROL_PAR_HIDE,$HIDE)
  58.                               set_control_par(get_ui_id($SER_Enter1),$CONTROL_PAR_HIDE,$HIDE)
  59.                               set_control_par(get_ui_id($SER_Enter2),$CONTROL_PAR_HIDE,$HIDE)
  60.                               set_control_par(get_ui_id($SER_Enter3),$CONTROL_PAR_HIDE,$HIDE)
  61.                               set_control_par(get_ui_id($SER_Enter4),$CONTROL_PAR_HIDE,$HIDE)
  62.                               set_control_par(get_ui_id($SER_Authorize),$CONTROL_PAR_HIDE,$HIDE)
  63.                               set_control_par(get_ui_id($SER_Status),$CONTROL_PAR_HIDE,$HIDE)
  64.  
  65.                               $Authorized := 1
  66.                         else
  67.                               $Authorized := 0
  68.                         end if
  69.                  end if 
  70.  
  71.                  $SerialID := -1
  72.  
  73.          end if


Code:
  1. function AuthorizeSerial
  2.  
  3.          if (%DrumdropsSerial[3] = (((%DrumdropsSerial[0] mod %DrumdropsSerial[1]) * %DrumdropsSerial[2]) * %DrumdropsSerial[0]) mod $SerialDivisor or %DrumdropsSerial[3] = ((((%DrumdropsSerial[0] mod %DrumdropsSerial[1]) * %DrumdropsSerial[2]) * %DrumdropsSerial[0]) mod $SerialDivisor)*-1)
  4.                  set_control_par_str(get_ui_id($SER_Status),$CONTROL_PAR_PICTURE,"Serial1")
  5.                  $Authorized := 1
  6.  
  7.                  set_control_par(get_ui_id($ANM_Serial),$CONTROL_PAR_HIDE,$SHOW)
  8.                  set_control_par(get_ui_id($BG_Serial),$CONTROL_PAR_HIDE,$HIDE)
  9.                  set_control_par(get_ui_id($SER_Enter1),$CONTROL_PAR_HIDE,$HIDE)
  10.                  set_control_par(get_ui_id($SER_Enter2),$CONTROL_PAR_HIDE,$HIDE)
  11.                  set_control_par(get_ui_id($SER_Enter3),$CONTROL_PAR_HIDE,$HIDE)
  12.                  set_control_par(get_ui_id($SER_Enter4),$CONTROL_PAR_HIDE,$HIDE)
  13.                  set_control_par(get_ui_id($SER_Authorize),$CONTROL_PAR_HIDE,$HIDE)
  14.                  set_control_par(get_ui_id($SER_Status),$CONTROL_PAR_HIDE,$HIDE)
  15.  
  16.                  while ($ANM_Serial < 30)
  17.                         inc($ANM_Serial)
  18.                         wait($AnimationWaitTime)
  19.                         end while      
  20.  
  21.                  {Defaults}
  22.                         $GLB_MidiPlayer := 0
  23.                         $GLB_DrumKit := 1
  24.                         $GLB_Settings := 0      
  25.                         $MIX_MicBlend := 0
  26.                         $GLB_Mixer := 0
  27.                         $MIX_InsertView := 0
  28.                         $MIX_SendsView := 0
  29.                         $MIX_MasterView := 0
  30.                         $MIX_ReturnView := 0
  31.  
  32.                         $ViewState := 2         
  33.                         $DrumSelect := 10
  34.  
  35.                  {GUI}
  36.                         call ArticulationKeyboardLights  
  37.                         call GUIView
  38.                         call KeyboardColours
  39.  
  40.                  {Touch}
  41.                         call Mixer1
  42.                         call InsertsRecall
  43.                         call InsertsSave
  44.                         call SendsRecall
  45.                         call SendsSave
  46.                         call TapeRecall
  47.                         call TapeSave
  48.                         call Master
  49.                         call ReturnsLoad
  50.                         call ReturnsLoadIR
  51.                         call ReturnsSave1
  52.                         call ReturnsSave2
  53.  
  54.          else
  55.                  set_control_par(get_ui_id($SER_Status),$CONTROL_PAR_HIDE,$SHOW)
  56.                  wait($ButtonFadeTime)
  57.                  $SER_Authorize := 0           
  58.                  $Authorized := 0
  59.                  wait(3500000)
  60.                  set_control_par(get_ui_id($SER_Status),$CONTROL_PAR_HIDE,$HIDE)
  61.          end if
  62.  
  63.  
  64.          end function


и самое интересное
Code:
  1. call GUIView
  2.  
  3.                         end if
  4.  
  5.                  end if
  6.  
  7.          if ($NI_ASYNC_ID = $MappingID)
  8.  
  9.                  if ($NI_ASYNC_EXIT_STATUS = 1)
  10.  
  11.                         call ArticulationFunction1
  12.  
  13.                         end if
  14.  
  15.                  end if
  16.  
  17.          if ($NI_ASYNC_ID = $MappingID2)
  18.  
  19.                  if ($NI_ASYNC_EXIT_STATUS = 1)
  20.  
  21.                         call ArticulationFunction1
  22.  
  23.                         end if
  24.  
  25.                  end if          
  26.  
  27.    if ($NI_ASYNC_ID = $SerialID)
  28.        
  29.        if ($NI_ASYNC_EXIT_STATUS = 1)
  30.  
  31.                         if (%DrumdropsSerial[0] > 99999)
  32.                               %DrumdropsSerial[0] := %DrumdropsSerial[0]
  33.                         else
  34.                               %DrumdropsSerial[0] := -1
  35.                         end if
  36.  
  37.                         if (%DrumdropsSerial[1] > 99999)
  38.                               %DrumdropsSerial[1] := %DrumdropsSerial[1]
  39.                         else
  40.                               %DrumdropsSerial[1] := -1
  41.                         end if
  42.  
  43.                         if (%DrumdropsSerial[2] > 99999)
  44.                               %DrumdropsSerial[2] := %DrumdropsSerial[2]
  45.                         else
  46.                               %DrumdropsSerial[2] := -1
  47.                         end if
  48.  
  49.                         if (%DrumdropsSerial[3] > 99)
  50.                               %DrumdropsSerial[3] := %DrumdropsSerial[3]
  51.                         else
  52.                               %DrumdropsSerial[3] := -1
  53.                         end if         
  54.  
  55.                         if (%DrumdropsSerial[3] = (((%DrumdropsSerial[0] mod %DrumdropsSerial[1]) * %DrumdropsSerial[2]) * %DrumdropsSerial[0]) mod $SerialDivisor or %DrumdropsSerial[3] = ((((%DrumdropsSerial[0] mod %DrumdropsSerial[1]) * %DrumdropsSerial[2]) * %DrumdropsSerial[0]) mod $SerialDivisor)*-1)
  56.                               
  57.                               set_control_par(get_ui_id($BG_Serial),$CONTROL_PAR_HIDE,$HIDE)
  58.                               set_control_par(get_ui_id($SER_Enter1),$CONTROL_PAR_HIDE,$HIDE)
  59.                               set_control_par(get_ui_id($SER_Enter2),$CONTROL_PAR_HIDE,$HIDE)
  60.                               set_control_par(get_ui_id($SER_Enter3),$CONTROL_PAR_HIDE,$HIDE)
  61.                               set_control_par(get_ui_id($SER_Enter4),$CONTROL_PAR_HIDE,$HIDE)
  62.                               set_control_par(get_ui_id($SER_Authorize),$CONTROL_PAR_HIDE,$HIDE)
  63.                               set_control_par(get_ui_id($SER_Status),$CONTROL_PAR_HIDE,$HIDE)
  64.  
  65.                               $Authorized := 1
  66.                         else
  67.                               $Authorized := 0
  68.                         end if
  69.                  end if 
  70.  
  71.                  $SerialID := -1
  72.  
  73.          end if


-----
Do Not Get Mad Get Money! ;)





Ранг: 77.2 (постоянный), 73thx
Активность: 0.190.15
Статус: Участник

Создано: 08 декабря 2018 20:18 · Поправил: sefkrd
· Личное сообщение · #17

[i]Talula пишет:
.....

Криво смотрел я..

Банальный брут..




Ранг: 213.0 (наставник), 4thx
Активность: 0.220
Статус: Участник
Тот ещё Lamer

Создано: 08 декабря 2018 20:29
· Личное сообщение · #18

sefkrd, ну в первом куске есть:
Code:
  1. declare ui_slider $ANM_Serial(1,30)
  2.  
  3.                  $ANM_Serial := 1


-----
Do Not Get Mad Get Money! ;)




Ранг: 158.4 (ветеран), 123thx
Активность: 0.140.49
Статус: Участник

Создано: 08 декабря 2018 20:34 · Поправил: rmn
· Личное сообщение · #19

sefkrd
Это к серийнику вообще никакого отношения не имеет, просто какая-то гуевая анимация.

Добавлено спустя 8 минут
Talula
Попробуй эти:
Code:
  1. 189382 - 130885 - 192776 - 538
  2. 136914 - 147792 - 138334 - 619
  3. 141420 - 102361 - 190026 - 138
  4. 168689 - 120058 - 197762 - 599
  5. 113925 - 180539 - 183425 - 730
  6. 189171 - 155735 - 105210 - 446
  7. 195367 - 102566 - 156428 - 160
  8. 165122 - 174066 - 103134 - 359
  9. 123057 - 133068 - 198166 - 672
  10. 161392 - 118455 - 175010 - 294


| Сообщение посчитали полезным: Talula

Ранг: 56.2 (постоянный), 22thx
Активность: 0.030.08
Статус: Участник

Создано: 08 декабря 2018 20:43
· Личное сообщение · #20

731 это SNPID библы Nu Jointz с защитой RAS1 - под нее полно кейгенов было. Какой смысл эту древность ковырять, если текущая защита RAS3




Ранг: 213.0 (наставник), 4thx
Активность: 0.220
Статус: Участник
Тот ещё Lamer

Создано: 08 декабря 2018 20:49
· Личное сообщение · #21

rmn пишет:
Попробуй эти:

первый же подошёл =) спасибо!
рассказывай что да как

Добавлено спустя 0 минут
Alf ключи NI отношения к этой библе не имеют

-----
Do Not Get Mad Get Money! ;)




Ранг: 158.4 (ветеран), 123thx
Активность: 0.140.49
Статус: Участник

Создано: 08 декабря 2018 20:58
· Личное сообщение · #22

Все как и раньше, только проверка на последнее число добавилась:
Code:
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. static int generate_serial (unsigned int* values)
  5. {
  6.     if (values[0] <= 99999 || values[1] <= 99999 || values[2] <= 99999)
  7.         return 0;
  8.     
  9.     values[3] = ((values[0] % values[1]) * values[2] * values[0]) % 731;
  10.     
  11.     return (values[3] > 99);
  12. }
  13.  
  14. int main (int argc, char** argv)
  15. {
  16.     unsigned int x[4], i;
  17.     
  18.     for (i=0; i<10; )
  19.     {
  20.         x[0] = 99999 + rand() % 100000;
  21.         x[1] = 99999 + rand() % 100000;
  22.         x[2] = 99999 + rand() % 100000;
  23.         
  24.         if (generate_serial (x))
  25.         {
  26.             printf ("%u - %u - %u - %u\n", x[0], x[1], x[2], x[3]);
  27.             i++;
  28.         }
  29.     }
  30.     
  31.     return 0;
  32. }



 eXeL@B —› Основной форум —› NI Kontakt кейген (разбор алгоритма серийника)
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати