• XSS.stack #1 – первый литературный журнал от юзеров форума

Python - задай вопрос получи ответ

Получилось !!!!!!!!!

каже я рад ))))
Отлично, и в будущем используй лучше хорошо задокументированные либы и популярные, а то с левой либой можно и вирусняк загнать себе на пк.
 
Это да, но я не видел ни одной статьи с такими правилами, как мне кажется лучший вариант обфускации это когда ты пишешь не только обфускатор, но и компилятор. Вот допустим можно рассмотреть pyarmor, он обфусцирует код и сам же компилирует. Правила наверное выставляются в компиляторе.
Можно попробовать похимичить с llvm или пересобрать тот же pyinstaller как сделали с dropbox ( где то читал что они использовали переписанный pyinstaller в качестве обфускатора ). На это нужно время и тесты, мне кажется вряд ли кто то будет так заморачиваться тем более что python как Си не защитить.
Предлагаю схему что мы морфим только те имена которые начинаются с m_. Имя даем псевдорандомное производное от начального имени, таким образом нам не надо будет вычислять какому именно объекту пренадлежит имя(что в питоне является нерешаемой задачей).
m_Class1.m_foo преобразуется в ksljfdlsjfdsjfljlsdjf.uuewroiweur
m_Class2.m_foo преобразуется в iuweriouosdfuie.uuewroiweur
Можно усложнить и локальные переменные начинать с l_, классы с C_, функци f_, методы m_, ну в таком духе все, это даст нам возможность легко определять что есть что.
 
Предлагаю схему что мы морфим только те имена которые начинаются с m_. Имя даем псевдорандомное производное от начального имени, таким образом нам не надо будет вычислять какому именно объекту пренадлежит имя(что в питоне является нерешаемой задачей).
m_Class1.m_foo преобразуется в ksljfdlsjfdsjfljlsdjf.uuewroiweur
m_Class2.m_foo преобразуется в iuweriouosdfuie.uuewroiweur
Можно усложнить и локальные переменные начинать с l_, классы с C_, функци f_, методы m_, ну в таком духе все, это даст нам возможность легко определять что есть что.
Блин, это очень неплохая идея, я делал что то подобное но у меня были некоторые проблемы с переименованием переменных поэтому я забросил этот проект тем более это было сделано чисто ради эксперимента. Но это можно сделать и это не сложно, думаю для обфускатора нужно как то усложнить, можно написать парсер который будет выстраивать логику программы и видоискажать вызовы так что бы при этом логика не менялась. Считай сделать парсер который будет читать сорцы и переписывать их на непонятный код с применением мусорного кода и прочих фишек.
 
Предлагаю схему что мы морфим только те имена которые начинаются с m_. Имя даем псевдорандомное производное от начального имени, таким образом нам не надо будет вычислять какому именно объекту пренадлежит имя(что в питоне является нерешаемой задачей).
m_Class1.m_foo преобразуется в ksljfdlsjfdsjfljlsdjf.uuewroiweur
m_Class2.m_foo преобразуется в iuweriouosdfuie.uuewroiweur
Можно усложнить и локальные переменные начинать с l_, классы с C_, функци f_, методы m_, ну в таком духе все, это даст нам возможность легко определять что есть что.
Я думаю это повод написать статейку №2 по обфускации python кода.
 
Я думаю это повод написать статейку №2 по обфускации python кода.
Напиши будет интересно и полезно. Видишь если делать преобразования имен с привязкой к хешу от оригинала то не решаемые проблемы отпадают.
 
Напиши будет интересно и полезно. Видишь если делать преобразования имен с привязкой к хешу от оригинала то не решаемые проблемы отпадают.
Это да, но я думаю тогда писать сразу для многофайловых проектов, написать простенький парсер и модули, один для вычисления хэша и переименования, воторой для усложнения читаемости кода. Ну и можно генератор мусорного кода сделать.
 
Это да, но я думаю тогда писать сразу для многофайловых проектов, написать простенький парсер и модули, один для вычисления хэша и переименования, воторой для усложнения читаемости кода. Ну и можно генератор мусорного кода сделать.
Декомпозиция и опциональность при подходе это даже не обсуждается. Естественно разные этапы которые могут быть пременены независимо и не однократно. Chain of Responsibility думаю подойдет, накидываем на конвеер что хотим и получаем продукт.
 
Декомпозиция и опциональность при подходе это даже не обсуждается. Естественно разные этапы которые могут быть пременены независимо и не однократно. Chain of Responsibility думаю подойдет, накидываем на конвеер что хотим и получаем продукт.
Но попробовать стоит.
 
