吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9937|回复: 42
收起左侧

[C&C++ 转载] 热血江湖自动查询器制作

  [复制链接]
猪行天下 发表于 2020-6-12 23:19
本帖最后由 猪行天下 于 2020-6-12 23:41 编辑

                                                                                                                                        热血江湖自动查询器制作
        N久没玩网游,某天心血来潮想去了热血江湖,如是用以前的账号,尝试着无聊一下,结果发现热血江湖现在竟然异常火爆,服务器满线,尝试着登录的几个大号都满线,不只知道啥时候能登录,郁闷了一下,于是便有了下面的文章。
        既然都满线,那不如试试弄个查线器,定时看看那个线路能进入。其实工具代码很好写,难得是思路。既然要做个查线器,查线肯定和网络有关,有了这想法,便拿起大学所学的WIRESHARK抓了下包,功夫不负有心人,分析了数据包,终于找到了思路和方法。具体操作,听我一一道来。-_-
        WIRESHARK抓包还是很强大的,既然是数据包,肯定少不了IP和端口,那么IP和端口如何得到?方法有二,先说其一。首先打开热血江湖安装包,目录文件如下:
                                                                            1.png
        看到这些文件,先不管三七二十一,直接当文本打开,打开后发现,有两个文件对于咱们有用,一个是ServerInfo.txt,另一个是Session.cfg。下面分析一下这两个文件:
                                        2.png 3.png
        比较两文件前面10行,会发现一个是10个服务区,一个是10个域名,验证后不能发现域名对应的是IP,第二个文件的11到15猜测应该是端口,至于端口怎么对应,咱暂时可不用关心,后面可以通过数据包知道。SO,这里选择第8个(要发不离八,哈哈)电信四区做测试,即域名sessiond4.rxjh.cdcgames.net。有了域名,如何得到IP?这里用到一个命令nslookup,于是CMD,nslookup sessiond4.rxjh.cdcgames.net得到结果如下:
                                        4.png
        发现Addresses既然有三个,咋办,哪一个才是我们需要的?不急,WIRESHARK会告诉咱们,咱们可以在数据包中,一个个是试验。到此准备工作已经完成,下面就是干货了。
        打卡WIRESHAR,选择自己的真是网卡:
                                        4.1.png
        打开游戏,选择电四:
                                        4.2.png
        输入账号密码,登录游戏到选区界面,然后停止抓包:
                                       5.png
       下面开始分析数据包,前面得到的3个IP,咱们一个个试验,发现第一个218.30.83.35是咱们需要的(这个IP抓包可能每次会变化,但是没关系,都在这三个IP中),试验和筛选在WIRESHARK过滤框中输入如下操作:
                                     6.png
       一端是咱电脑自己的IP,一端是热血江湖服务端的IP。得到对应的数据后,就是一个个的分析。分析过程中,对于有SYN和 SYN,ACK 或只有ACK的数据可以不用看,这是TCP三次无握手的数据包。我们主要查看Info一列中的LEN 不为0的数据包。经过分析吗,你可以在包中找到自己的账号(账号未加密)和加密的密码。最终,发现可疑数据包如下:
                                     7.png
        这是服务器返回给咱的数据包,在数据包内容中发现有VIP,-1,-2等字样,同时VIP,-1,-2前都有相同的D7CFD4C2,经过字符集比对不难发现正好的是电信四区紫月的GBK编码,于是分析比对后不难发现这是咱们需要的服务器线路的状态数据(谢天谢地,竟然没加密),对半前面的服务器状态显示图分析数据知道,-1,-2等后的一个字节表示服务器的占有状态(百分比),可以看到(VIP)紫月-1 0x17(23),除了紫月-9,其他都是0xfa, 于是不难结合前面的图,FA表示服务器满员状态,紫月-9为0x63(99).
                                    8.png
        到此,服务器的状态数据咱们都得到了,但是不可能每次都是尝试登陆抓包得状态啊!咱们得写个网络连接,自动得到这些信息啊。分析这个包的前一个包(咱自己的机器发给热血江湖服务器的数据),发现给服务器发送了一个长度为4字节的16 80 00 00,同时端口为13101(在上面的配置文件第12行中)。
                                     9.png
       如上图,熟悉网络连接的人都知道,这应该是获取服务器状态的指令(咱们得先请求数据,发送指令,服务器才返回咱们需要的信息,而且从这个数据看,并未与账户密码关联,省掉咱们很多麻烦)。有了这些,咱便可以编写一个网络通信程序,解析得到咱们想要的数据。
       编程部分就暂且不讲解了(体力活),直接将DEMO提供给大家。DEMO中的测试程序如下(可自己添加一个定时器,定时的刷新显示状态):
                                     10png.png

