cephurs icon

tweetcrypt.py via @MrXors

cephurs | PRO | 09/19/13 12:48:46 PM UTC | 0 ⭐ | 1034 👁️ | Never ⏰ | []
Python |

32.61 KB

|

None

|

0 👍

/

0 👎

#!/usr/bin/python
import sys
import time, os, getpass
import urllib2, re, random
class bcolors:
    LIGHT_GREEN = '\033[36m'
    OKBLUE = '\033[94m'
    BLUE = '\033[34m'
    WARNING = '\033[93m'
    FAIL = '\033[91m'
    ENDC = '\033[0m'
    LIGHT_RED = '\033[31m'
    GREEN='\033[32m'
    BROWN='\033[33m'
    GRAY='\033[37m'
    def disable(self):
        self.LIGHT_GREEN = ''
        self.OKBLUE = ''
        self.BLUE = ''
        self.WARNING = ''
        self.FAIL = ''
        self.ENDC = ''
        self.LIGHT_RED = ''
        self.GREEN=''
        self.BROWN=''
        self.GRAY=''
def banners(selections):
    selections=selections
    a=bcolors.BLUE+'''
 ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ _________ 
||T |||w |||e |||e |||p |||C |||r |||y |||p |||t |||       ||
||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||_______||
|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/_______\|
    '''+bcolors.ENDC
    b=bcolors.BLUE+('''
    ______)              )   ___                  
   (, /                 (__/_____)                
     /  _   _  _   _ __   /       __      __  _/_ 
  ) /   (_(/ _(/__(/_/_)_/       / (_(_/_ /_)_(__ 
 (_/              .-/   (______)    .-/.-/        
                 (_/               (_/(_/         
    ''')+bcolors.ENDC
    c=bcolors.BLUE+'''
""8""                          8""""8                           
  8   e   e  e eeee eeee eeeee 8    " eeeee  e    e eeeee eeeee 
  8e  8   8  8 8    8    8   8 8e     8   8  8    8 8   8   8   
  88  8e  8  8 8eee 8eee 8eee8 88     8eee8e 8eeee8 8eee8   8e  
  88  88  8  8 88   88   88    88   e 88   8   88   88      88  
  88  88ee8ee8 88ee 88ee 88    88eee8 88   8   88   88      88  
    '''+bcolors.ENDC
    d=bcolors.BLUE+'''
_______ _  _  _ _______ _______  _____  _______  ______ __   __  _____  _______
   |    |  |  | |______ |______ |_____] |       |_____/   \_/   |_____]    |   
   |    |__|__| |______ |______ |       |_____  |    \_    |    |          |   
    '''+bcolors.ENDC
    e=bcolors.BLUE+'''
888888 Yb        dP 888888 888888 88""Yb  dP""b8 88""Yb Yb  dP 88""Yb 888888 
  88    Yb  db  dP  88__   88__   88__dP dP   `" 88__dP  YbdP  88__dP   88   
  88     YbdPYbdP   88""   88""   88"""  Yb      88"Yb    8P   88"""    88   
  88      YP  YP    888888 888888 88      YboodP 88  Yb  dP    88       88   
    '''
    if selections == 'a':
        print a
    if  selections == 'b':
        print b
    if selections == 'c':
        print c
    if selections == 'd':
        print d 
    if selections == 'e':
        print e
    print bcolors.GREEN+"Created By @MrXors"+bcolors.ENDC
rando=str(random.choice('abcde'))
banners(rando)
try:
    import gnupg
    pass
except ImportError:
    print "Run Setup.py To Install the Correct Mods."
    sys.exit() 
try:
    import tweepy
    pass
except ImportError:
    print "Run Setup.py To Install the Correct Mods."
    sys.exit() 
try:
    import pastebin_python 
    pass
except ImportError:
    print "Run Setup.py To Install the Correct Mods."
    sys.exit()
try:
    import pynotify 
    pass
except ImportError:
    print "Run Setup.py To Install the Correct Mods."
    sys.exit()
