CRC32 exe giochi Teknoparrot

Tutti gli emulatori che ci possono servire sul nostro cab con SO Windows
Avatar utente
Gothrek
Moderatore
Moderatore
Messaggi: 4905
Iscritto il: 13/07/2017, 13:30
Città: Roma
Grazie Inviati: 17 volte
Grazie Ricevuti: 272 volte

Re: CRC32 exe giochi Teknoparrot

Messaggio da Gothrek »

@pucci
tradurre la funzione crc32 dal c++ non è un problema son poche righe di codice e portarlo in c# o altro sarà facile.
Ho provato a calcolarlo sui primi 1024 byte ma non torna, quindi meglio procedere a capire come lo fa. Non credo che sia per risparmiare tempo in quanto già il crc32 è un controllo sul file abbastanza blando per via del numero di collisioni e farlo solo una porzione di file aumenterebbe esponenzialmente tale rischio.

una volta capito come e su cosa lo calcola fare un programmino che chiedi non c'è nessun problema
Avatar utente
Gothrek
Moderatore
Moderatore
Messaggi: 4905
Iscritto il: 13/07/2017, 13:30
Città: Roma
Grazie Inviati: 17 volte
Grazie Ricevuti: 272 volte

Re: CRC32 exe giochi Teknoparrot

Messaggio da Gothrek »

@pucci

ho convertito la funzione, a prescindere dal buffer (1024 o 4K che sia, parametro passato nella funzione) il risultato non cambia.

Questa la funzione convertita in c# che da il risultato in decimale (ma convertito in HEX continua a dare il crc32 giusto), quindi il problema non credo sia legato alla funzione:

Codice: Seleziona tutto

public static UInt32 GetCRC32_4(string FileName)
        {
            UInt32 _crc;
            long StreamLength;
            int BufferSize;
            byte[] Buffer;
            UInt32[] pTable = {
                0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
                0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
                0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
                0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
                0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
                0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
                0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,
                0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
                0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
                0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
                0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
                0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
                0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
                0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
                0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
                0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
                0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
                0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
                0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
                0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
                0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
                0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
                0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
                0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
                0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
                0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
                0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
                0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
                0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
                0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
                0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
                0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
                0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
                0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
                0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
                0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
                0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
                0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
                0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
                0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
                0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
                0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
                0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d };

            //1KB Buffer
            BufferSize = 0x0400; //in teoria parametro passato quanto è richiamata la funzione

            FileStream fs = new FileStream(FileName, FileMode.Open);
            StreamLength = fs.Length;

            _crc = 0xFFFFFFFF;
            while (StreamLength > 0)
            {
                if (StreamLength < BufferSize)
                {
                    BufferSize = (int)StreamLength;
                }
                Buffer = new byte[BufferSize];

                fs.Read(Buffer, 0, BufferSize);

                for (int i = 0; i < BufferSize; i++)
                {                    
                    _crc = (_crc >> 8) ^ pTable[(_crc ^ Buffer[i]) & 0xFF]; // alternativa _crc = ((_crc & 0xFFFFFF00) / 0x100) & 0xFFFFFF ^ pTable[Buffer[i] ^ _crc & 0xFF];
                }

                StreamLength -= - BufferSize;

            }

            fs.Close();

            _crc ^= 0xFFFFFFFF; //alternativa _crc = (-(_crc)) - 1; // !(_crc)
            return (UInt32)_crc;
        }
Avatar utente
pucci
Moderatore
Moderatore
Messaggi: 4772
Iscritto il: 19/07/2005, 18:52
Città: San Clemente (RN)
Località: Rimini
Grazie Ricevuti: 62 volte

Re: CRC32 exe giochi Teknoparrot

Messaggio da pucci »

Cercherò di capire meglio cosa non torna in questa funzione

Inviato dal mio ONEPLUS A5010 utilizzando Tapatalk

Pucci - The Bastard Son of Arcade Italia
"MODerrare humanum est"
tutte le copertine di The Games Machine
non combatto guerre di intelligenza con gente disarmata
Avatar utente
pucci
Moderatore
Moderatore
Messaggi: 4772
Iscritto il: 19/07/2005, 18:52
Città: San Clemente (RN)
Località: Rimini
Grazie Ricevuti: 62 volte

Re: CRC32 exe giochi Teknoparrot