Может поможет кто по строчкам пробежаться - комментарии по тому, что делает каждая функция) Думаю для того, кто шарит - это изи. Буду очень благодарен!
Python:
#!/usr/bin/env python

import subprocess
import optparse

def get_arguments():
    parser = optparse.OptionParser()
    parser.add_option("-i", "--interface", dest="interface", help="Interface to change its MAC address")
    parser.add_option("-m", "--mac", dest="new_mac", help="New MAC address")
    (options, arguments) = parser.parse_args()
    if not options.interface:
        parser.error("[-] Please specify an interface, use --help for more info.")
    elif not options.new_mac:
        parser.error("[-] Please specify a new mac, use --help for more info.")
    return options



def change_mac(interface, new_mac):
    print("[+] Changing MAC address for " + interface + " to " + new_mac)
    subprocess.call(["ifconfig", interface, "down"])
    subprocess.call(["ifconfig", interface, "hw", "ether", new_mac])
    subprocess.call(["ifconfig", interface, "up"])


options = get_arguments()
change_mac(options.interface, options.new_mac)
Ну давай помогу чеп смогу)
Функция get_arguments(), в ней создаётся парсер аргументов и далее в парсер задаются параметры ( в какую переменную спарсить данные от того или иного флага и какой тип данных будет, как пример: prog.exe -p C:\Users\user\test.txt, здесь prog.exe сам скрипт, -p - флаг и после него данные которые будут спарсены в переменную ), вообщем ничего интересного и сложного, альтернативой может служить либа sys ( sys.args[n] ).

Функция change_mac(), исполняет команды в терминале linux, сначала отключает выбраный интерфейс ( interface ) ( eth0 или wlan0 допустим ), потом меняет мак адрес на новый переданный в функцию с помощью переменной new_mac и последнее это заново поднимает тот же интерфейс.

В самом конце кода уже приписан запуск функций, сначало это парсинг данных с терминала, потом уже смена мак адреса выбранного интерфейса.
 
Начал учить питон, так ка кон понравился мне своей красотой и простотой. Но потом мне сказали, что если я не математик и не работаю с бигдата, то чень его нет смысла. Так ли это? Можно ли сейчас заработать на питоне через фриланс?
Конечно можно, не слушай тех кто тебе это сказал, они бредят, питон в плане фриланса очень универсален, на нём можно писать сайты, боты, парсеры, чекеры и ещё куча всего, автоматизация тоже на нём. На фрилансе куча заказов на парсеры и боты, как и сайты. Бигдату я там почти не встречал. Раньше за один парсер можно было заработать от 2 до 5к рублей, сейчас уже не знаю, но думаю ценники вряд ли упали.
 
Конечно можно, не слушай тех кто тебе это сказал, они бредят, питон в плане фриланса очень универсален, на нём можно писать сайты, боты, парсеры, чекеры и ещё куча всего, автоматизация тоже на нём. На фрилансе куча заказов на парсеры и боты, как и сайты. Бигдату я там почти не встречал. Раньше за один парсер можно было заработать от 2 до 5к рублей, сейчас уже не знаю, но думаю ценники вряд ли упали.
Привет а не подскажешь где заказы такие искать.На апворк, фивер все забито,одни индусы
 
Привет а не подскажешь где заказы такие искать.На апворк, фивер все забито,одни индусы
Qwork неплохая биржа, там ты предлагаешь услуги и тебе сами пишут, мне с 0 акков через 2-3 дня уже первый заказ прилетел, если прокачивать акк то часто писать будут.
 
Qwork неплохая биржа, там ты предлагаешь услуги и тебе сами пишут, мне с 0 акков через 2-3 дня уже первый заказ прилетел, если прокачивать акк то часто писать будут.
Поправка, биржа называется kwork
 
Подскажите как по быстрому переделать питон2 код чтобы не было ограничений по памяти. У меня есть вот такой оригинал:
Код:
            with open(source) as f:
                with open(balblabl, 'a') as pp:
                        t = f.read()

С таким кодом если файлы больше одного гига, то падает с memory error на f.read() . Можно ли как-то по простому, не меняя логику кода, заменить чтобы любые размеры файлов были ок ?
 
У тебя f это текстовый файл обычный? Обработка построчно уместна? Делай так тогда:
Python:
            with open(source) as f, open(balblabl, 'a') as pp:
                for line in f:
                    process(line)
 
Как работать с RDP протоколом по сокетам?
Какой запрос отправить и какой должен быть ответ для получения версии протокола и остальных данных?

Нашел doc но ничего не понял естествено.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх