• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
Locked
0

Port data from Adobe AIR EncryptedLocalStore outside of app on a mobile device

Community Beginner ,
Feb 16, 2020 Feb 16, 2020

Copy link to clipboard

Copied

I am rebuilding an old iOS and Android app built with Adobe AIR to React Native.

 

Data on the old app is stored locally using flash.data.EncryptedLocalStore.

 

I wish to access the data stored from within the new React Native App, and am looking for a data migration strategy.

 

I have viewed How to crack EncryptedLocalStore in Adobe Air?.

 

Given that the EncryptedLocalStore is at operating system level, I am wondering if I can develop a new EncryptedLocalStore compatible whatnot to access the data and transmit that to a new store in React Native.

 

Does anyone have any pointers or guide to how I should progress investigating this?

 

My initial thinking is: 

1. make a tiny actionscript thing inside a react native app and it could access data store

2. just find access to flash.data.EncryptedLocalStore from OS

 

Send help!

 

Elise.

 

 

---

Reposted from https://stackoverflow.com/questions/60256732/port-data-from-adobe-air-encryptedlocalstore-outside-of...

TOPICS
Air beta , Development , How to , OS , Other

Views

739

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Enthusiast , Feb 17, 2020 Feb 17, 2020

> I wish to access the data stored from within the new React Native App, and am looking for a data migration strategy.

that's a bad strategy, the "old" AIR app and the "new" React native app are two different apps
you can not reuse "as is" data encrypted from the old app from the new app

at best, you could provide an "export data" update for the old app and an "import data" in the new app

> Given that the EncryptedLocalStore is at operating system level, I am wondering if I can develop
> a new Encryp

...

Votes

Translate

Translate
Enthusiast ,
Feb 17, 2020 Feb 17, 2020

Copy link to clipboard

Copied

> I wish to access the data stored from within the new React Native App, and am looking for a data migration strategy.

that's a bad strategy, the "old" AIR app and the "new" React native app are two different apps
you can not reuse "as is" data encrypted from the old app from the new app

at best, you could provide an "export data" update for the old app and an "import data" in the new app

> Given that the EncryptedLocalStore is at operating system level, I am wondering if I can develop
> a new EncryptedLocalStore compatible whatnot to access the data and transmit that to a new store in React Native.

probably possible but it would be a very harduous path as you would have to reverse engineer how the closes source code of AIR EncryptedLocalStore works

the other simpler path is to simply mimic the functionalities of the EncryptedLocalStore within your react native app
off course an user of the old app would lose its data and would have to save it again in the new app

see
https://github.com/mCodex/react-native-sensitive-info





Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Feb 17, 2020 Feb 17, 2020

Copy link to clipboard

Copied

Hey @zwetan_uk, thank you kindly for you response.


at best, you could provide an "export data" update for the old app and an "import data" in the new app

By this do you mean export to a back end service? Or to build 2 separate apps?

In addition, I have since identified that in most cases I actually need to port data from Flash Cookie (Local Shared Objects) instead of EncryptedLocalStore. 

 

My current thinking is:

1. Build a new Flex Adobe AIR app in order to retrieve and export data via ExternalInterface

2. Load the Flash context inside a new React Native App, loading .swf using react-swf

3. JavaScript to access Flash Cookie from swf initailisation callback 

 

Can you think of an alternative way to access Shared Objects? 

 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Feb 18, 2020 Feb 18, 2020

Copy link to clipboard

Copied

> By this do you mean export to a back end service? Or to build 2 separate apps?
yes, on top of building the new app, you would need to update the old app so ppl can export their data
> In addition, I have since identified that in most cases I actually need to port data from Flash Cookie (Local Shared Objects) instead of EncryptedLocalStore. 

OK so different things

usually app use EncryptedLocalStore to store "small" secrets like a password
for ex to avoid having the user re-entering their password over and over

when you save to Local Shared Objects the data first does not need to be secret (encrypted)
and the volume of data is usually bigger: list of document opened, data structures, etc.

so different paths
  - the export/import is a good way to avoid reverse engineer or reimplement stuff that are available as API in AIR
    but not available to the other dev environment like react native
  - reverse engineer some AIR API to avoid doing the export/import dance
    but knowing for things encrypted it will be harduous, and for things not encrypted maybe acceptable

in any case you re still with the same original problem the old app and new app are two different apps
when a user having the old app will install the new app, the new app will not be able to access the data from the old app

see here https://developer.android.com/training/data-storage
unless you already planed in advance to have data in shared storage
the old app (AIR) will have its data saved in app-specific storage

eg. "Can other apps access?"
No, if files are in a directory within internal storage
Yes, if files are in a directory within external storage

> Can you think of an alternative way to access Shared Objects?

so even if you were implementing in react native a way to read Local Shared Objects
see for ex SolVE (source is Java)

the data would not be reachable because stored in app-specific storage directory/path
see this old thread Read SharedObject directly from sol file (Android)

> 1. Build a new Flex Adobe AIR app in order to retrieve and export data via ExternalInterface

ExternalInterface? not sure I follow where you;re going here
for the export: read the LSO, transform to JSON, save JSON so import later can read the JSON in react native

> 2. Load the Flash context inside a new React Native App, loading .swf using react-swf

OK I understand the ExternalInterface thing, I was not aware that react-swf was a thing

so first, an AIR SWF is not a Flash Player SWF
even if you can load SWF in react, I doubt loading an AIR SWF would work

and second, even if you could you would still have the problem of accessing the data in app-specific storage

>3. JavaScript to access Flash Cookie from swf initailisation callback 

same as above, app-specific storage would prevent that

in conclusion I would say what I consider the safest and less troublesome, yeah even if it is more work
would be to publish an updated AIR app that allow users to export their Local Shared Objects
not too hard to implement, can easily export to JSON as local file or even goes through a server to save it online, etc.

and in the new react native app I guess reading the JSON file would not be an issue

YMMV, depends on where the .sol file is saved, pretty sure it is always under app-specific storage
depends on the Local Shared Objects data structure (simple data would export better to JSON, than complex typed objects), etc.

good luck










Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Feb 18, 2020 Feb 18, 2020

Copy link to clipboard

Copied

LATEST

🙏 much appreciated! thank you!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines