From AMule Project FAQ
This file contains up to 10 sources for a file in aMule's download queue. This are known as seed.
The format of this files is as follows:
- Number of sources <- Amount of sources that will be listed (8 bits unsigned integer)
- For each source it has:
- Source's ID <- The source's ID (4 bytes unsigned integer in little endian)
- Source's port <- The source's port (2 bytes unsigned integer in little endian)
- Time the file was written (32 bits unsigned number, Unix Epoch date)
The whole file is then written in packets of 2 bytes in little endian.
This is the contents of a valid seeds file (after endianess conversion to big endian:
05 41 65 1C 50 2A 2D 6E F3 2D 53 36 12 2F F1 CA 51 36 12 BF EA 7E C8 36 12 C1 31 3C D5 D5 30
Which can be read as:
- 05 <- 5 sources will be listed
- 41 65 1C 50 <- First sources' ID, which, after performing endiannes conversion, becomes 50 1C 65 41 in hex and 1344038209 in decimal. This corresponds to IP 22.214.171.124
- 2A 2D <- First sources port to communicate is port 15658 (since in big endian hex it would be 2D 2A)
- 6E F3 2D 53 <- Second source's IP: 126.96.36.199
- 36 12 <- Second source's port: 4662
- 2F F1 CA 51 <- Third source's IP: 188.8.131.52
- 36 12 <- Third source's port: 4662
- BF EA 7E C8 <- Fourth source's IP: 184.108.40.206
- 36 12 <- Fourth source's port: 4662
- C1 31 3C D5 <- Fifth source's IP: 220.127.116.11
- D5 30 <- Fifth source's port: 12501
Notice this example does not have the last field ("Time the file was written"). This is beacuse it is an v1 format file. See the notes below to know more about this.
- Since from a LowID you cannot tell it's IP, LowID clients should never make it into seeds files since it would be impossible to locate them later. So, seeds files only contain High ID sources.
- aMule limits the amount of sources that can be listed to 10, but the file format could accept up to 255 sources (since the number of sources is told through an 8 bits unsigned integer).
- Read sources are ignored if the file was stored more than two hours ago. The time the file was written field was introduced in file's v2 format. v1 format did not store the time it was stored, so when reading an v1 file it will just read all sources and ignore none.