#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>

#define START 0x000e0000L
#define END   0x000fffffL
#define buffersize (END-START)+1

int main(void)
{
	unsigned char buf[buffersize];
	unsigned char *memptr;
	int fd;
	long fp;

	if (geteuid()!=0) {
	    printf("Can only be run by root\n");
	    exit(1);
	}

	fd=open("/dev/mem", O_RDONLY);
	fp=START;

	memptr = buf;

	if(fd==-1) {
		perror("/dev/mem");
		exit(1);
	}
	if(lseek(fd,fp,0)==-1) {
		perror("seek");
		exit(1);
	}

	if (read(fd, buf, buffersize) !=buffersize)
	    perror("Read");


	while (memptr <= buf+buffersize) {
		printf ("%c", *memptr++);
	}
		
	close(fd);
	exit(0);
}
