Skip to content

About

JHora natal Rasi (D-1) chart reverse-engineering findings with a ready-to-run JavaScript API example.

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JHora Reverse Engineered — from Jagannatha Hora to an open-source project

🚀 Run FREE JHora Online Now

📖 Read the human story: My Natal Rāśi Chart Revealed a Marriage Across Borders

Natal Chart Rasi — Jagannatha Hora Reverse Engineered

Get the data behind a Jagannatha Hora (JHora) natal Rāśi chart with a few lines of JavaScript and a simple HTTPS request.

This is the first small, public example from VedAstro's full-binary reverse engineering of the original JHora Windows application. The calculation logic was not guessed from screenshots or fitted only to the program's output: we analyzed the compiled native executable itself, decompiled its machine code, traced its internal call graph and data references, mapped UI commands to their handlers, and translated recovered behavior into testable open-source calculations.

What “reverse engineered” means here

JHora is a native 32-bit x86 application, not a .NET program whose original source can simply be extracted. We used Ghidra and purpose-built analysis tooling to recover C-like pseudocode from the actual instructions in jhora.exe, with complete assembly retained wherever high-level lifting was not possible.

The current whole-binary recovery inventory includes:

  • 7,535 functions inventoried: 7,533 successfully decompiled to C-like output, with the remaining two recovered as complete x86 assembly.
  • 70,305 call records and 8,535 global-variable references mapped into a searchable structural database.
  • 1,229 MFC message-map entries recovered, mapping all 554 distinct menu command IDs to exact handlers.
  • 791 functions with feature evidence, including 254 functions cited in detailed recovery documents and 133 with reviewed semantic names.

Recovered subsystems include ephemeris and houses, divisional charts, Nakshatra and Rāśi dasas, Ashtakavarga, planetary strengths, yogas, Panchanga, transits, eclipses, Tajaka/Varshaphala, special lagnas, upagrahas, and multiple chakras.

These figures mean 100% low-level function coverage, not that every function has already been given a final astrological name or independently validated. Semantic reconstruction and test-vector verification continue feature by feature.

What was unlocked in this example?

The natal Rāśi chart—also called the D-1 chart—is the foundation of a Vedic horoscope. The recovered workflow can be expressed as two reusable calculations:

  • AllPlanetRasiSigns returns the sidereal sign and degree of the Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn, Rāhu, and Ketu.
  • AllHouseRasiSigns returns the sign and degree of all twelve houses. House1 is the Lagna or Ascendant.

Together, those two responses contain the placements needed to construct the natal Rāśi chart.

Run the JavaScript example

You need Node.js 18 or newer. There are no packages to install and no API key is required for this example.

git clone https://github.com/VedAstro/Natal-Chart-Rasi-Jagannatha-Hora-Reverse-Engineered.git
cd Natal-Chart-Rasi-Jagannatha-Hora-Reverse-Engineered
npm start

The default command uses POST with exact latitude and longitude. Edit birthDetails near the top of index.js to use your own date, time, UTC offset, and location.

Example output begins like this:

{
  "chart": "Natal Rasi (D-1)",
  "requestMethod": "POST",
  "ayanamsa": "LAHIRI",
  "ascendant": "Capricorn : 25° 20' 47",
  "planets": {
    "Sun": "Virgo : 29° 27' 25",
    "Moon": "Aquarius : 9° 46' 4"
  }
}

The actual output includes all nine planets and all twelve houses.

Use HTTPS POST

POST is recommended because it sends precise coordinates instead of asking the API to resolve a place name.

const response = await fetch(
  "https://api.vedastro.org/api/Calculate/AllPlanetRasiSigns",
  {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      Ayanamsa: "LAHIRI",
      Time: {
        StdTime: "14:20 16/10/1918 +05:30",
        Location: {
          Name: "Bangalore, India",
          Longitude: 77.5946,
          Latitude: 12.9716
        }
      }
    })
  }
);

const data = await response.json();
console.log(data.Payload.AllPlanetRasiSigns);

Change the calculator name to AllHouseRasiSigns with the same body to retrieve the houses and Lagna.

Use HTTPS GET

For a URL-only request, run:

npm run start:get

Or open this endpoint directly:

https://api.vedastro.org/api/Calculate/AllPlanetRasiSigns/Location/Bangalore,India/Time/14:20/16/10/1918/%2B05:30/Ayanamsa/LAHIRI

Replace AllPlanetRasiSigns with AllHouseRasiSigns for the houses. In a GET request, the API resolves the location name to coordinates. Use POST when exact coordinates are important.

Request and response notes

  • StdTime uses HH:mm DD/MM/YYYY ±HH:mm and must include the historical UTC offset at the birthplace.
  • This example uses the Lahiri ayanāṃśa, matching the common JHora configuration. A different ayanāṃśa changes the sidereal positions.
  • Successful responses use the envelope { "Status": "Pass", "Payload": ... }.
  • Astrology software settings and ephemeris versions matter. For reproducible comparisons, keep the time, coordinates, UTC offset, ayanāṃśa, and node settings identical.

Why this repository exists

JHora made a vast body of Vedic astrology calculations available inside a closed desktop application. VedAstro is turning the results of direct executable decompilation into small, documented, testable open-source features and exposing them as ordinary JSON over HTTPS—usable from JavaScript, Python, mobile apps, research notebooks, and AI tools.

Explore the wider open-source project at VedAstro.org and github.com/VedAstro/VedAstro.

Independence notice

This is an independent educational reverse-engineering project. Jagannatha Hora and JHora belong to their respective owner(s). This repository is not affiliated with or endorsed by the original application or its authors. Although the research analyzed the original compiled executable, this public repository contains no JHora executable, program resources, or proprietary source code.

License

MIT © VedAstro

About

JHora natal Rasi (D-1) chart reverse-engineering findings with a ready-to-run JavaScript API example.

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages