Add files via upload

This commit is contained in:
Bluzume 2021-07-01 20:23:06 -07:00 committed by GitHub
parent 95a0ee6df6
commit 3871cc02b0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 2770 additions and 0 deletions

25
Horse Isle Hack Tool.sln Normal file
View File

@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30114.105
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Horse Isle Hack Tool", "Horse Isle Hack Tool\Horse Isle Hack Tool.csproj", "{6E6C88BC-D138-42F7-B1C8-6A4E0125C69D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{6E6C88BC-D138-42F7-B1C8-6A4E0125C69D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6E6C88BC-D138-42F7-B1C8-6A4E0125C69D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6E6C88BC-D138-42F7-B1C8-6A4E0125C69D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6E6C88BC-D138-42F7-B1C8-6A4E0125C69D}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {076217DF-D386-48C6-81E4-74B06822BEE0}
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>

View File

@ -0,0 +1,87 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{6E6C88BC-D138-42F7-B1C8-6A4E0125C69D}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>Horse_Isle_Hack_Tool</RootNamespace>
<AssemblyName>Horse Isle Hack Tool</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="HorseIsleHack.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="HorseIsleHack.Designer.cs">
<DependentUpon>HorseIsleHack.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="HorseIsleHack.resx">
<DependentUpon>HorseIsleHack.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\item_ids.txt" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@ -0,0 +1,310 @@
namespace Horse_Isle_Hack_Tool
{
partial class hi1HackTool
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.hackItNow = new System.Windows.Forms.Button();
this.connectionOuput = new System.Windows.Forms.TextBox();
this.serverEntry = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.usernameEntry = new System.Windows.Forms.TextBox();
this.passwordEntry = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.addItems = new System.Windows.Forms.ListBox();
this.itemList = new System.Windows.Forms.ComboBox();
this.label5 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.addItem = new System.Windows.Forms.Button();
this.label7 = new System.Windows.Forms.Label();
this.count = new System.Windows.Forms.NumericUpDown();
this.hackProgress = new System.Windows.Forms.ProgressBar();
this.removeSelected = new System.Windows.Forms.Button();
this.loginButton = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.count)).BeginInit();
this.SuspendLayout();
//
// hackItNow
//
this.hackItNow.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.hackItNow.Enabled = false;
this.hackItNow.Location = new System.Drawing.Point(12, 689);
this.hackItNow.Name = "hackItNow";
this.hackItNow.Size = new System.Drawing.Size(907, 23);
this.hackItNow.TabIndex = 0;
this.hackItNow.Text = "Hack Horse Isle :3";
this.hackItNow.UseVisualStyleBackColor = true;
this.hackItNow.Click += new System.EventHandler(this.hackItNow_Click);
//
// connectionOuput
//
this.connectionOuput.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.connectionOuput.Location = new System.Drawing.Point(12, 524);
this.connectionOuput.Multiline = true;
this.connectionOuput.Name = "connectionOuput";
this.connectionOuput.Size = new System.Drawing.Size(907, 125);
this.connectionOuput.TabIndex = 1;
//
// serverEntry
//
this.serverEntry.Location = new System.Drawing.Point(59, 12);
this.serverEntry.Name = "serverEntry";
this.serverEntry.Size = new System.Drawing.Size(114, 20);
this.serverEntry.TabIndex = 2;
this.serverEntry.Text = "pintoip.horseisle.com";
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(12, 15);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(41, 13);
this.label1.TabIndex = 3;
this.label1.Text = "Server:";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(179, 15);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(58, 13);
this.label2.TabIndex = 4;
this.label2.Text = "Username:";
//
// usernameEntry
//
this.usernameEntry.Location = new System.Drawing.Point(243, 12);
this.usernameEntry.Name = "usernameEntry";
this.usernameEntry.Size = new System.Drawing.Size(133, 20);
this.usernameEntry.TabIndex = 5;
//
// passwordEntry
//
this.passwordEntry.Location = new System.Drawing.Point(444, 12);
this.passwordEntry.Name = "passwordEntry";
this.passwordEntry.PasswordChar = '*';
this.passwordEntry.Size = new System.Drawing.Size(157, 20);
this.passwordEntry.TabIndex = 6;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(382, 15);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(56, 13);
this.label3.TabIndex = 7;
this.label3.Text = "Password:";
//
// label4
//
this.label4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(759, 9);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(164, 13);
this.label4.TabIndex = 8;
this.label4.Text = "(ONLY sent to Horse Isle Server.)";
//
// addItems
//
this.addItems.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.addItems.FormattingEnabled = true;
this.addItems.Location = new System.Drawing.Point(12, 91);
this.addItems.Name = "addItems";
this.addItems.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended;
this.addItems.Size = new System.Drawing.Size(910, 342);
this.addItems.TabIndex = 9;
//
// itemList
//
this.itemList.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.itemList.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
this.itemList.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
this.itemList.FormattingEnabled = true;
this.itemList.Location = new System.Drawing.Point(16, 463);
this.itemList.MaxDropDownItems = 10;
this.itemList.Name = "itemList";
this.itemList.Size = new System.Drawing.Size(796, 21);
this.itemList.TabIndex = 11;
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(13, 447);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(56, 13);
this.label5.TabIndex = 12;
this.label5.Text = "Add items:";
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(12, 48);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(45, 13);
this.label6.TabIndex = 13;
this.label6.Text = "Item list:";
//
// addItem
//
this.addItem.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.addItem.Location = new System.Drawing.Point(12, 495);
this.addItem.Name = "addItem";
this.addItem.Size = new System.Drawing.Size(450, 23);
this.addItem.TabIndex = 14;
this.addItem.Text = "Add to list of items!";
this.addItem.UseVisualStyleBackColor = true;
this.addItem.Click += new System.EventHandler(this.addItem_Click);
//
// label7
//
this.label7.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(818, 466);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(38, 13);
this.label7.TabIndex = 15;
this.label7.Text = "Count:";
//
// count
//
this.count.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.count.Location = new System.Drawing.Point(862, 464);
this.count.Maximum = new decimal(new int[] {
50,
0,
0,
0});
this.count.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.count.Name = "count";
this.count.Size = new System.Drawing.Size(61, 20);
this.count.TabIndex = 16;
this.count.Value = new decimal(new int[] {
1,
0,
0,
0});
//
// hackProgress
//
this.hackProgress.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.hackProgress.Location = new System.Drawing.Point(12, 660);
this.hackProgress.Name = "hackProgress";
this.hackProgress.Size = new System.Drawing.Size(907, 23);
this.hackProgress.TabIndex = 17;
//
// removeSelected
//
this.removeSelected.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.removeSelected.Location = new System.Drawing.Point(468, 495);
this.removeSelected.Name = "removeSelected";
this.removeSelected.Size = new System.Drawing.Size(451, 23);
this.removeSelected.TabIndex = 18;
this.removeSelected.Text = "Remove selected items!";
this.removeSelected.UseVisualStyleBackColor = true;
this.removeSelected.Click += new System.EventHandler(this.removeSelected_Click);
//
// loginButton
//
this.loginButton.Location = new System.Drawing.Point(607, 10);
this.loginButton.Name = "loginButton";
this.loginButton.Size = new System.Drawing.Size(56, 23);
this.loginButton.TabIndex = 19;
this.loginButton.Text = "Login";
this.loginButton.UseVisualStyleBackColor = true;
this.loginButton.Click += new System.EventHandler(this.loginButton_Click);
//
// hi1HackTool
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(931, 724);
this.Controls.Add(this.loginButton);
this.Controls.Add(this.removeSelected);
this.Controls.Add(this.hackProgress);
this.Controls.Add(this.count);
this.Controls.Add(this.label7);
this.Controls.Add(this.addItem);
this.Controls.Add(this.label6);
this.Controls.Add(this.label5);
this.Controls.Add(this.itemList);
this.Controls.Add(this.addItems);
this.Controls.Add(this.label4);
this.Controls.Add(this.label3);
this.Controls.Add(this.passwordEntry);
this.Controls.Add(this.usernameEntry);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Controls.Add(this.serverEntry);
this.Controls.Add(this.connectionOuput);
this.Controls.Add(this.hackItNow);
this.Name = "hi1HackTool";
this.Text = "Horse Isle Hack T00L";
this.Load += new System.EventHandler(this.hi1HackTool_Load);
((System.ComponentModel.ISupportInitialize)(this.count)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button hackItNow;
private System.Windows.Forms.TextBox connectionOuput;
private System.Windows.Forms.TextBox serverEntry;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox usernameEntry;
private System.Windows.Forms.TextBox passwordEntry;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.ListBox addItems;
private System.Windows.Forms.ComboBox itemList;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Button addItem;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.NumericUpDown count;
private System.Windows.Forms.ProgressBar hackProgress;
private System.Windows.Forms.Button removeSelected;
private System.Windows.Forms.Button loginButton;
}
}

