FluorineFx.IO.AMFMessage
近日玩网页游戏七雄争霸,觉得还可以,但是玩起来太累,所以想自己开发个辅助试试
从网上找到了个《流年网页游戏辅助VIP系列教程》,看了下,遇到了一个问题
特来请高手指点。。。。。。
代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Web;
using System.Net.Sockets;
using System.IO;
using FluorineFx;
using FluorineFx.IO;
using FluorineFx.Messaging;
using FluorineFx.Messaging.Messages;
using FluorineFx.AMF3;
using FluorineFx.Net;
using System.Threading;
namespace 异步传输
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Btn_CLose_Click(object sender, EventArgs e)
{
Application.Exit();
}
public static byte[] bbb;
public static byte[] ZuiZhong;
private void Btn_ShengChengAmf_Click(object sender, EventArgs e)
{
txt_log.Clear();
ByteArray g = new ByteArray();//声明一个byteArray数组
AMFMessage _amf3 = new AMFMessage(3);//定义一条AMF消息
AMFBody _amfbody = new AMFBody(txt_Target.Text, txt_Respones.Text,null);//定义一个body消息
_amf3.AddBody(_amfbody);
MemoryStream _Memory = new MemoryStream();//内存流
AMFSerializer _Serializer = new AMFSerializer(_Memory);//序列化
_Serializer.WriteMessage(_amf3);//将消息写入
byte[] _buffer = _Memory.ToArray();
txt_LogAmf.Text = System.BitConverter.ToString(_buffer).ToString();
byte[] pinjie = { 00, 00, 00, 12, 10, 00, 00, 00, 01, 17, 12, 09, 48, 130, 174, 83 };//需要拼接的参数
byte[] data3 = new byte[_buffer.Length + pinjie.Length - 5];//定义data3的长度
System.Array.Copy(_buffer, 0, data3, 0, _buffer.Length - 5);//复制两个字节数组到一个字节数组,复制到data3
System.Array.Copy(pinjie, 0, data3, _buffer.Length - 5, pinjie.Length);//↑
bbb = data3;
txt_LogAll.Text = System.BitConverter.ToString(data3);//将data3转换成为16进制
foreach (byte uu in data3)
{
txt_LogString.Text += uu.ToString()+";";//遍历data3中的十进制字节
}
foreach (byte jj in _buffer)
{
txt_log.Text += jj.ToString() + "\r\n";
}
}
private void btn_AllClearn_Click(object sender, EventArgs e)
{
txt_LogAmf.Clear();
txt_log.Clear();
}
//用Socket发送消息的封装类定义
public class SocketSendReceiveMs
{
public AutoResetEvent ThreadEvent = new AutoResetEvent(false);
public byte[] recvBytes = new byte[1024];
public MemoryStream Stream1 = new MemoryStream();
public Socket c;
public AMFMessage SendMsg;
public AcknowledgeMessage ReceMsg;
public object ReslutValue = null;
public SocketSendReceiveMs()//构造函数
{
c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
c.ReceiveTimeout = 100;
}
}
private void Btn_SendAMF_Click(object sender, EventArgs e)
{
SocketSendReceiveMs ssrems = new SocketSendReceiveMs();
string sendString = "POST /dynasty/messagebroker/amf HTTP/1.1\r\nAccept: */*\r\nAccept-Language: zh-CN\r\nReferer:" + txt_Referer.Text.Trim() + "\r\nx-flash-version: 11,5,502,110\r\nContent-Type: application/x-amf\r\nAccept-Encoding: gzip, deflate\r\nHost:"+txt_Host.Text+"\r\n"
+ "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; EmbeddedWB 14.52 from: http://www.bsalsa.com/ EmbeddedWB 14.52; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)\r\n"
+ "Connection: Keep-Alive\r\nContent-Length:57\r\n"
+ "Cache-Control: no-cache\r\n"
+ "Cookie:" + txt_Cook.Text.Trim() + "\r\n\r\n";
Byte[] ByteGet = Encoding.ASCII.GetBytes(sendString);
MemoryStream _MemoryStream = new MemoryStream();
_MemoryStream.Write(ByteGet, 0, ByteGet.Length);
_MemoryStream.Write(bbb, 0, bbb.Length);
IPAddress _ip = IPAddress.Parse(txt_Ip.Text);
IPEndPoint EPhost = new IPEndPoint(_ip, 80);
ssrems.c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
ssrems.c .Connect(EPhost);
}
catch
{
MessageBox.Show("对不起,链接出错!请检查网络链接!");
}
if (!ssrems.c.Connected)
{
MessageBox.Show("链接失败!");
}
try
{
ssrems.c.Send(_MemoryStream.ToArray(), _MemoryStream.ToArray().Length, 0);
ssrems.ThreadEvent.WaitOne(6000);
}
catch
{
MessageBox.Show("sorry!SendMessage Erro!");
}
try
{
ssrems.c.BeginReceive(ssrems.recvBytes, 0, 1024, SocketFlags.None, new AsyncCallback(EX), ssrems);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
public void EX(IAsyncResult ar)
{
SocketSendReceiveMs tmpSRMsg = (SocketSendReceiveMs)ar.AsyncState;
int re = 0;
try
{
re = tmpSRMsg.c.EndReceive(ar);
tmpSRMsg.ThreadEvent.Set();
}
catch (Exception se)
{
MessageBox.Show("错误" + se.Message, "提示信息", MessageBoxButtons.RetryCancel, MessageBoxIcon.Information);
}
}
private void Form1_Load(object sender, EventArgs e)
{
if (File.Exists(Application.StartupPath + "/文本信息.txt"))
{
string hh = File.ReadAllText(Application.StartupPath + "/文本信息.txt", UTF8Encoding.UTF8);
string[] _ShuZu = hh.Split('~');
txt_Cook.Text = _ShuZu[0].ToString();
txt_Host.Text = _ShuZu[2].ToString();
txt_Referer.Text = _ShuZu[1].ToString();
txt_Ip.Text = _ShuZu[3].ToString();
txt_Respones.Text = _ShuZu[4].ToString();
txt_Target.Text = _ShuZu[5].ToString();
}
else
{
return;
}
}
private void Btn_SavePeiZhi_Click(object sender, EventArgs e)
{
string str = string.Format("{0}~{1}~{2}~{3}~{4}~{5}~",
txt_Cook.Text,
txt_Referer.Text,
txt_Host.Text,
txt_Ip.Text,
txt_Respones.Text,
txt_Target.Text);
File.WriteAllText(Application.StartupPath + "/文本信息.txt", str, UTF8Encoding.UTF8);
}
private void Btn_Close_Click_1(object sender, EventArgs e)
{
Application.Exit();
}
}
}
标红的地方即为不明之处。
生成了AMF消息,序列化为字节数组。
“byte[] pinjie = { 00, 00, 00, 12, 10, 00, 00, 00, 01, 17, 12, 09, 48, 130, 174, 83 };//需要拼接的参数”,从何而来,又是干什么用的。
水平有限
请高手指点
FluorineFx.IO.AMFMessage的更多相关文章
- 模拟登录,发送amf类型数据
参考 http://blog.csdn.net/amandag/article/details/5666219 以及 稍微修改了一下AMFPost的类 一.登录 登录过程中主要用到标红的3个请 ...
- VS2015编译GEOS
下载链接:http://trac.osgeo.org/geos/ 1. 打开cmake,加载geos源码和定位geos的工程存放位置: 2.点击configure,会报错,首先设置CMAKE_INST ...
- 利用FluorineFx的ByteArray上传图片
Flex端利用new PNGEncoder().encode(bitmapData)将png图片转换为ByteArray,然后传给服务器,服务端需要定义一个public ByteArray Uploa ...
- 高性能IO模型浅析
高性能IO模型浅析 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型. (2)同步非阻塞IO(Non-blocking ...
- 深究标准IO的缓存
前言 在最近看了APUE的标准IO部分之后感觉对标准IO的缓存太模糊,没有搞明白,APUE中关于缓存的部分一笔带过,没有深究缓存的实现原理,这样一本被吹上天的书为什么不讲透彻呢?今天早上爬起来赶紧找了 ...
- [APUE]标准IO库(下)
一.标准IO的效率 对比以下四个程序的用户CPU.系统CPU与时钟时间对比 程序1:系统IO 程序2:标准IO getc版本 程序3:标准IO fgets版本 结果: [注:该表截取自APUE,上表中 ...
- [APUE]标准IO库(上)
一.流和FILE对象 系统IO都是针对文件描述符,当打开一个文件时,即返回一个文件描述符,然后用该文件描述符来进行下面的操作,而对于标准IO库,它们的操作则是围绕流(stream)进行的. 当打开一个 ...
- [.NET] 利用 async & await 进行异步 IO 操作
利用 async & await 进行异步 IO 操作 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/6082673.html 序 上次,博主 ...
- [原] KVM 虚拟化原理探究(6)— 块设备IO虚拟化
KVM 虚拟化原理探究(6)- 块设备IO虚拟化 标签(空格分隔): KVM [toc] 块设备IO虚拟化简介 上一篇文章讲到了网络IO虚拟化,作为另外一个重要的虚拟化资源,块设备IO的虚拟化也是同样 ...
随机推荐
- BZOJ:4826: [Hnoi2017]影魔
Description 影魔,奈文摩尔,据说有着一个诗人的灵魂.事实上,他吞噬的诗人灵魂早已成千上万.千百年来,他收集了各式各样的灵魂,包括诗人.牧师.帝王.乞丐.奴隶.罪人,当然,还有英雄.每一个灵 ...
- BZOJ 1041: [HAOI2008]圆上的整点【数论,解方程】
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4210 Solved: 1908[Submit][Sta ...
- [bzoj1819] [JSOI]Word Query电子字典
正解是trie树...在树上跳来跳去什么的 然而在企鹅qq那题的影响下我写了hash... 添加一个字母到一个串,就相当于另一个串删对应位置上的字母. 改变某个位置上的字母,就相当于两个字符串删掉同一 ...
- $(function(){...});的作用
这是JQuery的语法,$表示JQuery对象,可以有好几种用法.比如传递选择器字符串.页面对象等,如果直接传函数体进去,表示网页加载完毕后要执行的意思.和JAVASCRIPT原来的这个是一样的: w ...
- addslashes() 函数返回在预定义字符之前添加反斜杠的字符串
. 预定义字符是: 单引号(') 双引号(") 反斜杠(\) NULL 提示:该函数可用于为存储在数据库中的字符串以及数据库查询语句准备字符串. 注释:默认地,PHP 对所有的 GET.PO ...
- 怎么用Sublime查找替换整个文件夹下的所有文件内容?
https://segmentfault.com/q/1010000003946095 工程目录下有很多图片路径要修改,很多散落在各个文件夹. 2015年11月03日提问 评论 邀请回答 编辑 4个回 ...
- 邓_phpcms_数据库
phpcms v9 数据表结构 在线版 PHPCMS V9 数据结构 (2010-12-28) 表 1 : v9_admin 管理员表 字段 类型 Null 默认 额外 注释 userid mediu ...
- Java数据库基础(JDBC)
JDBC(Java Data Base Connectivity):SUN公司为了简化统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC: 这样应用程序就不需要关注数据库底层的详细 ...
- 自学python Day01
What is Python 1. 面向对象的解释行语言 2. 非常丰富的库 3. 使用制表符作为语句缩进 (white space) 优点: 1. 免费.开源 2. 可扩展性.可嵌入性 3. 非常丰 ...
- char,varchar,nvarchar,text区别与联系
CHAR,NCHAR 定长,速度快,占空间大,需处理VARCHAR,NVARCHAR,TEXT 不定长,空间小,速度慢,无需处理NCHAR.NVARCHAR.NTEXT处理Unicode码