| #include "libkdump.h" | |
| #include <stdio.h> | |
| #include <stdlib.h> | |
| int main(int argc, char *argv[]) { | |
| size_t phys; | |
| if (argc < 2) { | |
| printf("Usage: %s <physical address> [<direct physical map>]\n", argv[0]); | |
| return 0; | |
| } | |
| phys = strtoull(argv[1], NULL, 0); | |
| libkdump_config_t config; | |
| config = libkdump_get_autoconfig(); | |
| if (argc > 2) { | |
| config.physical_offset = strtoull(argv[2], NULL, 0); | |
| } | |
| libkdump_init(config); | |
| size_t vaddr = libkdump_phys_to_virt(phys); | |
| printf("\x1b[32;1m[+]\x1b[0m Physical address : \x1b[33;1m0x%zx\x1b[0m\n", phys); | |
| printf("\x1b[32;1m[+]\x1b[0m Physical offset : \x1b[33;1m0x%zx\x1b[0m\n", config.physical_offset); | |
| printf("\x1b[32;1m[+]\x1b[0m Reading virtual address: \x1b[33;1m0x%zx\x1b[0m\n\n", vaddr); | |
| while (1) { | |
| int value = libkdump_read(vaddr); | |
| printf("%c", value); | |
| fflush(stdout); | |
| vaddr++; | |
| } | |
| libkdump_cleanup(); | |
| return 0; | |
| } |