|
Decoding the Mission Packet
サーバ: Valefor
Game: FFXI
Posts: 2
By Valefor.Darkimmortal 2020-05-19 23:03:30
I'm trying to create an addon for private use to export mission progress on my characters. The mission packet is sent whenever the user zones, and that's fine for what I'm doing.
The packet id is 0x056.
When I dump the packet contents with a simple debugging dump function (shared at end of post), I get
Code { ["_junk2"] = 0,
["Current COP Mission"] = 844,
["_description"] = Updates your quest and mission log on zone and when appropriate.,
["Current SOA Mission"] = 280,
["_raw"] = V ¤¤
L ооn? T ¤¤ ,
["Current Nation Mission"] = 65535,
["_size"] = 40,
["Current ASA Mission"] = 2,
["_name"] = Quest/Mission Log,
["_dir"] = incoming,
["_id"] = 86,
["Current ACP Mission"] = 1,
["Nation"] = 1,
["Type"] = 65535,
["Current ROV Mission"] = 340,
["_sequence"] = 5,
["_junk1"] = 0,
["_data"] = [omitted by me, because it's garbled] ,
["Current MKD Mission"] = 0,
["Current ROZ Mission"] = 10,
["_unknown1"] = 1064234734,
}
Arcon's PacketViewer also shows me these same numbers.
How might I decode these numbers to something useful?
Here's the code I'm attempting to use
Code if id == 0x056 then
local p = packets.parse('incoming', original)
if notNil(p) then
Dump(p, 'test')
local Missions = {}
if notNil(p["Current COP Mission"]) then
Missions["COP"] = MissionTitles["CHAINS OF PROMATHIA"][p["Current COP Mission"]]
-- MissionTitles is an array of all mission names grifted from DarkStar
end
writeDump(Missions, "missions")
end
end
end)
Also, the dump functions, for whoever find might it useful.
Code
function writeFile(filename, text)
local file = files.new(filename)
if not file:exists() then
file:create()
end
file:append(text)
end
function Dump(o)
if type(o) == 'table' then
local s = '{ '
for k,v in pairs(o) do
if type(k) ~= 'number' then k = '"'..k..'"' end
s = s .. '['..k..'] = ' .. Dump(v) .. ','
end
return s .. '} '
else
return tostring(o)
end
end
function writeDump(o, fname)
writeFile(player.name .. '_' .. fname .. '.txt', Dump(o))
end
Thanks for any help
サーバ: Asura
Game: FFXI
Posts: 216
By Asura.Lordoftheseven 2020-05-20 00:20:50
when you finish this come talk to me $$$$$$$$$$$$$
By ksoze 2020-05-20 01:20:52
Packet fantasy 11
Asura.Eiryl
By Asura.Eiryl 2020-05-20 01:35:21
So you're basically trying to tell the game "I beat all the missions" yeah?
I don't think it's possible, thorny would absolutely do that if he could and he automates it instead.
...at least not fully, cair posted a cutscene skipper a while back
Asura.Arico
サーバ: Asura
Game: FFXI
Posts: 535
By Asura.Arico 2020-05-20 02:00:06
So you're basically trying to tell the game "I beat all the missions" yeah?
I don't think it's possible, thorny would absolutely do that if he could and he automates it instead.
...at least not fully, cair posted a cutscene skipper a while back
No... He's looking at incoming packets. He wants to be able to see which missions he's on.
This might help if you haven't seen it.
cair posted a cutscene skipper a while back
Did he? I thought he just gave someone directly a version that would only work on the mission they were stuck on.
Asura.Eiryl
By Asura.Eiryl 2020-05-20 02:06:59
He's looking at them... hoping to change them all to finished, is what I assumed. Maybe not, it's why I asked.
Cair's thing iirc sent the packet to override a cutscene that froze/wouldn't play (for the guy) but would work on any. Dunno never used it but that was my take away on that one too.
Asura.Arico
サーバ: Asura
Game: FFXI
Posts: 535
By Asura.Arico 2020-05-20 02:11:18
He's looking at them... hoping to change them all to finished, is what I assumed. Maybe not, it's why I asked.
Wouldn't work
[+]
Lakshmi.Elidyr
サーバ: Lakshmi
Game: FFXI
Posts: 912
By Lakshmi.Elidyr 2020-05-20 02:14:36
He's looking at them... hoping to change them all to finished, is what I assumed. Maybe not, it's why I asked.
Wouldn't work
^
Code
local original = original
local parsed = packets.parse("incoming", original)
self.buildMissions = function(original, parsed)
local isVisible = system["Missions Visible"]
if original and parsed then
local bits = bit.band(parsed.Type, 0xFFFF)
if bits == 0xffff then
if parsed['Current Nation Mission'] then
map["NATION"] = missions_list["nation"][parsed['Current Nation Mission']]
end
if parsed['Current ROZ Mission'] then
map["ROZ"] = missions_list["roz"][parsed['Current ROZ Mission']]
end
if parsed['Current COP Mission'] then
map["COP"] = missions_list["cop"][(parsed['Current COP Mission']-112)]
end
if parsed['Current SOA Mission'] then
map["SOA"] = missions_list["soa"][((parsed['Current SOA Mission']-110)/2-1)]
end
if parsed['Current ROV Mission'] then
map["ROV"] = missions_list["rov"][((parsed['Current ROV Mission']-110)/2-1)]
end
elseif bits == 0x0080 then
if parsed['Current TOAU Mission'] then
map["TOAU"] = missions_list["toau"][parsed['Current TOAU Mission']]
end
if parsed['Current WOTG Mission'] then
map["WOTG"] = missions_list["wotg"][parsed['Current WOTG Mission']]
end
end
end
end
That's just a small snippet of what I use to create a visual display of logs. You have to create a map of all the mission IDs with the name of the mission to match the ID.
COP and SOA formula is incorrect still, but I think the others are okay.
[+]
Asura.Eiryl
By Asura.Eiryl 2020-05-20 02:53:54
He's looking at them... hoping to change them all to finished, is what I assumed. Maybe not, it's why I asked.
Wouldn't work
That's literally what I said.
I don't think it's possible
Lakshmi.Elidyr
サーバ: Lakshmi
Game: FFXI
Posts: 912
By Lakshmi.Elidyr 2020-05-20 03:19:48
He's looking at them... hoping to change them all to finished, is what I assumed. Maybe not, it's why I asked.
Wouldn't work
That's literally what I said.
I don't think it's possible
Well to be fair they do work, most everything does if you wanna send nice screenshots to padd your FFXIAH with trash, usually corrects after you zone though.
サーバ: Asura
Game: FFXI
Posts: 3113
By Asura.Aeonova 2020-05-20 03:32:34
usually corrects after you zone though.
People tell the game they have unlocked every homepoint (including one that doesn't exist in Al Zahbi from what I've read) so I dunno why it would be tough to tell the game anything. Would be nice to just tell it 999,999,999 gil all day er' day.
[+]
Asura.Arico
サーバ: Asura
Game: FFXI
Posts: 535
By Asura.Arico 2020-05-20 03:43:17
usually corrects after you zone though.
People tell the game they have unlocked every homepoint (including one that doesn't exist in Al Zahbi from what I've read) so I dunno why it would be tough to tell the game anything. Would be nice to just tell it 999,999,999 gil all day er' day.
They're telling their client they have all homepoints, but the server knows they don't actually have all homepoints.
Lakshmi.Elidyr
サーバ: Lakshmi
Game: FFXI
Posts: 912
By Lakshmi.Elidyr 2020-05-20 03:49:51
usually corrects after you zone though.
People tell the game they have unlocked every homepoint (including one that doesn't exist in Al Zahbi from what I've read) so I dunno why it would be tough to tell the game anything. Would be nice to just tell it 999,999,999 gil all day er' day.
Lol, funny.
But seriously unlike the HQ rate packet as soon as you go to something it compares with the server I assume and instantly reverts regardless. Its all just visual. You can convert your drops to other items when they drop, but the server still know you don't have it. The menus and stuff are actually handled on the client (since your for the most part are always in status 4 which stops packet movements from what I can tell)
So if you block what the server tells the client with updated information the client will think you have those homepoints.
This trick doesn't work with all things though, same idea should work with login points, but they are stored server / updated I assume on the server side so even if I change it on my side, when I check my inventory I still get what the original item is.
I noticed SE started making a lot more menu stuff not able to be unlocked like that starting with SOA.
By RadialArcana 2020-05-20 04:25:50
I just wanna point out that with how far this stuff is being discussed here Square may decide to try take action on the website itself. Taking this ***too far.
Asura.Eiryl
By Asura.Eiryl 2020-05-20 04:29:36
Not in this universe lol
Asura.Chiaia
VIP
サーバ: Asura
Game: FFXI
Posts: 1656
By Asura.Chiaia 2020-05-20 04:55:53
Here I'll help decode the one you listed
C: Dawn
S: A New Force Arises
R: A Rhapsody for the Ages
サーバ: Asura
Game: FFXI
Posts: 3113
By Asura.Aeonova 2020-05-20 05:07:35
As if the Japanese speaking producer/devs care what goes on in the english forums. They have to make an attempt to "reach out" to feign good faith to English speakers every once in a while to give the impression that they care, but don't fool yourself into thinking they actually like anything except our money.
Edit: Granted everyone isn't as jaded as me, but due to the auto-pilot they seem to have put this game on, the extra cost to pay someone to constantly monitor anything other than the official forum posts doesn't seem likely. I guess the person with that job probably comes over to visit these forums as well as they seem to be the most active, but I believe their eyes would be more focused on FF14. I think it's a stretch to think that the English reading person that is tasked with keeping up with their forums may see this, know of the situation, but really not feel compelled to go out of their way to "get the word" to the Japanese speaking directors and/or higher-ups to really come down on this website. If anything like that was going to happen, it would have been years and years ago.
Edit #2: Even if they wanted to someone "do something" to this site, I don't really know what legal course of action they could take.
[+]
By Dazusu 2020-05-20 05:45:02
usually corrects after you zone though.
People tell the game they have unlocked every homepoint (including one that doesn't exist in Al Zahbi from what I've read) so I dunno why it would be tough to tell the game anything.
That's not technically how it works. Where these exploits come from is a lack of server side validation when making a request to teleport (Which, for an online game is really *** ridiculous - and shame on them)
The game developers left it upto the UI to enforce the game rules (in this case, which HPs you do/don't have). This is something you never do in client/server architecture.
Before you could get an assault tag every 10 minutes, it was possible to again bypass the UI and request one whenever you wanted irrespective of the 24 hour cooldown -- because again, this timeout was enforced only by the UI and not validated by the server.
There has been a laundry list of client-enforced game rules which could be bypassed over the years. They aren't so much exploits - but just people taking advantage of SE being lazy. Don't get me wrong, there has been a whole load of exploits too.
One thing they do validate that I wish they didn't... imprimatur usage.
Another one that's prolific right now, specially by salvage botters, is that when requesting a salvage permit -- even if you don't have assault points, you can go into the negative and keep getting permits indefinitely. The server assumes that if you make a request to buy a permit, that you automatically have enough points - because it's allowing the UI/client enforce that rule in the menu.
[+]
By Pantafernando 2020-05-20 06:52:10
Is it possible to actually see the games code?
サーバ: Asura
Game: FFXI
Posts: 3113
By Asura.Aeonova 2020-05-20 07:03:06
VIP
サーバ: Fenrir
Game: FFXI
Posts: 663
By Fenrir.Niflheim 2020-05-20 08:32:40
Is it possible to actually see the games code?
Depends how you define "the game".
* is it possible to see the code of the client application, yes.
* is it possible to see the code of the server application, no.
but i guess it depends how you define "see" also.
[+]
By Pantafernando 2020-05-20 08:58:06
Im mean i dont have any knowledge about actually programming a game, but supose you can see things like: "imprimateur: if time > 6h then imprimateur+1".
If you can see what "ifs" there is in a code, you can narrow down whats can be controled client side and what can not to be controlled, making it easy for the exploiters to figure where the exploit is instead trying to send a packet in every corner of the game to see if they will send you a HQ or no.
Asura.Crevox
サーバ: Asura
Game: FFXI
Posts: 370
By Asura.Crevox 2020-05-20 09:02:16
Tricking the game client into receiving false packets from the server to display false information isn't any sort of hack, it's just fooling around. It could potentially enable you to tell the server things the client wouldn't be able to by being in this state, but if you're messing with packets, you could do that anyways.
Regardless, most of this could be done by just modifying the memory of the game at run-time to display this or any other information; this is just a different way of doing it using the game's own functions.
Finally, I don't think the OP was asking about any of this. All he wants to do is export his mission progress in a serializable format. This whole discussion of somehow using this code or data as a hack to your own advantage really has nothing to do with it.
[+]
By Dazusu 2020-05-20 09:28:34
Im mean i dont have any knowledge about actually programming a game, but supose you can see things like: "imprimateur: if time > 6h then imprimateur+1".
That's all server side, we can't see that.
サーバ: Valefor
Game: FFXI
Posts: 2
By Valefor.Darkimmortal 2020-05-20 09:40:53
I know how dangerous packet injection (outgoing) is as far as getting banned. There are also probably /some/ security checks to make sure you have key items that a person on that mission would.
I'm not trying to fool anything, just want my own mission progress. Thanks to the few people with pointers and code samples.
[+]
VIP
サーバ: Fenrir
Game: FFXI
Posts: 663
By Fenrir.Niflheim 2020-05-20 10:07:17
Valefor.Darkimmortal said: »I know how dangerous packet injection (outgoing) is as far as getting banned. There are also probably /some/ security checks to make sure you have key items that a person on that mission would.
I'm not trying to fool anything, just want my own mission progress. Thanks to the few people with pointers and code samples.
I would also suggest going to the windower discord for more advice, we have a pretty active development channel where you can get help from us or other addon developers.
[+]
Valefor.Omnys
サーバ: Valefor
Game: FFXI
Posts: 1759
By Valefor.Omnys 2020-05-20 11:04:16
Thanks Nif, I'll try to hit that tomorrow.
Lakshmi.Avereith
サーバ: Lakshmi
Game: FFXI
Posts: 1214
By Lakshmi.Avereith 2020-05-20 11:18:28
I just want mission status decoded so it can update my ffxiah profile... <_<
Asura.Arico
サーバ: Asura
Game: FFXI
Posts: 535
By Asura.Arico 2020-05-20 11:23:51
Im mean i dont have any knowledge about actually programming a game, but supose you can see things like: "imprimateur: if time > 6h then imprimateur+1".
You can do that, but if the server doesn't think you have it so it doesn't matter.
Asura.Chiaia
VIP
サーバ: Asura
Game: FFXI
Posts: 1656
By Asura.Chiaia 2020-05-20 11:39:30
Valefor.Darkimmortal said: »I know how dangerous packet injection (outgoing) is as far as getting banned. There are also probably /some/ security checks to make sure you have key items that a person on that mission would.
I'm not trying to fool anything, just want my own mission progress. Thanks to the few people with pointers and code samples.
I would also suggest going to the windower discord for more advice, we have a pretty active development channel where you can get help from us or other addon developers. I'll help you out I debated sharing this even though it so innocent looking just because of what has been happening lately.
https://gist.github.com/Chiaia/3ae023e5985c1aba90cddf0f42a70de0
https://gist.github.com/Chiaia/544c6eda54bc971cf5bd9d27bf6e04d4
It's part of a BG Wiki addon Gamergiving was working on before he disappeared . I only helped a bit with what the packets were doing then he figure out the rest based on it.
Looks like he never finished the names of Sandy missions based on the code in their still saying "spoof".
I'm trying to create an addon for private use to export mission progress on my characters. The mission packet is sent whenever the user zones, and that's fine for what I'm doing.
The packet id is 0x056.
When I dump the packet contents with a simple debugging dump function (shared at end of post), I get
Code { ["_junk2"] = 0,
["Current COP Mission"] = 844,
["_description"] = Updates your quest and mission log on zone and when appropriate.,
["Current SOA Mission"] = 280,
["_raw"] = V ¤¤
L ооn? T ¤¤ ,
["Current Nation Mission"] = 65535,
["_size"] = 40,
["Current ASA Mission"] = 2,
["_name"] = Quest/Mission Log,
["_dir"] = incoming,
["_id"] = 86,
["Current ACP Mission"] = 1,
["Nation"] = 1,
["Type"] = 65535,
["Current ROV Mission"] = 340,
["_sequence"] = 5,
["_junk1"] = 0,
["_data"] = [omitted by me, because it's garbled] ,
["Current MKD Mission"] = 0,
["Current ROZ Mission"] = 10,
["_unknown1"] = 1064234734,
}
Arcon's PacketViewer also shows me these same numbers.
How might I decode these numbers to something useful?
Here's the code I'm attempting to use
Code if id == 0x056 then
local p = packets.parse('incoming', original)
if notNil(p) then
Dump(p, 'test')
local Missions = {}
if notNil(p["Current COP Mission"]) then
Missions["COP"] = MissionTitles["CHAINS OF PROMATHIA"][p["Current COP Mission"]]
-- MissionTitles is an array of all mission names grifted from DarkStar
end
writeDump(Missions, "missions")
end
end
end)
Also, the dump functions, for whoever find might it useful.
Code
function writeFile(filename, text)
local file = files.new(filename)
if not file:exists() then
file:create()
end
file:append(text)
end
function Dump(o)
if type(o) == 'table' then
local s = '{ '
for k,v in pairs(o) do
if type(k) ~= 'number' then k = '"'..k..'"' end
s = s .. '['..k..'] = ' .. Dump(v) .. ','
end
return s .. '} '
else
return tostring(o)
end
end
function writeDump(o, fname)
writeFile(player.name .. '_' .. fname .. '.txt', Dump(o))
end
Thanks for any help
|
|