def start_up():
    try:
        os.mkdir('conf')
    except OSError:
        pass
    pass
    #try:
    #   os.mkdir(str(config.gpghome_dir))
    #except OSError:
    #   pass
    #pass
    try:
        os.mkdir('logs/')
    except OSError:
        pass
    try:
        os.mkdir('logs/old_gpg')
    except OSError:
        pass
    try:
        os.mkdir('logs/archive')
    except OSError:
        pass
    try:
        os.system('touch logs/downloads')
    except OSError:
        pass
    try:
        os.system('touch logs/request')
    except OSError:
        pass
    #try:
    #   os.system('touch keys/public_key')
    #except OSError:
    #   pass
    pass
    try:
        os.system('touch conf/__init__.py')
    except OSError:
        pass
    pass
    try:
        os.system('touch conf/settings.py')
    except OSError:
        pass
    pass
    try:
        set_data=open('conf/settings.py', 'r')
        new_set_data=set_data.readlines()
        key_ans_count=0
        for line in new_set_data:
            if 'gpghome_ans' in line:
                #print line
                key_ans_count=key_ans_count+1
                break
            else:
                pass
            #   print "NO DATA"
        if key_ans_count == 1:
            pass
        else:
 
            print bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+"Setting Up TweepCrypt For First time useage!"+bcolors.ENDC
            print bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+"Please Have Dev Keys From Twitter \& PasteBin Ready to Continue!"+bcolors.ENDC
            print bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+"If You Don't Have Any Keys just run (\"python tweepcrypt.py -g\") After Running This!"+bcolors.ENDC
            gpg_home_dir=raw_input(bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+"Enter Your FULL PATH for GPG Keys (\"/root/dir/to/gpg\") : "+bcolors.ENDC)
            email_ans=raw_input( bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+"Enter Your Email Address: "+bcolors.ENDC)
            pbin_dev_ans=raw_input(bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+"Enter Your PasteBin Development Keys located in http://pastebin.com/api: "+bcolors.ENDC)
            twit_consumer_key_ans=raw_input( bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+"Enter Your Twitter CONSUMER_KEY: "+bcolors.ENDC)
            twit_consumer_secret_ans=raw_input(bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+"Enter Your Twitter CONSUMER_SECRET: "+bcolors.ENDC)
            twit_access_key_ans=raw_input( bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+"Enter Your Twitter ACCESS_KEY: "+bcolors.ENDC)
            twit_access_secret_ans=raw_input( bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+"Enter Your Twitter ACCESS_SECRET: "+bcolors.ENDC)
            print  bcolors.LIGHT_RED+"TweepCrypt.py WILL NOT WORK WITH OUT THE CORRECT KEYS FROM TWITTER & PASTEBIN !"+bcolors.ENDC
            time.sleep(0.1)
            setting=open('conf/settings.py', 'a+')
            setting.write('#!/usr/bin/python\n\
gpghome_ans=0\n\
#######################################################\n\
#GPG PASSWORD DONT STORE IT HERE. LAZY ASS.\n\
gpgpasswd=""\n\
#######################################################\n\
#Destroy Twitter Message with Encryption Link.\n\
#destroy=0\n\
######################################################\n\
#Your Email Address or Email Address of your Public Key\n\
email=\"'+str(email_ans)+'\"\n\
####################################################\n\
#Location Of your Gpg Keys the default is ~/.gnupg/\n\
gpghome_dir=\"'+str(gpg_home_dir)+'\"\n\
##############################################\n\
#PasteBin Key \n\
#Go to http://pastebin.com/api once you have Created an account with pastebin.com\n\
pastebin_key=\"'+str(pbin_dev_ans)+'\"\n\
#####User Name and Password Not Needed.\n\
pastebin_username="None"\n\
pastebin_passwd="None"\n\
###############################################\n\
#Twitter Keys\n\
#Go To dev.twitter.com\n\
#Select your account in the top right corner of the screen and select "My Applications"\n\
###Click "Create New Application"\n\
##### Name = Whatever Name You Want\n\
##### Description = Whatever Name You Want\n\
##### WebSite URL = I Use https://twitter.com\n\
##### CallBack URL = I Use https://twitter.com\n\
##### Check Yes You Agree To TOS\n\
########## Once App is Created Select it in My Applications\n\
########## Click on the Settings tab\n\
########## Check the Box the say Read, Write and Direct Messages\n\
########## Check The Box That Says "Allow this application to be used to Sign in with Twitter"\n\
########## Click Update This Twitter Application\n\
################### Go To the Details TAB and Scroll Down To Create My Access Token\n\
############## Now You Should See \n\
########## CONSUMER_KEY\n\
########## CONSUMER_SECRET \n\
########## ACCESS_KEY \n\
########## ACCESS_SECRET\n\
##########\n\
##########COPY AND PASTE THEM IN THERE CORRECT LOCATION RIGHT HERE\n\
CONSUMER_KEY =\"'+str(twit_consumer_key_ans)+'\"\n\
CONSUMER_SECRET =\"'+str(twit_consumer_secret_ans)+'\"\n\
ACCESS_KEY =\"'+str(twit_access_key_ans)+'\"\n\
ACCESS_SECRET =\"'+str(twit_access_secret_ans)+'\"\n')
            setting.close()
    except OSError:
        pass
    pass
    from conf import settings as config
    try:
        os.mkdir(str(config.gpghome_dir))
    except OSError:
        pass
    pass
start_up()
from conf import settings as config
from optparse import OptionParser
from pastebin_python import PastebinPython
from pastebin_python.pastebin_exceptions import PastebinBadRequestException, PastebinNoPastesException, PastebinFileException
from pastebin_python.pastebin_constants import PASTE_PUBLIC, PASTE_PRIVATE, EXPIRE_10_MIN, EXPIRE_1_DAY, EXPIRE_1_HOUR
from pastebin_python.pastebin_formats import FORMAT_NONE, FORMAT_PYTHON, FORMAT_HTML
#Class for App
 
