Сейчас на форуме: NIKOLA, Magister Yoda (+5 невидимых)

 eXeL@B —› Крэки, обсуждения —› Помогите идентифицировать Saifer
Посл.ответ Сообщение


Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 24 декабря 2017 16:10 · Поправил: mak
· Личное сообщение · #1

Входные параметры - Ключ маска ( FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ), Размер шифруемых данных (8), шифруемые данные. Выходные параметры маска (АА АА АА АА АА АА АА АА). Шифруемые данные маска (XX XX XX XX FF FF FF FF) где XX XX XX XX это Паддинг.

Code:
  1. Private Function Encrypt(ByVal a1 As Integer, ByVal a2 As UInteger, ByVal a3 As Integer) As SByte
  2.   Dim v3 As UInteger '
  3.   Dim v4 As Integer '
  4.   Dim v6 As Integer '
  5.   Dim v7 As Integer '
  6.   Dim v8 As SByte '
  7.  
  8.   v3 = a2
  9.   v4 = a1
  10.   ZeroMemory(v8, 0, &HD0UI); Key_Expand Buffer
  11.   Key_Expand(a3, v8)
  12.   v6 = 0
  13.   v7 = 0
  14.   Encryption_Round(CByte(v6), CInt(v6), v8, 1)
  15.   Last_Round(v6, v8, v4, v4, v3)
  16.   Return 1
  17. End Function
  18.  
  19.  
  20. Private Function Key_Expand(ByVal a1 As Integer, ByVal a2 As _WORD) As Integer
  21.   Dim v2() As _WORD ' esi
  22.   Dim v3 As Integer ' edx
  23.   Dim v4 As UInteger ' ecx
  24.   Dim v5 As Integer ' ebx
  25.   Dim v6 As UInteger ' ecx
  26.   Dim v7 As UInteger ' ecx
  27.   Dim v8 As UInteger ' ecx
  28.   Dim v9 As UInteger ' ecx
  29.   Dim v10 As UInteger ' ecx
  30.   Dim v11 As UInteger ' ecx
  31.   Dim v12 As UInteger ' ecx
  32.   Dim v13 As UInteger ' ecx
  33.   Dim v14 As UInteger ' ecx
  34.   Dim v15 As UInteger ' ecx
  35.   Dim v16 As UInteger ' ecx
  36.   Dim v17 As UInteger ' ecx
  37.   Dim v18 As UInteger ' ecx
  38.   Dim v19 As UInteger ' ecx
  39.   Dim v20 As UInteger ' ecx
  40.   Dim v21 As UInteger ' ecx
  41.   Dim v22 As UInteger ' ecx
  42.  
  43.   v2 = a2
  44.   v3 = a1
  45.   If a1 = 0 OrElse Not v2 Then
  46.          Return 0
  47.   End If
  48.   v2(0) = _byteswap_ushort(CType(a1, _WORD))
  49.   v2(1) = _byteswap_ushort(CType(a1 + 2, _WORD))
  50.   v2(2) = _byteswap_ushort(CType(a1 + 4, _WORD))
  51.   v2(3) = _byteswap_ushort(CType(a1 + 6, _WORD))
  52.   v2(4) = _byteswap_ushort(CType(a1 + 8, _WORD))
  53.   v2(5) = _byteswap_ushort(CType(a1 + 10, _WORD))
  54.   v2(6) = _byteswap_ushort(CType(a1 + 12, _WORD))
  55.   v4 = CByte(a1 + 14)
  56.   v5 = 8
  57.   v2(7) = _byteswap_ushort(CType(v3 + 14, _WORD))
  58.   Do
  59.          v2(v5) = (v2((v5 And &HFFFFFFF8UI) - 8 + ((CType(v5, _BYTE)- 7) And 7)) << 9) Or (v2((v5 And &HFFFFFFF8UI) - 8 + ((CType(v5, _BYTE)- 7 + 1) And 7)) >> 7)
  60.          v5 += 1
  61.   Loop While v5 < 52
  62.   LOWORD(v4) = v2(48)
  63.   v2(52) = Key_schedule(v4)
  64.   v2(53) = -v2(49)
  65.   v2(54) = -v2(50)
  66.   LOWORD(v6) = v2(51)
  67.   v2(55) = Key_schedule(v6)
  68.   v2(56) = v2(46)
  69.   v2(57) = v2(47)
  70.   LOWORD(v7) = v2(42)
  71.   v2(58) = Key_schedule(v7)
  72.   v2(59) = -v2(44)
  73.   v2(60) = -v2(43)
  74.   LOWORD(v8) = v2(45)
  75.   v2(61) = Key_schedule(v8)
  76.   v2(62) = v2(40)
  77.   v2(63) = v2(41)
  78.   LOWORD(v9) = v2(36)
  79.   v2(64) = Key_schedule(v9)
  80.   v2(65) = -v2(38)
  81.   v2(66) = -v2(37)
  82.   LOWORD(v10) = v2(39)
  83.   v2(67) = Key_schedule(v10)
  84.   v2(68) = v2(34)
  85.   v2(69) = v2(35)
  86.   LOWORD(v11) = v2(30)
  87.   v2(70) = Key_schedule(v11)
  88.   v2(71) = -v2(32)
  89.   v2(72) = -v2(31)
  90.   LOWORD(v12) = v2(33)
  91.   v2(73) = Key_schedule(v12)
  92.   v2(74) = v2(28)
  93.   v2(75) = v2(29)
  94.   LOWORD(v13) = v2(24)
  95.   v2(76) = Key_schedule(v13)
  96.   v2(77) = -v2(26)
  97.   v2(78) = -v2(25)
  98.   LOWORD(v14) = v2(27)
  99.   v2(79) = Key_schedule(v14)
  100.   v2(80) = v2(22)
  101.   v2(81) = v2(23)
  102.   LOWORD(v15) = v2(18)
  103.   v2(82) = Key_schedule(v15)
  104.   v2(83) = -v2(20)
  105.   v2(84) = -v2(19)
  106.   LOWORD(v16) = v2(21)
  107.   v2(85) = Key_schedule(v16)
  108.   v2(86) = v2(16)
  109.   v2(87) = v2(17)
  110.   LOWORD(v17) = v2(12)
  111.   v2(88) = Key_schedule(v17)
  112.   v2(89) = -v2(14)
  113.   v2(90) = -v2(13)
  114.   LOWORD(v18) = v2(15)
  115.   v2(91) = Key_schedule(v18)
  116.   v2(92) = v2(10)
  117.   v2(93) = v2(11)
  118.   LOWORD(v19) = v2(6)
  119.   v2(94) = Key_schedule(v19)
  120.   v2(95) = -v2(8)
  121.   v2(96) = -v2(7)
  122.   LOWORD(v20) = v2(9)
  123.   v2(97) = Key_schedule(v20)
  124.   v2(98) = v2(4)
  125.   v2(99) = v2(5)
  126.   LOWORD(v21) = v2(0)
  127.   v2(100) = Key_schedule(v21)
  128.   v2(101) = -v2(1)
  129.   v2(102) = -v2(2)
  130.   LOWORD(v22) = v2(3)
  131.   v2(103) = Key_schedule(v22)
  132.   Return 1
  133. End Function