RxjhCheckLine.7z

2.89 KB, 下载次数: 187, 下载积分: 吾爱币 -1 CB

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

cdl279 发表于 2022-5-31 15:01
#include <iostream>
#include <string>
#include <stdio.h>
#include <stdlib.h>
#include <WinSock2.h>                                                //网络连接的头

#pragma comment(lib, "ws2_32.lib")                        //网络连接API需要的静态库

#define MAX_RECV_BUFFER_LEN 4000

#define  LINEBUFFERLEN 128 //名称长度BUFFER
#define  ONELIE 26 //服务器先首地址
#define  ONELIEEND 11 //VIP长度
#define  LINEPOS 6 //每个相隔数据(此5字节不用解析)
#define  LINEDATALEN 6 //个位线的数据名长度

using namespace std;

int main()
{
        int cmdData = 8016;
        WSADATA wsaData;       
        WSAStartup(MAKEWORD(2, 2), &wsaData);                //WINDOWS SOCKR的初始化
        SOCKET sockClient = socket(PF_INET, SOCK_STREAM, 0);                //创建用户端socket


        sockaddr_in sockAddr;        //定义网络连接的结构体
        memset(&sockAddr, 0, sizeof(sockAddr));        //初始化为0
        sockAddr.sin_family = PF_INET;
        sockAddr.sin_port = htons(13102);
        sockAddr.sin_addr.s_addr = inet_addr("118.184.185.33");

        int retDate = connect(sockClient, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR));                //建立链接
        if(0 != retDate)
        {
                printf("客户端连接服务器失败,错误代码为:%d\n",GetLastError());
                return 01;
        }
        //向客户端发送数据
        int sendLen = send(sockClient, (char *)&cmdData,sizeof(int), NULL);       
        if(0 == sendLen)
        {
                printf("客户端发送服务器指令失败,错误代码为:%d\n",GetLastError());
                return 02;
        }
        //接收服务器传回的数据
        char szRecvBuffer[MAX_RECV_BUFFER_LEN] = { 0 };
        int recvLen = recv(sockClient, szRecvBuffer, MAX_RECV_BUFFER_LEN, NULL);
        if(0 == recvLen)
        {
                printf("客户端接收服务器数据失败,错误代码为:%d\n",GetLastError());
                return 03;
        }
        //cout << szRecvBuffer <<endl;
        printf("%s \n",szRecvBuffer);

        closesocket(sockClient);//关闭网络连接
        WSACleanup();
        system("pasue");
        //bufferLen = recvLen;
        return 0;

}
我学习大佬的帖子,想写一个自动登录器,思路就是查到线路空闲就 模拟按键 登陆。
求大佬帮忙看看,为什么 我 打印不出来任何数据呢?
纳锋 发表于 2021-11-23 21:17
yuxuan2015 发表于 2021-11-9 08:22
WEP能发包,,但是接收的包  不会处理