View File

@ -0,0 +1,432 @@
using Horse_Isle_Hack_Tool.Properties;
using System;
using System.Collections.Generic;
using System.IO;
using System.Net.Sockets;
using System.Text;
using System.Windows.Forms;
using static System.Windows.Forms.ListBox;
namespace Horse_Isle_Hack_Tool
{
public partial class hi1HackTool : Form
{
private const byte PACKET_LOGIN = 0x7F;
private const byte PACKET_CHAT = 0x14;
private const byte PACKET_USERINFO = 0x81;
private const byte LOGIN_SUCCESS = 0x14;
private const byte CHAT_RESP_BRIGHT = 0x15;
private static byte[] SecCodeSeeds = new byte[3];
private static int SecCodeInc = 0;
private static int SecCodeCount = 0;
private static bool IsAdmin = false;
private static bool IsMod = false;
private static Socket HI1GameServer;
public hi1HackTool()
{
InitializeComponent();
}
private void hi1HackTool_Load(object sender, EventArgs e)
{
String[] ItemList = Resources.item_ids.Split('\n');
itemList.Items.AddRange(ItemList);
itemList.SelectedIndex = 0;
}
private void addItem_Click(object sender, EventArgs e)
{
int totalToAdd = (int)count.Value;
for (int i = 0; i < totalToAdd; i++)
addItems.Items.Add(itemList.SelectedItem);
}
private void removeSelected_Click(object sender, EventArgs e)
{
SelectedIndexCollection itemList = addItems.SelectedIndices;
int itemCount = itemList.Count;
if (itemCount < 1)
{
return;
}
for(int i = 0; i < itemCount; i++)
{
int item = itemList[0];
addItems.Items.RemoveAt(item);
}
}
private static void sendData(Socket hi1Server, byte[] PacketData)
{
MemoryStream ms = new MemoryStream();
ms.Write(PacketData, 0x00, PacketData.Length);
ms.WriteByte(0x00);
ms.Seek(0x00, SeekOrigin.Begin);
hi1Server.Send(ms.ToArray());
ms.Dispose();
}
private byte[] waitForResponse(Socket hi1Server)
{
while (hi1Server.Available < 1)
{
Application.DoEvents();
}
byte[] policyFileResponse = new byte[hi1Server.Available];
hi1Server.Receive(policyFileResponse);
return policyFileResponse;
}
private void writeString(Stream stream,string str)
{
byte[] stringData = Encoding.ASCII.GetBytes(str);
stream.Write(stringData,0x00,stringData.Length);
}
private string sendPolicyFileRequest(Socket hi1Server)
{
byte[] policyFileRequest = Encoding.ASCII.GetBytes("<policy-file-request/>");
sendData(hi1Server, policyFileRequest);
string policyFileResponse = Encoding.ASCII.GetString(waitForResponse(hi1Server));
return policyFileResponse;
}
public static byte[] generateSecCode()
{
var i = 0;
SecCodeCount++;
SecCodeSeeds[SecCodeCount % 3] = (byte)(SecCodeSeeds[SecCodeCount % 3] + SecCodeInc);
SecCodeSeeds[SecCodeCount % 3] = (byte)(SecCodeSeeds[SecCodeCount % 3] % 92);
i = SecCodeSeeds[0] + SecCodeSeeds[1] * SecCodeSeeds[2] - SecCodeSeeds[1];
i = Math.Abs(i);
i = i % 92;
byte[] SecCode = new byte[4];
SecCode[0] = (byte)(SecCodeSeeds[0] + 33);
SecCode[1] = (byte)(SecCodeSeeds[1] + 33);
SecCode[2] = (byte)(SecCodeSeeds[2] + 33);
SecCode[3] = (byte)(i + 33);
return SecCode;
}
private static void decodeUserInfoResponse(byte[] Packet)
{
SecCodeSeeds[0] = (byte)(Packet[1] - 33);
SecCodeSeeds[1] = (byte)(Packet[2] - 33);
SecCodeSeeds[2] = (byte)(Packet[3] - 33);
SecCodeInc = Packet[4] - 33;
if (Packet[4] == 'A')
{
IsAdmin = true;
IsMod = true;
}
else if (Packet[4] == 'M')
{
IsMod = true;
}
}
private string loginEncrypt(string text)
{
Random rng = new Random();
string ROTPOOL = "bl7Jgk61IZdnY mfDN5zjM2XLqTCty4WSEoKR3BFVQsaUhHOAx0rPwp9uc8iGve";
string POSPOOL = "DQc3uxiGsKZatMmOS5qYveN71zoPTk8yU0H2w9VjprBXWn l4FJd6IRbhgACfEL";
while (text.Length < 10)
{
text += " ";
}
while (text.Length < 16)
{
text = " " + text;
}
if (text.Length > 16)
{
text = text.Substring(0, 16);
}
string crypt = "";
int i = 0;
while (i < text.Length)
{
int pos = ROTPOOL.IndexOf(text[i]);
int rot = rng.Next(0, ROTPOOL.Length);
pos = pos + (rot + i);
while (pos >= ROTPOOL.Length)
{
pos = pos - ROTPOOL.Length;
}
crypt = crypt + ROTPOOL[rot];
crypt = crypt + POSPOOL[pos];
i++;
}
return crypt;
}
public static bool hasUserInfoResponse(byte[] FullPacket)
{
List<byte[]> result = getAllResponses(FullPacket);
foreach (byte[] Packet in result)
{
if (Packet[0] == PACKET_USERINFO)
{
decodeUserInfoResponse(Packet);
return true;
}
}
return false;
}
private static List<byte[]> getAllResponses(byte[] AllPacketData)
{
byte split = 0x00;
List<byte[]> result = new List<byte[]>();
int start = 0;
for (int i = 0; i < AllPacketData.Length; i++)
{
if (AllPacketData[i] == split && i != 0)
{
byte[] _in = new byte[i - start];
Array.Copy(AllPacketData, start, _in, 0, i - start);
result.Add(_in);
start = i + 1;
}
else if (AllPacketData[i] == split && i == 0)
{
start = i + 1;
}
else if (AllPacketData.Length - 1 == i && i != start)
{
byte[] _in = new byte[i - start + 1];
Array.Copy(AllPacketData, start, _in, 0, i - start + 1);
result.Add(_in);
}
}
return result;
}
private byte[] generateLoginRequest(string username, string password)
{
MemoryStream ms = new MemoryStream();
ms.WriteByte(0x7F);
string versionNumber = "91";
string encryptedUsername = loginEncrypt(username);
string encryptedPassword = loginEncrypt(password);
writeString(ms, versionNumber + "|" + encryptedUsername + "|" + encryptedPassword + "|\n");
ms.Seek(0x00, SeekOrigin.Begin);
byte[] requestData = ms.ToArray();
ms.Dispose();
return requestData;
}
private void giveMoneyRequest(Socket hi1Server, int amount)
{
byte[] SecCode = generateSecCode();
byte[] idStr = Encoding.ASCII.GetBytes(amount.ToString());
byte[] ByteArray = new byte[] { 0x18, 0x1E, SecCode[0], SecCode[1], SecCode[2], SecCode[3] };
MemoryStream ms = new MemoryStream();
ms.Write(ByteArray, 0x00, ByteArray.Length);
ms.Write(idStr, 0x00, idStr.Length);
ms.WriteByte(0x0a);
ms.WriteByte(0x00);
ms.Seek(0x00, SeekOrigin.Begin);
byte[] packetData = ms.ToArray();
connectionOuput.AppendText("Sending money request.\r\n"+BitConverter.ToString(packetData).Replace("-"," ")+"\r\n");
hi1Server.Send(packetData);
}
private void giveQuest(Socket hi1Server, int questId)
{
byte[] SecCode = generateSecCode();
byte[] idStr = Encoding.ASCII.GetBytes(questId.ToString());
byte[] ByteArray = new byte[] { 0x18, 0x32, SecCode[0], SecCode[1], SecCode[2], SecCode[3] };
MemoryStream ms = new MemoryStream();
ms.Write(ByteArray, 0x00, ByteArray.Length);
ms.Write(idStr, 0x00, idStr.Length);
ms.WriteByte(0x0a);
ms.WriteByte(0x00);
ms.Seek(0x00, SeekOrigin.Begin);
byte[] packetData = ms.ToArray();
hi1Server.Send(packetData);
}
private void giveItemRequest(Socket hi1Server, string itemId)
{
byte[] SecCode = generateSecCode();
byte[] idStr = Encoding.ASCII.GetBytes(Convert.ToInt32(itemId).ToString());
MemoryStream ms = new MemoryStream();
byte[] ByteArray = new byte[] { 0x18, 0x28, SecCode[0], SecCode[1], SecCode[2], SecCode[3] };
ms.Write(ByteArray, 0x00, ByteArray.Length);
ms.Write(idStr, 0x00, idStr.Length);
ms.WriteByte(0x0a);
ms.WriteByte(0x00);
ms.Seek(0x00, SeekOrigin.Begin);
connectionOuput.AppendText("Sending item request.\r\n");
hi1Server.Send(ms.ToArray());
ms.Dispose();
}
private void printChat()
{
bool do_loop = true;
while (do_loop)
{
byte[] resp = waitForResponse(HI1GameServer);
List<byte[]> result = getAllResponses(resp);
foreach (byte[] Packet in result)
{
if (Packet[0] == PACKET_CHAT)
{
if (Packet[1] == CHAT_RESP_BRIGHT)
{
if(Packet.Length - 3 <= 0)
{
do_loop = false;
break;
}
string ChatMsg = Encoding.UTF8.GetString(Packet).Substring(2, Packet.Length - 3);
connectionOuput.AppendText(ChatMsg + "\r\n");
do_loop = false;
break;
}
}
}
}
}
private void BruteForceQuestId()
{
int questId = 0;
while(true)
{
giveQuest(HI1GameServer,questId);
connectionOuput.AppendText(questId.ToString()+" - ");
printChat();
questId++;
}
}
private void hackItNow_Click(object sender, EventArgs e)
{
// Add items
// BruteForceQuestId();
ObjectCollection itemList = addItems.Items;
int itemCount = itemList.Count;
hackProgress.Maximum = itemCount;
hackProgress.Value = 0;
/* if(moneyCount.Value != 0)
{
giveMoneyRequest(HI1GameServer, (int)moneyCount.Value);
printChat();
}
*/
while (itemCount != 0)
{
string item = addItems.Items[0].ToString();
string itemId = item.Split(':')[0];
giveItemRequest(HI1GameServer, itemId);
printChat();
addItems.Items.RemoveAt(0);
itemCount = addItems.Items.Count;
hackProgress.Increment(1);
}
hackItNow.Enabled = true;
}
private void loginButton_Click(object sender, EventArgs e)
{
string server = serverEntry.Text;
string username = usernameEntry.Text;
string password = passwordEntry.Text;
if (username == "")
{
return;
}
if (password == "")
{
return;
}
// Inital handshake
Socket hi1Server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
hi1Server.Connect(server, 443);
connectionOuput.AppendText("Connected to: " + hi1Server.RemoteEndPoint + "\r\n");
connectionOuput.AppendText("Sending policy file request...\r\n");
connectionOuput.AppendText("Server responded!\r\n");
hi1Server.Close();
// Now acturally log in
HI1GameServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
HI1GameServer.Connect(server, 443);
connectionOuput.AppendText("Connected to: " + HI1GameServer.RemoteEndPoint + "\r\n");
connectionOuput.AppendText("Generating login request!\r\n");
sendData(HI1GameServer, generateLoginRequest(username, password));
byte[] resp = waitForResponse(HI1GameServer);
if (resp[1] != LOGIN_SUCCESS)
{
connectionOuput.AppendText("Login failed!!\r\n");
HI1GameServer.Close();
return;
}
else
{
connectionOuput.AppendText("Login success!\r\n");
connectionOuput.AppendText("Waiting for sec codes.\r\n");
// Request account info.
sendData(HI1GameServer, new byte[] { PACKET_LOGIN, 0x0a });
while (true)
{
resp = waitForResponse(HI1GameServer);
if (hasUserInfoResponse(resp))
{
break;
}
}
connectionOuput.AppendText("Sec Code Seed: " + BitConverter.ToString(SecCodeSeeds) + "\r\n");
connectionOuput.AppendText("Sec Code Incrementer: " + SecCodeInc + "\r\n");
loginButton.Enabled = false;
hackItNow.Enabled = true;
return;
}
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Horse_Isle_Hack_Tool
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new hi1HackTool());
}
}
}

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Horse Isle Hack Tool")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Horse Isle Hack Tool")]
[assembly: AssemblyCopyright("Copyright © 2020")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("6e6c88bc-d138-42f7-b1c8-6a4e0125c69d")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -0,0 +1,88 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Horse_Isle_Hack_Tool.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Horse_Isle_Hack_Tool.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized string similar to 0: No Object
///60: PLAYERFOOD -- Acorn ($1)
///6: PLAYERFOOD -- Apple ($10)
///70: PLAYERFOOD -- Banana ($8)
///53: PLAYERFOOD -- Blackberry ($2)
///54: PLAYERFOOD -- Blueberry ($1)
///714: PLAYERFOOD -- Bunch of Grapes ($15)
///5: PLAYERFOOD -- Cake ($30)
///341: PLAYERFOOD -- Candy Cane ($5)
///186: PLAYERFOOD -- Carrot ($5)
///61: PLAYERFOOD -- Coconut ($20)
///44: PLAYERFOOD -- Coffee ($10)
///141: PLAYERFOOD -- Cookie ($7)
///689: PLAYERFOOD -- Cotton Candy ($5)
///55: PLAYERFOOD -- Cranberry ($1)
///445: PLAYERFOOD -- Easter Egg ($500)
///331: PLA [rest of string was truncated]&quot;;.
/// </summary>
internal static string item_ids {
get {
return ResourceManager.GetString("item_ids", resourceCulture);
}
}
}
}

View File

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="item_ids" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\item_ids.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
</root>

View File

@ -0,0 +1,30 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Horse_Isle_Hack_Tool.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
return defaultInstance;
}
}
}
}

View File

@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

File diff suppressed because it is too large Load Diff