<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>python &#8211; PT ESC</title>
	<atom:link href="/tag/python/feed/index.xml" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description></description>
	<lastBuildDate>Fri, 24 Jan 2025 13:46:35 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>

<image>
	<url>/wp-content/uploads/2026/09/cropped-cropped-large_icon-32x32.png</url>
	<title>python &#8211; PT ESC</title>
	<link>/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Инструменты для работы с Python</title>
		<link>/tools-for-working-with-python/</link>
		
		<dc:creator><![CDATA[ti_author]]></dc:creator>
		<pubDate>Fri, 24 Jan 2025 13:46:35 +0000</pubDate>
				<category><![CDATA[Threat Intelligence]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[scs]]></category>
		<category><![CDATA[TI]]></category>
		<category><![CDATA[tools]]></category>
		<guid isPermaLink="false">http://localhost:8080/%d0%b8%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d1%8b-%d0%b4%d0%bb%d1%8f-%d1%80%d0%b0%d0%b1%d0%be%d1%82%d1%8b-%d1%81-python/</guid>

					<description><![CDATA[Инструменты для работы с Python 😦 Злоумышленники не стесняются использовать Python для своих целей. LazyStealer, упакованная PyInstaller, Python-бэкдор в ShadowPad и модули для Pupy RAT тому доказательство. Кроме того, задачи на снятие…]]></description>
										<content:encoded><![CDATA[<p><strong>Инструменты для работы с Python</strong> 😦</p>
<p>Злоумышленники не стесняются использовать Python для своих целей. <a href="https://global.ptsecurity.com/analytics/pt-esc-threat-intelligence/lazystealer-sophisticated-does-not-mean-better/?utm_source=tg_escalator&#038;utm_medium=post&#038;utm_campaign=esc&#038;utm_content=24_01" rel="noopener" target="_blank">LazyStealer, упакованная PyInstaller</a>, <a href="https://www.ptsecurity.com/ru-ru/research/pt-esc-threat-intelligence/shadowpad-novaya-aktivnost-gruppirovki-winnti/?utm_source=tg_escalator&#038;utm_medium=post&#038;utm_campaign=esc&#038;utm_content=24_01" rel="noopener" target="_blank">Python-бэкдор в ShadowPad</a> и <a href="https://www.ptsecurity.com/ru-ru/research/pt-esc-threat-intelligence/hellhounds-operaciya-lahat/?utm_source=tg_escalator&#038;utm_medium=post&#038;utm_campaign=esc&#038;utm_content=24_01" rel="noopener" target="_blank">модули для Pupy RAT</a> тому доказательство. Кроме того, задачи на снятие пакеров с дальнейшим исследованием встречаются <a href="https://ctftime.org/writeup/28897" rel="noopener" target="_blank">на соревнованиях capture the flag</a>.</p>
<p>Команда Supply Chain Security собрала памятку по работе с инструментами <code>PyInstaller</code>, <code>py2exe</code> и со скомпилированными файлами <code>.pyc</code>.</p>
<p><strong>PyInstaller</strong></p>
<p>Один из самых популярных инструментов для упаковывания проекта в исполняемый файл под Windows, Linux, macOS. Библиотеки, относящиеся к проекту, дополнительно сериализуются с помощью стандартной библиотеки marshal в PYZ-файл.</p>
<p>Для работы с PyInataller можно использовать один из первых проектов — <a href="https://github.com/extremecoders-re/pyinstxtractor" rel="noopener" target="_blank">pyinstxtractor</a>. Marshal не реализует обратную совместимость между своими версиями, поэтому для распаковки PYZ-файла pyinstxtractor требует запуска на той версии Python, которой был упакован PyInstaller.</p>
<p>Решает этот нюанс <a href="https://github.com/pyinstxtractor/pyinstxtractor-ng" rel="noopener" target="_blank">pyinstxtractor-ng</a>: он использует библиотеку <a href="https://github.com/rocky/python-xdis/" rel="noopener" target="_blank">xdis</a>, реализующую (де)сериализатор под Python 2.4–3.13, в силу чего для полной распаковки больше не требуется конкретная версия Python. Автор pyinstxtractor-ng выпустил <a href="https://pyinstxtractor-web.netlify.app/" rel="noopener" target="_blank">веб-версию</a>, переписанную на Go, она работает локально в браузере. Оба проекта активно обновляются и разбирают последние версии PyInstalller. </p>
<p><strong>py2exe</strong></p>
<p>Решение, нацеленное на упаковку проекта в исполняемый файл под Windows. Чуть-чуть не успевает за тенденциями и пока не умеет работать с Python 3.12 и 3.13. «Убийцей» пакера должен был стать <a href="https://github.com/matiasb/unpy2exe" rel="noopener" target="_blank">unpy2exe</a>, но последний коммит в master семь лет назад оставляет чувство печали. Автор этого решения так же, как и автор решения pyinstxtractor, предупреждает, что версии (хотя бы major) установленного Python и конечной нагрузки должны совпадать.</p>
<p><strong>Файлы .pyc</strong></p>
<p>На уровне Python используются для ускорения запуска кода и оптимизации импорта модулей. Для превращения обратно в исходный код есть несколько проектов, и если такое возможно, стоит сравнивать полученный декомпилированный код из одного проекта с декомпилированным кодом из другого.</p>
<p>1️⃣ <a href="https://github.com/rocky/python-uncompyle6" rel="noopener" target="_blank">Uncompyle6</a> и <a href="https://github.com/rocky/python-decompile3https://github.com/rocky/python-decompile3" rel="noopener" target="_blank">decompyle3</a> — две утилиты от автора вышеупомянутого xdis. Uncompyle6 покрывает версии Python до 3.8, decompyle3 — c 3.7 до, частично, 3.9. Автор <a href="https://github.com/rocky/python-decompile3/issues/45" rel="noopener" target="_blank">просит помочь</a> с проектом.</p>
<p>2️⃣ Семейство unpyc (<a href="https://github.com/figment/unpyc3" rel="noopener" target="_blank">unpyc3</a>, <a href="https://github.com/andrews4s/unpyc37" rel="noopener" target="_blank">unpyc37</a>, <a href="https://github.com/greyblue9/unpyc37-3.10" rel="noopener" target="_blank">unpyc37-3.10</a>) — поддерживает точечно версии 3.3, 3.7, 3.10.</p>
<p>3️⃣ <a href="https://github.com/zrax/pycdc" rel="noopener" target="_blank">Pycdc</a> — многообещающий декомпилятор, написанный на C++, также регулярно обновляется и старается поддерживать все версии байт-кода Python. Порой имеет сложности с разбором конструкций, поэтому&#8230;</p>
<p>4️⃣ Pycdas — дизассемблер из проекта pycdc, помогает попробовать разобрать файл с расширением .pyc, когда декомпиляторы уже бессильны 🐱🐱🐱</p>
<p>Существующие онлайн-проекты для файлов .pyc (осторожно, отправляют файлы на сервер):</p>
<p><strong>•</strong> <a href="https://www.decompiler.com/" rel="noopener" target="_blank">Decompiler.com</a> — мультифункциональный, «под капотом» uncompyle6.</p>
<p><strong>•</strong> <a href="https://pylingual.io/" rel="noopener" target="_blank">PyLingual.io</a> — многообещающее решение, находящееся в бете. Файлы версий 3.11, 3.12, 3.13 открывает без проблем.</p>
<p>Happy hacking!</p>
<p><span class="hashtag">#ti</span> <span class="hashtag">#python</span> <span class="hashtag">#tools</span> <span class="hashtag">#scs</span><br />
<a href="https://t.me/ptescalator" rel="noopener" target="_blank">@ptescalator</a></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
