Latest posts on Декомпилирование и расшифровка topichttp://python.su/forum/topic/38137/2019-12-06T10:39:47+02:00Общий :: Центр помощи :: Декомпилирование и расшифровка
2019-12-06T10:39:47+02:00PEHDOM205961<blockquote><em>LaBr0n</em><br/>Он даже с функциями шифрования не справляется.</blockquote>да вроде справляеться…<br/><br/><blockquote><em>LaBr0n</em><br/>А как написать расшифровку(decrypt), так как надо расшифровать secret?</blockquote>по идее ровно так же как и encrypt при условии что в libprojectone.so есть функция decrypt_char или чтото типа того.<br/><br/>На самом деле там шифрование “от дурака” , когда оно шифрует оно переводит символы в числовой вид, и потом просто отнимает 19(при key=8) и обратно переводит в символ.<br/>Соответственно чтобы расшифровать нужно взять символ перевести в числовой вид, добавить 19 и получившееся число опять перевести в символ.<br/>конкретно в вашем случае в файле secret “Первак{помоги_мне}”<br/><br/>единственная проблема это узнать что оно должно делать когда ord(char)<19, тоесть по идее оно должно отнять от максимального значения (19-ord(char)), вопрос как узнать это максимальное значение(предположительно это 0x110000, но это не точно). И соотвевенно какое максимальное значение при достижении которого нужно уже считать с нуля.<br/>
Общий :: Центр помощи :: Декомпилирование и расшифровка
2019-12-05T18:04:22+02:00LaBr0n205942Он даже с функциями шифрования не справляется.<br/>Вот что он выдаёт при попытке зашифровать:<br/>Traceback (most recent call last):<br/> File “./projectone.py”, line 36, in <module><br/> secret = encrypt_message(message)<br/> File “./projectone.py”, line 30, in encrypt_message<br/> secret += encrypt_char(message<em>, 8)<br/> File “./projectone.py”, line 24, in encrypt_char<br/> return chr(libprojectone.encrypt_char(ord(char), key))<br/>ValueError: chr() arg not in range(0x110000)<br/></em>
Общий :: Центр помощи :: Декомпилирование и расшифровка
2019-12-05T17:56:45+02:00LaBr0n205941<blockquote><em>PEHDOM</em><br/></blockquote>А как написать расшифровку(decrypt), так как надо расшифровать secret?<br/>
Общий :: Центр помощи :: Декомпилирование и расшифровка
2019-12-05T10:01:10+02:00PEHDOM205930<blockquote><em>LaBr0n</em><br/>Только по идее в файле message должна быть расшифровка + secret почему то чиститься, даже и не знаю что делать.</blockquote>хмм давайте посмотрим что делает ваш код, если выкинуть все функции и импорты то там по сути три строчки:<br/><div class="code"><pre> <span class="n">message</span> <span class="o">=</span> <span class="n">read_message</span><span class="p">(</span><span class="s1">'message'</span><span class="p">)</span>
<span class="n">secret</span> <span class="o">=</span> <span class="n">encrypt_message</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
<span class="n">write_secret</span><span class="p">(</span><span class="s1">'secret'</span><span class="p">,</span> <span class="n">secret</span><span class="p">)</span>
</pre></div>итак что же делает первая срочка: <br/><div class="code"><pre> <span class="o">...</span>
<span class="n">message</span> <span class="o">=</span> <span class="n">read_message</span><span class="p">(</span><span class="s1">'message'</span><span class="p">)</span>
<span class="o">.....</span>
<span class="k">def</span> <span class="nf">read_message</span><span class="p">(</span><span class="n">f</span><span class="p">):</span>
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="s1">'r'</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s1">'utf-8'</span><span class="p">)</span> <span class="k">as</span> <span class="p">(</span><span class="n">f</span><span class="p">):</span>
<span class="k">return</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
</pre></div>открываем файл ‘message’ и возвращаем что удалось прочитать из файла, итого в перемнной message у нас э-э-э-э ничего так файла ‘message’ то нету… по идее оно должно ругнуться No such file or directory и вывалитьтья, но ХЗ предположим что у вас таки есть файл ‘message’ просто пустой . тогда оно дальше отработает.<br/>вторая строчка:<br/><div class="code"><pre> <span class="o">...</span>
<span class="n">secret</span> <span class="o">=</span> <span class="n">encrypt_message</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
<span class="o">...</span>
<span class="n">libprojectone</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">cdll</span><span class="o">.</span><span class="n">LoadLibrary</span><span class="p">(</span><span class="s1">'./libprojectone.so'</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">encrypt_char</span><span class="p">(</span><span class="n">char</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span>
<span class="k">global</span> <span class="n">libprojectone</span>
<span class="k">return</span> <span class="nb">chr</span><span class="p">(</span><span class="n">libprojectone</span><span class="o">.</span><span class="n">encrypt_char</span><span class="p">(</span><span class="nb">ord</span><span class="p">(</span><span class="n">char</span><span class="p">),</span> <span class="n">key</span><span class="p">))</span>
<span class="k">def</span> <span class="nf">encrypt_message</span><span class="p">(</span><span class="n">message</span><span class="p">):</span>
<span class="n">secret</span> <span class="o">=</span> <span class="s1">''</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">message</span><span class="p">)):</span>
<span class="n">secret</span> <span class="o">+=</span> <span class="n">encrypt_char</span><span class="p">(</span><span class="n">message</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="mi">8</span><span class="p">)</span>
</pre></div>итак берем наш message пребираем посимвольно и шифруем каждый символ с помощью функции .encrypt_char библиотеки libprojectone.so, естественно поскольку в message у нас дырка от бублика то и secret = ''<br/><br/>и наконец треться строчка:<br/><div class="code"><pre> <span class="o">...</span>
<span class="n">write_secret</span><span class="p">(</span><span class="s1">'secret'</span><span class="p">,</span> <span class="n">secret</span><span class="p">)</span>
<span class="o">...</span>
<span class="k">def</span> <span class="nf">write_secret</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">secret</span><span class="p">):</span>
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s1">'utf-8'</span><span class="p">)</span> <span class="k">as</span> <span class="p">(</span><span class="n">f</span><span class="p">):</span>
<span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">secret</span><span class="p">)</span>
</pre></div>открыть файл ‘secret’ и записать туды данные из переменной secret в которой , как мы ране выяснили, дырка от бублика, что собственно оно и записывает. С чего вы взяли что в файле message должна быть расшифровка я понятия не имею…<br/>Походу вы перепетали encrypt(зашифровать) и decrypt(расшифровать)
Общий :: Центр помощи :: Декомпилирование и расшифровка
2019-12-05T09:46:11+02:00py.user.next205929А projectone.py работает правильно? Скинь сюда файл projectone.py .
Общий :: Центр помощи :: Декомпилирование и расшифровка
2019-12-05T00:37:24+02:00LaBr0n205927Даётся 3 файла: libprojectone.so, projectone.pyc, secret.<br/>Необходимо декомпилировать projectone.pyc с помощью uncompyle6. Декомпилируется вроде бы хорошо, но не уверен, писал в Ubuntu так : uncompyle6 projectone.pyc > projectone.py . Т.к. он не правильный (код), я добавил в начале #!/usr/bin/python3, и создал через touch message. Всё бы хорошо, скрипт запускается. Только по идее в файле message должна быть расшифровка + secret почему то чиститься, даже и не знаю что делать.