touch -r file1 file2
touch -t 202310012012 file1
static int __init modify_ctime_init(void) {
struct path path;
struct inode *inode;
struct timespec64 new_time;
const char *filename = "/root/10-21.txt";
int err;
// 设置新的时间点
new_time.tv_sec = 1516534265; // 2018-01-21 19:31:05
new_time.tv_nsec = 0;
// 获取文件路径
err = kern_path(filename, LOOKUP_FOLLOW, &path);
if (err) {
printk(KERN_ERR "Failed to get path: %dn", err);
return err;
}
// 获取 inode
inode = path.dentry->d_inode;
inode->i_ctime = new_time;
mark_inode_dirty(inode);
printk(KERN_INFO "i_ctime modified successfullyn");
return 0;
}
static void __exit modify_ctime_exit(void) {
printk(KERN_INFO "Module exitedn");
}
module_init(modify_ctime_init);
module_exit(modify_ctime_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("fengyi");
MODULE_DESCRIPTION("A module to modify i_ctime of a file");
创建Makefile
obj-m += modify_file_timestamp.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
执行编译,加载内核模块。
make
insmod modify_file_timestamp.ko
rmmod modify_file_timestamp.ko
然后查看文件ctime,已成功修改,如下图所示。
一些新版的内核可以查看文件的创建时间,那么理论上通过上述方式也可以修改文件的创建时间。同时修改上述代码,可以实现批量修改等等。
原文始发于微信公众号(风奕安全):Linux修改文件更改时间ctime
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论