CRC32 exe giochi Teknoparrot
- Gothrek
- 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
@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
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
- Gothrek
- 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
@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:
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;
}
- pucci
- 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
Cercherò di capire meglio cosa non torna in questa funzione
Inviato dal mio ONEPLUS A5010 utilizzando Tapatalk
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
"MODerrare humanum est"
tutte le copertine di The Games Machine
non combatto guerre di intelligenza con gente disarmata
- pucci
- 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
Il problema è che su Discord di Teknoparrot sono simpatici come la sabbia nelle mutande
Inviato dal mio ONEPLUS A5010 utilizzando Tapatalk
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
"MODerrare humanum est"
tutte le copertine di The Games Machine
non combatto guerre di intelligenza con gente disarmata
- Gothrek
- 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
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
![lmfao :D](./images/smilies/lmfao.gif)
- pucci
- 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
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
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
"MODerrare humanum est"
tutte le copertine di The Games Machine
non combatto guerre di intelligenza con gente disarmata
- Gothrek
- 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
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.
- pucci
- 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
il programma completo è qui: https://github.com/teknogods/OpenParrot
-
alucard
- 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
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.
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.
- pucci
- 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
Ho una certa riluttanza ad usare Teknoparrot
Inviato dal mio ONEPLUS A5010 utilizzando Tapatalk
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
"MODerrare humanum est"
tutte le copertine di The Games Machine
non combatto guerre di intelligenza con gente disarmata