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