def getpassword():
    passwd=getpass.getpass()
    return passwd
def user_to_text():
    user_to_msg=raw_input(bcolors.GREEN+"Who would you like to Message: "+bcolors.ENDC)
    without_at=re.compile(r'@(.*)')
    clean_user=without_at.findall(user_to_msg)
    try:
        return clean_user[0]
    except IndexError:
        return user_to_msg.lower()
class noti(object):
    """docstring for noti"""
    def __init__(self, img_tod, title, arg, sec):
        super(noti, self).__init__()
        self.img_tod=img_tod
        self.title=title
        self.arg=arg
        self.sec=sec
        if pynotify.init('noti class'):
            n = pynotify.Notification(title, arg, img_tod)
            n.set_timeout(sec)
            n.show()
class Paste_Bin(object):
    """docstring for Paste_Bin"""
    def __init__(self):
        super(Paste_Bin, self).__init__()
        self.pastebin_key= config.pastebin_key 
        self.pastebin_username=config.pastebin_username
        self.pastebin_passwd=config.pastebin_passwd
        self.pbin = PastebinPython(api_dev_key=self.pastebin_key)
    def Post_Paste_From_File(self, filename):
        '''
        createPaste(api_paste_code, api_paste_name='', api_paste_format='', api_paste_private='', api_paste_expire_date='')
        '''
        self.filename=filename
        try:
            paste_link=self.pbin.createPasteFromFile(filename, 'TweepCrypt', FORMAT_PYTHON, PASTE_PUBLIC, EXPIRE_1_DAY)
            if 'Post limit, maximum pastes per 24h reached' in paste_link:
                comment="Paste Failed "+time.ctime()
                return comment
            else:
                print paste_link
                hm=re.compile(r'http://pastebin.com/(.*)')
                hrmm=hm.findall(str(paste_link))
                if hrmm[0] == None:
                    pass
                else:
                    if len(hrmm[0]) < 3:
                        pass
                    else:
                        return hrmm[0]
        except PastebinBadRequestException as e:
            print e
        except PastebinFileException as e:
            print e
        pass
    def Post_Paste_From_CmdLine(self, cmd):
        '''
        createPaste(api_paste_code, api_paste_name='', api_paste_format='', api_paste_private='', api_paste_expire_date='')
        '''
        self.cmd=cmd
        try:
            paste_link=self.pbin.createPaste(str(cmd), 'TweepCrypt Test', FORMAT_PYTHON, PASTE_PUBLIC, EXPIRE_1_DAY)
            print paste_link
        except PastebinBadRequestException as e:
            print e
        except PastebinFileException as e:
            print e
        pass
class gnupghome(object):
    """docstring for gnupghome"""
    def __init__(self, homedir):
        super(gnupghome, self).__init__()
        self.homedir=homedir
        self.gpg=gnupg.GPG(gnupghome=homedir)
    def gen_keys(self, typeE="RSA", length=1024, namereal="", namecom="", namemail=""):
        self.typeE=typeE
        self.length=length
        self.namereal=namereal
        self.namecom=namecom
        self.namemail=namemail
        input_data=self.gpg.gen_key_input(key_type=str(typeE), key_length=int(length), name_real=str(namereal), name_comment=str(namecom), name_email=str(namemail), expire_date=0, passphrase=getpassword())
        print bcolors.LIGHT_RED+"[+]"+bcolors.ENDC+bcolors.WARNING+"This Will Take A Few Minutes, Do Other Task To Create Entropy."+bcolors.ENDC
        key=self.gpg.gen_key(input_data)
        pass
    def list_uids(self):
        keys=self.gpg.list_keys()
        self.uids=[]
        for line in keys:
            self.uids+=[line['uids']]
        return self.uids
    def list_all(self):
        keys=self.gpg.list_keys()
        self.public_fingerprints=[]
        self.uids=[]
        for line in keys:
            self.public_fingerprints+=[line['fingerprint']]
            self.uids+=[line['uids']]
        return self.uids, self.public_fingerprints
    def whoami(self):
        keys=self.gpg.list_keys()
        self.uid=[]
        for line in keys:
            self.uid+=line['uids']
        return self.uid[0]
    def export_my_pubkey(self):
        keys=self.gpg.list_keys()
        self.public_finger=keys[0]['fingerprint']
        return self.public_finger
    def exportkeys(self, fingerprint_ID):
        self.fingerprint_ID=fingerprint_ID
        pub_key=self.gpg.export_keys(fingerprint_ID)
        return pub_key
    def importK(self, keys):
        self.keys=keys
        resu=self.gpg.import_keys(keys)
        return resu.results[0]['ok'][:] 
    def encryptFiles(self, recip, encrypt_data, outputfile):
        self.outputfile=outputfile
        self.encrypt_data=encrypt_data
        self.x=open(encrypt_data, 'rb')
        self.recip=recip
        data=self.gpg.encrypt_file(self.x, recipients=recip, passphrase=config.gpgpasswd, output=outputfile, always_trust=True, armor=True)
        return outputfile
        pass        
    def decryptFiles(self, darg, desired_filename):
        self.desired_filename=desired_filename
        self.darg=darg
        public_key=0
        gpg_message=0
        moved=0
        public_key_check=open(darg, 'r')
        message_check=str(public_key_check.readlines()[0])
        public_key_check.close()
        if '-----BEGIN PGP PUBLIC KEY BLOCK-----' in message_check:
            public_key=public_key+1
        if '-----BEGIN PGP MESSAGE-----' in message_check:
            gpg_message=gpg_message+1
        if public_key == 1:
            os.rename(darg, 'PublicKey.pub')
            moved=moved+1
            pass
        else:
            pass
        if gpg_message == 1:
            with open(darg) as f:
                decrypted_data=self.gpg.decrypt_file(f, passphrase=str(config.gpgpasswd), always_trust=True, output=str(desired_filename))
                time.sleep(0.2)
                if decrypted_data.ok == False:
                    print decrypted_data.stderr
                    print bcolors.LIGHT_RED+"[-]"+bcolors.ENDC+bcolors.WARNING+"Decryption Failed, Message Not Decrypted."+bcolors.ENDC
                    pass
                else:
                    if decrypted_data.ok == True:
                        print bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+"Message Decrypted"+bcolors.ENDC
                        pass
                    else:   
                        pass
                pass
        else:
            pass
        if moved == 0:
            return "DING"
        else:
            if moved == 1:
                return "DONG"
