#!/usr/bin/env python # -*- coding: iso-8859-2 -*- # # Script: sms.orangembox.py # Version: 0.5 # Date: 07/04/2009 # URL: http://rodion.grolsh.pl/orangembox.php # Works with python version 2.4.1 or higher # Copyright (c) 2007,2008,2009 Rodion # Thanks to oort # License: http://rodion.grolsh.pl/bsd-license.txt # import cookielib, string, urllib, urllib2 debug = 0 # for debug change to '1' freesms = 0 # for smses left change to '1' phonebook = 'phonebook.txt' login = '' # set login password = '' # set password # cat phonebook.txt # pralinka : 501234567 def _phonebook(name): try: plik = open (phonebook, 'r') except IOError: print 'Error. File "%s" not found.' % phonebook sys.exit(1) else: for line in plik.readlines(): if name in line: name = line.split()[-1] return name try: plik.close() except IOError: print 'Error. File "%s" not found.' % phonebook sys.exit(1) def sendsms(sender, recipient, message): if recipient.isalpha(): number = _phonebook(recipient) if number is None: print 'Error. Recipient "%s" not found.' % recipient sys.exit(1) if recipient.isdigit(): number = recipient if len(sender) > 0 and number.isdigit() and len(number) == 9 and len(message) > 0: baseURL='http://www.orange.pl' length = 634 - len(message) - len(sender) cj = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) # orange signin request = urllib2.Request(baseURL + '/portal/map/map/signin') request.add_header('User-Agent', 'Opera/8.00 (Windows NT 5.0; U; en)') try: result = opener.open(request) if debug: print 'Connecting with',baseURL except IOError: print 'Connection with %s failed.' % baseURL # orange login parmdicta = {'_dyncharset' : 'UTF-8', '/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.loginErrorURL' : 'http://www.orange.pl/portal/map/map/signin', '_D:/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.loginErrorURL' : ' ', '/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.loginSuccessURL' : 'http://www.orange.pl/portal/map/map/your_account', '_D:/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.loginSuccessURL' : ' ', '/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.redirectOriginUrl' : 'http://www.orange.pl/portal/map/map/your_account', '_D:/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.redirectOriginUrl' : ' ', '/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.requestURL' : ' ', '_D:/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.requestURL' : ' ', '/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.value.login' : login, '_D:/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.value.login' : ' ', '/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.value.password' : password, '_D:/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.value.password' : ' ', '/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.login.x' : '0', '/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.login.y' : '0', '_D:/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.login' : ' ', '_DARGS' : '/gear/static/signInLoginBox.jsp'} request = urllib2.Request(baseURL + '/portal/map/map/signin?noredir=1&_DARGS=/gear/static/signInLoginBox.jsp') postdata = urllib.unquote(urllib.urlencode(parmdicta)) request.add_data(postdata) request.add_header('User-Agent', 'Opera/8.00 (Windows NT 5.0; U; en)') try: result = opener.open(request) if debug: print 'Logged.' except IOError: print 'Not logged.' # orange SMS form request = urllib2.Request(baseURL + '/portal/map/map/message_box?mbox_view=newsms&mbox_edit=new') request.add_header('User-Agent', 'Opera/8.00 (Windows NT 5.0; U; en)') try: result = opener.open(request).read() if debug: print 'Opening SMS form.' except IOError: print 'Open SMS form failed.' else: import re rw = re.compile(r'(\d+)',re.S) for sms in rw.findall(result): print sms if debug: print 'SMS sent.' except IOError: print 'SMS not sent.' # Logout parmdictc = {'_dyncharset' : 'UTF-8', '/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.logoutSuccessURL' : '/portal/map/map/your_account', '_D:/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.logoutSuccessURL' : ' ', '/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.logoutErrorURL' : '/portal/map/map', '_D:/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.logoutErrorURL' : ' ', 'enabled' : 'false', '/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.logout' : 'wyloguj+si%C4%99', '_D:/amg/ptk/map/core/formhandlers/AdvancedProfileFormHandler.logout' : ' ', '_DARGS' : '/portal/html/user_status.jsp'} request = urllib2.Request(baseURL + '/portal/map/map?_DARGS=/portal/html/user_status.jsp') postdata = urllib.unquote(urllib.urlencode(parmdictc)) request.add_data(postdata) request.add_header('User-Agent', 'Opera/8.00 (Windows NT 5.0; U; en)') try: result = opener.open(request) if debug: print 'Logout.' except IOError: print 'Logout error.' # Main if __name__ == '__main__': import sys if len(sys.argv) < 4: print 'Sposób użycia:', sys.argv[0], ' ' print 'Przykład 1:', sys.argv[0], 'inspektor 501234567 bardzo być może ale żaba pozostaje żab±' print 'Przykład 2:', sys.argv[0], 'sprzedawca pralinka najprawdopodobniej usycha z tęskonty za fiordami' sys.exit(1) sender, recipient, message = sys.argv[1], sys.argv[2], ' '.join(sys.argv[3:]) sendsms(sender, recipient, message)