088b_24.12.2017_EXELAB.rU.tgz - Encrypt.vb

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 24 декабря 2017 16:15 · Поправил: mak
· Личное сообщение · #2

Code:
  1. Private Function Key_schedule(ByVal a1 As UInteger) As Short
  2.  
  3.   If CUShort(a1) <= 1UI Then
  4.          Return a1
  5.   End If
  6.   a1 = CUShort(a1)
  7.   v2 = &H10001UI / CUShort(a1)
  8.   LOWORD(v3) = &H10001UI Mod CUShort(a1)
  9.   v4 = CUShort(v2)
  10.   If CUShort(v3) = 1 Then
  11.          Return 1 - v2
  12.   End If
  13.   v5 = 1
  14.   Do
  15.          v6 = CUShort(v3)
  16.          v7 = a1 Mod CUShort(v3)
  17.          v5 += v4 * (a1 \ v6)
  18.          If v7 = 1 Then
  19.            Exit Do
  20.          End If
  21.          a1 = v7
  22.          v3 = CUShort(v6 Mod v7)
  23.          v8 = v4 + v5 * (v6 \ a1)
  24.          v4 = CUShort(v8)
  25.          If v3 = 1 Then
  26.            Return 1 - v8
  27.          End If
  28.   Loop
  29.   Return v5
  30. End Function


