Poslao: 22 Avg 2010 20:38
|
offline
- savan2
- Građanin
- Pridružio: 15 Jul 2009
- Poruke: 150
|
Pozz svima. Dali neko moze da protumaci ovo, ili da prevede u php na primer da mogu bolje da razumem?
Niz data izgleda ovako:
data[] = {ox0B, 0xC5, 0x63, 0xB6, 0xC6, 0x80, 0x77, 0xE6};
Kad niz prodje kroz ovaj deo koda:
data[4] = data[2] + (-28 * data[1] | data[2] ^ (HashTab[HashTab[MASKTABLE] ^ 0xBD] - ((data[3] ^ 0xEB) + data[3])));
dobijem ovo:
data[] = {ox0B, 0xC5, 0x63, 0xB6, 0x90, 0x80, 0x77, 0xE6};
Znaci pitanje je kako dobijem 0x90. Ne mogu nikako da protumacim i razumem code. Ovo HashTab[MASKTABLE] se radi po sledecem principu: Mask tabla izgleda ovako
0 1 2 3 4 5 6 7 8 9 A B C D E F
0 - 6F 64 8B 8C 91 F6 09 63 5A 9C B6 F2 5D AA E1 88
1 - CF 66 4A 65 7C FA 48 08 36 75 34 22 86 EC 77 1F
2 - EB F7 E3 AD B8 D4 BA 9B E6 8A D5 C9 C7 DD F4 73
3 - 87 C8 E9 E0 C2 55 3F 74 8F D9 31 7E 59 6D FC 25
4 - BE 19 EE FB 43 AB E7 4F 60 42 C1 82 30 C6 1C 50
5 - D1 CB 85 DA 92 DC 7D CD D2 3D 24 35 61 F0 CA 07
6 - 90 9E C4 97 ED 8D 52 12 D6 F1 0D 37 54 B0 70 4D
7 - 45 99 9A F5 3A A6 B5 16 2C 20 58 96 32 2D 04 0E
8 - B2 56 0C 03 A0 A3 6B 2B A8 A4 4B 2E 44 5E B4 79
9 - 2A C5 BF 15 AE 0B 68 BB DB B3 D7 49 10 EA EF 89
A - 28 8E 3E 13 39 6E A9 1B 76 B9 38 1E 0F 57 4E 47
B - 9F B1 FE 94 98 FF F9 23 A1 00 5C 95 80 6A 78 C3
C - 67 84 D8 27 2F C0 0A F8 7A 51 62 6C 7B BD F3 21
D - D3 5B A2 46 E4 AF 53 CE 1A 26 E2 41 1D 02 93 83
E - 01 33 BC D0 72 4C E8 69 05 CC 7F FD E5 18 A5 DE
F - 17 14 71 B7 81 9D 29 3C AC 40 A7 DF 11 06 5F 3B
i naspram nje se dobija novi bajt. Uzecu primer 0x0B kad se uporedi naspram mask table, dobija se 0xF2. E sad ono ostalo, na koju foru sam dobio 0x90 Pokusavam da razumem code da bih ga portovao u php. Bune me jako oni minusi i plusevi itd. Ako neko zna sta znaci "+-|" u c jeziku, tj na koju foru se sabiraju, oduzimaju, dele, mnoze bajtovi, dali se pretvaraju u decimalnu vrednos pa onda ili jednostavno direkt? Mozda i gresim, mozda su to pozicije + -, konkretno u ovom kodu. Stvarno ne znam, please help
Note: Viewing Pay TV without a valid subscription is illegal!!!
All my files and scripts posted here are for experimental and educational purpose only!!!
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 22 Avg 2010 23:47
|
offline
- Pridružio: 25 Maj 2005
- Poruke: 1482
- Gde živiš: Gracanica, Kosovo
|
Iako ne mogu da ti pomognem, da pitam onako iz znatiželje: koliko vidim ovo je deo koda od jednog od CAS algoritma - zasto ga prebacuješ u php?
|
|
|
|
Poslao: 24 Avg 2010 16:23
|
offline
- savan2
- Građanin
- Pridružio: 15 Jul 2009
- Poruke: 150
|
Napisano: 23 Avg 2010 15:18
Pozz imas pm. Nisam dobro postavio pitanje pa sam ponovo editovao post da me bolje razumete
|
|
|
|
Poslao: 24 Avg 2010 16:46
|
offline
- Srki_82
- Moderator foruma
- Srđan Tot
- Am I evil? I am man, yes I am.
- Pridružio: 12 Jul 2005
- Poruke: 2483
- Gde živiš: Ljubljana
|
+ i - rade isto sto rade i u php-u. | je OR operator, ^ je XOR operator (ne znam kako se oni pisu u php-u). Kada broj pocinje 0x znaci da je u heksadecimalnom obliku, kada nema na pocetku 0x znaci da je u decimalnom obliku. To je sve sto ti treba za konverziju
|
|
|
|
Poslao: 24 Avg 2010 18:37
|
offline
- savan2
- Građanin
- Pridružio: 15 Jul 2009
- Poruke: 150
|
Ok hvala. Znaci c je slican kao php jer php ima iste operatere u ovom slucaju. Ali me sad nesto buni. Ako uzmem primer -28 * data[1] to bi onda trebalo biti ovako -28 * 0xC5 zar ne? Pokusao sam pretvoriti C5 u dec, -28 * 197 i dobijam -5516. Kako se pretvara ta vrednost ponovo u hex ako sam dobio negativnu vrednost -5516? Jos nesto. Sta je -28 posto se ne vidi dali je dec ili hex? Ako je -28 hex zasto ima - ili ako je dec, na koju foru se mnozi negativan dec sa hex jbt, stvarno ne znam kako, kad ne razumem c i njegove mogucnosti.
Ostalo sam protumacio i ako uzmem onaj debug log za primer koji je na pocetku algoritma na linku sto sam okacio, vidi se sledeci postupak koji kontam donekle do onog dela kad pocinje taj niz data[4]:
Via3x_Core->init indata:4D4FE60272DF3AAC
Via3x_Core->final indata:0BC563B690DFA01A Ako je:
/*XORTABLE XORArray*/
0x46, 0x8A, 0x85, 0xB4, 0xB4, 0x5F, 0x4D, 0x4A
a, init indata:4D4FE60272DF3AAC
0x4D, 0x4F, 0xE6, 0x02, 0x72, 0xDF, 0x3A, 0xAC
kada uradim xor 4D4FE60272DF3AAC sa 468A85B4B45F4D4A dobijam 0BC563B6C68077E6 i to je ustvari onaj niz data koji ima 8 indeksa. Kad se malo bolje pogleda log, final indata:0BC563B690DFA01A se dobija kad se od 0BC563B6C68077E6 uzme prvih 4 bajta a rest od 4 bajta je ustvari onaj deo koda koji obradjuje taj isti niz sa indeksima 4,5,6,7. Znaci ovako bi trebalo. Ako sam posle xor dobio 0BC563B6C68077E6
data[0]=0x0B; data[1]=0xC5; data[2]=0x63; data[3]=0xB6; data[4]=oxC6; data[5]=0x80; data[6]=0x77; data[7]=0xE6;
ili data[]={0x0B, 0xC5, 0x63, 0xB6, oxC6, 0x80, 0x77, 0xE6}
pa onda ide onaj deo sto menja sadrzaj nizova sa indexima 4,5,6,7 da bi se dobio final indata:0BC563B690DFA01A
data[4] = data[2] + (-28 * data[1] | data[2] ^ (HashTab[HashTab[MASKTABLE] ^ 0xBD] - ((data[3] ^ 0xEB) + data[3])));
data[5] = ((2 * data[2] | (data[0] ^ (data[0] + 6))) ^ 0x65) + data[0]+ ((data[1] ^ 0xED) + data[1]) * (data[3] ^ (data[3] + 41));
data[6] = data[1]+ ((((data[2] + (data[2] ^ 0x33)) & 0xA) + (data[0] ^ (data[0] - 83))) | (data[1] + ((data[3] * data[3]) | 1)));
itd
Note: Viewing Pay TV without a valid subscription is illegal!!!
All my files and scripts posted here are for experimental and educational purpose only!!!
|
|
|
|
Poslao: 24 Avg 2010 20:18
|
offline
- Srki_82
- Moderator foruma
- Srđan Tot
- Am I evil? I am man, yes I am.
- Pridružio: 12 Jul 2005
- Poruke: 2483
- Gde živiš: Ljubljana
|
Ti ne treba da se brines oko pretvaranja brojeva iz decimalnog u heksadecimalni oblik (tako je bar u c jeziku, za php ne znam)... ti mozes da napises 29 - 0xF6 * 999 / 0x21 - 0x11, to bi sve lepo trebalo samo da se sredi i da dobijes rezultat u decimalnom obliku. Ono -28 je decimalan broj jer nema na pocetku, a -28 * 0xC5 je stvarno -5516, ali to ne treba da te brine.
|
|
|
|
Poslao: 24 Avg 2010 20:23
|
offline
- Pridružio: 25 Maj 2005
- Poruke: 1482
- Gde živiš: Gracanica, Kosovo
|
savan2 ::Pokusavam da razumem code da bih ga portovao u php. Bune me jako oni minusi i plusevi itd. Ako neko zna sta znaci "+-|" u c jeziku, tj na koju foru se sabiraju, oduzimaju, dele, mnoze bajtovi, dali se pretvaraju u decimalnu vrednos pa onda ili jednostavno direkt? Mozda i gresim, mozda su to pozicije + -, konkretno u ovom kodu. Stvarno ne znam, please help
Mozda ti ovo pomogne: http://en.wikipedia.org/wiki/Bit_manipulation
|
|
|
|
|