Вывод команды last зависит от используемых ключей, но реально это оболочка к чтению информации из файлов базы utmpx wtmpx.
Причём рекомендуется использовать не прямое чтение из файлов, а системный вызов getutxid()
Сам файл utmpx это записи следующей структуры:
char ut_user[32]; /* user login name */
char ut_id[4]; /* /etc/inittab id */
/* (usually line #) */
char ut_line[32]; /* device name */
/* (console, lnxx) */
pid_t ut_pid; /* process id */
short ut_type; /* type of entry */
struct exit_status ut_exit; /* exit status of a process */
/* marked as DEAD_PROCESS */
struct timeval ut_tv; /* time entry was made */
int ut_session; /* session ID, used for */
/* windowing */
short ut_syslen; /* significant length of */
/* ut_host */
/* including terminating null */
char ut_host[257]; /* host name, if remote */
Детали по командам:
man last
man utmpx
man getutxid