Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  3 566
Heisann.. Noen som kan hjelpe meg med å forstå hvordan selve utregningen i dette Perl-scriptet foregår?

sub toled {
my $page = shift;
my $str = shift;

# calculate checksum
my $checksum = 0x74;
for (0..length($str)-1) {
my $c = ord(substr($str,$_));
$checksum = $checksum ^ $c;
}
# construct basic "display this on page $page" message
my $ledcode = sprintf("<ID00><L1><P%s><FE><MA><WC><FE>%s%02X<E>",
uc($page), $str, $checksum);
# send to serial device /dev/ttyS0
open SERIAL, ">/dev/ttyS0";
print SERIAL $ledcode;
close SERIAL;
}
Vis hele sitatet...
For eksempel har man kommet frem til at denne selve teksten i denne linjen her har generert checksumen 4B.

<ID00><L1><PA><FE><MA><WC><FE>Text message entered4B<E>
Vis hele sitatet...
Er da bare en enkel XOR? (med 0x74 som startverdi)
http://en.wikipedia.org/wiki/XOR_cipher
http://www.programmer2programmer.net...ncryption.aspx
Sist endret av TheGEEK; 25. august 2008 kl. 22:08.
Altså, det vet jeg da, men lurer mer på i detalj hvordan selve regnestykke utføres.. Jeg skjønner ikke veldig mye av det scriptet der, men jeg vil gjerne vite matematikken...

Kan lese mer her om det trengs info: http://www.f-secure.com/linux-weblog...he-linux-team/
Sitat av Cryptography
Altså, det vet jeg da, men lurer mer på i detalj hvordan selve regnestykke utføres.. Jeg skjønner ikke veldig mye av det scriptet der, men jeg vil gjerne vite matematikken...

Kan lese mer her om det trengs info: http://www.f-secure.com/linux-weblog...he-linux-team/
Vis hele sitatet...
Hvilken del er det egentlig du ikke forstår?

Checksum-variabelen begynner på 0x74 (0b1110100) og XOR'es bitvis med ASCII-verdien for hver bokstav.

Eksempel: ord("A") gir ASCII-verdien for bokstaven som er 65 decimalt, eller 1000001 binært. Hver bit XOR'es så hver for seg med bit'ene i checksum-variabelen. Operasjonen XOR følger reglene 1+1=0, 1+0=1, 0+1=1, 0+0=0. Dvs. om to bits er forskjellige så returnerer XOR Sann/Høy/1. Den totale verdien etter XOR-operasjonen blir så tilegnet checksum-variabelen igjen, og slik fortsetter operasjonen helt til det ikke er flere bokstaver igjen å iterere over.
Sist endret av Dyret; 26. august 2008 kl. 00:23.