python没有独立的库可以读取linux下的共享内存,下面使用ctypes调用系统的API读取共享内存的内容
使用C++创建共享内存
#include <stdio.h> #include <iostream> #include <unistd.h> #include <sys/ipc.h> #include <sys/shm.h> #include <stdlib.h> #include <errno.h> #define MY_SHM_ID 67483 void get_buf(char *buf) { int i=0; while((buf[i]=getchar())!='\n'&&i<1024) i++; } int main( ) { printf("page size=%d\n", getpagesize()); int shmid=0, ret=0; shmid = shmget(MY_SHM_ID, 4096, 0666|IPC_CREAT); if (shmid > 0) { printf("Create a shared memory segment %d\n", shmid); } struct shmid_ds shmds; ret = shmctl( shmid, IPC_STAT, &shmds ); if (ret == 0 ) { printf( "Size of memory segment is %d \n", shmds.shm_segsz ); printf( "Number of attaches %d \n", (int)shmds.shm_nattch ); } else { printf( "shmctl () call failed \n"); } // write data to share memary char *buf = NULL; if ((int)(buf=(char*)shmat(shmid, NULL, 0))==-1) { perror("Share memary can't get pointer\n"); exit(1); } get_buf(buf); //ret = shmctl(shmid, IPC_RMID, 0); if (ret == 0) { printf("Shared memary removed \n"); } else { printf("Shared memory remove failed \n"); } return 0; }
查看共享内存:
$ipcs
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x0001079b 98305 postmast 666 4096 0
------ Semaphore Arrays --------
key semid owner perms nsems
------ Message Queues --------
key msqid owner perms used-bytes messages
0x000004d2 131073 abber 666 17 3
使用python读取共享内存 代码如下:
[postmast@xuanyuan-soft22 ~/test]$vi shm.py #!/usr/bin/env python # -*- coding: utf-8 -*- # # This script dumps the content of a shared memory block # used by Linux/Cdorked.A into a file named httpd_cdorked_config.bin # when the machine is infected. # # Some of the data is encrypted. If your server is infected and you # would like to help, please send the httpd_cdorked_config.bin # to our lab for analysis. Thanks! # # Marc-Etienne M.Léveillé <leve...@eset.com> # from ctypes import * SHM_SIZE = 4096 SHM_KEY = 67483 OUTFILE="httpd_cdorked_config.bin" try: rt = CDLL('librt.so') except: rt = CDLL('librt.so.1') shmget = rt.shmget shmget.argtypes = [c_int, c_size_t, c_int] shmget.restype = c_int shmat = rt.shmat shmat.argtypes = [c_int, POINTER(c_void_p), c_int] shmat.restype = c_void_p shmid = shmget(SHM_KEY, SHM_SIZE, 0o666) if shmid < 0: print ("System not infected") else: addr = shmat(shmid, None, 0) #f = file(OUTFILE, 'wb') f=open(OUTFILE, 'wb') f.write(string_at(addr,SHM_SIZE)) f.close() print(addr, type(addr)) print ("Dumped %d bytes in %s" % (SHM_SIZE, OUTFILE))
python 读取的结果存放在文件httpd_cdorked_config.bin中
$cat httpd_cdorked_config.bin
hello word!this is a test.
$
相关推荐
在linux下,python的标准库有现成的文件锁,来自于fcntl模块。这个模块提供了unix系统fcntl()和ioctl()的接口。 对于文件锁的操作,主要需要使用 fcntl.flock(fd, operation)这个函数。 其中,参数 fd 表示文件描述...
Linux中进程的通信方式有信号,管道,共享内存,消息队列socket等。其中管道是*nix系统进程间通信的最古老形式,所有*nix都提供这种通信方式。管道是一种半双工的通信机制,也就是说,它只能一端用来读,另外一端...
把苹果手机的照片通过共享的方式秒传到PC上作为备份,传是传过来了,不过用苹果手机拍摄的照片,统一为苹果手机专用...资源为PYTHON代码,需要一定Python基础者使用,若无基础,可直接私我,定制做窗口界面便于无脑操作
3、Pickle 序列化(实现内存数据在不同程序间共享) 4、自定制模块 5、异常处理,try….except 6、自定义异常类 7、Python函数概念、语法 8、函数参数 10、函数处理多个参数、默认参数 11、Return 12、正则表达式 13...
8.2 在Linux上测量内存使用 317 8.3 调试垃圾回收进程 318 8.4 捕获和记录异常 320 8.5 在调试模式中跟踪表达式和注释 322 8.6 从traceback中获得更多信息 324 8.7 当未捕获异常发生时自动启用调试器 327 8.8 ...
安装模块 如果使用的是Linux系统,并且安装了pip,可以直接使用pip安装xlrd, xlwt: pip install xlwt pip install xlrd 也可以从官网下载源代码安装: https://pypi.org/project/xlwt/1.1.2/ ...
本文实例讲述了Python使用文件锁实现进程间同步功能。分享给大家供大家参考,具体如下: 简介 在实际应用中,会出现这种应用场景:希望shell下执行的脚本对某些竞争资源提供保护,避免出现冲突。本文将通过fcntl模块...
能够实现电脑端摄像头读取视频,实时人脸录入,人脸检测,人脸识别等功能。 . 软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与...
软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、存储设备...
要使用共享库,您至少需要使用go版本1.5 建造 清理:删除二进制文件 make build:构建主要的二进制文件和归档文件 make run:在默认IP地址和端口( )上运行服务器 目录 src / formatters:输出格式化程序:json,...
软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发Node.js、C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、...
记录我的面试过程,技术栈:python、golang、MySQL、redis、大数据、数据仓库、Linux、计算机网络、数据中台。 目录 python面试题; golang面试题; 数据库MySQL和redis; 计算机系统linux; 计算机网络; leetcode...
大气质量监测系统:树莓派开gpio读取传感器并上传云端,同时有触屏显示界面;跨平台客户端从云端读取数据,并作3d显示;用php写的微信公众号服务器程序,支持查询、订阅和报警;用Python写了机器学习的线性回归和...
idl代码与Matlab 达尔 Darr是一个Python科学库,使您可以存储和访问基于磁盘的数字数组,而无需依赖于特定于工具的数据格式。...但是,我们在实验室中Linux和Windows计算机上已经在实践中使用了一年多的时间
操作系统:LInux、IOS、树莓派、安卓开发、微机操作系统、网络操作系统、分布式操作系统等。此外,还有嵌入式操作系统、智能操作系统等。 网络与通信:数据传输、信号处理、网络协议、网络与通信硬件、网络安全网络...
操作系统:LInux、IOS、树莓派、安卓开发、微机操作系统、网络操作系统、分布式操作系统等。此外,还有嵌入式操作系统、智能操作系统等。 网络与通信:数据传输、信号处理、网络协议、网络与通信硬件、网络安全网络...
ShareDB主要是使用Linux开发和测试的,并且与Python 2.7和3.8兼容。 行动中的ShareDB >> > from ShareDB import ShareDB # Easy import >> > print ( ShareDB . __version__ ) # Check versio
软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、存储设备...
封装 iOS 系统常用接口,存取bundle中的资源,读取本地化文本,执行选择器和 UserDefaults 的相关操作,调用通知中心的相关操作等。 软件开发设计:PHP、QT、应用软件开发、系统软件开发、移动应用开发、网站开发C++...
操作系统:LInux、IOS、树莓派、安卓开发、微机操作系统、网络操作系统、分布式操作系统等。此外,还有嵌入式操作系统、智能操作系统等。 网络与通信:数据传输、信号处理、网络协议、网络与通信硬件、网络安全网络...