Code:
  1. Private Function Last_Round(ByVal a1() As Integer, ByVal a2 As _WORD, ByVal a3 As Integer, ByVal a4 As Integer, ByVal a5 As UInteger) As Integer
  2.  
  3.   result = a1(1)
  4.   v6 = a1(0)
  5.   v7 = 0
  6.   v14 = a2
  7.   If a5 >> 2 Then
  8.          v8 = a3 - a4
  9.          v9 = a4 + 4
  10.          Do
  11.            v10 = CType(v8 + v9, _DWORD) Xor result
  12.            v16 = v10
  13.            v11 = CType(a3 + 4 * v7, _DWORD) Xor v6
  14.            LOWORD(v15) = v11
  15.            BYTE2(v15) = BYTE2(v11)
  16.            v17 = BYTE2(v10)
  17.            HIBYTE(v15) = HIBYTE(v11)
  18.            v18 = HIBYTE(v10)
  19.            Encryption_Round(CByte(v15), CInt(v15), v14, 1)
  20.            v9 += 8
  21.            v7 += 2
  22.            v12 = v18 << 8
  23.            v6 = v15
  24.            v13 = v16
  25.            CType(v9 - 12, _DWORD) = v15
  26.            v8 = a3 - a4
  27.            result = ((v17 Or v12) << 16) Or v13
  28.            CType(v9 - 8, _DWORD) = result
  29.          Loop While v7 (Of a5 )> 2
  30.   End If
  31.   Return result
  32. End Function


-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 24 декабря 2017 16:18 · Поправил: mak
· Личное сообщение · #3

Ссори за некропостинг

