利用飞信制作免费短信提醒
2009-08-01 06:42
375 查看
最近在网上看到很牛人发布的分析的飞信协议的确很不错,只是让人不快的是只提供一些做好的接口或成品exe,用户难免会为自己飞信密码担心是否安全。在接下来的时间决定写一个小程序以实现飞信在登陆到发送短信过程中的各个环节。
根据前面各位牛人的经验步骤我这里就省略不说了,对于抓包工具是采用的自制的NetworkLook程序,将包并存到记事本进行分析。
第一步:向SSIPortal登录
请求地址:https://nav.fetion.com.cn/ssiportal/SSIAppSignIn.aspx?mobileno=134XXXXXXXX&pwd=XXXX
目的:通过手机号及密码获取自己的飞信号,同时获取请求中cookie中的SSIC值,这个值将去在后面的web请求中用到。
第二步:与服务器221.176.31.1第一次通信
当然并不一定是这个地址。这个地址可以通过 以POST(我是用的Post)Nav.fetion.com.cn/nav/getsystemconfig.aspx获取系统的详细服务器地址。
发此地址发送:
F: 641142419
I: 1
Q: 1 R
L: 249
<args><device type="PC" version="0" client-version="3.3.0370" /><caps value="simple-im;im-session;temp-group;personal-group" /><events value="contact;permission;system-message;personal-group" /><user-info attributes="all" /><presence><basic value="400" desc="" /></presence></args>
此时服务器会返回一个带有nonce值的回复串。
第三步:与服务器221.176.31.1第二次通信(登陆)
本次通信将用到第一次通信的nonce值与飞信号,飞信密码,以及飞信的Hash密码,计算机一个response
计算方式(引用nathan2007)为:
计算response和cnonce需要用到sid(飞信号)、password、domain(fetion.com.cn)、nonce。飞信计算cnonce是用了4个随机数组成一个16进制的字符串然后求这个字符串的MD5,responce的计算方法是:
1.求"sid:domain:passwd"这个utf8字符串的MD5值,得出key
2.求"key:nonce:cnonce"这个utf8字符串的MD5字符串,得出H1
3.求“REGISTER:sid"这个utf8字符串的MD5字符串,得出H2
4.求"H1:nonce:H2"这个utf8字符串的MD5字符串,即为response.
R fetion.com.cn SIP-C/2.0
F: 641142419
I: 1
Q: 2 R
A: Digest response="xxxxxxxxxxxxxxx",cnonce="xxxxxxxxxxxxxxxx" ----------(cnonce为四个随机数加密码得来)
L: 249
<args><device type="PC" version="0" client-version="3.3.0370" /><caps value="simple-im;im-session;temp-group;personal-group" /><events value="contact;permission;system-message;personal-group" /><user-info attributes="all" /><presence><basic value="400" desc="" /></presence></args>
请求后,便可以登陆了。
此处先布一个测试。
http://www.tech138.cn/sms/default.aspx
计算Hash密码:
public class HashPasswod
{
public static string DoHashPassword(byte[] password)
{
byte[] bytes = BitConverter.GetBytes(Environment.TickCount);
return DoHashPassword(password, bytes);
}
public static string DoHashPassword(string pwd)
{
char[] chars = pwd.ToCharArray();
return DoHashPassword(Encoding.UTF8.GetBytes(chars));
}
public static string DoHashPassword(byte[] password, byte[] b0)
{
using (SHA1 sha = SHA1.Create())
{
byte[] src = sha.ComputeHash(password);
for (int i = 0; i < password.Length; i++)
{
password[i] = 0;
}
byte[] dst = new byte[b0.Length + src.Length];
Buffer.BlockCopy(b0, 0, dst, 0, b0.Length);
Buffer.BlockCopy(src, 0, dst, b0.Length, src.Length);
byte[] buffer3 = sha.ComputeHash(dst);
byte[] buffer4 = new byte[b0.Length + buffer3.Length];
Buffer.BlockCopy(b0, 0, buffer4, 0, b0.Length);
Buffer.BlockCopy(buffer3, 0, buffer4, b0.Length, buffer3.Length);
return ComputeAuthResponse.BinaryToHex(buffer4);
}
}
}
其它代码有点乱,明天整理一下在发布。Demo源码也将一起发布.
今天将昨天的发送短信代码整里了下,暂时先放出源码,源码也是东拼西凑得来.在这里就先感谢各位前辈了,不过对需要做些如:网站后台提醒,邮件提醒,或什么日程序提醒之类的还是没问题。现在只能对自己发送内容。如果想要向飞信好友发送短信(不是飞信好友不能发),就请各位自行在登陆成功之后在发送相应请求好友列表(分信协议详情这个就不在列出,网上一搜好多的,或者用抓包工具一抓就出来了。)
晕了,这个怎么上传文件的,谁给我说一下。。
到这个地址下载吧。
http://www.tech138.cn/SMS/SMS.rar
调用方式:
SMSHelper.SendSMS Send = new SMSHelper.SendSMS(“手机号”,"密码","内容支持中文");
Send.SendMessage();
根据前面各位牛人的经验步骤我这里就省略不说了,对于抓包工具是采用的自制的NetworkLook程序,将包并存到记事本进行分析。
第一步:向SSIPortal登录
请求地址:https://nav.fetion.com.cn/ssiportal/SSIAppSignIn.aspx?mobileno=134XXXXXXXX&pwd=XXXX
目的:通过手机号及密码获取自己的飞信号,同时获取请求中cookie中的SSIC值,这个值将去在后面的web请求中用到。
第二步:与服务器221.176.31.1第一次通信
当然并不一定是这个地址。这个地址可以通过 以POST(我是用的Post)Nav.fetion.com.cn/nav/getsystemconfig.aspx获取系统的详细服务器地址。
发此地址发送:
F: 641142419
I: 1
Q: 1 R
L: 249
<args><device type="PC" version="0" client-version="3.3.0370" /><caps value="simple-im;im-session;temp-group;personal-group" /><events value="contact;permission;system-message;personal-group" /><user-info attributes="all" /><presence><basic value="400" desc="" /></presence></args>
此时服务器会返回一个带有nonce值的回复串。
第三步:与服务器221.176.31.1第二次通信(登陆)
本次通信将用到第一次通信的nonce值与飞信号,飞信密码,以及飞信的Hash密码,计算机一个response
计算方式(引用nathan2007)为:
计算response和cnonce需要用到sid(飞信号)、password、domain(fetion.com.cn)、nonce。飞信计算cnonce是用了4个随机数组成一个16进制的字符串然后求这个字符串的MD5,responce的计算方法是:
1.求"sid:domain:passwd"这个utf8字符串的MD5值,得出key
2.求"key:nonce:cnonce"这个utf8字符串的MD5字符串,得出H1
3.求“REGISTER:sid"这个utf8字符串的MD5字符串,得出H2
4.求"H1:nonce:H2"这个utf8字符串的MD5字符串,即为response.
R fetion.com.cn SIP-C/2.0
F: 641142419
I: 1
Q: 2 R
A: Digest response="xxxxxxxxxxxxxxx",cnonce="xxxxxxxxxxxxxxxx" ----------(cnonce为四个随机数加密码得来)
L: 249
<args><device type="PC" version="0" client-version="3.3.0370" /><caps value="simple-im;im-session;temp-group;personal-group" /><events value="contact;permission;system-message;personal-group" /><user-info attributes="all" /><presence><basic value="400" desc="" /></presence></args>
请求后,便可以登陆了。
此处先布一个测试。
http://www.tech138.cn/sms/default.aspx
计算Hash密码:
public class HashPasswod
{
public static string DoHashPassword(byte[] password)
{
byte[] bytes = BitConverter.GetBytes(Environment.TickCount);
return DoHashPassword(password, bytes);
}
public static string DoHashPassword(string pwd)
{
char[] chars = pwd.ToCharArray();
return DoHashPassword(Encoding.UTF8.GetBytes(chars));
}
public static string DoHashPassword(byte[] password, byte[] b0)
{
using (SHA1 sha = SHA1.Create())
{
byte[] src = sha.ComputeHash(password);
for (int i = 0; i < password.Length; i++)
{
password[i] = 0;
}
byte[] dst = new byte[b0.Length + src.Length];
Buffer.BlockCopy(b0, 0, dst, 0, b0.Length);
Buffer.BlockCopy(src, 0, dst, b0.Length, src.Length);
byte[] buffer3 = sha.ComputeHash(dst);
byte[] buffer4 = new byte[b0.Length + buffer3.Length];
Buffer.BlockCopy(b0, 0, buffer4, 0, b0.Length);
Buffer.BlockCopy(buffer3, 0, buffer4, b0.Length, buffer3.Length);
return ComputeAuthResponse.BinaryToHex(buffer4);
}
}
}
其它代码有点乱,明天整理一下在发布。Demo源码也将一起发布.
今天将昨天的发送短信代码整里了下,暂时先放出源码,源码也是东拼西凑得来.在这里就先感谢各位前辈了,不过对需要做些如:网站后台提醒,邮件提醒,或什么日程序提醒之类的还是没问题。现在只能对自己发送内容。如果想要向飞信好友发送短信(不是飞信好友不能发),就请各位自行在登陆成功之后在发送相应请求好友列表(分信协议详情这个就不在列出,网上一搜好多的,或者用抓包工具一抓就出来了。)
晕了,这个怎么上传文件的,谁给我说一下。。
到这个地址下载吧。
http://www.tech138.cn/SMS/SMS.rar
调用方式:
SMSHelper.SendSMS Send = new SMSHelper.SendSMS(“手机号”,"密码","内容支持中文");
Send.SendMessage();
相关文章推荐
- 你的NAGIOS还在用飞信吗?其实还有一种免费短信提醒方式!
- 利用飞信免费发送短信的网页插件---FetionWidget-1.0-beta
- 教你如何免费获取飞信的每日天气短信提醒
- PHP免费发送短信代码(利用中国移动飞信)(1/3)
- 利用139邮箱的免费短信提醒作为报警接口
- 让 PHP 程序利用飞信(Fetion)发免费短信
- 飞信免费发送短信接口
- 系统监控:linux命令行-飞信客户端发送免费报警短信
- 利用飞信api和rss对园友博客监控与提醒
- 利用webSevice量身定制天气预报短信提醒
- JAVA利用短信平台API免费发送短信的程序
- C# winform 免费短信提醒方式
- 简单的飞信API (免费短信.飞信) 自制
- 三分钟免费搞定网站在线客服 源代码(利用了PowerTalkBox控件制作而成)
- 利用免费软件备份博客并制作成CHM
- c#用飞信免费发送短信
- C#通过飞信WebService发送免费短信
- 程序调用飞信API发送免费短信(JAVA例子,其他语言一样用)
- 系统监控:linux命令行-飞信客户端发送免费报警短信
- JAVA利用飞信接口发送短信