中国移动飞信WAP网页版 http://f.10086.cn/im5/
用WAP飞信登录并向好友发送信息,同时用wireshark抓包。
1.过滤POST表单提交数据包(wireshark规则: http.request.method == POST),查找分析登陆数据
从上图可知:
登陆URL:http://f.10086.cn/im5/login/loginHtml5.action?t=1393041438687 POST数据:m=手机号&pass=密码&captchaCode=&checkCodeKey=null Referer:http://f.10086.cn/im5/login/login.action?mnative=0&t=1393041438687 Cookie:UUID=...; JSESSIONID=...; infoversion=[部分省略]
2.根据这个数据包向前寻找Cookie等参数的来源
(wireshark规则: http and ip.addr = 221.130.45.197)
从上图可知:
登陆数据包前,有2个前置页面,可获取Cookie等参数
红色框中的参数根据其数值变化情况,可推测出是距1970年1月1日之间的毫秒数
3.根据以上信息即可成功登陆WAP飞信,下面寻找向好友发送消息的数据包
从上图可知:
登陆URL:http://f.10086.cn/im5/chat/sendNewMsg.action POST数据:touserid=用户ID&msg=消息内容 Referer:http://f.10086.cn/im5/login/login.action?mnative=0&t=1393041417548 Cookie:UUID=...; JSESSIONID=...; infoversion=; cell_cookie=...; loginstatusCookie=; MarkTips=--[部分省略] 发送消息POST数据包含用户ID及消息内容 红色框请求可查询用户ID
4.请求查询用户ID页面
从上图可知:
登陆URL:http://f.10086.cn/im5/index/searchFriendsByQueryKey.action POST数据:queryKey=消息接受者手机号 Referer:http://f.10086.cn/im5/login/login.action?mnative=0&t=1393041417548 Cookie:UUID=...; JSESSIONID=...; infoversion=; cell_cookie=...; loginstatusCookie=; MarkTips=--[部分省略] 通过手机号可以查询用户ID
实现流程
1.通过前置页面获取Cookie等参数
2.提交账号、密码表单登陆
3.查询消息接受者用户ID
4.发送消息
各个页面携带Referer、Cookie等参数(必须时需要user_agent参数)
Shell脚本如下:
#!/bin/bash if [ $# -eq 0 ]; then
echo "Usage: fetion [-u name|tel] -m Message"
exit 1
fi while [ $# -gt 0 ]
do
case $1 in
-u) destination=$2
shift
;;
-m) message=$2
shift
;;
-*) echo "Usage: fetion [-u name|tel] -m Message"
exit 1
;;
*) break
;;
esac
shift
done user_id="用户ID"
password="密码" ##############################################################
#get cookie
curl -c cookie.txt http://f.10086.cn/im5/ &> /dev/null #login
post_data="m=$user_id&pass=$password&captchaCode=&checkCodeKey=null"
timestamp=$((`date +%s`+3600))
url="http://f.10086.cn/im5/login/loginHtml5.action?t=$timestamp"
curl -b cookie.txt -c cookie.txt -d $post_data $url &> /dev/null ###################################################################
#name->userid tel->userid url="http://f.10086.cn/im5/index/searchFriendsByQueryKey.action"
post_data="queryKey=$destination"
head_referer="Referer: http://f.10086.cn/im5/login/login.action?mnative=0&t=$timestamp"
result=`curl -s -b cookie.txt -H $head_referer -d $post_data $url`
#echo $result > temp
result=`echo $result | grep -o -E 'idContact":[0-9]+' | sed 's/.*://g'`
if [ -n "$result" ]; then
userid=$result
echo "Id: $userid"
else
userid="用户ID" #自己的ID,可通过添加上面注释行在temp中找到
echo "User ID does not exist!"
echo "\_[This message will be sent to your moblie phone]"
fi
#######################################################################
#seny message to myself message=${message// /%20} #replace spaces
echo "Message: $message"
msg_post_data="msg=$message&touserid=$userid"
send_url="http://f.10086.cn/im5/chat/sendNewGroupShortMsg.action"
head_referer="Referer: http://f.10086.cn/im5/login/login.action?mnative=0&t=$timestamp"
result=`curl -s -b cookie.txt -c cookie.txt -H $head_referer -d $msg_post_data $send_url` result=`echo $result | grep -o -E 'sendCode":"[0-9]{1,3}' | sed 's/.*"//g'` if [ $result -eq 200 ]; then
echo "send message success![$result]"
else
echo "send message failure![$result]"
fi