Code:
  1. Private Integer Function Encryption_Round(ByRef a1 As Byte, ByVal a2 As Integer, ByVal a3 As _WORD, ByVal a4 As Integer) As __spoils(Of ecx)
  2.  
  3.   v4 = a1
  4.   If a1 = 0 Then
  5.          Return 0
  6.   End If
  7.   If a2 = 0 Then
  8.          Return 0
  9.   End If
  10.   v5 = a3
  11.   If a3 Is Nothing Then
  12.          Return 0
  13.   End If
  14.   v6 = a1
  15.   If a4 = 0 Then
  16.          v5 = a3 + 52
  17.   End If
  18.   v7 = v4(1) Or CUShort(v6 << 8)
  19.   v8 = _byteswap_ushort(CType(v4, _WORD) + 3)
  20.   v9 = (CUShort(v7 - 1) + 1) * CUShort(Math.Truncate(v5(0) - 1)) + 1 + CUShort(v7 - 1)
  21.   v10 = v9 + (CUShort(v9) < HIWORD(v9)) - HIWORD(v9)
  22.   v11 = v5(3)
  23.   v122 = v5 + 4
  24.   v12 = (CUShort(v11 - 1) * (CUShort(v8 - 1) + 1) + 1 + CUInt(CUShort(v8 - 1))) >> 16
  25.   v13 = v5(2) + _byteswap_ushort(CType(v4, _WORD) + 2)
  26.   v14 = v5(1) + _byteswap_ushort(CType(v4, _WORD) + 1)
  27.   v15 = (v11 - 1) * v8 + v8 + (CUShort((v11 - 1) * v8 + v8) < CUShort(v12)) - CType(v12, _WORD)
  28.   v16 = CUShort(Math.Truncate(v122(0) - 1)) * (CUShort((v10 Xor v13) - 1) + 1) + CUShort((v10 Xor v13) - 1) + 1
  29.   v17 = v16 + (CUShort(v16) < HIWORD(v16)) - HIWORD(v16)
  30.   v18 = CUShort(v122(1) - 1)
  31.   v122 += 2
  32.   v19 = v18 * (CUShort(v17 + (v14 Xor v15) - 1) + 1) + CUShort(v17 + (v14 Xor v15) - 1) + 1
  33.   v20 = v19 + (CUShort(v19) < HIWORD(v19)) - HIWORD(v19)
  34.   v21 = v20 + v17
  35.   v22 = (CUShort(Math.Truncate(v122(0) - 1)) * (CUShort((v20 Xor v10) - 1) + 1) + 1 + CUInt(CUShort((v20 Xor v10) - 1))) >> 16
  36.   v23 = (v122(0) - 1) * (v20 Xor v10) + (v20 Xor v10) + (CUShort(Math.Truncate((v122(0) - 1) * (v20 Xor v10) + (v20 Xor v10))) < CUShort(v22)) - CType(v22, _WORD)
  37.   LOWORD(v22) = (v21 Xor v15) - 1
  38.   v24 = v122(1) + (v20 Xor v13)
  39.   LOWORD(v18) = v122(3)
  40.   v25 = v122(2) + (v21 Xor v14)
  41.   v122 += 4
  42.   v26 = CUShort(v18 - 1) * (CUShort(v22) + 1) + CUShort(v22) + 1
  43.   v27 = v26 + (CUShort(v26) < HIWORD(v26)) - HIWORD(v26)
  44.   v28 = v25
  45.   v29 = CUShort(Math.Truncate(v122(0) - 1))
  46.   v122 += 1
  47.   v30 = v29 * (CUShort((v23 Xor v25) - 1) + 1) + CUShort((v23 Xor v25) - 1) + 1
  48.   v31 = v30 + (CUShort(v30) < HIWORD(v30)) - HIWORD(v30)
  49.   v32 = CUShort(Math.Truncate(v122(0) - 1)) * (CUShort(v31 + (v24 Xor v27) - 1) + 1) + CUShort(v31 + (v24 Xor v27) - 1) + 1
  50.   v33 = v32 + (CUShort(v32) < HIWORD(v32)) - HIWORD(v32)
  51.   LOWORD(v29) = v122(1) - 1
  52.   v34 = v33 + v31
  53.   v35 = v34 Xor v27
  54.   v36 = (CUShort(v29) * (CUShort((v33 Xor v23) - 1) + 1) + 1 + CUInt(CUShort((v33 Xor v23) - 1))) >> 16
  55.   v37 = v29 * (v33 Xor v23) + (v33 Xor v23) + (CUShort(v29 * (v33 Xor v23) + (v33 Xor v23)) < CUShort(v36)) - CType(v36, _WORD)
  56.   v38 = v122(3) + (v34 Xor v24)
  57.   v39 = v122(2) + (v33 Xor v28)
  58.   LOWORD(v29) = v122(4) - 1
  59.   v122 += 5
  60.   v40 = (CUShort(v29) * (CUShort(v35 - 1) + 1) + CUInt(CUShort(v35 - 1)) + 1) >> 16
  61.   v41 = v29 * v35 + v35 + (CUShort(v29 * v35 + v35) < CUShort(v40)) - CType(v40, _WORD)
  62.   v42 = v38
  63.   v43 = CUShort(Math.Truncate(v122(0) - 1))
  64.   v122 += 1
  65.   v44 = v43 * (CUShort((v37 Xor v38) - 1) + 1) + CUShort((v37 Xor v38) - 1) + 1
  66.   v45 = v44 + (CUShort(v44) < HIWORD(v44)) - HIWORD(v44)
  67.   v46 = CUShort(Math.Truncate(v122(0) - 1)) * (CUShort(v45 + (v39 Xor v41) - 1) + 1) + CUShort(v45 + (v39 Xor v41) - 1) + 1
  68.   v47 = v46 + (CUShort(v46) < HIWORD(v46)) - HIWORD(v46)
  69.   LOWORD(v43) = v122(1) - 1
  70.   v48 = v47 + v45
  71.   v49 = v48 Xor v41
  72.   v50 = (CUShort(v43) * (CUShort((v47 Xor v37) - 1) + 1) + 1 + CUInt(CUShort((v47 Xor v37) - 1))) >> 16
  73.   v51 = v43 * (v47 Xor v37) + (v47 Xor v37) + (CUShort(v43 * (v47 Xor v37) + (v47 Xor v37)) < CUShort(v50)) - CType(v50, _WORD)
  74.   v52 = v122(3) + (v48 Xor v39)
  75.   v53 = v122(2) + (v47 Xor v42)
  76.   LOWORD(v43) = v122(4) - 1
  77.   v122 += 5
  78.   v54 = (CUShort(v43) * (CUShort(v49 - 1) + 1) + CUInt(CUShort(v49 - 1)) + 1) >> 16
  79.   v55 = v43 * v49 + v49 + (CUShort(v43 * v49 + v49) < CUShort(v54)) - CType(v54, _WORD)
  80.   v56 = v52
  81.   LOWORD(v43) = v122(0) - 1
  82.   v122 += 1
  83.   v57 = CUShort(v43) * (CUShort((v51 Xor v52) - 1) + 1) + CUShort((v51 Xor v52) - 1) + 1
  84.   v58 = v57 + (CUShort(v57) < HIWORD(v57)) - HIWORD(v57)
  85.   v59 = CUShort(Math.Truncate(v122(0) - 1)) * (CUShort(v58 + (v53 Xor v55) - 1) + 1) + CUShort(v58 + (v53 Xor v55) - 1) + 1
  86.   v60 = v59 + (CUShort(v59) < HIWORD(v59)) - HIWORD(v59)
  87.   LOWORD(v43) = v122(1) - 1
  88.   v61 = v60 + v58
  89.   v62 = v61 Xor v55
  90.   v63 = (CUShort(v43) * (CUShort((v60 Xor v51) - 1) + 1) + 1 + CUInt(CUShort((v60 Xor v51) - 1))) >> 16
  91.   v64 = v43 * (v60 Xor v51) + (v60 Xor v51) + (CUShort(v43 * (v60 Xor v51) + (v60 Xor v51)) < CUShort(v63)) - CType(v63, _WORD)
  92.   v65 = v122(3) + (v61 Xor v53)
  93.   v66 = v122(2) + (v60 Xor v56)
  94.   LOWORD(v43) = v122(4)
  95.   v122 += 5
  96.   v67 = (CUShort(v43 - 1) * (CUShort(v62 - 1) + 1) + CUInt(CUShort(v62 - 1)) + 1) >> 16
  97.   v68 = (v43 - 1) * v62 + v62 + (CUShort((v43 - 1) * v62 + v62) < CUShort(v67)) - CType(v67, _WORD)
  98.   v69 = v65
  99.   v123 = CUShort((v64 Xor v65) - 1)
  100.   v70 = CUShort(Math.Truncate(v122(0) - 1))
  101.   v122 += 1
  102.   v71 = v66
  103.   v72 = v70 * (CUShort(v123) + 1) + CUShort(v123) + 1
  104.   v73 = v72 + (CUShort(v72) < HIWORD(v72)) - HIWORD(v72)
  105.   v74 = CUShort(Math.Truncate(v122(0) - 1)) * (CUShort(v73 + (v66 Xor v68) - 1) + 1) + CUShort(v73 + (v66 Xor v68) - 1) + 1
  106.   v75 = v74 + (CUShort(v74) < HIWORD(v74)) - HIWORD(v74)
  107.   LOWORD(v70) = v122(1) - 1
  108.   v76 = v75 + v73
  109.   v77 = v76 Xor v68
  110.   v78 = (CUShort(v70) * (CUShort((v75 Xor v64) - 1) + 1) + 1 + CUInt(CUShort((v75 Xor v64) - 1))) >> 16
  111.   v79 = v70 * (v75 Xor v64) + (v75 Xor v64) + (CUShort(v70 * (v75 Xor v64) + (v75 Xor v64)) < CUShort(v78)) - CType(v78, _WORD)
  112.   v80 = v122(2) + (v75 Xor v69)
  113.   v81 = v122(3) + (v76 Xor v71)
  114.   v82 = CUShort(v122(4) - 1)
  115.   v122 += 5
  116.   v83 = (v82 * (CUShort(v77 - 1) + 1) + CUInt(CUShort(v77 - 1)) + 1) >> 16
  117.   v84 = v82 * v77 + v77 + (CUShort(v82 * v77 + v77) < CUShort(v83)) - CType(v83, _WORD)
  118.   v85 = v81
  119.   v86 = CUShort(Math.Truncate(v122(0) - 1))
  120.   v122 += 1
  121.   v87 = v86 * (CUShort((v79 Xor v81) - 1) + 1) + CUShort((v79 Xor v81) - 1) + 1
  122.   v88 = v87 + (CUShort(v87) < HIWORD(v87)) - HIWORD(v87)
  123.   v89 = CUShort(Math.Truncate(v122(0) - 1)) * (CUShort(v88 + (v80 Xor v84) - 1) + 1) + CUShort(v88 + (v80 Xor v84) - 1) + 1
  124.   v90 = v89 + (CUShort(v89) < HIWORD(v89)) - HIWORD(v89)
  125.   LOWORD(v86) = v122(1)
  126.   v91 = v90 + v88
  127.   v92 = v91 Xor v84
  128.   v93 = (CUShort(v86 - 1) * (CUShort((v90 Xor v79) - 1) + 1) + 1 + CUInt(CUShort((v90 Xor v79) - 1))) >> 16
  129.   v94 = (v86 - 1) * (v90 Xor v79) + (v90 Xor v79) + (CUShort((v86 - 1) * (v90 Xor v79) + (v90 Xor v79)) < CUShort(v93)) - CType(v93, _WORD)
  130.   v95 = v122(3) + (v91 Xor v80)
  131.   v96 = v122(2) + (v90 Xor v85)
  132.   LOWORD(v86) = v122(4) - 1
  133.   v122 += 5
  134.   v97 = (CUShort(v86) * (CUShort(v92 - 1) + 1) + CUInt(CUShort(v92 - 1)) + 1) >> 16
  135.   v98 = v86 * v92 + v92 + (CUShort(v86 * v92 + v92) < CUShort(v97)) - CType(v97, _WORD)
  136.   v99 = CUShort(Math.Truncate(v122(0) - 1)) * (CUShort((v94 Xor v95) - 1) + 1) + CUShort((v94 Xor v95) - 1) + 1
  137.   v100 = v99 + (CUShort(v99) < HIWORD(v99)) - HIWORD(v99)
  138.   v101 = CUShort(v122(1) - 1)
  139.   v122 += 2
  140.   v102 = v101 * (CUShort(v100 + (v96 Xor v98) - 1) + 1) + CUShort(v100 + (v96 Xor v98) - 1) + 1
  141.   LOWORD(v101) = v102 + (CUShort(v102) < HIWORD(v102)) - HIWORD(v102)
  142.   v103 = v101
  143.   v104 = v101 + v100
  144.   LOWORD(v97) = (v101 Xor v94) - 1
  145.   LOWORD(v101) = v122(0) - 1
  146.   v122 += 1
  147.   v105 = CUShort(v101) * (CUShort(v97) + 1) + 1 + CUShort(v97)
  148.   v106 = v105 + (CUShort(v105) < HIWORD(v105)) - HIWORD(v105)
  149.   v107 = v122 + (v103 Xor v95)
  150.   v108 = v122(1) + (v104 Xor v96)
  151.   LOWORD(v101) = v122(2) - 1
  152.   v122 += 3
  153.   v109 = (CUShort(v101) * (CUShort((v104 Xor v98) - 1) + 1) + 1 + CUInt(CUShort((v104 Xor v98) - 1))) >> 16
  154.   v110 = v101 * (v104 Xor v98) + (v104 Xor v98) + (CUShort(v101 * (v104 Xor v98) + (v104 Xor v98)) < CUShort(v109)) - CType(v109, _WORD)
  155.   v111 = CUShort(Math.Truncate(v122(0) - 1))
  156.   v122 += 1
  157.   v112 = v111 * (CUShort((v106 Xor v108) - 1) + 1) + CUShort((v106 Xor v108) - 1) + 1
  158.   v113 = v112 + (CUShort(v112) < HIWORD(v112)) - HIWORD(v112)
  159.   v114 = CUShort(Math.Truncate(v122(0) - 1)) * (CUShort(v113 + (v107 Xor v110) - 1) + 1) + CUShort(v113 + (v107 Xor v110) - 1) + 1
  160.   LOWORD(v111) = v114 + (CUShort(v114) < HIWORD(v114)) - HIWORD(v114)
  161.   v115 = v111 + v113
  162.   v116 = (CUShort(v122(1) - 1) * (CUShort((v111 Xor v106) - 1) + 1) + 1 + CUInt(CUShort((v111 Xor v106) - 1))) >> 16
  163.   v117 = (v122(1) - 1) * (v111 Xor v106) + (v111 Xor v106) + (CUShort((v122(1) - 1) * (v111 Xor v106) + (v111 Xor v106)) < CUShort(v116)) - CType(v116, _WORD)
  164.   LOWORD(v123) = v122(2) + (v107 Xor v115)
  165.   v118 = v122(3) + (v108 Xor v111)
  166.   v119 = (CUShort((v115 Xor v110) - 1) + 1) * CUShort(v122(4) - 1) + 1 + CUShort((v115 Xor v110) - 1)
  167.   v121(1) = v117
  168.   v121(0) = HIBYTE(v117)
  169.   v121(3) = v123
  170.   v121(2) = BYTE1(v123)
  171.   v121(5) = v118
  172.   v121(4) = HIBYTE(v118)
  173.   result = 1
  174.   v121(7) = v119 + (CUShort(v119) < HIWORD(v119)) - BYTE2(v119)
  175.   v121(6) = CUShort(Math.Truncate(v119 + (CUShort(v119) < HIWORD(v119)) - HIWORD(v119))) >> 8
  176.   Return result
  177. End Function


