Trebam pomoc oko tumačenja koda

Trebam pomoc oko tumačenja koda

offline
  • 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 Sad 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.
offline
  • soxxx 
  • Prijatelj foruma
  • 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?



offline
  • 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

offline
  • 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 Smile

offline
  • 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!!!

offline
  • 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.

offline
  • soxxx 
  • Prijatelj foruma
  • 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

offline
  • Pridružio: 15 Jul 2009
  • Poruke: 150

Napisano: 24 Avg 2010 20:51

Da, php nema tu opciju nego moras pomocu funkcije hexdec dechex chr itd pretvarati iz hex u dec ...itd. Ok hvala opet, pokusacu pa javim.

Dopuna: 24 Avg 2010 21:50

Evo pokusao sam u par stepova dobiti final indata, tek sad je nastala konfuzija ajoj hehe ali sad sam pokusao da dobijem data[5] tj "DF" posto tu nema mask table "malo je lakse"
data[5] = ((2 * data[2] | (data[0] ^ (data[0] + 6))) ^ 0x65) + data[0]+ ((data[1] ^ 0xED) + data[1]) * (data[3] ^ (data[3] + 41));
array data posle xor-a: 0BC563B6C68077E6
Via3x_Core->final indata: 0BC563B690DFA01A
data[5] = ((2 * 0x63 | (0xOB ^ (0xOB + 6))) ^ 0x65) + 0xOB+ ((0xC5 ^ 0xED) + 0xC5) * (0xB6 ^ (0xB6 + 41)); data[5] = ((2 * 99 | (0xOB ^ (11 + 6))) ^ 0x65) + 0xOB+ (0x28 + 0xC5) * (0xB6 ^ (182 + 41)); data[5] = ((198 | (0xOB ^ 17)) ^ 0x65) + 0xOB+ (40 + 197) * (0xB6 ^ 223); data[5] = ((198 | (0xOB ^ 0x11)) ^ 0x65) + 0xOB + 237 * (0xB6 ^ 0xDF); data[5] = ((198 | 0x1A) ^ 0x65) + 0xOB + 237 * 0x69; data[5] = ((0xC6 | 0x1A) ^ 0x65) + 11 + 237 * 105; data[5] = ((0xC6 | 0x1A) ^ 0x65) + 24896; posto je gore | ja sam probao u oba slucaja da xorujem 0xC6 i 0x1A sa 0x65 i izracunam, ali nema nikakve logike niti kontam sto je "|" tu (0xC6 ^ 0x65) + 11 + 237 * 105; kad uradim xor dobijam ovo: A3+24896->163+24896->25059-> HEX->61E3 (0x1A ^ 0x65) + 11 + 237 * 105; kad uradim xor dobijam ovo: 7F+24896->127+24896->25023-> HEX->61BF u final indata ne vidim nigde ta dva hex-a plus jos dodatna konfuzija sto hex ispadne od 2 bajta a treba da bude 1 bajt
Sad Shocked Confused Question


Note: Viewing Pay TV without a valid subscription is illegal!!!
All my files and scripts posted here are for experimental and educational purpose only!!!

Ko je trenutno na forumu
 

Ukupno su 615 korisnika na forumu :: 20 registrovanih, 1 sakriven i 594 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Alibaba1981, babaroga, bigfoot, GenZee, Georgius, ikan, kolle.the.kid, ladro, Marko Marković, mean_machine, Metanoja, mile23, mnn2, mrvica78, ozzy, shaja1, stegonosa, tmanda323, Zimbabwe, 125