All Projects → BroNils → LINE-Source

BroNils / LINE-Source

Licence: other
Line Application Source

Programming Languages

Thrift
134 projects
java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to LINE-Source

LINE-FreshBot
LINE Bot
Stars: ✭ 23 (-46.51%)
Mutual labels:  line, square, linebot, line-bot, line-square, square-bot
pyne
LINE for Python
Stars: ✭ 18 (-58.14%)
Mutual labels:  line, line-bot
linezx
Way line be with me?
Stars: ✭ 12 (-72.09%)
Mutual labels:  line, linebot
line-bot-sdk-php-tiny
A simple SDK for the LINE Messaging API with PHP.
Stars: ✭ 25 (-41.86%)
Mutual labels:  line, line-bot
line-login-sdk-go
LINE Login GO SDK (Original Social API SDK, It has been migrated into LINE login 2.1 after 2020/11/12)
Stars: ✭ 21 (-51.16%)
Mutual labels:  line, linebot
Armeria
Your go-to microservice framework for any situation, from the creator of Netty et al. You can build any type of microservice leveraging your favorite technologies, including gRPC, Thrift, Kotlin, Retrofit, Reactive Streams, Spring Boot and Dropwizard.
Stars: ✭ 3,392 (+7788.37%)
Mutual labels:  thrift, thrift-client
bot-line-indonesian-summarizer
Tugas NLP UB Filkom 2017
Stars: ✭ 20 (-53.49%)
Mutual labels:  line, linebot
olsb cores
The core of OLSB project.
Stars: ✭ 14 (-67.44%)
Mutual labels:  line, thrift
parquet-flinktacular
How to use Parquet in Flink
Stars: ✭ 29 (-32.56%)
Mutual labels:  thrift
nomadgen
Configuration util in python syntax for Hashicorp's Nomad
Stars: ✭ 19 (-55.81%)
Mutual labels:  thrift
ThriftDemo PHP CPP
Demo for Thrift RPC framework. PHP client call CPP server.
Stars: ✭ 29 (-32.56%)
Mutual labels:  thrift
concrete-python
Python modules and scripts for working with Concrete, a data serialization format for NLP
Stars: ✭ 19 (-55.81%)
Mutual labels:  thrift
LineTimeline
Line Timeline API
Stars: ✭ 12 (-72.09%)
Mutual labels:  line
payment-fields
React component for Braintree/Stripe/Square payment fields
Stars: ✭ 17 (-60.47%)
Mutual labels:  square
flagpack
A lightweight flag icon toolkit for the web.
Stars: ✭ 51 (+18.6%)
Mutual labels:  square
line
Development repository for the line cookbook
Stars: ✭ 96 (+123.26%)
Mutual labels:  line
atom-inline-blame
Atom package to display blame inline
Stars: ✭ 23 (-46.51%)
Mutual labels:  line
bloomery
Web UI for Impala
Stars: ✭ 15 (-65.12%)
Mutual labels:  thrift
drone-line
Sending line notifications using a binary, docker or Drone CI.
Stars: ✭ 78 (+81.4%)
Mutual labels:  linebot
smooth-corners
CSS superellipse masks using the Houdini API
Stars: ✭ 133 (+209.3%)
Mutual labels:  square

LINE-Source

Project of Reverse Engineering LINE Messaging App (for education purpose)

INFO

This project was carried out in order to obtain and make the thrift file of LINE Thrift Protocol (client-side).

And also, feel free to contribute 😄

Prerequisites

Before doing this, you need to have this on you:

  • Java 1.8 or greater (Get it here)
  • Thrift types understanding on a compiled thrift (Read this)
  • Some apk decompiler (I'm using jadx)
  • A little good understanding of java

How to

This is how i obtain the thrift file and make it human-readable form:

  • Download LINE App from playstore using downloader like Evozi
    • If you're downloading a new version of LINE (maybe version 8 or greater), you'll get zip file instead of apk file. Don't worry, just extract the file and you'll find the apk (jp.naver.line.android.apk)
  • Decompile apk using your decompiler (you have to decompile it into a java file)
  • Now search for the new TStruct("thisIsStruct") code in a *.java file
    • But that's not an easy thing to do, the new TStruct("thisIsStruct") is definitely obfuscated by the developer and it can be something like this new A340v("thisIsStruct"). You have to figure it out by yourself
  • And the result must be like this (if you're using jadx)
    • struct search
    • The blabla_args is a request struct, and the blabla_result is a response struct
    • In a request you could get field thrift data
    • In a response you could get responsetype and throws/exception data
  • Now just click one of the result with _args in it, and you'll be redirected to the package source
    • struct class
    • verifyEapLogin is the struct name
    • new C6282b(arg1,arg2,arg3) is a struct field builder, but you see that it have 3 arguments. So here is the explanation :
      • OAuthWebLoginServiceActivity.f1422071 is a field name (should be string), but we got something like that. Because of the name is not a string, you have to explore the OAuthWebLoginServiceActivity.f1422071 to get the name.
      • (byte) 12 is a type of a field. (12 = struct)
      • 1 is the id of a field.
  • After that, you have to scroll down a little bit and you'll get like this
    • struct class
    • As you can see, it's similar to the struct builder before. But this one is more useful for gathering more information.
    • So, if you found a field with struct,enum,map<byte,byte>,set<byte>,list<byte> type. You should gather information on static {.....} scope (like image above).
  • And now you can make it into human-readable form, the result must be like this
    • RESPONSETYPE_STRUCT verifyEapLogin(1: OAUTHACTIVITY_STRUCT field_name) throws(1: EXCEPTION_STRUCT e)
  • So, that's how to obtain and build LINE Thrift Protocol (client-side)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].