TwittBot
I got a bit bored during the SANS GIAC class so I decided to whip up a twitter bot. Nothing fancy, just a quick & dirty way to command a machine through twitter.
First, you have to register a new account which will house the application and register a new application at http://dev.twitter.com/apps once that is done, then make note of your API key, Consumer Secret, Access token and secret.
Second, get the required python packages: python-twitter & python-oauth2
hg clone http://python-twitter.googlecode.com/hg/ python-twitter cd python-twitter/ python setup.py build sudo python setup.py install git clone https://github.com/simplegeo/python-oauth2.git cd python-oauth2/ python setup.py build sudo python setup.py install
Third, execute the code below (python twitbot.py:
#!/usr/bin/python
import twitter, time, os
class TwitServ:
api = None
sleep_time=60*5
def login(self):
self.api = twitter.Api(consumer_key='***',
consumer_secret='***',
access_token_key='****',
access_token_secret='****')
def printFriends(self):
friends = self.api.GetFriends()
allfriends=''
for f in friends:
allfriends+=f.name + ' '
print "All my friends are " +allfriends
#print [u.name for u in users]
#api.PostUpdates("I am Bot, hear me roar...")
def getLastProcessedMsgId(self):
f=open('lastmsgid', 'r')
return f.readline()
def saveLastMsgId(self, id):
f=open('lastmsgid', 'w')
f.write(str(id))
f.close()
def getLastMsg(self):
dirmsgs=self.api.GetDirectMessages()
print "Last message: " + dirmsgs[0].text
return dirmsgs[0]
# print str(lastmsg.id) + ' ' + str(lastmsgid)
def reply(self):
lastmsg=self.getLastMsg()
if str(lastmsg.id) != self.getLastProcessedMsgId():
cmd=lastmsg.text
self.saveLastMsgId(lastmsg.id)
result=os.popen(cmd).readlines()
msg=""
for i in result:
msg+=i
try:
self.api.PostDirectMessage(lastmsg.sender_id, msg[:140])
#self.api.PostUpdates(msg[:140]) # Use this if you want replies to be public
print "Sending messge to "+lastmsg.sender_id+": " + msg[:140]
except twitter.TwitterError:
print "Error sending message, possible duplicate message"
self.saveLastMsgId(lastmsg.id)
else:
print "No new messages to process..."
def serve(self):
self.login()
print "logged in..."
self.printFriends()
while True:
self.reply()
time.sleep(sleep_time)
if __name__ == "__main__":
TwitServ().serve()
To command TwittBot simply send a direct msg to is:
d IamBot uname -a


0 Comments:
Post a Comment
Links to this post:
Create a Link
<< Home