得到的数据:
17 80 0F 03 04 00 5E 00 0A 00 E5 D0 D2 A3 28 D0 C2 B7 FE 29 5A 00 00 00 01 00 0C 00 01 00 14 00 28 56 49 50 29 E5 D0 D2 A3 28 D0 C2 B7 FE 50 56 45 29 2D 31 FA 00 02 00 14 00 28 56 49 50 29 E5 D0 D2 A3 28 D0 C2 B7 FE 50 56 45 29 2D 32 FA 00 03 00 11 00 28 56 49 50 29 E5 D0 D2 A3 28 D0 C2 B7 FE 29 2D 33 FA 00 04 00 11 00 28 56 49 50 29 E5 D0 D2 A3 28 D0 C2 B7 FE 29 2D 34 52 00 05 00 11 00 28 56 49 50 29 E5 D0 D2 A3 28 D0 C2 B7 FE 29 2D 35 4F 00 06 00 14 00 28 56 49 50 29 E5 D0 D2 A3 28 D0 C2 B7 FE 50 56 45 29 2D 36 63 00 07 00 0F 00 E5 D0 D2 A3 28 D0 C2 B7 FE 50 56 45 29 2D 37 FA 00 08 00 0C 00 E5 D0 D2 A3 28 D0 C2 B7 FE 29 2D 38 FA 00 09 00 0C 00 E5 D0 D2 A3 28 D0 C2 B7 FE 29 2D 39 FA 00 0A 00 0D 00 E5 D0 D2 A3 28 D0 C2 B7 FE 29 2D 31 30 FA 00 0B 00 15 00 28 56 49 50 29 E5 D0 D2 A3 28 D0 C2 B7 FE 50 56 45 29 2D 31 31 62 00 0C 00 15 00 28 56 49 50 29 E5 D0 D2 A3 28 D0 C2 B7 FE 50 56 45 29 2D 31 32 63 00 5D 00 04 00 B0 D4 D2 B5 58 00 00 00 01 00 0A 00 01 00 0B 00 28 56 49 50 29 B0 D4 D2 B5 2D 31 4F 00 02 00 0B 00 28 56 49 50 29 B0 D4 D2 B5 2D 32 32 00 03 00 06 00 B0 D4 D2 B5 2D 33 FA 00 04 00 06 00 B0 D4 D2 B5 2D 34 FA 00 05 00 06 00 B0 D4 D2 B5 2D 35 FA 00 06 00 06 00 B0 D4 D2 B5 2D 36 FA 00 07 00 06 00 B0 D4 D2 B5 2D 37 FA 00 08 00 06 00 B0 D4 D2 B5 2D 38 FA 00 09 00 06 00 B0 D4 D2 B5 2D 39 FA 00 0A 00 07 00 B0 D4 D2 B5 2D 31 30 FA 00 5C 00 04 00 B2 D4 D4 C2 5C 00 00 00 01 00 0A 00 01 00 0B 00 28 56 49 50 29 B2 D4 D4 C2 2D 31 4E 00 02 00 06 00 B2 D4 D4 C2 2D 32 FA 00 03 00 06 00 B2 D4 D4 C2 2D 33 FA 00 04 00 06 00 B2 D4 D4 C2 2D 34 FA 00 05 00 06 00 B2 D4 D4 C2 2D 35 FA 00 06 00 06 00 B2 D4 D4 C2 2D 36 FA 00 07 00 06 00 B2 D4 D4 C2 2D 37 FA 00 08 00 06 00 B2 D4 D4 C2 2D 38 FA 00 09 00 06 00 B2 D4 D4 C2 2D 39 FA 00 0A 00 07 00 B2 D4 D4 C2 2D 31 30 FA 00 5B 00 04 00 D0 C7 CB AA 52 00 00 00 01 00 0C 00 01 00 0B 00 28 56 49 50 29 D0 C7 CB AA 2D 31 63 00 02 00 0B 00 28 56 49 50 29 D0 C7 CB AA 2D 32 5F 00 03 00 0B 00 28 56 49 50 29 D0 C7 CB AA 2D 33 3F 00 04 00 0B 00 28 56 49 50 29 D0 C7 CB AA 2D 34 41 00 05 00 06 00 D0 C7 CB AA 2D 35 FA 00 06 00 06 00 D0 C7 CB AA 2D 36 FA 00 07 00 06 00 D0 C7 CB AA 2D 37 FA 00 08 00 06 00 D0 C7 CB AA 2D 38 FA 00 09 00 06 00 D0 C7 CB AA 2D 39 FA 00 0A 00 07 00 D0 C7 CB AA 2D 31 30 FA 00 0B 00 0C 00 28 56 49 50 29 D0 C7 CB AA 2D 31 31 3D 00 0C 00 0C 00 28 56 49 50 29 D0 C7 CB AA 2D 31 32 3A 00
(VIP)逍遥(新服PVE)-1 满线
(VIP)逍遥(新服PVE)-2 满线
(VIP)逍遥(新服)-3 满线
(VIP)逍遥(新服)-4 82%
(VIP)逍遥(新服)-5 79%
(VIP)逍遥(新服PVE)-6 99%
逍遥(新服PVE)-7 满线
逍遥(新服)-8 满线
逍遥(新服)-9 满线
逍遥(新服)-10 满线
(VIP)逍遥(新服PVE)-11 98%
(VIP)逍遥(新服PVE)-12 99%
hackip 发表于 2020-6-12 23:39
KPKP 发表于 2020-6-12 23:46
感谢分享
asdone77 发表于 2020-6-12 23:46
这多少年前的游戏了,居然这么火爆,可怕
pengtusheng 发表于 2020-6-12 23:48
现在都是 几十开的,所以才满线
映月流殇 发表于 2020-6-13 00:32
感谢分享 童年记忆啊
2321490 发表于 2020-6-13 00:48
感谢分享!@!
447094783 发表于 2020-6-13 06:26
已经忘了这游戏有多少年了
Erza 发表于 2020-6-13 06:33
感谢分享
黑馒头和白米饭 发表于 2020-6-13 07:36
好几年都不玩了,77医生的账号密码都忘了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 07:10

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表