class tweet(object):
    """docstring for tweet"""
    def __init__(self):
        super(tweet, self).__init__()
        self.CONSUMER_KEY = config.CONSUMER_KEY 
        self.CONSUMER_SECRET = config.CONSUMER_SECRET  
        self.ACCESS_KEY = config.ACCESS_KEY  
        self.ACCESS_SECRET = config.ACCESS_SECRET  
        self.auth = tweepy.OAuthHandler(self.CONSUMER_KEY, self.CONSUMER_SECRET) 
        self.auth.set_access_token(self.ACCESS_KEY, self.ACCESS_SECRET) 
        self.api = tweepy.API(self.auth)
    def me(self):
        time.sleep(0.1)
        return self.api.me().name
    def my_image_url(self):
        x=self.api.me()
        return str(x.profile_image_url)
        pass
    def verify_twitter_friend(self, user_name):
        self.user_name=user_name
        find_friend=self.api.me()
        for line in find_friend.followers():
            if user_name.lower() == line.screen_name.lower():
                return bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+"They Do Follow You."+bcolors.ENDC
            else:
                pass
        pass
    def direct_msg(self):
        self.directMessages=self.api.direct_messages()
        self.frank=[]
        self.bank=[]
        for line in self.directMessages:
            if 'TweepCrypt:' in line.text:
                self.frank+=[line.text]
                self.bank+=[line.sender_screen_name]
            else:
                pass
        return self.frank
    def direct_req_msg(self):
        self.directMessages=self.api.direct_messages()
        self.frank=[]
        self.bank=[]
        for line in self.directMessages:
            if 'TweepCrypt Request:' in line.text:
                self.frank+=[line.text]
                self.bank+=[line.sender_screen_name]
                pass
            else:
                pass
        return self.frank, self.bank
    def direct_verify(self):
        self.direct_v=self.api.direct_messages()
        self.banks=[]
        for line in self.direct_v:
            if 'TweepCrypt:' in line.text:
                self.banks+=[line.sender_screen_name+ " " + line.text]
                pass
            else:
                pass
        return self.banks
    def send_dm(self, USER, MSG):
        self.USER=USER
        self.MSG=MSG
        try:
            self.api.send_direct_message(screen_name=str(USER), text="TweepCrypt: "+str(MSG))
        except tweepy.error.TweepError:
            return "Message Not Sent"
        pass
    def send_req(self, USER, MSG):
        self.MSG=MSG
        self.USER=USER
        try:
            self.api.send_direct_message(screen_name=str(USER), text="TweepCrypt Request: "+str(MSG))
        except tweepy.error.TweepError:
            return "Message Not Sent"
        pass
    def download_image(self, twitter_username):
        self.twitter_username=twitter_username
        coldp=self.api.search_users(str(twitter_username))
        ff=coldp[0]
        if str(ff.screen_name.lower()) == str(twitter_username.lower()):
            imgg=str(ff.profile_image_url)
            return imgg
        else:
            pass
def dwd_my_tweet_img(url):
    if os.path.isfile('conf/my_img'):
        pass
    else:
        url=str(url)
        get=urllib2.urlopen(url)
        s=open('conf/my_img', 'w')
        s.write(get.read())
    pass
def dwd_tweet_img(url):
    url=str(url)
    get=urllib2.urlopen(url)
    s=open('user_img', 'w')
    s.write(get.read())
    pass
