Ενα python script για οσους συνδρομητες της Forthnet δεν θελουν να χρησιμοποιουν την σελιδα της για να στελνουν τα 50 δωρεαν sms που δικαιουνται καθε μηνα. Μπορει επισης να χρησιμοποιηθει σε jailbroken iPhone και Android. Τα προαπαιτουμενα του, η Python και η βιβλιοθηκη της, mechanize. Η εγκατασταση της τελευταιας μπορει να γινει μεσω pip (pip install mechanize), μεσω easy_install (easy_install mechanize) ή απο το site της (download και install).
Συγκεκριμενα για Android θα πρεπει να γινει εγκατασταση του SL4A (Scripting Layer for Android) και στη συνεχεια η εγκατασταση της mechanize, δηλαδη download του tar απο το site της και extraction μονο του φακελου source στο φακελο με τα υπολοιπα scripts. Τελος ενα ‘import mechanize’ αρκει για την εγκατασταση της.
Σε iPhone ειναι ελαφρως πιο χρονοβορα η εγκατασταση, αλλα παραμενει και παλι απλη. Αρχικα εγκασταση της Python. Download του .deb της τελευταιας συμβατης με το iPhone εκδοσης. Απ’το terminal ή τον ssh client: wget https://github.com/linusyang/python-for-ios/releases/download/v2.7.6-3/python_2.7.6-3_iphoneos-arm.deb και στη συνεχεια εγκατασταση της με dpkg -i python_2.7.6-3_iphoneos-arm.deb. Τελος εγκατασταση της mechanize: easy_install mechanize. To script:
#Forthnet SMS python script
#User input
#Browser
#Authentication
#SMS sending
#History
και το repository του στο github (pull requests καλοδεχουμενα 🙂 ). O παραπανω κωδικας μπορει να αυτοματοποιηθει ακομα περισσοτερο ενσωματωνοντας το username και το password μεσα σ αυτον, προκειμενου να μην χρειαζεται καθε φορα η πληκτρολογηση τους απο τον χρηστη. Οι μονες αλλαγες που πρεπει να γινουν:
#User input
Προφανως υπαρχει ενα σοβαρο μειονεκτημα σ αυτη τη λυση, το username και το password παραμενουν αποθηκευμενα χωρις ιχνος κρυπτογραφησης και ειναι προσβασιμα απο οποιονδηποτε εχει προσβαση στο συστημα που τρεχει το script. Ευκολια Vs Ασφαλεια. Το script σε λειτουργια, αποστολη sms στο iPhone απο το οποιο εκτελεστηκε:
με την QPython πρεπει να το τρεξω? βγαζει καποια σφαλματα στον κωδικα? μαλλον θελει QPython 2?
Δεν εχω καποια Android συσκευη διαθεσιμη να το δοκιμασω, αλλα δεν νομιζω πως θα χει προβλημα με την QPython. Το προβλημα αυτη τη στιγμη δεν εχει να κανει με την script engine που τρεχεις αλλά με τον server της Forthnet, ο οποιος κανει reset την συνδεση οταν μετα απο μερικα δευτερολεπτα και αφου εχεις συνδεθει με το script (το κοκκινο πακετο στην παρακατω φωτογραφια http://giot.is/wp-content/uploads/wireshark-capture.png).
Καλημερα!
Βασικα δινει σφαλμα οταν απω να τρεξω το script απευθειας, ο interpreter της QPython.
Πρεπει να βρουμε πως πρεπει αν τρεξει σωστα το script σε Αndroid.
Web2SMS εκει εμσα εχουν υλοποιησει free sms tools κι μεταξυ αυτων και το FORTnet SMS.
Nice! Δεν εχω Android δυστυχως, οποτε παραμενω με το παρον script μολις βγαλω ακρη τι παιζει με το SSL. Σ ευχαριστω για το feedback!
Παρακαλω!
Μολις βγαλεις ακρη πως θα κανουμε το ομορφο αυτο σκριπτακι να τρεχει σωστα στο Androis οπως τρεχει και στο linuxακι ενημερωσε με σε παρακαλω! 🙂
Καλημερα,
Τελικα αποφασια να το χησιμοποιησω τον κωδικα σου στο Arch Linux μου embedded μεσα σε ενα python3 web script.
Μου ειχες πει για ενα προβλημα. Αυτο διορθωθηκε? Μπορω να στειλω με επιτυχια μαιλ απο 4νετ?
Επισης και μιαλλη ιδεα. Μπορεις να το κανεις να δουλευει με το mail.mycosmos.gr ?! Θα ειναι φανταστικο!!!
To site χρησιμοποιεί TLS v1. Μπορείς να το δηλώσεις με το παρακάτω κώδικα.
Ακόμη το username πρέπει να είναι χωρίς στο τέλος το @ath.forthnet.gr
Το δοκίμασα και δουλεύει κανονικά.
Οπότε βάζουμε το παρακάτω μετά τα import
import ssl
from ssl import PROTOCOL_SSLv23, PROTOCOL_SSLv3, CERT_NONE, SSLSocket
def monkey_wrap_socket(sock, keyfile=None, certfile=None,
server_side=False, cert_reqs=CERT_NONE,
ssl_version=PROTOCOL_SSLv23, ca_certs=None,
do_handshake_on_connect=True,
suppress_ragged_eofs=True, ciphers=None):
ssl_version=ssl.PROTOCOL_TLSv1
return SSLSocket(sock, keyfile=keyfile, certfile=certfile,
server_side=server_side, cert_reqs=cert_reqs,
ssl_version=ssl_version, ca_certs=ca_certs,
do_handshake_on_connect=do_handshake_on_connect,
suppress_ragged_eofs=suppress_ragged_eofs,
ciphers=ciphers)
ssl.wrap_socket = monkey_wrap_socket
Χαρη, οντως δουλευει απροβληματιστα, σ ευχαριστω πολυ για την προσθηκη! Δεν θα ασχολιομουν με το script για τουλαχιστον 1.5 μηνα απο τωρα, να σαι καλα που αφιερωσες το χρονο σου.
Εχει ηδη γινει το νεο commit με τα απαραιτητα credits σε σενα https://github.com/Gi0tis/Forthnet-SMS/commit/a05a58c18776766925dcdaad205e28c0d56c2383
Δυστηχως αυτη τι στιγμη το script δεν παιζει, μου βγαζει
try: _create_unverified_https_context = ssl._create_unverified_context except AttributeError: # Legacy Python that doesn’t verify HTTPS certificates by default pass else: # Handle target environment that doesn’t support HTTPS verification ssl._create_default_https_context = _create_unverified_https_context
μηπως εχουμε κανενα νεο?