Сегодня видел такой "квест" http://www.canyoucrackit.co.uk/ Искал ответ и нашел: Code: Pr0t3ct!on#cyber_security@12*12.2011+ Но так и нихрена не понял как это так. через разные декодеры перегонял шифротекст, но нихрна не получил такой ответ. а вот с помощью этой проги получают такой ответ. а вот исходник: Code: #include <stdio.h> #include <stdint.h> #include <malloc.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <time.h> #include <sys/types.h> #include <sys/mman.h> #include <sys/utsname.h> #include "part2.h" // see information above static char part1[] = { 0xeb, 0x04, 0xaf, 0xc2, 0xbf, 0xa3, 0x81, 0xec, 0x00, 0x01, 0x00, 0x00, 0x31, 0xc9, 0x88, 0x0c, 0x0c, 0xfe, 0xc1, 0x75, 0xf9, 0x31, 0xc0, 0xba, 0xef, 0xbe, 0xad, 0xde, 0x02, 0x04, 0x0c, 0x00, 0xd0, 0xc1, 0xca, 0x08, 0x8a, 0x1c, 0x0c, 0x8a, 0x3c, 0x04, 0x88, 0x1c, 0x04, 0x88, 0x3c, 0x0c, 0xfe, 0xc1, 0x75, 0xe8, 0xe9, 0x5c, 0x00, 0x00, 0x00, 0x89, 0xe3, 0x81, 0xc3, 0x04, 0x00, 0x00, 0x00, 0x5c, 0x58, 0x3d, 0x41, 0x41, 0x41, 0x41, 0x75, 0x43, 0x58, 0x3d, 0x42, 0x42, 0x42, 0x42, 0x75, 0x3b, 0x5a, 0x89, 0xd1, 0x89, 0xe6, 0x89, 0xdf, 0x29, 0xcf, 0xf3, 0xa4, 0x89, 0xde, 0x89, 0xd1, 0x89, 0xdf, 0x29, 0xcf, 0x31, 0xc0, 0x31, 0xdb, 0x31, 0xd2, 0xfe, 0xc0, 0x02, 0x1c, 0x06, 0x8a, 0x14, 0x06, 0x8a, 0x34, 0x1e, 0x88, 0x34, 0x06, 0x88, 0x14, 0x1e, 0x00, 0xf2, 0x30, 0xf6, 0x8a, 0x1c, 0x16, 0x8a, 0x17, 0x30, 0xda, 0x88, 0x17, 0x47, 0x49, 0x75, 0xde, 0x31, 0xdb, 0x89, 0xd8, 0xfe, 0xc0, 0xcd, 0x80, 0x90, 0x90, 0xe8, 0x9d, 0xff, 0xff, 0xff, 0x41, 0x41, 0x41, 0x41, }; // code to dump the decrypted memory: static const char dump_mem[] = { 0xba, 0x31, 0x00, 0x00, 0x00, // mov edx, 0x40 0x8d, 0x4f, 0xce, // lea ecx, [edi-0x32] 0x31, 0xdb, // xor ebx, ebx 0x43, // inc ebx (stdout) 0x31, 0xc0, // xor eax, eax 0xb0, 0x04, // add al, 0x4 - sys_write 0xcd, 0x80, // int 0x80 0x31, 0xdb, // xor ebx,ebx 0x43, // inc ebx 0x31, 0xd2, // xor edx,edx 0x42, // inc edx 0x68, 0x0a, 0x00,0x00, 0x00, // push 0xa 0x8d, 0x0c, 0x24, // lea ecx,[esp] 0xb8, 0x04, 0x00,0x00, 0x00, // mov eax, 0x4 0xcd, 0x80, // int 0x80 - sys_write 0x31, 0xdb, // xor ebx,ebx 0x31, 0xc0, // xor eax,eax 0x40, // inc eax 0xcd, 0x80, // int 0x80 - sys_exit }; uint32_t patch_mem(char *ptr, size_t size) { uint32_t i; for (i = 0; i < size; i++) { if (*(uint16_t *)&ptr[i] == 0x80cd) { *(uint16_t *)&ptr[i] = 0x45eb; return 0; } } return 1; } uint32_t check_arch(void) { struct utsname kernel_info; uname(&kernel_info); return strcmp(kernel_info.machine, "i686") ? 1 : 0; } int main(int argc, char **argv) { void *mem; if (check_arch()) { printf("[-] this program must run on a 32-bit architecture\n"); return 1; } printf("[*] allocating page aligned memory\n"); mem = memalign(4096, 4096); if (!mem) { printf("[-] error: %s\n", strerror(errno)); return 1; } memset(mem, 0, 4096); printf("[*] setting page permissions\n"); if (mprotect(mem, 4096, PROT_READ | PROT_WRITE | PROT_EXEC)) { printf("[-] error: %s\n", strerror(errno)); return 1; } printf("[*] copying payload\n"); memcpy(mem, part1, sizeof(part1)); memcpy(mem + sizeof(part1), part2, sizeof(part2)); memcpy(mem + sizeof(part1) + sizeof(part2), dump_mem, sizeof(dump_mem)); printf("[*] adding dump_mem payload\n"); if (patch_mem(mem, sizeof(part1))) { printf("[-] failed to patch memory\n"); return 0; } printf("[*] executing payload..\n\n"); ((int(*)(void))mem)(); return 0; } Как я понял - исходник на C++ Каким алгоритмом шифрован текст и как эта прога работает? Может кто то скомпилт и пробем как он работает? ну и скажет что за алгоритм там.
80цд меняется на 45еб? по памяти 80 вроде пуш, цд - типа инт3ж 45 не помню но еб это джамп напиздил, пардон cd XX это соответсна программное прерывание в х86 стопудова. ЕБ - джамп неар
т.е. не так уж простая задача? просто хотел алгоритм понять как это работает. я программирование не знаю просто. трудно оринтируюсь в исходниках.
ну извини, не побайтово же инструкции разбирать, кроме того - ты не указал под какую разрядность сей код
http://habrahabr.ru/blogs/infosecurity/133859/ Вот прочитай тут все комменты. Там по-подробнее задрочили этот квест.
жесть.. как оказывается , никакого магии и не была ))) ключ хранился на сайте, надо был найти его: http://www.canyoucrackit.co.uk/hqDTK7b8K2rvw/a3bfc2af/d2ab1f05/da13f110/key.txt раскрытье путей обычно или как это называется )))
тема сисек так и не расскрыт чтоли? все же там реально шифр или это типа маскировка всего лишь была? а реальный клют хтанился по той ссылке что я указал?
am@inforus.biz (с) Итак, на прошедшей неделе правительство Великобритании представило стратегию борьбы с кибер-преступностью, в которой будут задействованы ведущие спецслужбы страны – MI5 (внутренняя разведка), MI6 (внешняя разведка) и Центр правительственной связи Великобритании GCHQ. Одновременно с этим, Центр правительственной связи объявил о наборе на работу хакеров, способных взломать вот такую кодовую страницу: www.canyoucrackit.co.uk Поскольку взлом – занятие трудоемкое и не всегда почтенное, попробуем пойти другим путем. Анализ адресного пространства портала canyoucrackit.co.uk с помощью программы Avalanche показал, что кроме собственно тестовой страницы по данному адресу содержится еще несколько любопытных страниц, в частности, вот такая: На этой странице явно содержится некий ключ, вот адрес: www.canyoucrackit.co.uk/hqDTK7b8K2rvw/a3bfc2af/d2ab1f05/da13f110/key.txt обственно, секретный ключ: Pr0t3ct!on#cyber_security@12*12.2011+ Вводим эту фразу в поле на исходной тестовой странице, попадаем на страничку «Спасибо, вы справились» - canyoucrackit.co.uk/soyoudidit.asp С нее можно попасть на страницу приглашения на работу: www.gchq-careers.co.uk/cyber-jobs/
http://www.google.ru/search?q=site%3Acanyoucrackit.co.uk&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:rufficial&client=firefox#q=site:canyoucrackit.co.uk&hl=en&client=firefox&hs=5Q5&rls=org.mozilla:rufficial&prmd=imvns&filter=0&fp=1&biw=1280&bih=569&bav=on.2,or.r_gc.r_pw.,cf.osb&cad=b