Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

Sorry, you do not have permission to ask a question, You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please type your username.

Please type your E-Mail.

Please choose an appropriate title for the post.

Please choose the appropriate section so your post can be easily searched.

Please choose suitable Keywords Ex: post, video.

Browse

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise

Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise Logo Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise Logo

Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise Navigation

  • Home
  • About Us
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • About Us
  • Contact Us
Home/ Questions/Q 2469

Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise Latest Questions

Author
  • 61k
Author
Asked: November 26, 20242024-11-26T05:41:07+00:00 2024-11-26T05:41:07+00:00

Reverse engineering CryptoPanic REST API

  • 61k

CryptoPanic is a news aggregator website for trending news based on social sentiment. It's a good website for keeping up to date on the latest news, as well as using it as a trading signal.

Its compact layout reminds me of hacker news. I was looking through the network requests and got intrigued after finding out that the main data is not in plaintext:

Posts request encrypted data

The server sends some sort of encoded data, and the client decodes it. After digging around the js bundle, I manage to recover the plaintext data that is displayed on the website.

Note: This post is for educational purposes only.

The reverse engineering process

1. Open the js bundle

The first thing is to find out which part of the javascript code is responsible for decoding this response. Begin by searching for and opening the js bundle cryptopanic.min.xxxxx.js.

Chrome consoel js bundle

2. Locate the part of the code that decodes the data

Searching for “decrypt” immediately zooms in on this function called dc that does the core work of decoding the data.

dk() returns the encryption key, together with parameter t which is used as the Initialization Vector(IV), are passed through the AES algorithm with zero padding.

wordArrayToByteArray converts the decrypted response into a byte array, and pako.default.inflate decompresses the data, and converts them into javascript's utf-16.

Decrypt and inflate

After this step, the result is a JSON string of the API response. The JSON version looks like this:

Posts raw data

3. Transform the raw response into a usable array of objects

The last step is to transform the raw JSON into an array of objects so that it is easy to work with.

Posts normalized data

Revisiting the arguments passed to dc earlier, the first argument t(IV) is the first 16 characters of the module and some string or the CSRF token.

For posts API, t is news and n is empty.

Decoding posts caller

For dashboard API, t is also news while n is rnlistrnlistrnlistrnlist.

Decoding dashboard caller

4. The final output

This is the final output of the posts and dashboard response after decrypting, decompressing and normalizing.

Posts normalized

Dashboard normalized

Cryptopanic home page highlighted

Try it out yourself

Here is a gist that you can use to try decoding the response yourself.

How to use

  1. Create an .env file with CRYPTOPANIC_ENCRYPTION_KEY and CRYPTOPANIC_CSRF_TOKEN.

  2. Install the dependencies: npm install dotenv pako crypto-js

  3. Run node decrypt.js [post|dashboard]

apicryptopanicreverseengineeringwebdev
  • 0 0 Answers
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

Sidebar

Ask A Question

Stats

  • Questions 4k
  • Answers 0
  • Best Answers 0
  • Users 2k
  • Popular
  • Answers
  • Author

    How to ensure that all the routes on my Symfony ...

    • 0 Answers
  • Author

    Insights into Forms in Flask

    • 0 Answers
  • Author

    Kick Start Your Next Project With Holo Theme

    • 0 Answers

Top Members

Samantha Carter

Samantha Carter

  • 0 Questions
  • 20 Points
Begginer
Ella Lewis

Ella Lewis

  • 0 Questions
  • 20 Points
Begginer
Isaac Anderson

Isaac Anderson

  • 0 Questions
  • 20 Points
Begginer

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help

Footer

Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise

Querify Question Shop: Explore, ask, and connect. Join our vibrant Q&A community today!

About Us

  • About Us
  • Contact Us
  • All Users

Legal Stuff

  • Terms of Use
  • Privacy Policy
  • Cookie Policy

Help

  • Knowledge Base
  • Support

Follow

© 2022 Querify Question. All Rights Reserved

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.