[ale] Looking for structured data viewer/editor
Gregory C. Johnson
MailReply at GregJohnson.Com
Sun Aug 24 15:07:41 EDT 2003
Hello all,
Â
Ancillary to an attempt at recovering a truncated
mailstore on an NTFS volume, I find myself really wanting a tool to examine and
modify arbitrary structured data.Â
Â
I've run into this sort of thing with databases as
well, so I'm hoping someone might have written a tool that can
display/manipulate data based on some sort of schema file(s).
Â
I'm thinking something like a database/filesystem
version of pbm(5). Any pointers?Â
Â
TIA, -Greg
Â
My coding is (very) rusty, but a completely
arbitrary example of the CLI level of this concept might be forcing a password
reset, as prototyped below. (Though grep/sed would do a much more
conventional job)
Â
Schema:
=========================
TEXT=iso-blah-blah
Â
structure password
   assume meta
     Â
location=file://localhost/etc
     Â
name="passwd"
      assume
delimiter
<FONT face=Arial
size=2>Â Â Â Â Â Â Â Â Â Â Â
field=":"
<FONT face=Arial
size=2>Â Â Â Â Â Â Â Â Â Â Â
record="^J","^M"Â Â Â Â Â Â Â Â Â Â Â Â #
Should this be "\n"?
      assume previous.previous
       login=$TEXT link
password.shadow.user.name match exact
       password {
           encoding
$TEXT
           magic
"*" is replaced by password.shadow.user.password
           }
        id=$TEXT unsigned int
        group=$TEXT unsigned
int
       name=$TEXT
      home=$TEXT path
       shell=$TEXT executable
end password
Â
structure password.shadow
   assume meta {
     Â
location=password.meta.location
     Â
name="shadow"
       assume delimiter
<FONT face=Arial
size=2>Â Â Â Â Â Â Â Â Â Â Â
field=":"
<FONT face=Arial
size=2>Â Â Â Â Â Â Â Â Â Â Â
record="^J","^M"Â Â Â Â Â Â Â Â Â Â Â Â #
Should this be "\n"?
      }
       user.name=$TEXT link
password.user.name match exact
      user.password=$TEXT encrypted
crypt(3)
      assume user.password.date.change
encoding $TEXT type date_t
         last
         allowed
         required
         warning
         disable
      assume nothing  Â
     Â
      user.password.date.frozen=$text type
date_t
      reserved=unknown
end password.shadow
=========================
Â
sh> bash --noprofile
sh> trans --shell read password
sh> set
password.meta.record=0
password.meta.location=<FONT
face=Arial size=2>file://localhost/etc
password.meta.name=passwd
password.meta.delimiter.
password.meta.delimiter.field=:<FONT
face=Arial size=2>
password.meta.delimiter.record=^J,^M
password.login=root
password.password=*
password.id=0
password.group=0
password.name=root
password.home=/root
password.shell=/bin/bash
password.shadow.meta.<FONT face=Arial
size=2>location=file://localhost/etc
<FONT face=Arial
size=2>password.shadow.meta.name=shadow
<FONT face=Arial
size=2>password.shadow.meta.delimiter.field=:<FONT face=Arial
size=2>
<FONT face=Arial
size=2>password.shadow.meta.delimiter.record=^J,^M
password.shadow.user.name=root
password.shadow.user.password=*
password.shadow.user.password.date.change.last=12345
password.shadow.user.password.date.change.allowed=0
password.shadow.user.password.date.change.required=30
password.shadow.user.password.date.change.warning=7
password.shadow.user.password.date.change.disable=0
password.shadow.user.password.date.frozen=0
password.shadow.reserved=
sh>
password.shadow.user.password.date.change.required=0
sh> trans --shell write password
Â
More information about the Ale
mailing list