垃圾代碼一堆

#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()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章