Decoding The Mission Packet

Eorzea Time
 
 
 
言語: JP EN FR DE
日本語版のFFXIVPRO利用したい場合は、上記の"JP"を設定して、又はjp.ffxivpro.comを直接に利用してもいいです
users online
フォーラム » Windower » Support » Decoding the Mission Packet
Decoding the Mission Packet
First Page 2
 Valefor.Darkimmortal
Offline
サーバ: Valefor
Game: FFXI
user: omnys
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
Offline
サーバ: Asura
Game: FFXI
user: swordwiz
Posts: 216
By Asura.Lordoftheseven 2020-05-20 00:20:50  
when you finish this come talk to me $$$$$$$$$$$$$
Offline
Posts: 363
By ksoze 2020-05-20 01:20:52  
Packet fantasy 11
 Asura.Eiryl
Online
サーバ: Asura
Game: FFXI
user: 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
Offline
サーバ: Asura
Game: FFXI
user: Tename
Posts: 535
By Asura.Arico 2020-05-20 02:00:06  
Asura.Eiryl said: »
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.

Asura.Eiryl said: »
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
Online
サーバ: Asura
Game: FFXI
user: 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
Offline
サーバ: Asura
Game: FFXI
user: Tename
Posts: 535
By Asura.Arico 2020-05-20 02:11:18  
Asura.Eiryl said: »
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
Online
サーバ: Lakshmi
Game: FFXI
user: elii
Posts: 912
By Lakshmi.Elidyr 2020-05-20 02:14:36  
Asura.Arico said: »
Asura.Eiryl said: »
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
Online
サーバ: Asura
Game: FFXI
user: Eiryl
By Asura.Eiryl 2020-05-20 02:53:54  
Asura.Arico said: »
Asura.Eiryl said: »
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.
Asura.Eiryl said: »
I don't think it's possible
 Lakshmi.Elidyr
Online
サーバ: Lakshmi
Game: FFXI
user: elii
Posts: 912
By Lakshmi.Elidyr 2020-05-20 03:19:48  
Asura.Eiryl said: »
Asura.Arico said: »
Asura.Eiryl said: »
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.
Asura.Eiryl 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.Aeonova
Offline
サーバ: Asura
Game: FFXI
user: aeonova
Posts: 3113
By Asura.Aeonova 2020-05-20 03:32:34  
Lakshmi.Elidyr said: »
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
Offline
サーバ: Asura
Game: FFXI
user: Tename
Posts: 535
By Asura.Arico 2020-05-20 03:43:17  
Asura.Aeonova said: »
Lakshmi.Elidyr said: »
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
Online
サーバ: Lakshmi
Game: FFXI
user: elii
Posts: 912
By Lakshmi.Elidyr 2020-05-20 03:49:51  
Asura.Aeonova said: »
Lakshmi.Elidyr said: »
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.
Offline
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
Online
サーバ: Asura
Game: FFXI
user: Eiryl
By Asura.Eiryl 2020-05-20 04:29:36  
Not in this universe lol
 Asura.Chiaia
VIP
Offline
サーバ: Asura
Game: FFXI
user: Demmis
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.Aeonova
Offline
サーバ: Asura
Game: FFXI
user: aeonova
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.
[+]
Offline
Posts: 150
By Dazusu 2020-05-20 05:45:02  
Asura.Aeonova said: »
Lakshmi.Elidyr said: »
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.
[+]
Offline
Posts: 14419
By Pantafernando 2020-05-20 06:52:10  
Is it possible to actually see the games code?
 Asura.Aeonova
Offline
サーバ: Asura
Game: FFXI
user: aeonova
Posts: 3113
By Asura.Aeonova 2020-05-20 07:03:06  
[+]
 Fenrir.Niflheim
VIP
Offline
サーバ: Fenrir
Game: FFXI
user: Tesahade
Posts: 663
By Fenrir.Niflheim 2020-05-20 08:32:40  
Pantafernando said: »
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.
[+]
Offline
Posts: 14419
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
Offline
サーバ: Asura
Game: FFXI
user: Crevox
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.
[+]
Offline
Posts: 150
By Dazusu 2020-05-20 09:28:34  
Pantafernando said: »
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.Darkimmortal
Offline
サーバ: Valefor
Game: FFXI
user: omnys
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.
[+]
 Fenrir.Niflheim
VIP
Offline
サーバ: Fenrir
Game: FFXI
user: Tesahade
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
Offline
サーバ: Valefor
Game: FFXI
user: omnys
Posts: 1759
By Valefor.Omnys 2020-05-20 11:04:16  
Thanks Nif, I'll try to hit that tomorrow.
 Lakshmi.Avereith
Offline
サーバ: Lakshmi
Game: FFXI
user: Lilianna
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
Offline
サーバ: Asura
Game: FFXI
user: Tename
Posts: 535
By Asura.Arico 2020-05-20 11:23:51  
Pantafernando said: »
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
Offline
サーバ: Asura
Game: FFXI
user: Demmis
Posts: 1656
By Asura.Chiaia 2020-05-20 11:39:30  
Fenrir.Niflheim said: »
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".
[+]
First Page 2