Messaggio da pucci »

Il problema è che su Discord di Teknoparrot sono simpatici come la sabbia nelle mutande

Inviato dal mio ONEPLUS A5010 utilizzando Tapatalk

Pucci - The Bastard Son of Arcade Italia
"MODerrare humanum est"
tutte le copertine di The Games Machine
non combatto guerre di intelligenza con gente disarmata
Avatar utente
Gothrek
Moderatore
Moderatore
Messaggi: 4905
Iscritto il: 13/07/2017, 13:30
Città: Roma
Grazie Inviati: 17 volte
Grazie Ricevuti: 272 volte

Re: CRC32 exe giochi Teknoparrot

Messaggio da Gothrek »

pucci ha scritto: 19/05/2020, 14:11 Cercherò di capire meglio cosa non torna in questa funzione

Inviato dal mio ONEPLUS A5010 utilizzando Tapatalk
secondo me la funzione va bene cosi come è, non so da dove prendi il valore con cui hai rinominato il file.

tu mi hai passato 5 file che NON andavano bene mi è parso di capire, puoi passarmene uno o due che invece vanno bene? vediamo se riesco ad aiutarti nell'analisi.

per la sabbia nelle mutande mi astgengo :D
Avatar utente
pucci
Moderatore
Moderatore
Messaggi: 4772
Iscritto il: 19/07/2005, 18:52
Città: San Clemente (RN)
Località: Rimini
Grazie Ricevuti: 62 volte

Re: CRC32 exe giochi Teknoparrot

Messaggio da pucci »

No, quelli che ti ho mandato andavano bene. È proprio questo il problema.

Sono convinto che il loro sistema di calcolo dei crc32 non usa il file normalmente calcolandone direttamente il crc32 ma prima ma lo manipola in qualche modo

Inviato dal mio ONEPLUS A5010 utilizzando Tapatalk

Pucci - The Bastard Son of Arcade Italia
"MODerrare humanum est"
tutte le copertine di The Games Machine
non combatto guerre di intelligenza con gente disarmata
Avatar utente
Gothrek
Moderatore
Moderatore
Messaggi: 4905
Iscritto il: 13/07/2017, 13:30
Città: Roma
Grazie Inviati: 17 volte
Grazie Ricevuti: 272 volte

Re: CRC32 exe giochi Teknoparrot

Messaggio da Gothrek »

allora devo poter vedere tutto il programma per capire cosa mandano "in pasto" al crc32. Una delle poche certezze che la funzione Getcrc32 fa regolarmente il suo dovere.
Avatar utente
pucci
Moderatore
Moderatore
Messaggi: 4772
Iscritto il: 19/07/2005, 18:52
Città: San Clemente (RN)
Località: Rimini
Grazie Ricevuti: 62 volte

Re: CRC32 exe giochi Teknoparrot

Messaggio da pucci »

il programma completo è qui: https://github.com/teknogods/OpenParrot
Avatar utente
alucard

Donatore
Affezionato
Affezionato
Messaggi: 277
Iscritto il: 02/12/2017, 16:19
Medaglie: 1
Città: Ceprano
Grazie Inviati: 5 volte
Grazie Ricevuti: 15 volte

Re: CRC32 exe giochi Teknoparrot

Messaggio da alucard »

Scusate, solo per capire.

Diciamo che TP accetta o respinge un file in base ad un suo criterio.

Se si decodifica il suo criterio e lo si implementa in un tool, questo a sua volta darà gli stessi esiti di TP.

Se l’ok lo da un tool anziché TP, che comodità in più ci sarebbe? Il gioco va comunque scaricato.
Avatar utente
pucci
Moderatore
Moderatore
Messaggi: 4772
Iscritto il: 19/07/2005, 18:52
Città: San Clemente (RN)
Località: Rimini
Grazie Ricevuti: 62 volte

Re: CRC32 exe giochi Teknoparrot

Messaggio da pucci »

Ho una certa riluttanza ad usare Teknoparrot

Inviato dal mio ONEPLUS A5010 utilizzando Tapatalk

Pucci - The Bastard Son of Arcade Italia
"MODerrare humanum est"
tutte le copertine di The Games Machine
non combatto guerre di intelligenza con gente disarmata
Rispondi

Torna a “Emulatori Windows”