def download_gpgmsg(url, user_name):
    webFile = urllib2.urlopen(url)
    current_time=time.ctime()
    find_current=re.compile(r'\d\d.\d\d.\d\d')
    digit_time=find_current.findall(str(current_time))
    dd=time.ctime().split(" ")
    ddd=str(dd[1]+"_"+dd[3]+"_"+dd[4]+"_"+dd[5])
    filename =ddd+'.gpg_pastebin_download'
    localFile = open(os.path.abspath('.')+"/logs/"+user_name+"/"+user_name+"_"+filename, 'w')
    localFile.write(webFile.read())
    pass    
def logger(input_data):
    input_data=input_data
    data_safe=open('logs/downloads', 'a+')
    data_safe.write(str(input_data)+"\n")
    data_safe.close()
    pass
def verify_lnk(input_data):
    input_data=input_data
    match_count=0
    data_safe=open('logs/downloads', 'a+').readlines()
    for line in data_safe:
        if input_data in line:
            match_count=match_count+1
        else:
            pass
    if match_count > 0:
        return "VERIFIED"
    else:
        return "NOPE"
def user_folder(user_name):
    try:
        os.mkdir('logs/'+str(user_name.lower()))
        log=open('logs/'+str(user_name.lower())+"/"+'data.log', 'a+')
        log.write(time.ctime()+"\n")
        time.sleep(0.5)
        log.close()
    except:
        log=open('logs/'+str(user_name.lower())+"/"+'data.log', 'a+')
        log.write(time.ctime()+"\n")
        time.sleep(0.5)
        log.close()
    pass
