#coding=GB18030
import httplib, urllib
from hashlib import sha1, md5
from rsaEncrypt import gen_key, rsa_encrypt, gen_random
import socket
import re
patt1 = re.compile('sip:(\d+)@')
patt2 = re.compile('user-id="(\d+)"')
patt_nonce = re.compile('nonce="([0-9A-Z]+)"')
patt_key = re.compile('key="([0-9A-Z]+)"')
uid_ip = "uid.fetion.com.cn"
content_patt = "/ssiportal/SSIAppSignInV4.aspx?mobileno=%s&domains=fetion.com.cn&v4digest-type=1&v4digest=%s\r\nUser-Agent: IIC2.0/pc 4.5.0900\r\nHost: uid.fetion.com.cn\r\nCache-Control: private\r\nConnection: Keep-Alive\r\n"
def sha1hex(inputTxt):
m = sha1()
m.update(inputTxt)
return m.hexdigest()
def sha1bin(inputTxt):
m = sha1()
m.update(inputTxt)
return m.digest()
def get_mac_hash():
from uuid import getnode as get_mac
from struct import pack
from binascii import b2a_hex
mac = get_mac()
return sha1hex(b2a_hex(pack('!q',mac))).upper()
def get_login_IDs(phoneNum, password):
passwd = sha1hex('fetion.com.cn:%s'%password)
usrID = 0
content = content_patt%(phoneNum, passwd)
conn = httplib.HTTPSConnection(uid_ip)
conn.request("GET", content)
response = conn.getresponse()
if(200 == response.status):
data = response.read()
conn.close()
find_sip = patt1.findall(data)
find_usrid = patt2.findall(data)
if(find_sip):
fetionID = find_sip[0] #fetionID
if(find_usrid):
usrID = int(find_usrid[0]) #userID
return fetionID, usrID
def login(fetionID, usrID, password):
usrIDT = ''.join([chr((usrID>>(i*8))&0xFF) for i in range(4)])
passwdb = sha1bin('fetion.com.cn:%s'%password)
midT = sha1bin(usrIDT + passwdb)
#CMC = "221.176.31.48" CUC = "115.181.16.75" -- fetion server for chinaMobile & Unicom
CTC = '58.68.229.75' # The remote host - China Telecom fetion server
PORT = 8080 # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((CTC, PORT))
login_packet_1 = open('logon.dat','rb').read()%gen_random()
s.send(login_packet_1)
data = s.recv(2048)
# get login challenge words
nonce = patt_nonce.findall(data)[0]
keyTxt = patt_key.findall(data)[0]
miwen = ''.join([nonce, midT, gen_random()])
key = gen_key(keyTxt)
resp = rsa_encrypt(key , miwen)
login_packet_2 = open('logon2.dat','rb').read()%(resp)
s.send(login_packet_2)
data = s.recv(2048)
print data
if(data.find('200 OK')>=0):
print 'Login success!'
return True, s
else:
print 'Login failed!'
return None
if '__main__'==__name__ :
password = '?????'
fetionID, usrID = get_login_IDs('???????????', password)
r , s = login(fetionID, usrID, password)
sms = 'こんにちは'.decode('gb18030').encode('utf8')
if(r):
sms_content = open('sendsms.dat','rb').read()%(len(sms), sms)
s.send(sms_content)
print s.recv(2048)
s.close()
垃圾代码一堆
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.