BSCAS
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.157] |
|
|
правила раздела Алгоритмы

BSCAS
|
Сообщ.
#1
,
|
|
|
|
Все эту тему можно закрывать :
.Так можно разговаривать до бесконечности и толку никакого не будет.Официально шифр носит название BSCAS .Вот небольшие тесты:![]() ![]() <br> На вход: 0x62 0x62 0x62 0x62 0x62 0x62 0x62 0x62 ("bbbbbbbb")<br> На выходе: 0xF5 0x66 0xF8 0x61 0x60 0x62 0xE1 0x0C<br> Это специально для тех кто говорил о частоте повтарения символов и прочую муть. А теперь посмотрим что у нас получится если мы изменим один байтик в ключе : ![]() ![]() ![]() <br> На вход: 0x62 0x62 0x62 0x62 0x62 0x62 0x62 0x62 ("bbbbbbbb")<br> На выходе: 0x30 0x66 0xF9 0x62 0x70 0x64 0xF5 0x32<br> Разница я полагаю чуствуется.Но это так все мелочи.Что касается шифрования не блока данных а например одного байта. Что ж, тоже не проблема.Дописываем нули ![]() ![]() ![]() <br> На вход: 0x41 0x00 0x00 0x00 0x00 0x00 0x00 0x00 ("A")<br> На выходе : 0xE5 0x4B 0x59 0x05 0x97 0x0B 0x06 0x22 <br> Классно правда!? .Так что, парни, счет становится 1:0 в мою пользу.Этот алгоритм вам не взять.И не надо сходу тут делать какие-то высказывания по поводу взлома до конца не вникнув в сам алгоритм.Большинство алгоритмов построены на математике и ломаются с ее же помощью у меня тут ее как таковой нет . И последнее.Была немного улутшена программная реализация.В частности функция Set_Old_Bits и были повыкинуты ненужные push -и и pop -и ;D.Оканчательный вариант: ![]() ![]() <br> Copyrights (C) Written by Zveruga,Belarus Minsk 2003<br> All rights reserved<br> ;Статус регистров:<br> ;ecx - число входящих блоков к шифрации дешифрации<br> ;edi - указатель на ключ<br> ;edx - индекс строк<br> ;ebx - индекс столбцов<br> ;esi - указатель на входной блок данных<br> ;eax - используется от болды ;D <br> ;Bit_0 db 0 <br> ;Bit_1 db 0 <br> ;Bit_2 db 0 <br> ;Bit_3 db 0 <br> ;Bit_4 db 0 <br> ;Bit_5 db 0 <br> ;Bit_6 db 0 <br> ;Bit_7 db 0 <br> <br> ;New_Bit_0 db 0 <br> ;New_Bit_1 db 0 <br> ;New_Bit_2 db 0 <br> ;New_Bit_3 db 0 <br> ;New_Bit_4 db 0 <br> ;New_Bit_5 db 0 <br> ;New_Bit_6 db 0 <br> ;New_Bit_7 db 0 <br><br> Right_Offset proc<br> ror byte ptr [esi + edx],01h ;ротация вправо<br> call Set_Old_Bits ;Установка все битов<br> call Vertical_Roter_Up ;Вертикальная ротация вверх<br> call Set_New_Bits ;устанавливаем новые биты<br> ret<br> Right_Offset endp<br> <br> <br> <br> Left_Offset proc<br> rol byte ptr [esi + edx],01h ;ротация влево<br> call Set_Old_Bits ;установка всех битов<br> call Vertical_Roter_Down ;вертикальное смещение вниз<br> call Set_New_Bits ;Устанавливываем новые биты<br> ret<br> Left_Offset endp<br> <br> Set_Old_Bits proc<br> push eax<br> xor eax,eax<br> <br> mov al,byte ptr [esi]<br> mov Bit_0,0<br> bt ax,bx<br> adc Bit_0,0<br> <br> mov al,byte ptr [esi + 01h]<br> mov Bit_1,0<br> bt ax,bx<br> adc Bit_1,0<br> <br> mov al,byte ptr [esi + 02h]<br> mov Bit_2,0<br> bt ax,bx<br> adc Bit_2,0<br> <br> mov al,byte ptr [esi + 03h]<br> mov Bit_3,0<br> bt ax,bx<br> adc Bit_3,0<br> <br> mov al,byte ptr [esi + 04h]<br> mov Bit_4,0<br> bt ax,bx<br> adc Bit_4,0<br> <br> mov al,byte ptr [esi + 05h]<br> mov Bit_5,0<br> bt ax,bx<br> adc Bit_5,0<br> <br> mov al,byte ptr [esi + 06h]<br> mov Bit_6,0<br> bt ax,bx<br> adc Bit_6,0<br> <br> mov al,byte ptr [esi + 07h]<br> mov Bit_7,0<br> bt ax,bx<br> adc Bit_7,0<br> <br> pop eax<br> ret<br> Set_Old_Bits endp<br> <br> <br> Set_New_Bits proc<br> push eax<br> xor eax,eax <br> mov al,byte ptr [esi] ;Загрузка первого байта из блока<br> <br> cmp New_Bit_0 , 1 ;Проверка бита <br> je Set_Bit_0 ;Да установить<br> btr ax,bx ;Сбросить<br> jmp Byte_1 ;Выход<br> Set_Bit_0: <br> bts ax,bx ;Установка <br> <br> Byte_1:<br> mov byte ptr [esi],al<br> mov al,byte ptr [esi + 01h]<br> cmp New_Bit_1 , 1<br> je Set_Bit_1<br> btr ax,bx<br> jmp Byte_2<br> Set_Bit_1:<br> bts ax,bx <br> <br> Byte_2:<br> mov byte ptr [esi + 01h],al<br> mov al,byte ptr [esi + 02h]<br> cmp New_Bit_2 , 1<br> je Set_Bit_2<br> btr ax,bx<br> jmp Byte_3<br> Set_Bit_2:<br> bts ax,bx <br> <br> Byte_3:<br> mov byte ptr [esi+ 02h],al<br> mov al,byte ptr [esi + 03h]<br> cmp New_Bit_3 , 1<br> je Set_Bit_3<br> btr ax,bx<br> jmp Byte_4<br> Set_Bit_3:<br> bts ax,bx <br> <br> Byte_4:<br> mov byte ptr [esi + 03h],al<br> mov al,byte ptr [esi + 04h]<br> cmp New_Bit_4 , 1<br> je Set_Bit_4<br> btr ax,bx<br> jmp Byte_5<br> Set_Bit_4:<br> bts ax,bx <br> <br> Byte_5:<br> mov byte ptr [esi + 04h],al<br> mov al,byte ptr [esi + 05h]<br> cmp New_Bit_5 , 1<br> je Set_Bit_5<br> btr ax,bx<br> jmp Byte_6<br> Set_Bit_5:<br> bts ax,bx <br> <br> Byte_6:<br> mov byte ptr [esi + 05h],al<br> mov al,byte ptr [esi + 06h]<br> cmp New_Bit_6 , 1<br> je Set_Bit_6<br> btr ax,bx<br> jmp Byte_7<br> Set_Bit_6:<br> bts ax,bx <br><br><br> Byte_7:<br> mov byte ptr [esi + 06h],al<br> mov al,byte ptr [esi + 07h]<br> cmp New_Bit_7 , 1<br> je Set_Bit_7<br> btr ax,bx<br> jmp Exit<br> Set_Bit_7:<br> bts ax,bx <br> <br> Exit:<br> mov byte ptr [esi+07h],al<br> pop eax<br> ret<br> Set_New_Bits endp<br> <br> Xor_Blocks proc<br> mov al,byte ptr [esi] ;операция xor с байтом блока ключа, блок на блок :)<br> xor al,byte ptr [edi]<br> xchg al,[esi]<br> mov al,byte ptr [esi + 01h]<br> xor al,byte ptr [edi + 01h] <br> xchg al,[esi + 01h]<br> mov al,byte ptr [esi + 02h]<br> xor al,byte ptr [edi + 02h] <br> xchg al,[esi + 02h]<br> mov al,byte ptr [esi + 03h]<br> xor al,byte ptr [edi + 03h] <br> xchg al,[esi + 03h]<br> mov al,byte ptr [esi + 04h]<br> xor al,byte ptr [edi + 04h] <br> xchg al,[esi + 04h]<br> mov al,byte ptr [esi + 05h]<br> xor al,byte ptr [edi + 05h] <br> xchg al,[esi + 05h]<br> mov al,byte ptr [esi + 06h]<br> xor al,byte ptr [edi + 06h]<br> xchg al,[esi + 06h]<br> mov al,byte ptr [esi + 07h]<br> xor al,byte ptr [edi + 07h] <br> xchg al,[esi + 07h]<br> ret<br> Xor_Blocks endp <br> <br> Deshifr_Down_Offset proc<br> call Set_Old_Bits<br> call Vertical_Roter_Down<br> call Set_New_Bits<br> rol byte ptr [esi + edx],01h<br> ret<br> Deshifr_Down_Offset endp<br> <br> Deshifr_Up_Offset proc<br> call Set_Old_Bits<br> call Vertical_Roter_Up<br> call Set_New_Bits<br> ror byte ptr [esi + edx],01h<br> ret<br> Deshifr_Up_Offset endp<br> <br> Vertical_Roter_Down proc<br> push eax<br> xor eax,eax<br> mov al,Bit_0<br> mov New_Bit_1,al<br> mov al,Bit_1<br> mov New_Bit_2,al<br> mov al,Bit_2<br> mov New_Bit_3,al<br> mov al,Bit_3<br> mov New_Bit_4,al<br> mov al,Bit_4<br> mov New_Bit_5,al<br> mov al,Bit_5<br> mov New_Bit_6,al<br> mov al,Bit_6<br> mov New_Bit_7,al<br> mov al,Bit_7<br> mov New_Bit_0,al<br> pop eax<br> ret<br> Vertical_Roter_Down endp<br> <br> Vertical_Roter_Up proc<br> push eax<br> xor eax,eax<br> mov al,Bit_7<br> mov New_Bit_6,al<br> mov al,Bit_6<br> mov New_Bit_5,al<br> mov al,Bit_5<br> mov New_Bit_4,al<br> mov al,Bit_4<br> mov New_Bit_3,al<br> mov al,Bit_3<br> mov New_Bit_2,al<br> mov al,Bit_2<br> mov New_Bit_1,al<br> mov al,Bit_1 <br> mov New_Bit_0,al<br> mov al,Bit_0<br> mov New_Bit_7,al <br> pop eax<br> ret<br> Vertical_Roter_Up endp<br> <br> BSCAS_Shifr proc<br> pusha<br> Shifr_Octo_Byte:<br> push edi ;Сохранить указател на ключ <br> push ecx ;сахраним число входных блоков <br> <br> xor ebx,ebx ;Обнуляем регистры на всякие пожарные<br> xor eax,eax<br> xor edx,edx<br> <br> mov cl,08h ;8 блоков подключей <br> Key_Block:<br> push ecx ;сохранить число блоков <br> mov cl,08h ;число подключей<br> @Loop_Per_Key: ;цикл по прохаждению подключей<br> push ecx ;сохранить число подключей<br> mov al,byte ptr [edi + edx] ;подключ в al<br> mov cl,08h ;пробег по байту<br> @Loop_Per_Byte_Of_Key:<br> bt ax,bx<br> jc _LeftOffset ;Бит установлен ? <br> call Right_Offset ;Нет не установлен<br> jmp Next_Bit_Of_Key<br> _LeftOffset:<br> call Left_Offset<br> Next_Bit_Of_Key:<br> inc bx ;следущий бит ключа <br> loop @Loop_Per_Byte_Of_Key<br><br> xor ebx,ebx ;обнулим индекс столбцов<br> inc edx ;увеличим индекс строк<br> pop ecx ;восстановим стчечик подключей<br> loop @Loop_Per_Key<br> <br> call Xor_Blocks ;операция xor над блоками<br> <br> pop ecx ;восстановим счетчик блоков<br> xor edx,edx ;обнулим индекс строк<br> xor ebx,ebx<br> add edi,08h ;переместим указатель на следущий блок ключей<br> loop Key_Block<br> <br> pop ecx ;восстановим число входных блоков<br> pop edi ;восстановим указатель на ключ <br> add esi,08h ;перейдем к следующему блоку <br> loop Shifr_Octo_Byte<br> popa <br> ret<br> BSCAS_Shifr endp<br> <br> BSCAS_Deshifr proc<br> pusha<br> xor eax,eax ;очищаем eax,edx,ebx ( мусор нам не нужен :) )<br> xor ebx,ebx<br> xor edx,edx<br> add edi,56 ;перемещаем указатель на последний блок ключа <br> Deshifr_Octo_Byte:<br> push ecx ;сохраняем число входных блоков <br> push edi ;сохраняем указатель на ключ<br> <br> mov cl,08h ;число блоков подключей<br> Deshifr_Loop_Key_Block: <br> push ecx ;сохраняем число блоков подключей<br> ;Начальная стадия - операции xor шифрованного блока с блоком подключей<br> call Xor_Blocks<br> mov cl,08h ;количество подключей в блоке<br> mov dl,07h ;начинаем снизу блока подключей <br> Deshifr_Loop_Per_Key:<br> push ecx ;сохраняем количество подключей<br> mov al,byte ptr [edi + edx] ;подключ <br> mov cl,08h ;пробег по байту <br> mov bl,07h<br> Deshifr_Loop_Per_Byte_Of_Key:<br> bt ax,bx ;Бит установлен ? <br> jc _Deshifr_Up_Offset ;Да установлен<br> call Deshifr_Down_Offset ;Нет не установлен <br> jmp _Deshifr_Inc<br> _Deshifr_Up_Offset:<br> call Deshifr_Up_Offset <br> _Deshifr_Inc:<br> dec bx ;уменьшаем указатель сталбцов<br> loop Deshifr_Loop_Per_Byte_Of_Key<br><br> xor ebx,ebx ;устанавливаем индекс сталбцов в ноль <br> dec edx ;уменьшаем индекс строк <br> pop ecx ;восстанавливаем количество подключей<br> loop Deshifr_Loop_Per_Key<br> <br> sub edi,08h ;переход к следующему блоку ключей <br> xor edx,edx ;устанавливаем индекс строки в ноль<br> pop ecx ;Восстанавливаем количество блоков ключей<br> loop Deshifr_Loop_Key_Block <br> <br> pop edi ;восстанавливаем указатель на ключ<br> pop ecx ;восстанавливаем количество блоков к дешифрации<br> loop Deshifr_Octo_Byte<br> popa <br> ret<br> BSCAS_Deshifr endp<br> ;Автор разрешает использовать данный исходник<br> ;только при условии указания авторства<br> |
|
Сообщ.
#2
,
|
|
|
|
ладно с зашифровкой блока разобрался как его теперь расшифровать ?
в процедуре ![]() ![]() <br> BSCAS_Deshifr proc <br> pusha <br> xor eax,eax ;очищаем eax,edx,ebx ( мусор нам не нужен :) ) <br> xor ebx,ebx <br> xor edx,edx <br> add edi,56 ;перемещаем указатель на последний блок <br> если в edi offset на ключ и ключ я определил как key db 'fuck' к чему приведет add edi,56 ?? так что счет становится 99:0 в нашу пользу и Зверюга удаляется переписавать программу так что бы она работала нормально... или приводит куски коду где показывается шифровка дешифровка |
|
Сообщ.
#3
,
|
|
|
|
делаю
![]() ![]() <br>key db 0<br>block db 8 dup ('a')<br><br>.code<br>start: <br> mov ecx,1<br> mov edi,offset key<br> mov esi,offset block <br> call BSCAS_Shifr<br> как мне его потом дешифровать ? |
|
Сообщ.
#4
,
|
|
|
|
Цитата IX0DeS, 28.03.03, 13:13:18 ладно с зашифровкой блока разобрался как его теперь расшифровать ? в процедуре ![]() ![]() <br> BSCAS_Deshifr proc <br> pusha <br> xor eax,eax ;очищаем eax,edx,ebx ( мусор нам не нужен :) ) <br> xor ebx,ebx <br> xor edx,edx <br> add edi,56 ;перемещаем указатель на последний блок <br> если в edi offset на ключ и ключ я определил как key db 'fuck' к чему приведет add edi,56 ?? так что счет становится 99:0 в нашу пользу и Зверюга удаляется переписавать программу так что бы она работала нормально... или приводит куски коду где показывается шифровка дешифровка Ключ key db 'fuck' конечно хорош не спорю :) .Только он должен быть не 4 байта а 64.Поэтому если хочеш использовать такой ключ предварительно нужно увеличить его размерность до 64 байт Неееее 1 : 0 в мою :P байта |
|
Сообщ.
#5
,
|
|
|
|
Цитата IX0DeS, 28.03.03, 13:29:58 делаю ![]() ![]() <br>key db 0<br>block db 8 dup ('a')<br><br>.code<br>start: <br> mov ecx,1<br> mov edi,offset key<br> mov esi,offset block <br> call BSCAS_Shifr<br> как мне его потом дешифровать ? ![]() ![]() <br> mov esi ,offset Shifr_Text<br> mov edi,offset Key<br> ;в ecx помещай число блоков <br> call BSCAS_Deshifr<br> ;Все<br> |
|
Сообщ.
#6
,
|
|
|
|
нормально... ключ в 64 байта.... круто... чего скажешь... лосизм... слушай я тут тоже алгоритм придумал а что если в качестве пароля использовать одну из глав из романа 'Преступелене и Наказание' а чего... алгорит простой xor... ну что ломать будешь ?
|
|
Сообщ.
#7
,
|
|
|
|
продолжаем...
![]() ![]() <br> mov al,byte ptr [esi] <br> mov Bit_0,0 <br> bt ax,bx <br> adc Bit_0,0 <br> <br> mov al,byte ptr [esi + 01h] <br> mov Bit_1,0 <br> bt ax,bx <br> adc Bit_1,0 <br> <br> mov al,byte ptr [esi + 02h] <br> mov Bit_2,0 <br> bt ax,bx <br> adc Bit_2,0 <br> <br> mov al,byte ptr [esi + 03h] <br> mov Bit_3,0 <br> bt ax,bx <br> adc Bit_3,0 <br> <br> mov al,byte ptr [esi + 04h] <br> mov Bit_4,0 <br> bt ax,bx <br> adc Bit_4,0 <br> <br> mov al,byte ptr [esi + 05h] <br> mov Bit_5,0 <br> bt ax,bx <br> adc Bit_5,0 <br> <br> mov al,byte ptr [esi + 06h] <br> mov Bit_6,0 <br> bt ax,bx <br> adc Bit_6,0 <br> <br> mov al,byte ptr [esi + 07h] <br> mov Bit_7,0 <br> bt ax,bx <br> adc Bit_7,0 <br><br> ты умеешь пользоваться конструкцией loop ?? по моему это в цикле можно написать.... так что давай переписывай нормально прогу свою гыгы ;D |
|
Сообщ.
#8
,
|
|
|
|
Цитата IX0DeS, 28.03.03, 13:40:24 нормально... ключ в 64 байта.... круто... чего скажешь... лосизм... слушай я тут тоже алгоритм придумал а что если в качестве пароля использовать одну из глав из романа 'Преступелене и Наказание' а чего... алгорит простой xor... ну что ломать будешь ? А чем тебе такой ключ не нравится??Ради бога используй хоть 3 хоть 4 байта твае дело. |
|
Сообщ.
#9
,
|
|
|
|
Цитата IX0DeS, 28.03.03, 13:46:37 продолжаем... ![]() ![]() <br> mov al,byte ptr [esi] <br> mov Bit_0,0 <br> bt ax,bx <br> adc Bit_0,0 <br> <br> ...... <br> mov al,byte ptr [esi + 07h] <br> mov Bit_7,0 <br> bt ax,bx <br> adc Bit_7,0 <br><br> ты умеешь пользоваться конструкцией loop ?? по моему это в цикле можно написать.... так что давай переписывай нормально прогу свою гыгы ;D Дааааа.... как говорится : no comments |
|
Сообщ.
#10
,
|
|
|
|
> И не надо сходу тут делать какие-то высказывания по поводу взлома до конца не вникнув в сам алгоритм.
Какие высказывания, какой алгоритм... или эта новая фишка описывать принцип работы алгоритма на asm`е. Я конечно понимаю, что ты, как автор этого дивного алгоритма, вжился в него и тебе все очевидно... Просто, если ты хочешь обсуждения алгоритма, а не реализации неизвестно чего на asm`е, будь добр его представить в нормальном подробном однозначно интерпретируемом виде и желательно с пошаговым примером основных моментов. Тебе всеравно придется делать эту работу, если он является таковым, каким ты его представляешь или ты уже сомневаешся |
|
Сообщ.
#11
,
|
|
|
|
и это опять я...
задаем себе вопрос? ээ.. назовите одно из основных свойств _хорошего_ алгоритма отвечаем... кто не согласится тут со мной ? любой ключ должен обеспечить одинаковую степень защиты на вход подаем ключ состоящий из 64байт 0xFFh текст для шифрования _fuckoff на выходе получаем... x7Fh,fuckof,x19h те. из восьми букв изменились только две... гыгы ну что крутой алгоритм... все отдыхают, Зверюга уходит опустив голову доделовать алгоритм, счет 99:0 в нашу... ;D после этого мне дальше уже лень было что-то там считать... да кстати я его чуток переписал еге - с Loop'ами сделал так мне кажется он выглядит меньше (такого стиля программироваия я еще давно не видел... детский сад чесс слово) |
|
Сообщ.
#12
,
|
|
|
|
Цитата SVK , 28.03.03, 14:34:48 > И не надо сходу тут делать какие-то высказывания по поводу взлома до конца не вникнув в сам алгоритм. Какие высказывания, какой алгоритм... или эта новая фишка описывать принцип работы алгоритма на asm`е. Я конечно понимаю, что ты, как автор этого дивного алгоритма, вжился в него и тебе все очевидно... Просто, если ты хочешь обсуждения алгоритма, а не реализации неизвестно чего на asm`е, будь добр его представить в нормальном подробном однозначно интерпретируемом виде и желательно с пошаговым примером основных моментов. Тебе всеравно придется делать эту работу, если он является таковым, каким ты его представляешь или ты уже сомневаешся ![]() SVK я да этого все пытался упорно всем все обьяснить, но почему-то почти никто меня не хотел слушать. |
|
Сообщ.
#13
,
|
|
|
|
Цитата IX0DeS, 28.03.03, 14:37:12 любой ключ должен обеспечить одинаковую степень защиты Этот вопрос обсуждался еще в предыдущей теме... |
|
Сообщ.
#14
,
|
|
|
|
да еще забыл твой алгоритм чтото криво кработает...
делаю шифровку трех блоков.... ![]() ![]() <br>key db 64 dup (0ffh)<br>block db '12345678'<br> db '12345678'<br> db '12345678'<br>.code<br>start: <br> mov ecx,3<br> mov edi,offset key<br> mov esi,offset block <br> pusha<br> call BSCAS_Shifr<br> popa<br> call BSCAS_Deshifr<br>key db 64 dup (0ffh)<br>block db '12345678'<br> db '12345678'<br> db '12345678'<br>.code<br>start: <br> mov ecx,3<br> mov edi,offset key<br> mov esi,offset block <br> pusha<br> call BSCAS_Shifr<br> popa<br> call BSCAS_Deshifr<br> после шифровки block xC5,'234567',x60,xC5,'234567',x60,xC5,'234567',x60 каждый блок из 8 байт по моему очень похож на своего соседа ![]() после дешифровки block x83,'234567',x0B,xC5,'234567',x60,xC5,'234567',x60 реализация собственного алгоритма оказалась кривой.... мдя.. может тебе рано придумывать оченб стойкие алгоритмы.. гыгы ;D |
|
Сообщ.
#15
,
|
|
|
|
Цитата SVK , 28.03.03, 14:50:59 Этот вопрос обсуждался еще в предыдущей теме... ну дык не обеспечивает же... меняет только первый и последний символ в блоке... ну что тут сказать по поводу алгоритма этого... в Корзину это все там и будем разговаривать ;D |
|
Сообщ.
#16
,
|
|
|
|
Цитата IX0DeS, 28.03.03, 14:37:12 и это опять я... задаем себе вопрос? ээ.. назовите одно из основных свойств _хорошего_ алгоритма отвечаем... кто не согласится тут со мной ? любой ключ должен обеспечить одинаковую степень защиты Охх ну ты туг немного.Скажи мне на милость а ты слышал когда-нибудь об алгоритме генерации ключей??Ты мне не подскажеш зачем он нужен?! Цитата на вход подаем ключ состоящий из 64байт 0xFFh текст для шифрования _fuckoff на выходе получаем... x7Fh,fuckof,x19h те. из восьми букв изменились только две... гыгы ну что крутой ... На какой вход ты подаеш ключ?? ;D. А теперь посматри сюда: ![]() ![]() <br> Key2 db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh <br> db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh <br> db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh <br> db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh <br> db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh<br> db 0FFh,0FFh,0BBh,0FFh,0FFh,0FFh,0FFh,0FFh<br> db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh<br> db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh <br><br> Текст : "_fuckoff" в Hex 0x5F 0x66 0x75 0x63 0x6B 0x6F 0x66 0x66 <br> На выходе : 0x79 0x62 0x35 0x67 0x6F 0x2F 0x26 0x7F<br> Улавливаеш разницу ??У тубя что с воображение туго ты что не мог по лучше ключ выбрать??Ты себе хоть представляеш что будет происходить с битовой плоскостью если у нас будет такой ключ,который ты предложил. Цитата переписал еге - с Loop'ами сделал так мне кажется он выглядит меньше (такого стиля программироваия я еще давно не видел... детский сад чесс слово)Не надо меня учить прагроммировать я этому без чьей-либо помощи учился и буду дальше учится. Надо же он сделал с loop-ми.И что ?Ах да занимает меньше места.Блин да ты крут как я посматрю.А ты о производительности думал? |
|
Сообщ.
#17
,
|
|
|
|
Цитата Zveruga, 28.03.03, 14:41:56 Ну вообщем это твое право, а по asm`у востанавливать алгоритм у меня нет желания... По твоим предыдущим объяснениям у меня уже возникали разночтения, так то вот..SVK я да этого все пытался упорно всем все обьяснить, но почему-то почти никто меня не хотел слушать. |
|
Сообщ.
#18
,
|
|
|
|
Цитата ;edi - указатель на ключ ;esi - указатель на входной блок данных по моему это ты писал... я делаю ![]() ![]() <br> mov edi,offset key <br> mov esi,offset block <br> call BSCAS_Shifr <br> что не так ?? зы мне абсолютно паралельно что у нас или у вас с какойто плоскостью будет... ну не работает же твой алгоритм и все тут |
|
Сообщ.
#19
,
|
|
|
|
Цитата IX0DeS, 28.03.03, 15:00:34 да еще забыл твой алгоритм чтото криво кработает... Страно у меня все работает , а вот у некоторых личностей который его наверно уже перековыряли нет.Ты хоть смотри что ты там ковыряеш а то ведь сам потом не разгребеш. |
|
Сообщ.
#20
,
|
|
|
|
Цитата Zveruga, 28.03.03, 15:11:29 Страно у меня все работает , а вот у некоторых личностей который его наверно уже перековыряли нет.Ты хоть смотри что ты там ковыряеш а то ведь сам потом не разгребеш. так привожу прогу полностью compil.bat ![]() ![]() <br> tasm32.exe /ml /m /z /z lamo.asm,lamo.obj<br> tlink32.exe -aa -x -c -o -Tpe lamo.obj,,,import32.lib<br> сама прога.... ![]() ![]() <br>;_______________________________________________________________________<br> callW macro x<br> extern x:PROC<br> call x<br> endm <br> p386 <br> model flat<br> locals __<br> .data <br>;_______________________________________________________________________<br>Bit_0 db 0 <br>Bit_1 db 0 <br>Bit_2 db 0 <br>Bit_3 db 0 <br>Bit_4 db 0 <br>Bit_5 db 0 <br>Bit_6 db 0 <br>Bit_7 db 0 <br><br>New_Bit_0 db 0 <br>New_Bit_1 db 0 <br>New_Bit_2 db 0 <br>New_Bit_3 db 0 <br>New_Bit_4 db 0 <br>New_Bit_5 db 0 <br>New_Bit_6 db 0 <br>New_Bit_7 db 0 <br><br><br>key db 64 dup (0ffh)<br>block db 3 dup ('12345678')<br>;_______________________________________________________________________<br> .code <br>start: <br><br> ;ecx - число входящих блоков к шифрации дешифрации <br> ;edi - указатель на ключ <br> ;edx - индекс строк <br> ;ebx - индекс столбцов <br> ;esi - указатель на входной блок данных <br> ;eax - используется от болды <br><br> mov ecx, 3<br> mov edi, offset key<br> mov esi, offset block <br> pusha <br> call BSCAS_Shifr<br> popa <br> call BSCAS_Deshifr<br><br> push 0ffh<br> callW ExitProcess<br><br>;_______________________________________________________________________<br>Right_Offset proc <br> ror byte ptr [esi + edx], 01h ;ротация вправо <br> call Set_Old_Bits ;Установка все битов <br> call Vertical_Roter_Up ;Вертикальная ротация вверх <br> call Set_New_Bits ;устанавливаем новые биты <br> ret <br>Right_Offset endp <br>;_______________________________________________________________________<br><br>Left_Offset proc <br> rol byte ptr [esi + edx], 01h ;ротация влево <br> call Set_Old_Bits ;установка всех битов <br> call Vertical_Roter_Down ;вертикальное смещение вниз <br> call Set_New_Bits ;Устанавливываем новые биты <br> ret <br>Left_Offset endp <br><br>;_______________________________________________________________________<br>;loop optimization :)<br>;Set_Old_Bits proc <br>; push eax <br>; push ebp<br>; xor eax, eax <br>; xor ebp, ebp<br>;<br>;_a:<br>; mov al, byte ptr [esi][ebp] <br>; mov [byte ptr Bit_0][ebp],0 <br>; bt ax, bx <br>; adc [byte ptr Bit_0][ebp],0 <br>; inc ebp<br>; cmp ebp,7<br>; jle _a<br>;<br>; pop ebp <br>; pop eax <br>; ret <br>;Set_Old_Bits endp <br>;_______________________________________________________________________<br><br>Set_Old_Bits proc <br> push eax <br> xor eax, eax <br><br> mov al, byte ptr [esi] <br> mov Bit_0, 0 <br> bt ax, bx <br> adc Bit_0, 0 <br><br> mov al, byte ptr [esi + 01h] <br> mov Bit_1, 0 <br> bt ax, bx <br> adc Bit_1, 0 <br><br> mov al, byte ptr [esi + 02h] <br> mov Bit_2, 0 <br> bt ax, bx <br> adc Bit_2, 0 <br><br> mov al, byte ptr [esi + 03h] <br> mov Bit_3, 0 <br> bt ax, bx <br> adc Bit_3, 0 <br><br> mov al, byte ptr [esi + 04h] <br> mov Bit_4, 0 <br> bt ax, bx <br> adc Bit_4, 0 <br><br> mov al, byte ptr [esi + 05h] <br> mov Bit_5, 0 <br> bt ax, bx <br> adc Bit_5, 0 <br><br> mov al, byte ptr [esi + 06h] <br> mov Bit_6, 0 <br> bt ax, bx <br> adc Bit_6, 0 <br><br> mov al, byte ptr [esi + 07h] <br> mov Bit_7, 0 <br> bt ax, bx <br> adc Bit_7, 0 <br><br> pop eax <br> ret <br>Set_Old_Bits endp <br>;_______________________________________________________________________<br><br>Set_New_Bits proc <br> push eax <br> xor eax, eax <br><br> mov al, byte ptr [esi] ;Загрузка первого байта из блока <br> cmp New_Bit_0 , 1 ;Проверка бита <br> je Set_Bit_0 ;Да установить <br> btr ax, bx ;Сбросить <br> jmp Byte_1 ;Выход <br>Set_Bit_0: <br> bts ax, bx ;Установка <br><br>Byte_1: <br> mov byte ptr [esi], al <br> mov al, byte ptr [esi + 01h] <br> cmp New_Bit_1 , 1 <br> je Set_Bit_1 <br> btr ax, bx <br> jmp Byte_2 <br>Set_Bit_1: <br> bts ax, bx <br><br>Byte_2: <br> mov byte ptr [esi + 01h], al <br> mov al, byte ptr [esi + 02h] <br> cmp New_Bit_2 , 1 <br> je Set_Bit_2 <br> btr ax, bx <br> jmp Byte_3 <br>Set_Bit_2: <br> bts ax, bx <br><br>Byte_3: <br> mov byte ptr [esi+ 02h], al <br> mov al, byte ptr [esi + 03h] <br> cmp New_Bit_3 , 1 <br> je Set_Bit_3 <br> btr ax, bx <br> jmp Byte_4 <br>Set_Bit_3: <br> bts ax, bx <br><br>Byte_4: <br> mov byte ptr [esi + 03h], al <br> mov al, byte ptr [esi + 04h] <br> cmp New_Bit_4 , 1 <br> je Set_Bit_4 <br> btr ax, bx <br> jmp Byte_5 <br>Set_Bit_4: <br> bts ax, bx <br><br>Byte_5: <br> mov byte ptr [esi + 04h], al <br> mov al, byte ptr [esi + 05h] <br> cmp New_Bit_5 , 1 <br> je Set_Bit_5 <br> btr ax, bx <br> jmp Byte_6 <br>Set_Bit_5: <br> bts ax, bx <br><br>Byte_6: <br> mov byte ptr [esi + 05h], al <br> mov al, byte ptr [esi + 06h] <br> cmp New_Bit_6 , 1 <br> je Set_Bit_6 <br> btr ax, bx <br> jmp Byte_7 <br>Set_Bit_6: <br> bts ax, bx <br><br><br>Byte_7: <br> mov byte ptr [esi + 06h], al <br> mov al, byte ptr [esi + 07h] <br> cmp New_Bit_7 , 1 <br> je Set_Bit_7 <br> btr ax, bx <br> jmp Exit <br>Set_Bit_7: <br> bts ax, bx <br><br>Exit: <br> mov byte ptr [esi+07h], al <br> pop eax <br> ret <br>Set_New_Bits endp <br><br>;_______________________________________________________________________<br>;loop optimization :)<br>;<br>;Xor_Blocks proc <br>; push ebp<br>; xor ebp,ebp<br>;_b:<br>; mov al, byte ptr [esi][ebp] <br>; xor al, byte ptr [edi][ebp] <br>; xchg al,[esi][ebp]<br>; inc ebp<br>; cmp ebp,7<br>; jle _b<br>; pop ebp<br>; ret <br>;Xor_Blocks endp <br>;_______________________________________________________________________<br>Xor_Blocks proc <br> mov al, byte ptr [esi] ;операция xor с байтом блока ключа, блок на блок :) <br> xor al, byte ptr [edi] <br> xchg al, [esi] <br> mov al, byte ptr [esi + 01h] <br> xor al, byte ptr [edi + 01h] <br> xchg al, [esi + 01h] <br> mov al, byte ptr [esi + 02h] <br> xor al, byte ptr [edi + 02h] <br> xchg al, [esi + 02h] <br> mov al, byte ptr [esi + 03h] <br> xor al, byte ptr [edi + 03h] <br> xchg al, [esi + 03h] <br> mov al, byte ptr [esi + 04h] <br> xor al, byte ptr [edi + 04h] <br> xchg al, [esi + 04h] <br> mov al, byte ptr [esi + 05h] <br> xor al, byte ptr [edi + 05h] <br> xchg al, [esi + 05h] <br> mov al, byte ptr [esi + 06h] <br> xor al, byte ptr [edi + 06h] <br> xchg al, [esi + 06h] <br> mov al, byte ptr [esi + 07h] <br> xor al, byte ptr [edi + 07h] <br> xchg al, [esi + 07h] <br> ret <br>Xor_Blocks endp <br>;_______________________________________________________________________<br><br><br>Deshifr_Down_Offset proc <br> call Set_Old_Bits <br> call Vertical_Roter_Down <br> call Set_New_Bits <br> rol byte ptr [esi + edx], 01h <br> ret <br>Deshifr_Down_Offset endp <br>;_______________________________________________________________________<br>Deshifr_Up_Offset proc <br> call Set_Old_Bits <br> call Vertical_Roter_Up <br> call Set_New_Bits <br> ror byte ptr [esi + edx], 01h <br> ret <br>Deshifr_Up_Offset endp <br>;_______________________________________________________________________<br>Vertical_Roter_Down proc <br> push eax <br> xor eax, eax <br> mov al, Bit_0 <br> mov New_Bit_1, al <br> mov al, Bit_1 <br> mov New_Bit_2, al <br> mov al, Bit_2 <br> mov New_Bit_3, al <br> mov al, Bit_3 <br> mov New_Bit_4, al <br> mov al, Bit_4 <br> mov New_Bit_5, al <br> mov al, Bit_5 <br> mov New_Bit_6, al <br> mov al, Bit_6 <br> mov New_Bit_7, al <br> mov al, Bit_7 <br> mov New_Bit_0, al <br> pop eax <br> ret <br>Vertical_Roter_Down endp <br>;_______________________________________________________________________<br><br>Vertical_Roter_Up proc <br> push eax <br> xor eax, eax <br> mov al, Bit_7 <br> mov New_Bit_6, al <br> mov al, Bit_6 <br> mov New_Bit_5, al <br> mov al, Bit_5 <br> mov New_Bit_4, al <br> mov al, Bit_4 <br> mov New_Bit_3, al <br> mov al, Bit_3 <br> mov New_Bit_2, al <br> mov al, Bit_2 <br> mov New_Bit_1, al <br> mov al, Bit_1 <br> mov New_Bit_0, al <br> mov al, Bit_0 <br> mov New_Bit_7, al <br> pop eax <br> ret <br>Vertical_Roter_Up endp <br>;_______________________________________________________________________<br>BSCAS_Shifr proc <br> pusha <br>Shifr_Octo_Byte: <br> push edi ;Сохранить указател на ключ <br> push ecx ;сахраним число входных блоков <br> xor ebx, ebx ;Обнуляем регистры на всякие пожарные <br> xor eax, eax <br> xor edx, edx <br> mov cl, 08h ;8 блоков подключей <br>Key_Block: <br> push ecx ;сохранить число блоков <br> mov cl, 08h ;число подключей <br>@Loop_Per_Key: ;цикл по прохаждению подключей <br> push ecx ;сохранить число подключей <br> mov al, byte ptr [edi + edx] ;подключ в al <br> mov cl, 08h ;пробег по байту <br>@Loop_Per_Byte_Of_Key: <br> bt ax, bx <br> jc _LeftOffset ;Бит установлен ? <br> call Right_Offset ;Нет не установлен <br> jmp Next_Bit_Of_Key <br>_LeftOffset: <br> call Left_Offset <br>Next_Bit_Of_Key: <br> inc bx ;следущий бит ключа <br> loop @Loop_Per_Byte_Of_Key <br> xor ebx, ebx ;обнулим индекс столбцов <br> inc edx ;увеличим индекс строк <br> pop ecx ;восстановим стчечик подключей <br> loop @Loop_Per_Key <br> call Xor_Blocks ;операция xor над блоками <br> pop ecx ;восстановим счетчик блоков <br> xor edx, edx ;обнулим индекс строк <br> xor ebx, ebx <br> add edi, 08h ;переместим указатель на следущий блок ключей <br> loop Key_Block <br> pop ecx ;восстановим число входных блоков <br> pop edi ;восстановим указатель на ключ <br> add esi, 08h ;перейдем к следующему блоку <br> loop Shifr_Octo_Byte <br> popa <br> ret <br>BSCAS_Shifr endp <br>;_______________________________________________________________________<br>BSCAS_Deshifr proc <br> pusha <br> xor eax, eax ;очищаем eax, edx, ebx ( мусор нам не нужен :) ) <br> xor ebx, ebx <br> xor edx, edx <br> add edi, 56 ;перемещаем указатель на последний блок ключа <br>Deshifr_Octo_Byte: <br> push ecx ;сохраняем число входных блоков <br> push edi ;сохраняем указатель на ключ <br><br> mov cl, 08h ;число блоков подключей <br>Deshifr_Loop_Key_Block: <br> push ecx ;сохраняем число блоков подключей <br> ;Начальная стадия - <br> ;операции xor шифрованного блока с блоком подключей <br> call Xor_Blocks <br> mov cl, 08h ;количество подключей в блоке <br> mov dl, 07h ;начинаем снизу блока подключей <br>Deshifr_Loop_Per_Key: <br> push ecx ;сохраняем количество подключей <br> mov al, byte ptr [edi + edx] ;подключ <br> mov cl, 08h ;пробег по байту <br> mov bl, 07h <br>Deshifr_Loop_Per_Byte_Of_Key: <br> bt ax, bx ;Бит установлен ? <br> jc _Deshifr_Up_Offset ;Да установлен <br> call Deshifr_Down_Offset ;Нет не установлен <br> jmp _Deshifr_Inc <br>_Deshifr_Up_Offset: <br> call Deshifr_Up_Offset <br>_Deshifr_Inc: <br> dec bx ;уменьшаем указатель сталбцов <br> loop Deshifr_Loop_Per_Byte_Of_Key <br><br> xor ebx, ebx ;устанавливаем индекс сталбцов в ноль <br> dec edx ;уменьшаем индекс строк <br> pop ecx ;восстанавливаем количество подключей <br> loop Deshifr_Loop_Per_Key <br><br> sub edi, 08h ;переход к следующему блоку ключей <br> xor edx, edx ;устанавливаем индекс строки в ноль <br> pop ecx ;Восстанавливаем количество блоков ключей <br> loop Deshifr_Loop_Key_Block <br><br> pop edi ;восстанавливаем указатель на ключ <br> pop ecx ;восстанавливаем количество блоков к дешифрации <br> loop Deshifr_Octo_Byte <br> popa <br> ret <br>BSCAS_Deshifr endp <br>;_______________________________________________________________________<br> ;Автор разрешает использовать данный исходник <br> ;только при условии указания авторства <br> end start<br><br><br> ничего не менял оставил все как есть... теперь возвращаемся к ключу 64 dup (0ffh) и твоему шифрованию... пожалуйста посмотри а то я может о великий теоретик Зверюга что-то перепутал... ----------- тут я процитирую vot'а с небольшими изменениями... думаю он не будет против... ----------- О Великий и Ужасный Zveruga! Падаем на колени перед тобой и просим милосердно простить нас, ламеров позорных! Прости, о Великий! Бес нас попутал! Никогда больше мы и не подумаем ломать и ставить под сомнения твой божественый алгоритм шифрования. Мы очень сожалеем, что он оказался кривой.... Слезно просим - больше не надо придумывать таких сложных алгоритмов... Посыпаем голову пеплом, икренне потрясенные твоим могуществом, ламеры. ----------- |
|
Сообщ.
#21
,
|
|
|
|
Цитата IX0DeS, 28.03.03, 15:46:01 так привожу прогу полностью ![]() ![]() <br> pusha <br> call BSCAS_Shifr<br> popa <br> call BSCAS_Deshifr<br> .......<br> Я вот только понять не могу причем здесь pusha popa ??Здесь они нужны также как и собаке пятая нага. Цитата ничего не менял оставил все как есть... теперь возвращаемся к ключу 64 dup (0ffh) и твоему шифрованию... пожалуйста посмотри а то я может о великий теоретик Зверюга что-то перепутал... Deos я в принципе уже давно догадывался что ты полное трепло.Для чего ты клянчил у меня эти исходники что бы перековырять их и потом на весь форум кричать какой я полный ламер не умею пользаваться loop-ми.Так не делают.Или ты чуствуеш себя деловым и крутым сидя у себя там в кресле в конторки и лажая то что сделали другие. Цитата ----------- тут я процитирую vot'а с небольшими изменениями... думаю он не будет против... ----------- Ты слишком много думаеш за других а еще больше п.. без дела на других не отвечая за треп. |
|
Сообщ.
#22
,
|
|
|
|
Цитата Zveruga, 28.03.03, 16:14:48 Deos я в принципе уже давно догадывался что ты полное трепло.Для чего ты клянчил у меня эти исходники что бы перековырять их и потом на весь форум кричать я его "клянчил" чтобы посмотреть алгоритм... и нифига я не лажаю не надо наезжать... потом ты скажи я правильно пользуюсь твоим алгоритмом ? если да то почему не работает тогда ? если нет то покажи ошибку. Цитата какой я полный ламер не умею пользаваться loop-ми.Так не делают.Или ты чуствуеш себя деловым и крутым сидя у себя там в кресле в конторки и лажая то что сделали другие. Ты слишком много думаеш за других а еще больше п.. без дела на других не отвечая за треп. и такого я тоже не говорил... а то что ты там навоображал это твои проблемы.... Цитата Ты слишком много думаеш за других а еще больше п.. без дела на других не отвечая за треп. по моему я не переходил на личности и не ругался на тебя матом! я еще раз спрашиваю КАК МНЕ расшифровать ТРИ БЛОКА. и почему когда я использую ключ состоящий из 0xFF изменяются только первый и последний символ ? можешь нормально ответить? прогу я привел с которой я провожу все махинации... что нет так ПОКАЖИ plz! |