def main():
    dwd_my_tweet_img(tweet().my_image_url())
    gpg=gnupghome(config.gpghome_dir)
    if os.path.isfile(str(config.gpghome_dir)+'/public_key'):
        pass
    else:
        www_d=open(str(config.gpghome_dir)+'/public_key', 'w')
        try:
            www_d.write(gpg.exportkeys(gpg.export_my_pubkey()))
        except IndexError:
            print bcolors.LIGHT_RED+"[-]"+bcolors.ENDC+bcolors.WARNING+"NO GPG KEYS FOUND!!!"+bcolors.ENDC
            gen_key_ans=raw_input("Create GPG Keys ?: Y or N: ")
            if str(gen_key_ans.lower()) == 'y':
                print bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+"Generating Keys"+bcolors.ENDC
                type_ans=raw_input("Enter Type: RSA, DSA: ")
                length_ans=raw_input("Enter Length: 1024, 2048: ")
                twitter_name_ans=raw_input("Enter Name: User Twitter Name with No @, ex(mrxors, cryptdev, moxie): ")
                comment_ans=raw_input("Enter Comments For Account: ex(DEV ACCOUNT, TEST, TWITTER GPG): ")
                gpg.gen_keys(str(type_ans.upper()), int(length_ans), str(twitter_name_ans), str(comment_ans), str(config.email))
                print bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+"Keys Generated!"+bcolors.ENDC
                www_d.write(gpg.exportkeys(gpg.export_my_pubkey()))
            else:
                pass
        www_d.close()
    def request(user_to_request):
        user_to_request=user_to_request
        log_data=open('logs/request', 'r')
        log_data_read=log_data.readlines()
        for line in log_data_read:
            if str(user_to_request) in line:
                print bcolors.LIGHT_RED+"[-]"+bcolors.ENDC+bcolors.WARNING+"Request For GPG Public Key Already Sent"+bcolors.ENDC
                sys.exit()
            else: pass
        print bcolors.LIGHT_RED+"[-]"+bcolors.ENDC+bcolors.WARNING+"PUBLIC KEY FOR USER NOT FOUND"+bcolors.ENDC
        print bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+"SENDING GPG PUBLIC KEY REQUEST TO @"+str(user_to_request)+bcolors.ENDC
        ans_for_pub=raw_input(bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+"Would You Like To Send A Request For A Public Key and send Your Pub Key? Y or N: "+bcolors.ENDC)
        if ans_for_pub.lower() == 'y':
            if os.path.isfile(str(config.gpghome_dir)+'/public_key'):
                pass
            else:
                www=open(str(config.gpghome_dir)+'/public_key', 'w')
                www.write(gpg.exportkeys(gpg.export_my_pubkey()))
                www.close()
            tweet().send_dm(str(user_to_request), str(Paste_Bin().Post_Paste_From_File(str(config.gpghome_dir)+'/public_key')))
            logs_for_req=open('logs/request', 'a+')
            logs_for_req.write(str(user_to_request)+" Recieved a Request for a public key.\n")
            logs_for_req.close()
        else:
            print bcolors.LIGHT_RED+"[-]"+bcolors.ENDC+bcolors.WARNING+"Request Not Sent!"+bcolors.ENDC
            sys.exit()
        pass
    def Check_DM_for_Kicker():
        user_name_for_Decrypt=[]
        directMSG=tweet().direct_msg()
        for line in directMSG:
            new_line=re.compile(r'TweepCrypt:(.*)')
            my_add=new_line.findall(str(line)) 
            if verify_lnk(my_add[0][1:]) == "VERIFIED":
                pass
            else:
                if str(my_add[0][1:]) == 'None':
                    pass
                else:
                    logger(my_add[0][1:])
                    for lpo in tweet().direct_verify():
                        if lpo.split(" ")[2] == my_add[0][1:]:
                            user_name_for_Decrypt+=[str(lpo.split(" ")[0].lower())]
                            user_folder(str(lpo.split(" ")[0].lower())) 
                    try:
                        download_gpgmsg('http://pastebin.com/download.php?i='+str(my_add[0][1:]), lpo.split(" ")[0].lower())
                    except:
                        print bcolors.LIGHT_RED+"[-]"+bcolors.ENDC+bcolors.WARNING+"Did not Download!"+bcolors.ENDC
        def Decrypt_downloaded_MSG():
            total_msg_count=0
            total_public_key_count=0
            os.chdir('logs')
            for line in list(set(user_name_for_Decrypt)):
                if os.path.isdir(line):
                    os.chdir(line)
                    if os.path.isfile('user_img'):
                        pass
                    else:
                        dwd_tweet_img(str(tweet().download_image(str(line.lower()))))
                    x=os.listdir('.')
                    for files in x:
                        if '.gpg' in files:
                            ff=time.ctime().split(" ")
                            fff=str(ff[1]+"_"+ff[3]+"_"+ff[4]+"_"+ff[5])
                            decfile_name=fff+".decrypt"
                            time.sleep(0.5)
                            xdf=gpg.decryptFiles(files, decfile_name)
                            if str(xdf) == "DONG":
                                print os.path.abspath('.')
                                total_public_key_count=total_public_key_count+1
                            else:
                                try:
                                    os.mkdir('../old_gpg/'+str(line))
                                except OSError:
                                    pass
                                os.system('mv '+str(files)+" ../old_gpg/"+str(line)+"/"+str(files))
                            try:
                                dfiles=open(decfile_name, 'r')
                                if os.path.isfile(str(os.path.abspath('.')+"/"+'user_img')):
                                    try:
                                        noti(os.path.abspath('.')+"/"+'user_img', "From: @"+str(line), str(dfiles.read()), 1000)
                                    except:
                                        print "pynotify failed read by hand"
                                        pass
                                else:
                                    print bcolors.LIGHT_RED+"[-]"+bcolors.ENDC+bcolors.WARNING+"ERROR"+bcolors.ENDC
                                dfiles.close()
                                try:
                                    os.mkdir('../archive/'+str(line))
                                except OSError:
                                    pass
                                os.system('mv '+str(decfile_name)+" ../archive/"+str(line)+"/"+str(line)+"_"+str(decfile_name))
                                total_msg_count=total_msg_count+1
                            except:
                                pass
                        else:
                            pass
                    os.chdir('../')
            os.chdir('../')
            print bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+ str(total_msg_count)+ bcolors.ENDC, bcolors.WARNING+ "New Messages." +bcolors.ENDC 
            print bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+ str(total_public_key_count)+ bcolors.ENDC, bcolors.WARNING+ "New Public Key Request." +bcolors.ENDC
            pass
        Decrypt_downloaded_MSG()
        def ck_ky(user_to_ck):
            user_to_ck=user_to_ck
            uids, fingerpes=gpg.list_all()
            names=[]
            for line in uids:
                names+=[line[0]]
            if str(user_to_ck) in str(names):
                return "DING"
            else:
                return "DONG"
        lol=os.listdir('logs/')
        for shit in lol:
            if str(shit) == "old_gpg":
                pass
            else:
                if ck_ky(str(shit)) == "DING":
                    pass
                else:
                    if os.path.isdir("logs/"+str(shit)+"/"):
                        shitz=os.listdir("logs/"+str(shit)+"/")
                        for line in shitz:
                            if str(line) == "PublicKey.pub":
                                BOB=open("logs/"+str(shit)+"/"+str(line)).read()
                                if '-----BEGIN PGP PUBLIC KEY BLOCK-----' in str(BOB):
                                    dfg=raw_input("Would You Like To Import "+str(shit.lower())+"'s"+ " Public Key? Y or N:")
                                    if dfg.lower() == 'y':
                                        d=gpg.importK(str(BOB))
                                        if d == '1':
                                            print bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+"KEY FROM "+str(shit)+" IMPORED SUCCESSFULLY!!"+bcolors.ENDC
                                            send_pub=raw_input(bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+"Would You Like To Send Your Public Key? Y or N: "+bcolors.ENDC)
                                            if send_pub.lower() == 'y':
                                                data_to_ck=open('logs/request', 'r').readlines()
                                                quid=0
                                                for lines_to_ck in data_to_ck:
                                                    if line.lower() in lines_to_ck:
                                                        print bcolors.LIGHT_RED+"[-]"+bcolors.ENDC+bcolors.WARNING+"REQUSET ALLREADY SENT!"+bcolors.ENDC
                                                        quid=1
                                                        pass
                                                    if quid == 1:
                                                        pass
                                                    else:       
                                                        tweet().send_dm(str(line.lower()), str(Paste_Bin().Post_Paste_From_File(str(config.gpghome_dir)+'/public_key')))
                                                        odb=open('logs/request', 'a+')
                                                        odb.write(str(line.lower())+ " Recieved a Request for a public key.\n")
                                                        odb.close()
                                            else:   
                                                pass
                                        else:   
                                            pass
                                    else:   
                                        pass
                                else:   
                                    pass
                            else:
                                pass
    def Killer(arg, msg_file):
        msg_file=str(msg_file)
        arg=arg
        twitter_name=str(arg)
        Verif=tweet().verify_twitter_friend(twitter_name)
        if Verif == None:
            print bcolors.LIGHT_RED+"[-]"+bcolors.ENDC+bcolors.WARNING+"They Do Not Follow You , Request A Follow"+bcolors.ENDC
            sys.exit()
        else:
            print Verif
        try:
            noti(str(os.path.abspath('.'))+'/conf/my_img', 'GPG Key Loaded:', gpg.whoami(), 1000)
        except:
            print "pynotify failed"
            pass
        user_folder(twitter_name)
        pubcount=0
        for line in gpg.list_uids():
            if twitter_name in line[0].lower():
                pubcount=pubcount+1
                print bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+"Found Possible Key:"+bcolors.ENDC, bcolors.BLUE+ line[0].lower()+bcolors.ENDC 
                answer=raw_input(bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+"Use This Key Y or N "+bcolors.ENDC+bcolors.WARNING+">>>"+bcolors.ENDC)
                if answer.lower() == 'y':
                    DMSG=re.compile(r'<(.*)>')
                    DDMSG=DMSG.findall(str(line[0].lower()))
                    gpg_ID=DDMSG[0]
                    or_file=str(msg_file)
                    if os.path.isfile(or_file) == True:
                        print bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+"File Located"+bcolors.ENDC
                        print bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+"Encrypting File", str(or_file), "with user", str(gpg_ID), "With Twitter Name: ", str(twitter_name) + bcolors.ENDC
                        eee=time.ctime().split(" ")
                        eeee=str(eee[1]+"_"+eee[3]+"_"+eee[4]+"_"+eee[5])
                        gpg.encryptFiles()
                        tweet().send_dm(str(twitter_name), str(Paste_Bin().Post_Paste_From_File(gpg.encryptFiles(gpg_ID, or_file, 'logs/'+twitter_name+"/"+eeee+".enc_file"))))
                        sys.exit()
                    else:
                        print bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+"Setting Up Message..."+bcolors.ENDC
                        print  str(msg_file)
                        msg_file_name=str('logs/'+twitter_name+"/"+"msg.log")
                        msg_te=open(msg_file_name, 'w')
                        msg_te.write(str(msg_file)+"\n")
                        msg_te.close()
                        time.sleep(1)
                        lll=time.ctime().split(" ")
                        llll=str(lll[1]+"_"+lll[3]+"_"+lll[4]+"_"+lll[5])
                        tweet().send_dm(str(twitter_name), str(Paste_Bin().Post_Paste_From_File(gpg.encryptFiles(gpg_ID, str(msg_file_name), 'logs/'+twitter_name+"/"+llll+".enc_msg"))))
                        sys.exit()
                else:
                    print bcolors.LIGHT_RED+"[-]"+bcolors.ENDC+bcolors.WARNING+"::Exiting::"+bcolors.ENDC
                    sys.exit()                  
            else:
                pass
        request(twitter_name)
        sys.exit()
    def Read_Single_DM(user_to_read):
        user_to_read=user_to_read
        if os.path.isfile('logs/archive/'+str(user_to_read)+'/user_img'):
            pass
        else:
            if os.path.isfile('logs/'+str(user_to_read)+'/user_img'):
                os.system('cp logs/'+str(user_to_read)+'/user_img logs/archive/'+str(user_to_read)+'/user_img')
            else:
                print "NO IMAGE"
        try:
            os.chdir('logs/archive/'+str(user_to_read))
            msg_count=0
            time.sleep(0.2)
            for l in os.listdir('.'):
                if '.decrypt' in l:
                    msg_count=msg_count+1
                    vs=open(l, 'r')
                    v=vs.read()
                    try:
                        noti(os.path.abspath('.')+str('/user_img'), "From: @"+str(user_to_read), v, 1500)
                    except:
                        print "pynotify Failed read by hand."
                        pass
                    vs.close()
                else:
                    pass
            print bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+str(msg_count), "Messages From", str(user_to_read) + bcolors.ENDC
            pass
        except OSError:
            pass
    #####################################################################################################
    usager = bcolors.BLUE+"\npython %prog -u [Twitter_User] [options]\npython %prog -r"+bcolors.ENDC
    parser = OptionParser(usage=usager, version="%prog 1.0")
    parser.add_option("-u", "--user", action="store", type="string", dest="twitterUser", help=bcolors.WARNING+"Twitter User To Decrypt/Encrypt/Read Message with NO @ sign"+bcolors.ENDC)
    parser.add_option("-e", "--encrypt-message", action="store", type="string", dest="encrypted_message", help=bcolors.WARNING+"File/Message(\"string\") To Encrypt, needs -u to complete."+bcolors.ENDC)
    parser.add_option("-d", "--decrypted-messages", action="store_true", dest="decrypt_message", help=bcolors.WARNING+"Read All Decrypted Messages from selected Twitter User."+bcolors.ENDC)##
    parser.add_option("-r", "--read-new", action="store_true", dest="read_dm", help=bcolors.WARNING+"Collect All New Messages"+bcolors.ENDC)
    parser.add_option("-g", "--gen-key", action="store_true", dest="gen_key", help=bcolors.WARNING+"Generate an Encryption Key To Communicate."+bcolors.ENDC)
    (options, args) = parser.parse_args()
    ###########################################################################
    #Twitter Name Display
    try:
        print bcolors.BLUE+"@"+tweet().me()+bcolors.ENDC
    except:
        print bcolors.LIGHT_RED+"[-]"+bcolors.ENDC+bcolors.WARNING+"Need An Internet Connection! or Oauth Keys for Twitter and PasteBin!"+bcolors.ENDC
        parser.print_help()
        sys.exit()
    ##########################################################################
    #Help And Args
    try:
        if sys.argv[1]:
            pass
    except IndexError:
        parser.print_help()
        sys.exit()
    ############################
    #-d
    if options.decrypt_message:
        if options.twitterUser:
            if len(config.gpgpasswd)> 1:
                pass
            else: 
                config.gpgpasswd=getpassword()
                pass
            Read_Single_DM(options.twitterUser.lower())
        else:
            print bcolors.LIGHT_RED+"[-]"+bcolors.ENDC+bcolors.WARNING+ "Need -u (Twitter User Name) to Complete"+bcolors.ENDC
    else:
        pass
    ############################
    #-r 
    if options.read_dm:
        if len(config.gpgpasswd)> 1:
            pass
        else: 
            config.gpgpasswd=getpassword()
            pass
        Check_DM_for_Kicker()
    else:
        pass
    #############################
    #-e 
    if options.encrypted_message:
        if options.twitterUser:
            Killer(options.twitterUser.lower(), str(options.encrypted_message))
        else:
            print bcolors.LIGHT_RED+"[-]"+bcolors.ENDC+bcolors.WARNING+ "Need -u (Twitter User Name) to Complete"+bcolors.ENDC
    else:
        pass
    #############################
    #-g
    if options.gen_key:
        try:
            if gpg.whoami():
                print bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+"Key Found:"+bcolors.ENDC+bcolors.WARNING+str(gpg.whoami()) + bcolors.ENDC
                gen_ans=raw_input(bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.WARNING+"Would you Like to Delete Keys and Generate New Keys? Y or N: "+bcolors.ENDC)
                if gen_ans.lower() == 'y':
                    type_ans=raw_input("Enter Type: RSA, DSA: ")
                    length_ans=raw_input("Enter Length: 1024, 2048: ")
                    twitter_name_ans=raw_in
                    put("Enter Name: User Twitter Name with No @, ex(mrxors, cryptdev, moxie): ")
                    comment_ans=raw_input("Enter Comments For Account: ex(DEV ACCOUNT, TEST, TWITTER GPG): ")
                    gpg.gen_keys(str(type_ans.upper()), int(length_ans), str(twitter_name_ans), str(comment_ans), str(config.email))
                    print bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+"Keys Generated!"+bcolors.ENDC
                else: pass
        except:
            print bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+"Generating Keys"+bcolors.ENDC
            type_ans=raw_input("Enter Type: RSA, DSA: ")
            length_ans=raw_input("Enter Length: 1024, 2048: ")
            twitter_name_ans=raw_input("Enter Name: User Twitter Name with No @, ex(mrxors, cryptdev, moxie): ")
            comment_ans=raw_input("Enter Comments For Account: ex(DEV ACCOUNT, TEST, TWITTER GPG): ")
            gpg.gen_keys(str(type_ans.upper()), int(length_ans), str(twitter_name_ans), str(comment_ans), str(config.email))
            print bcolors.GREEN+"[+]"+bcolors.ENDC+bcolors.BLUE+"Keys Generated!"+bcolors.ENDC
 
if __name__ =='__main__':
    #try:
    main()
    #except:
    print bcolors.LIGHT_RED+"[-]"+bcolors.ENDC+bcolors.WARNING+"EXITING"+bcolors.ENDC
    sys.exit()

Comments