I recently gave a lecture on DDoS in my Network OS class. I demonstrated a simple bot on the computers in the class. I also demonstrated how portable devices are capable of running bots as well.
I used Android Scripting Environment (ASE) for the demo. The commands I gave it where text, call, speak aloud, and vibrate. The only draw back ASE has is no real GUI support. I can’t wait for the day when OpenGL ES is ported to python. Anyway, ASE allows access to almost all of the phones featurtes. Here is a link to the API ref: http://code.google.com/p/android-scripting/wiki/ApiReference
#-------------------------------------------------------------------------------
# Name: AndroidIRC
# Purpose: Android based IRC bot
#
# Author: K.B. Carte (techb)
#
# Created: 10/26/2010
#
# Copyright: (c) K.B. Carte (techb) 2010
#-------------------------------------------------------------------------------
#!/usr/bin/env python
import socket, string, time, os, sys, android
droid = android.Android()
os.chdir("sdcard")
droid.makeToast("AndroidBot Started")
droid.vibrate(300)
chan = 'AndroidBot'
ircsite = 'irc.freenode.net'
port = 6667
irc = socket.socket()
irc.connect((ircsite, port))
n = 'AndroidBotV1'
irc.send('NICK %s\r\n' % n)
irc.send("USER %s %s bla :%s\r\n" % ("Ohlook", 'itsnotmy', 'Realname'))
time.sleep(4)
irc.send("JOIN #%s\r\n" % chan)
readbuffer = ''
while True:
readbuffer= irc.recv(1024)
temp=string.split(readbuffer, "\n")
Check = readbuffer.split(':')
print readbuffer
if 'PING' in readbuffer:
"""PIN/PONG connection echo response"""
irc.send("PONG :%s" % Check[1])
if 'JOIN' in readbuffer:
"""Greet people that join the channel"""
na = Check[1].split('!')
irc.send("PRIVMSG #%s :Hello %s\r\n" % (chan, str(na[0])))
if '^call' in readbuffer:
number = readbuffer.split(':')
droid.phoneCallNumber(number[3].strip())
if '^text' in readbuffer:
"texts the number 5 times with given message"
data = readbuffer.split(":")
number = data[3].strip()
message = data[4].strip()
print number, message
cnt = 0
while cnt < 5:
droid.smsSend(number, message)
cnt += 1
if '^vibe' in readbuffer:
droid.vibrate(300)
if '^say' in readbuffer:
say = readbuffer.split(":")
droid.ttsSpeak(say[3].strip()