summaryrefslogtreecommitdiff
path: root/omegle_icq.py
diff options
context:
space:
mode:
Diffstat (limited to 'omegle_icq.py')
-rw-r--r--omegle_icq.py114
1 files changed, 114 insertions, 0 deletions
diff --git a/omegle_icq.py b/omegle_icq.py
new file mode 100644
index 0000000..bd38526
--- /dev/null
+++ b/omegle_icq.py
@@ -0,0 +1,114 @@
+#!/usr/bin/python
+import struct
+import sys
+import thread
+
+from twisted.words.protocols import oscar
+from twisted.internet import reactor, protocol
+from twisted.python import log
+
+from omegle import OmegleChat
+
+
+randoms = [['370496181', 'megahal123'], ['446323989','gagaga']]
+i=0
+uin = randoms[i][0]
+password = randoms[i][1]
+
+class OmegleICQChat(OmegleChat):
+ def __init__(self,icqconn,user):
+ self.user = user
+ self.icqconn = icqconn
+ OmegleChat.__init__(self,name="("+user.name+")")
+ def on_message(self,message):
+ print "got message %s" % message
+ self.send_icqconn( message )
+
+ def send_icqconn(self,message):
+ reactor.callFromThread(self.icqconn.sendMessage, self.user.name, str(message) )
+
+ def on_connect(self):
+ print "connected"
+ self.send_icqconn( "== Stranger CONNECTED (type disconnect to disconnect) ==" )
+ def on_disconnect(self):
+ print "disconnecteed"
+ self.send_icqconn( "==Stranger Disconnected ==" )
+
+
+class icqBot( oscar.BOSConnection ):
+ capabilities = [oscar.CAP_CHAT]
+
+ def initDone( self ):
+ self.requestSelfInfo()
+ self.requestSSI().addCallback(self.gotBuddyList)
+
+ self.omegleConns = {}
+
+ def shutdown( self ):
+ for conn in self.omegleConns:
+ if conn.is_connected:
+ conn.disconnect()
+
+ def updateBuddy(self, user):
+ print "Update buddy %s" % user
+
+ def gotBuddyList( self, buddylist ):
+ self.activateSSI()
+ self.setProfile("Forget ICQ, MSN, Yahoo and the other shitty protocols! Use Jabber!")
+ self.setIdleTime( 0 )
+ self.clientReady()
+ for user in buddylist[0][0].users:
+ print "Authorize %s" % user.name
+ self.sendAuthorizationResponse(user.name, True, '')
+
+ print 'ICQ-Autoresponder-Bot aktiviert ;-)'
+
+ def receiveMessage( self, user, multiparts, flags ):
+ print "receiveMessage(%s,%s,%s)" % (user,multiparts,flags)
+ if not self.omegleConns.has_key(user.name):
+ self.omegleConns[user.name] = OmegleICQChat(self,user)
+
+ try:
+ message = str(multiparts[0][0])
+ if not self.omegleConns[user.name].is_connected:
+ if message == "connect":
+ self.omegleConns[user.name].start()
+ self.sendMessage(user.name, "Connecting you to omegle")
+ else:
+ self.sendMessage(user.name, "Not connected, type >connect<")
+ elif self.omegleConns[user.name].is_connected and not self.omegleConns[user.name].is_confirmed:
+ self.sendMessage(user.name, "Wait for connection confirm from omegle")
+ elif self.omegleConns[user.name].is_confirmed and message == "disconnect":
+ self.omegleConns[user.name].disconnect()
+ self.sendMessage(user.name, "Disconnecting")
+ else:
+ print "Send: %s" % message
+ self.omegleConns[user.name].send(message)
+ except Exception,e:
+ print "error: %s %s\n%s" % (user,multiparts,e)
+
+ def chatReceiveMessage( self, chat, user, message ):
+ self.receiveMessage( self, user, message, 0 )
+
+ def receiveSendFileRequest(self, *args):
+# def receiveSendFileRequest(self, user, file, description, cookie):
+ print args
+
+ def sendAuthorizationResponse(self, uin, success, responsString):
+ packet = struct.pack("b", len(uin)) + uin
+ if success:
+ packet += struct.pack("b", 1)
+ else:
+ packet += struct.pack("b", 0)
+ packet += struct.pack(">H", len(responsString)) + responsString
+ self.sendSNACnr(0x13, 0x1a, packet)
+
+
+class OscarCrap( oscar.OscarAuthenticator ):
+ BOSClass = icqBot
+
+
+log.startLogging(sys.stdout)
+protocol.ClientCreator( reactor, OscarCrap, uin, password, icq=1 ).connectTCP( 'login.icq.com', 5238 )
+reactor.run()
+