我试图测试python是否可以访问Mac上的核心文件。作为示例,我使用的文件是bpf文件的一个(我使用复数文件的原因是它将采用bpf0、bpf1、bpf2等形式)。我知道这个文件确实存在。事实上,我知道一个程序可以访问并打开机场文件。这基本上是一个测试wifi频道并将您的wifi卡置于监控模式的程序。当我沿着dtrace运行它时,为了查看发生了什么,我得到了以下结果:
8747/0x8431b: open("/dev/bpf\\0", 0x2, 0xFFFFFFFFFFFFFFFF) = -1 Err#2\
8747/0x8431b: open("/dev/bpf\\0", 0x0, 0xFFFFFFFFFFFFFFFF) = -1 Err#2\
8747/0x8431b: open("/dev/bpf0\\0", 0x2, 0x2) = -1 Err#16\
8747/0x8431b: open("/dev/bpf1\\0", 0x2, 0x2) = -1 Err#16\
8747/0x8431b: open("/dev/bpf2\\0", 0x2, 0x2) = 4 0\
因此,bpf尝试打开两次,两次都返回-1,错误代码为#2 尝试打开bpf0,但返回错误-1,错误代码为#16 试图打开bpf1,但返回错误-1,错误代码为#16 bpf2已成功打开,并被分配了值4,因此偏移量为0x4
然后使用此文件执行的操作:
8747/0x8431b: ioctl(0x4, 0x40044271, 0x7FFEEE9DAF10) = 0 0\
8747/0x8431b: ioctl(0x4, 0xC004427F, 0x7FEEAD008590) = 0 0\
8747/0x8431b: ioctl(0x4, 0x40044266, 0x7FFEEE9DAF1C) = 0 0\
8747/0x8431b: ioctl(0x4, 0xC0044266, 0x7FFEEE9DAF1C) = 0 0\
8747/0x8431b: ioctl(0x4, 0x8020426C, 0x7FFEEE9DB420) = 0 0\
8747/0x8431b: ioctl(0x4, 0x4004426A, 0x7FFEEE9DAF1C) = 0 0\
8747/0x8431b: ioctl(0x4, 0xC00C4279, 0x7FFEEE9DAEF0) = 0 0\
8747/0x8431b: ioctl(0x4, 0xC00C4279, 0x7FFEEE9DAEF0) = 0 0\
8747/0x8431b: ioctl(0x4, 0x80044275, 0x7FFEEE9DAF08) = 0 0\
8747/0x8431b: ioctl(0x4, 0x20004269, 0x0) = 0 0\
8747/0x8431b: ioctl(0x4, 0x40044266, 0x7FFEEE9DAF1C) = 0 0\
8747/0x8431b: ioctl(0x4, 0x80104267, 0x7FFEEE9DAEE0) = 0 0\
8747/0x8431b: ioctl(0x4, 0x80044278, 0x7FFEEE9DB4AC) = 0 0\
这基本上意味着处于sudo“状态”时,文件是可访问的。当我在/dev/文件夹中运行os.webcrawler时,它还返回该文件:
for root, dirs, files in os.walk("/dev"):
for filename in files:
if filename.startswith('bpf'):
print('there')
print(filename)
然后,该代码将输出以下内容:
there
bpf0
there
bpf1
there
bpf2
there
bpf3
there
bpf4
there
bpf5
但是,如果我运行命令os.path.isfile('/dev/bpf3')
或任何数字,它总是显示为false。我甚至去了命令行中的dev位置,使用了ls
命令,它出现了。即使我在命令行中以sudo的形式在/dev启动python,使用命令sudo python3
并键入os.path.isfile('/dev/bpf3')
,它也会显示为false。或者,如果我试图用模块shutil.copyfile('/dev/bpf4', 'bpf4')
复制文件,它会出现错误OSError: [Errno 22] Invalid argument
。我做错了什么?我是否应该像airport那样尝试访问bpf文件而不使用任何数字,但这毫无意义
作为提到的评论之一,This Link worked for me
具体而言,该职位中的这一职能:
~z~来自JVDM
我仍然不确定我将如何复制文件,我将能够检查它。如果有人知道,请告诉我。如果我找到答案,我会把它贴出来
相关问题 更多 >
编程相关推荐