summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--www/main.t22
-rw-r--r--www/tools.t17
2 files changed, 20 insertions, 19 deletions
diff --git a/www/main.t b/www/main.t
index 8bc8572b7d..42e332ad31 100644
--- a/www/main.t
+++ b/www/main.t
@@ -113,9 +113,11 @@ To subscribe, send a message to <a href="mailto:majordomo@cool.haxx.se">majordom
113 113
114<h2>About the hardware</h2> 114<h2>About the hardware</h2>
115 115
116<p>I wrote a <a href="/isd200/archos.html">"dissection" page</a> some months ago, 116<p>I wrote a <a href="internals/bjorn.html">"dissection" page</a> some months ago,
117showing the inside of the Archos and listing the main components. 117showing the inside of the Archos and listing the main components.
118I have also collected a couple of <a href="docs/">data sheets</a>. 118I have also collected a couple of <a href="docs/">data sheets</a>.
119Also, don't miss the <a href="notes.html">research notes</a>
120from my reverse-engineering the firmware.
119 121
120<h2>About the software</h2> 122<h2>About the software</h2>
121 123
@@ -125,24 +127,6 @@ The first thing this version does after boot is to look for a file called
125If it exists, it is loaded into RAM and started. 127If it exists, it is loaded into RAM and started.
126This is how firmware upgrades are loaded. 128This is how firmware upgrades are loaded.
127 129
128<h3>File format</h3>
129<p>The archos.mod file is scrambled, but luckily not using encryption.
130
131<p>Each data byte is inverted and ROLed 1 bit.
132The data is then spread over four memory segments. The two least significant bits of the address is used as segment number and the rest as offset in the segment. So, basically:
133
134<ul>
135<li>segment number = address % 4
136<li>segment offset = address / 4
137<li>segment length = imgsize / 4
138</ul>
139
140<p>A 6-byte header is added to the beginning of the scrambled image:
141<ul>
142<li>32 bit length (big-endian)
143<li>16 bit checksum
144</ul>
145
146<h2>Dreams</h2> 130<h2>Dreams</h2>
147<p>Ok, forget about reality, what could we do with this? 131<p>Ok, forget about reality, what could we do with this?
148 132
diff --git a/www/tools.t b/www/tools.t
index e8d5f33054..c1c72b6044 100644
--- a/www/tools.t
+++ b/www/tools.t
@@ -3,6 +3,23 @@
3 3
4<h2>Descrambler / Scrambler</h2> 4<h2>Descrambler / Scrambler</h2>
5 5
6<p>The archos.mod file is scrambled, but luckily not using encryption.
7
8<p>Each data byte is inverted and ROLed 1 bit.
9The data is then spread over four memory segments. The two least significant bits of the address is used as segment number and the rest as offset in the segment. So, basically:
10
11<ul>
12<li>segment number = address % 4
13<li>segment offset = address / 4
14<li>segment length = imgsize / 4
15</ul>
16
17<p>A 6-byte header is added to the beginning of the scrambled image:
18<ul>
19<li>32 bit length (big-endian)
20<li>16 bit checksum
21</ul>
22
6<p>I've written a small utility to descramble the firmware files: 23<p>I've written a small utility to descramble the firmware files:
7<ul> 24<ul>
8<li><a href="descramble.c">descramble.c</a> - 1835 bytes - The source code (pure ANSI C, should work everywhere). GPL licensed. 25<li><a href="descramble.c">descramble.c</a> - 1835 bytes - The source code (pure ANSI C, should work everywhere). GPL licensed.