DS1991(3) One-Wire File System DS1991(3)

# [NAME](#NAME)

**DS1991** - 1152bit MultiKey iButton

# [SYNOPSIS](#SYNOPSIS)

Non-volatile memory with password protection.

**02** \[.]XXXXXXXXXXXX\[XX][/[ **subkey0/reset.** *hex\_pwd* | **subkey0/password.** *hex\_pwd* | **subkey0/secure\_data.** *hex\_pwd* | **subkey0/id.** *hex\_pwd*

**02** \[.]XXXXXXXXXXXX\[XX][/[ **subkey1/reset.** *hex\_pwd* | **subkey1/password.** *hex\_pwd* | **subkey1/secure\_data.** *hex\_pwd* | **subkey1/id.** *hex\_pwd*

**02** \[.]XXXXXXXXXXXX\[XX][/[ **subkey0/reset.** *hex\_pwd* | **subkey2/password.** *hex\_pwd* | **subkey2/secure\_data.** *hex\_pwd* | **subkey2/id.** *hex\_pwd*

See the file man3/standard\_mini.3so.

]]

# [FAMILY CODE](#FAMILY_CODE)

*02*

# [SPECIAL PROPERTIES](#SPECIAL_PROPERTIES)

## [subkey\[0|1|2\]/reset.hex\_pwd](#subkey_0_1_2_/reset.hex_pwd)

*write-only, yes-no*  
Initialize one of the three secure data areas and set a new password.

The extension (hex\_pwd) is the new 8-byte password in hexadecimal (e.g. password.000204006080A0C0E for bytes 0,2,4,6,8,10,12,14)

The data must be "1" or "yes" to actually reset the subkey.

*Note: writing a password will clear any existing data and ID.*

## [subkey\[0|1|2\]/password.hex\_pwd](#subkey_0_1_2_/password.hex_pwd)

*write-only, binary*  
Change the *password* of one of the secure subkey areas *without losing data.*

The extension (hex\_pwd) is the existing 8-byte *password* in hexadecimal (e.g. password.00020406080A0C0E for bytes 0,2,4,6,8,10,12,14)

The data portion is 8 bytes that will be used as a new *password.*

## [subkey\[0|1|2\]/secure\_data.hex\_pwd](#subkey_0_1_2_/secure_data.hex_pwd)

*read-write, binary*  
Read or write data in one of the three sucure data areas.

The extension (hex\_pwd) is the existing 8-byte password in hexadecimal (e.g. password.00020406080A0C0E for bytes 0,2,4,6,8,10,12,14)

The data portion binary data. Up to 48 bytes in each subkey area, starting at location 0. If the wrong password is specified, "random data" is returned on read and data is silently ignored on write.

## [subkey\[0|1|2\]/id.hex\_pwd](#subkey_0_1_2_/id.hex_pwd)

*read-write, binary*  
Read or write the subkey *id.*

The extension (hex\_pwd) is the existing 8-byte password in hexadecimal (e.g. password.00020406080A0C0E for bytes 0,2,4,6,8,10,12,14)

The data portion 8 binary bytes. This is the subkey *id.* The correct password must be used to write a new *id* but not to read it.

# [STANDARD PROPERTIES](#STANDARD_PROPERTIES)

See the file man3/standard.3so.

# [ALARMS](#ALARMS)

None.

# [DESCRIPTION](#DESCRIPTION)

See the file man3/description.3so.

## [DS1991](#DS1991)

The [**DS1991 (3)**](/man/os/owfs/DS1991.3) is an iButton with password protected non-volatile memory. Data is read/written with error checking (transparent to the user). The memory is divided into 3 different pages with 3 separate passwords.

In theory, choosing an incorrect password is hard to discern because the chip responds normally but with incorrect data. There is a published analysis suggesting that the "random data" follows a pattern and so a concerted attack might be successful.

The password (in hexadecimal) is used a the file extension **02.1234123414/subkey0/id.** *password* allowing a password to be passed to the program within the filesystem paradigm.

# [ADDRESSING](#ADDRESSING)

See the file man3/addressing.3so.

# [DATASHEET](#DATASHEET)

http://pdfserv.maxim-ic.com/en/ds/DS1991.pdf

# [SEE ALSO](#SEE_ALSO)

See the file man3/seealso.3so.

# [AVAILABILITY](#AVAILABILITY)

http://www.owfs.org

# [AUTHOR](#AUTHOR)

Christian Magnusson (mag@mag.cx) and Paul Alfille

2003 OWFS Manpage

---

Document: DS1991(3) from owfs 3.2.4-r8 (Chainguard OS)
Source: https://github.com/owfs/owfs
