Re: Fw: Standard Intel Hex 8 bit e calcolo del checksum
megabug <[email protected]> Tue, 06 Dec 2005 18:41:11 +0100
| Newsgroups | gmane.comp.security.italian.devel |
|---|---|
| Message-ID | <[email protected]> |
Giuseppe Manzavino wrote: > Salve a tutti, ho trovato diverse difficolt=E0 nel reperire materi= ale > riguardante il calcolo dei byte di checksum di fine record, vi spieg= o > meglio: >=20 > :100000003C68746D6C3E0D0A3C7469746C653E49C5 >=20 > Questo =E8 un record che rispetta lo standard Intel Hex ad 8bit >=20 > : - E' il campo start code > 10 - E' il campo che indica la lunghezza in characters (10h =3D 1= 6d) > del campo data > 0000 - Indica l'indirizzo in memoria del record > 00 - Indica il tipo di record (pu=F2 essere 00, 01 o 02) > 3..9 - E' il campo data > C5 - Si tratta del checksum >=20 > Ora come avrete portuto capire da questo semplice schemino lo standard = =E8 > abbastanza banale, fatto sta che non sono ancora riuscito a capire co= n > quale criterio viene generato il checksum, n=E8 tantomeno ho trovato i= nfo > su google. Qualcuno di voi potrebbe aiutarmi??? Cercando "Intel Hex" il primo risultato =E8: http://www.cs.net/lucid/intel.htm --->CUT<---- The 6 fields which comprise a Hex-record are defined as follows: Field Characters Description 1 Start code 1 An ASCII colon, ":". 2 Byte count 2 The count of the character pairs in the data field. 3 Address 4 The 2-byte address at which the data field is to be loaded into memory. 4 Type 2 00, 01, or 02. 5 Data 0-2n From 0 to n bytes of executable code, or memory loadable data. n is normally 20 hex (32 decimal) or less. 6 Checksum 2 The least significant byte of the two's complement sum of the values represented by all the pairs of characters in the record except the start code and checksum. --->CUT<--- Devi prendere i signoli byte che compongono la riga, calcolare il complemento a due di ognuno, fare la somma di tutti ed prendere la parte bassa del risultato. per es: :00000001 00 00 00 01 =3D> complemento a due =3D> 00 00 00 FF =3D> Somma: FF il checksum di questa riga =E8 FF quindi nel file andra' scritto: :00000001FF spero di non essere stato eccessivamente sintetico :) ciao -- megabug ________________________________________________________ http://www.sikurezza.org - Italian Security Mailing List