-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 24 декабря 2017 17:22 · Поправил: reversecode
· Личное сообщение · #4

если это число
Code:
  1.   v2 = &H10001UI / CUShort(a1)
  2.   LOWORD(v3) = &H10001UI Mod CUShort(a1)

то весь алго RSA

а это очень похоже на аес ключа 0xD0 (208) байт
Code:
  1. ZeroMemory(v8, 0, &HD0UI);


Добавлено спустя 32 минуты
это IDEA

Добавлено спустя 36 минут
Key_schedule это функция Inverse в IDEA

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


Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 24 декабря 2017 20:11
· Личное сообщение · #5

reversecode

Code:
  1. /* taken directly from the 'paper' I'll have a look at it later */
  2. static IDEA_INT inverse(unsigned int xin)
  3. {
  4.     long n1, n2, q, r, b1, b2, t;
  5.  
  6.     if (xin == 0)
  7.         b2 = 0;
  8.     else {
  9.         n1 = 0x10001;
  10.         n2 = xin;
  11.         b2 = 1;
  12.         b1 = 0;
  13.  
  14.         do {
  15.             r = (n1 % n2);
  16.             q = (n1 - r) / n2;
  17.             if (== 0) {
  18.                 if (b2 < 0)
  19.                     b2 = 0x10001 + b2;
  20.             } else {
  21.                 n1 = n2;
  22.                 n2 = r;
  23.                 t = b2;
  24.                 b2 = b1 - q * b2;
  25.                 b1 = t;
  26.             }
  27.         } while (!= 0);
  28.     }
  29.     return (IDEA_INT)b2;


Мастерски определил, спасибо! Посмотрю дальше чуть позже.

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube



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


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