How to read "system-databases"

Here are a few system databases of freebsd,
Code:
/etc/login.conf.db
/etc/pwd.db
/etc/spwd.db
/var/db/pkg/local.sqlite
/var/db/pkg/repo-FreeBSD.sqlite
/var/db/pkg/repo-Poudriere.sqlite

How to open/read these databases and run select queries. This in order to understand what is happening.
 
sqlite3 /var/db/pkg/local.sqlite
.schema
limited dump of berkeley db works with makemap
makemap -u hash /etc/login.conf.db
 
db_dump-5 /etc/login.conf.db
db_dump-5: BDB0210 /etc/login.conf.db: metadata page checksum error
db_dump-5: BDB5115 open: /etc/login.conf.db: Invalid argument
 
Code:
> file /etc/login.conf.db
/etc/login.conf.db: Berkeley DB 1.85 (Hash, version 2, native byte-order)
Ah, not a Berkeley DB version 5 file, but a version 1.85 file.
Code:
> db_dump185-5 -p /etc/login.conf.db | more
format=print
type=hash
h_ffactor=65536
db_lorder=1234
db_pagesize=4096
HEADER=END
staff
\00staff:\09:\09:passwd_format=sha512:\09:copyright=/etc/COPYRIGHT:\09:welcome=/etc/motd:\09:setenv=BLOCKSIZE=K:\09:mail=/var/mail/$:\09:path=/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin ~/bin:\09:nologin=/var/run/nologin:\09:cputime=unlimited:\09:datasize=unlimited:\09:stacksize=unlimited:\09:memorylocked=64K:\09:memoryuse=unlimited:\09:filesize=unlimited:\09:coredumpsize=unlimited:\09:openfiles=unlimited:\09:maxproc=unlimited:\09:sbsize=unlimited:\09:vmemoryuse=unlimited:\09:swapuse=unlimited:\09:pseudoterminals=unlimited:\09:kqueues=unlimited:\09:umtxp=unlimited:\09:priority=0:\09:ignoretime@:\09:umask=022:\00
daemon
...
Now, understanding what all that stuff means: You're on your own.
 
Following line prints the login db,
Code:
db_dump185-5 -p /etc/login.conf.db   | tr "09" "\n" |  sed 's/:/:\ \ \ /'  | awk 'NF' |  less
This pwd db,
Code:
db_dump185-5 -p /etc/pwd.db | tr "\\\00" " " | awk '{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11}' | awk 'NR % 2 == 0'
 
Back
Top