What is CMIString4096 and how can I extract data in it?

I have this line that I am returning from Adobe Presenter 7. It is called suspend_data and is of type CMIString4096 (from the docs)

CMIString4096 ASCII character set with a maximum length of 4096 characters.

This is the line:

aG1111111000000000BB001EC% 2EacC% 7E% 24GS% 2AayjHm110BKCBBB0B0EBAB1B1ED% 2EicC% 7E% 24GS% 2AlfkHm110BKDBCB0B0EBBB0B0EBAB1B1EE% 2EwcC% 7E% 24GS% 2ACBlHm100BKDB2BCBCDB1BABBDB0BBBADF% 2E7cC% 7E% 24GS% 2A4GmHm110BKBB0Ebl% C3% A1rRbl% C3% A1R% 3Bgr% C3% A6nn% 3Brau% C3% B0urB

It looks like base64 with some urlencoded characters. When I urldecode () the string, the last few characters resemble some data, but this is in utf8, then I am utf8_decode and see this.

aG1111111000000000BB001EC.acC~$GS*ayjHm110BKCBBB0B0EBAB1B1ED.icC~$GS* lfkHm110BKDBCB0B0EBBB0B0EBAB1B1EE.wcC~$GS*CBlHm100BKDB2BCBCDB1BABBDB0BBBADF. 7cC~$GS*4GmHm110BKBB0EblárRblár;grænn;rauðurB 

Ok, I'm closer to some data (at the end), but it still looks useless. When I base64_decode (), I get a binary mess, but I don't know what it really is.

Does anyone know what this data is and how can I get any sense from it? I use PHP btw, so only functions inside it are applicable.

+4
source share
3 answers

The data stored in the cmi.suspend_data field is simply a data bucket that SCO (content) can use to maintain its current state. Data does not have semantic meaning or a specific structure. In many cases, the meaning of the data can be guessed or rearranged, but this is not like content created by Adobe Presenter.

The suspend_data field is limited to 4096 ASCII characters. For some SCOs, this does not provide enough memory to fully maintain the current state. In many cases, a content developer who is faced with this predicament will apply a compression algorithm to state data in order to compress it to a limited size. This seems to be what Adobe Presenter does. I assume that they compressed their data into the unencrypted state that you found, and then applied the url encoding to ensure that all the resulting characters are safe to send to the LMS.

Line 1 and 0 at the beginning of the paused data may be something significant. This may probably correspond to which of the slides in the course was previously considered by the student. To verify this, it would be useful to start the course using the SCORM TestTrack tool (freely available at scorm.com ) and use the generated debug logs to observe how the suspension data changes as the user goes through the course.

SCORM provides quite a few other elements of the data model that have a specific meaning related to the current state of the course. The following is a list of all available data model elements . SCORM TestTrack debug logs will also show which of these data model elements is used by Adobe Presented.

+4
source

I do not think SCORM determines what the suspend_data field contains or in what format it is. It depends entirely on the content / lesson (Adobe Presenter in your case), but it can only be text and limited to 4096 characters.

This field can be used by content to store any state that should be sent back to the content the next time it starts.

+1
source

Found

13. cmi.suspend_data STRONG>

Read / write

Designed to work as a storage place for any information that the SCO would like to provide for continuing until the next session.

in here . Since Martin wrote that SCORM only defines the data type, not the encoding or contents of cmi.suspend_data. Perhaps this can help you determine the encoding.

+1
source

Source: https://habr.com/ru/post/1285663/


All Articles