18650

Discussion in 'Болталка' started by Triton_Mgn, 22 Aug 2017.

  1. CommandorCream

    Joined:
    21 May 2017
    Messages:
    2
    Likes Received:
    6
    Reputations:
    0
    072324 07545 20 20231
     
  2. \/IRUS

    \/IRUS Elder - Старейшина

    Joined:
    3 Aug 2012
    Messages:
    379
    Likes Received:
    498
    Reputations:
    37
    456675464363463735435834 два сброса 03
     
  3. Triton_Mgn

    Triton_Mgn Elder - Старейшина

    Joined:
    6 Jul 2015
    Messages:
    3,673
    Likes Received:
    5,797
    Reputations:
    51
    4 8 15 16 23 42
     
  4. devton

    devton Elder - Старейшина

    Joined:
    26 Oct 2007
    Messages:
    3,371
    Likes Received:
    5,124
    Reputations:
    48
    [​IMG][​IMG][​IMG][​IMG][​IMG][​IMG][​IMG][​IMG][​IMG][​IMG][​IMG][​IMG][​IMG][​IMG][​IMG]
    [​IMG][​IMG][​IMG][​IMG][​IMG]
     
    Triton_Mgn likes this.
  5. artkar

    artkar Well-Known Member

    Joined:
    14 Nov 2016
    Messages:
    350
    Likes Received:
    331
    Reputations:
    6
    Почитал твою статью про обращения программ - это круто.
    Один раз я столкнулся с задачей по дешифрации, будучи не специалистом по криптографии, мне сразу пришла подобная идея, но я её откинул, споткнулся об те же сдвиги энды и оры.

    Что были наработки до тебя?
     
  6. CommandorCream

    Joined:
    21 May 2017
    Messages:
    2
    Likes Received:
    6
    Reputations:
    0
    Наработок до меня опубликовано на русском не было вообще, на английском близкая тема - книга Perumala Introduction to reversible computing. Я взял в два проекта по обратимым вычислениям кое что из книги, после того как 500 страниц формулами по обращению операций исписал - логическими уравнениями. Книгу ОЧЕНЬ рекомендую.

    Также по реверсингу, кое-что получил:

    ntoskrnl MEMORY HEX DUMP (not binary string format):

    3571 9329 1939 3739 3213 2714 7425 9078 5320
    7024 4798 2723 7796 9094 7476 7585 9000 0000
    5895 6758 5953 7790 5732 3004 7805 7250 0000
    9057 3230 0990 9474 7193 9471 2393 7800 0000
    2393 7893 9471 9051 5180 7591 7190 2732 3000
    2390 5739 2139 3291 2077 4572 0231 0000 0000
    2892 1379 0714 9714 3732 2490 9824 9000 0000
    0628 9125 4779 4249 0379 0714 1574 5000 0000
    7168 9173 7207 1775 0220 1244 0282 4900 0000
    5417 1149 4240 2821 7321 0000 0000 0000 0000
    1494 2541 7140 2821 7321 0000 0000 0000 0000
    2441 2471 2490 2547 9827 0000 0000 0000 0000
    8232 1444 4719 0921 9000 0000 0000 0000 0000
    4719 0921 9444 9214 5706 0920 0000 0000 0000
    9460 7822 2239 3719 4223 9371 9460 7471 0000
    2450 2512 0658 9932 1354 7645 4502 5120 0000
     
  7. Triton_Mgn

    Triton_Mgn Elder - Старейшина

    Joined:
    6 Jul 2015
    Messages:
    3,673
    Likes Received:
    5,797
    Reputations:
    51
    Похоже на матрицу в высшей математике. Ты не переборщил?
     
  8. CommandorCream

    Joined:
    21 May 2017
    Messages:
    2
    Likes Received:
    6
    Reputations:
    0
    ДЕРЖИТЕ МОЙ BTC КОШЕЛЬ ДЛЯ ПОЖЕРТВОВАНИЙ АВТОРУ СТАТЕЙ, ЗА ДВЕ НЕДЕЛИ НАДЕЮСЬ КТО-ТО ПОЖЕРТВУЕТ

    BTC: 1ProHxWHZDjVyMZ4cdh3kg1cdcoz6CfmZA

    Простая матрица, сам сейчас Яворского курс физики читаю, на векторах позиция чтения.
     
    #48 CommandorCream, 23 Aug 2017
    Last edited: 23 Aug 2017
  9. artkar

    artkar Well-Known Member

    Joined:
    14 Nov 2016
    Messages:
    350
    Likes Received:
    331
    Reputations:
    6
    Ты пока не выложил ничего что тянет даже на 1 доллар пожертвований.

    Тема про обращения программ интересная, но твое утверждение что с помощью него можно обращать хэш-функции (что в принципе противоречит самому условию хеширования) смахивает на мошенничество.

    Што это за таинтственные цыфры?


    Давай действующий концепт
     
  10. CommandorCream

    Joined:
    21 May 2017
    Messages:
    2
    Likes Received:
    6
    Reputations:
    0
    Насчёт пожертвований - это было не тебе. Добавь поиск на графе состояний, как сказано в статье, и будет тебе действующий концепт.

    У меня 4 дня выходных, попробую успеть это сделать за 4 дня. Просто A* в объёмном изложении, попробую вначале алгоритм Дейкстры, он когда-то лям зелени моей компании принёс в белом проекте, заказ на два года получили благодаря демке на этом алгоритме.

    Всем пока, завтра спишемся обязательно.
     
    #50 CommandorCream, 24 Aug 2017
    Last edited: 24 Aug 2017
  11. user100

    user100 Moderator

    Joined:
    24 Dec 2011
    Messages:
    4,811
    Likes Received:
    18,433
    Reputations:
    377
    Номер мобилы штоле;) ?
     
    _________________________
  12. \/IRUS

    \/IRUS Elder - Старейшина

    Joined:
    3 Aug 2012
    Messages:
    379
    Likes Received:
    498
    Reputations:
    37
    прикольно читать крема ) я уже фанат этого психа ))
    этож как так нужно логику в голове миксером взбить чтобы такая муть оттуда вылетала?
     
    CommandorCream likes this.
  13. CommandorCream

    Joined:
    21 May 2017
    Messages:
    2
    Likes Received:
    6
    Reputations:
    0
    Тоже много читаю, во всяком случае пытаюсь не только писать.

    Фрагмент дампа памяти:

    9393 7094 7425 4194 9074 3200 0000 0000 0000
    2451 2432 2460 7890 5739 3237 0940 0000 0000

    Увидишь 300К ботов - поймёшь какой миксер надо :)
     
    #53 CommandorCream, 24 Aug 2017
    Last edited: 24 Aug 2017
  14. CommandorCream

    Joined:
    21 May 2017
    Messages:
    2
    Likes Received:
    6
    Reputations:
    0
    Code:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using BinaryCode;
    
    namespace SHA
    {
        public class SHA256 : Emulator
        {
            public uint[] buffer76 = new uint[76];
    
            public SHA256()
            {
                buffer76 = new uint[76];
                for (int i = 0; i < 76; i++) buffer76[i] = (uint)i;
    
                Compile();
            }
    
            public override void Code()
            {
                SetInput("nonce0", 0);
                SetInput("nonce1", 1);
                SetInput("nonce2", 2);
                SetInput("nonce3", 3);
    
                Name("sha256_init");
    
                MoveConst("datalen", 0);
                MoveConst("bitlen", 0);
                MoveConst("state0", 0x6a09e667);
                MoveConst("state1", 0xbb67ae85);
                MoveConst("state2", 0x3c6ef372);
                MoveConst("state3", 0xa54ff53a);
                MoveConst("state4", 0x510e527f);
                MoveConst("state5", 0x9b05688c);
                MoveConst("state6", 0x1f83d9ab);
                MoveConst("state7", 0x5be0cd19);
    
                Name("sha256_update");
    
                int dl = 0; // datalen
    
                for (int i = 0; i < buffer76.Length; i++)
                {
                    MoveConst("data" + dl, buffer76[i]);
                    dl++;
    
                    if (dl == 64)
                    {
                        AddConst("datalen", 64);
                        sha256_transform();
                        Name("after_sha256_transform");
                        AddConst("bitlen", 512);
                        SubConst("datalen", 64);
                    }
                }
    
                AndConst("nonce0", 0xff);
                AndConst("nonce1", 0xff);
                AndConst("nonce2", 0xff);
                AndConst("nonce3", 0xff);
                Move("data" + 76, "nonce0");
                Move("data" + 77, "nonce1");
                Move("data" + 78, "nonce2");
                Move("data" + 79, "nonce3");
                AddConst("datalen", 16);
    
                Name("sha256_final");
    
                MoveConst("data" + 80, 0x80);
    
                int q = 81;
    
                for (int i = 0; i < 56 - 17; i++, q++) MoveConst("data" + (81 + i), 0);
    
                AddConst("bitlen", 56 * 8);
    
                MoveConst("data" + (q++), (56 * 8) >> 56);
                MoveConst("data" + (q++), (56 * 8) >> 48);
                MoveConst("data" + (q++), (56 * 8) >> 40);
                MoveConst("data" + (q++), (56 * 8) >> 32);
                MoveConst("data" + (q++), (56 * 8) >> 24);
                MoveConst("data" + (q++), (56 * 8) >> 16);
                MoveConst("data" + (q++), (56 * 8) >> 8);
                MoveConst("data" + (q++), (56 * 8));
    
                sha256_transform2();
    
                Name("after_sha256_transform2");
    
                List<string> outs = new List<string>();
    
    
                for (int i = 0, j = 0; i < 8; i++)
                {
                    CopyByte("hash"+j, "state"+i, 3);
                    //ShiftRightConst("hash"+j, 24);
                    outs.Add("hash" + j);
                    j++;
    
                    CopyByte("hash"+j, "state"+i, 2);
                    //ShiftRightConst("hash"+j, 16);
                    //AndConst("hash"+j, 0xff);
                    outs.Add("hash" + j);
                    j++;
    
                    CopyByte("hash"+j, "state"+i, 1);
                    //ShiftRightConst("hash"+j, 8);
                    //AndConst("hash"+j, 0xff);
                    outs.Add("hash" + j);
                    j++;
    
                    CopyByte("hash"+j, "state"+i, 0);
                    //AndConst("hash"+j, 0xff);
                    outs.Add("hash" + j);
                    j++;
                }
    
            }
    
    
            protected void sha256_transform()
            {
                Name("sha256_transform");
                int i, j;
                for (i = 0, j = 0; i < 16; i++, j += 4)
                {
                    ShiftLeftConst("data" + j, 24);
                    ShiftLeftConst("data" + (j + 1), 16);
                    ShiftLeftConst("data" + (j + 2), 8);
                    Or("data" + (j + 3), "data" + (j + 2));
                    Or("data" + (j + 3), "data" + (j + 1));
                    Or("data" + (j + 3), "data" + j);
                    Move("m" + i, "data" + (j + 3));
                }
                for (; i < 64; i++)
                {
                    Copy("m" + i, SIG1("m" + (i - 2)));
                    Add("m" + i, "m" + (i - 7));
                    Add("m" + i, SIG0("m" + (i - 15)));
                    Add("m" + i, "m" + (i - 16));
                }
    
                ++u;
    
                Copy("A" + u, "state" + 0);
                Copy("B" + u, "state" + 1);
                Copy("C" + u, "state" + 2);
                Copy("D" + u, "state" + 3);
                Copy("E" + u, "state" + 4);
                Copy("F" + u, "state" + 5);
                Copy("G" + u, "state" + 6);
                Copy("H" + u, "state" + 7);
    
                for (i = 0; i < 64; i++)
                {
                    Move("t1" + u, "m" + i);
                    Add("t1" + u, "H" + u);
                    Add("t1" + u, EP1("E" + u));
                    Add("t1" + u, CH("E" + u, "F" + u, "G" + u));
                    AddConst("t1" + u, k[i]);
                    Move("t2" + u, EP0("A" + u));
                    Add("t2" + u, MAJ("A" + u, "B" + u, "C" + u));
    
                    ++u;
                    Move("H" + u, "G" + (u - 1));
                    Move("G" + u, "F" + (u - 1));
                    Move("F" + u, "E" + (u - 1));
                    Move("E" + u, "D" + (u - 1));
                    Add("E" + u, "t1" + (u - 1));
                    Move("D" + u, "C" + (u - 1));
                    Move("C" + u, "B" + (u - 1));
                    Move("B" + u, "A" + (u - 1));
                    Move("A" + u, "t1" + (u - 1));
                    Add("A" + u, "t2" + (u - 1));
                }
    
                Add("state0", "A" + u);
                Add("state1", "B" + u);
                Add("state2", "C" + u);
                Add("state3", "D" + u);
                Add("state4", "E" + u);
                Add("state5", "F" + u);
                Add("state6", "G" + u);
                Add("state7", "H" + u);
    
            }
    
            protected void sha256_transform2()
            {
                Name("sha256_transform2");
                int i, j;
                for (i = 0, j = 0; i < 16; i++, j += 4)
                {
                    ShiftLeftConst("data" + (j + 64), 24);
                    ShiftLeftConst("data" + (j + 1 + 64), 16);
                    ShiftLeftConst("data" + (j + 2 + 64), 8);
                    Or("data" + (j + 3 + 64), "data" + (j + 2 + 64));
                    Or("data" + (j + 3 + 64), "data" + (j + 1 + 64));
                    Or("data" + (j + 3 + 64), "data" + (j + 64));
                    Move("m" + (i + 64), "data" + (j + 3 + 64));
                }
                for (; i < 64; i++)
                {
                    Copy("m" + (i + 64), SIG1("m" + (i - 2 + 64)));
                    Add("m" + (i + 64), "m" + (i - 7 + 64));
                    Add("m" + (i + 64), SIG0("m" + (i - 15 + 64)));
                    Add("m" + (i + 64), "m" + (i - 16 + 64));
                }
    
                ++u;
    
                Copy("A" + u, "state" + 0);
                Copy("B" + u, "state" + 1);
                Copy("C" + u, "state" + 2);
                Copy("D" + u, "state" + 3);
                Copy("E" + u, "state" + 4);
                Copy("F" + u, "state" + 5);
                Copy("G" + u, "state" + 6);
                Copy("H" + u, "state" + 7);
    
                for (i = 0; i < 64; i++)
                {
                    Move("t1" + u, "m" + (i+64));
                    Add("t1" + u, "H" + u);
                    Add("t1" + u, EP1("E" + u));
                    Add("t1" + u, CH("E" + u, "F" + u, "G" + u));
                    AddConst("t1" + u, k[i]);
                    Move("t2" + u, EP0("A" + u));
                    Add("t2" + u, MAJ("A" + u, "B" + u, "C" + u));
    
                    ++u;
                    Move("H" + u, "G" + (u - 1));
                    Move("G" + u, "F" + (u - 1));
                    Move("F" + u, "E" + (u - 1));
                    Move("E" + u, "D" + (u - 1));
                    Add("E" + u, "t1" + (u - 1));
                    Move("D" + u, "C" + (u - 1));
                    Move("C" + u, "B" + (u - 1));
                    Move("B" + u, "A" + (u - 1));
                    Move("A" + u, "t1" + (u - 1));
                    Add("A" + u, "t2" + (u - 1));
                }
    
                Add("state0", "A" + u);
                Add("state1", "B" + u);
                Add("state2", "C" + u);
                Add("state3", "D" + u);
                Add("state4", "E" + u);
                Add("state5", "F" + u);
                Add("state6", "G" + u);
                Add("state7", "H" + u);
    
            }
    
            static int t = 0, s = 0, u = 0;
    
            protected string ROTRIGHT(string a, uint b)
            {
                ++t;
                Copy("a" + t, a);
                ShiftRightConst("a" + t, b);
                ++t;
                Copy("a" + t, a);
                ShiftLeftConst("a" + t, 32u - b);
                Or("a" + (t - 1), "a" + t);
                return "a" + (t - 1);
            }
    
            protected string CH(string x, string y, string z)
            {
                ++t;
                Copy("x" + t, x);
                And("x" + t, y);
                ++t;
                Copy("x" + t, x);
                Neg("x" + t);
                And("x" + t, z);
                Xor("x" + (t - 1), "x" + t);
                return "x" + (t - 1);
            }
    
            protected string MAJ(string x, string y, string z)
            {
                ++t;
                Copy("x" + t, x);
                And("x" + t, y);
                ++t;
                Copy("x" + t, x);
                And("x" + t, z);
                Copy("y" + t, y);
                And("y" + t, z);
                Xor("x" + (t - 1), "x" + t);
                Xor("x" + (t - 1), "y" + t);
                return "x" + (t - 1);
            }
    
            protected string EP0(string x)
            {
                ++s;
                Copy("s" + s, ROTRIGHT(x, 2));
                ++s;
                Copy("s" + s, ROTRIGHT(x, 13));
                ++s;
                Copy("s" + s, ROTRIGHT(x, 22));
                Xor("s" + (s - 2), "s" + (s - 1));
                Xor("s" + (s - 2), "s" + s);
                return "s" + (s - 2);
            }
    
            protected string EP1(string x)
            {
                ++s;
                Copy("s" + s, ROTRIGHT(x, 6));
                ++s;
                Copy("s" + s, ROTRIGHT(x, 11));
                ++s;
                Copy("s" + s, ROTRIGHT(x, 25));
                Xor("s" + (s - 2), "s" + (s - 1));
                Xor("s" + (s - 2), "s" + s);
                return "s" + (s - 2);
            }
    
            protected string SIG0(string x)
            {
                ++s;
                Copy("s" + s, ROTRIGHT(x, 7));
                ++s;
                Copy("s" + s, ROTRIGHT(x, 18));
                ++s;
                Copy("s" + s, x);
                ShiftRightConst("s" + s, 3);
                Xor("s" + (s - 2), "s" + (s - 1));
                Xor("s" + (s - 2), "s" + s);
                return "s" + (s - 2);
            }
    
            protected string SIG1(string x)
            {
                ++s;
                Copy("s" + s, ROTRIGHT(x, 17));
                ++s;
                Copy("s" + s, ROTRIGHT(x, 19));
                ++s;
                Copy("s" + s, x);
                ShiftRightConst("s" + s, 10);
                Xor("s" + (s - 2), "s" + (s - 1));
                Xor("s" + (s - 2), "s" + s);
                return "s" + (s - 2);
            }
    
    
        protected uint[] k = new uint[64]
        {
        0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5,0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5,
        0xd807aa98,0x12835b01,0x243185be,0x550c7dc3,0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174,
        0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc,0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da,
        0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7,0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967,
        0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13,0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85,
        0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3,0xd192e819,0xd6990624,0xf40e3585,0x106aa070,
        0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5,0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3,
        0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208,0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
        };
    
        }
    }
    
    Не законченная версия, отлаживать и отлаживать.
    Обратимая функция SHA256!
     
  15. devton

    devton Elder - Старейшина

    Joined:
    26 Oct 2007
    Messages:
    3,371
    Likes Received:
    5,124
    Reputations:
    48
    тебя на сайте не забанят Только если расскажешь каким веществом упарываешься и в какой дозировке ))) и сколько ты весишь при этом
    интересный эффект и ты даже пользуешься при этом инетом...расскажи нам!
     
    \/IRUS likes this.
  16. \/IRUS

    \/IRUS Elder - Старейшина

    Joined:
    3 Aug 2012
    Messages:
    379
    Likes Received:
    498
    Reputations:
    37
    получить операции в обратном порядке можно и не прогоняя SHA256 через свой "чудо транслятор, чудо языка"
    а получится у тебя в итоге каша результат которой в SHA256 будет абсолютно другой
    а ключевой момент здесь - избыточность информации которой после подсчета хэша уже нет, и не какими способами её не восстановить тчк
    ну разве что с астрала достать :D
     
  17. CommandorCream

    Joined:
    21 May 2017
    Messages:
    2
    Likes Received:
    6
    Reputations:
    0
    Вирус, я ничего из стимуляторов кроме чая и энергетиков (лимонадов с кофеином и витаминами) не беру, вес из-за диеты, диета нечто среднее между вегетарианством и фрукторианством. По обратимым вычислениям отвечу позже.
     
  18. CommandorCream

    Joined:
    21 May 2017
    Messages:
    2
    Likes Received:
    6
    Reputations:
    0
    Избыточность информации, о которой Вы говорите, приводит к неоднозначности решения при обратном выполнении. При прямом выполнении информация теряется, в операциях AND OR SHIFTLEFT SHIFTRIGHT. При обратном выполнении эту информацию надо восстанавливать.

    Да, некоторые биты при обращении, например, операции SHIFTLEFT, могут принимать значения как 0 так и 1 в восстанавливаемой переменной. Если брать случайные значения, это может привести к тупиковым состояниям - невозможности продолжения обратного выполнения, или к ложному решению - хэш от такого решения уже будет другой. Поэтому надо подбирать оптимальные значения таких битов. Например, полным перебором комбинаций неоднозначных битов циклическим прибавлением к их строке единицы справа.

    Если операция SHIFTLEFT имеет параметр 15, сдвигает на 15, то имеем 15 неоднозначных битов, всего вариантов перебора около 32000. Перебираем битовую строку, порождая новые комбинации прибавлением единицы к строке справа, в двоичной системе с переносом переполнения из разряда в разряд вправо. Получаются все возможные битовые строки, которые и пробуются. Для текущего значения битовой строки делается проба обратного выполнения, и если удалось продолжить выполнение выше, чем до неудачных битовых строк, то биты подобраны правильно - вышли из проблемного участка кода и зашли во второй проблемный участок.

    Эскиз алгоритма приблизительно следующий.

    1. Для всех значений неоднозначных битов инструкции
    2. Пробуем выполнять обратно (вверх) до той строки, спуск с которой вниз приводит к ложному хэш-значению
    3. Это текущая строка
    4. Если на комбинации неоднозначных битов текущая строка стала выше, то биты в инструкции подобраны правильно
    5. И так пока обратное выполнение не дойдёт до нулевой строки

    Уже подобранные биты отмечаются фиксированными и не перебираются дальше. Перебор не сложен, как стало видно на хэш-функции FAQ6, вместо перебора сотен неоднозначных битов нужно десятки раз перебрать строки из десятков битов, по одной строке для каждой инструкции. То есть можно перебирать N раз по 10 битов вместо перебора комбинации 10*N битов, сложность перебора колоссально меньше подразумеваемой авторами хэш-функции. Сложность перебора тут, образно говоря, N*2^10 вместо 2^(N*10). Проблема неоднозначных битов не так страшна.

    Сейчас остановился на проблеме обратимого присваивания, упёрся в неё. На этих выходных это все мои эксперименты, читаю дальше физику и электронику.
     
    #58 CommandorCream, 25 Aug 2017
    Last edited: 25 Aug 2017
  19. \/IRUS

    \/IRUS Elder - Старейшина

    Joined:
    3 Aug 2012
    Messages:
    379
    Likes Received:
    498
    Reputations:
    37
    CommandorCream, ты разумные вещи говоришь, но ты даже коллизии не добьешься, я еще в техникуме лет 13 назад пытался повторить нечто подобное для MD5. Пару неудачных попыток и я наткнулся на статью про энтропию и понял что я ошибался в корне.
    Такой тип перебора как ты написал будет идти в разы дольше примерно в 2 степени дольше чем обычный брутфорс, ну да ладно, пытайся )
    Вон вечные двигатели тоже до сих пор тысячами клепают и нечё )) запал не пропадает
     
    CommandorCream and Triton_Mgn like this.
  20. devton

    devton Elder - Старейшина

    Joined:
    26 Oct 2007
    Messages:
    3,371
    Likes Received:
    5,124
    Reputations:
    48
    @CommandorCream братишка ну поделись чем упарываешься?
    (и какая дозировка и сколько весишь)