# SSC Spring Engineering 5.1.3 — Static Analysis

## Executive summary

The installed application is a Windows-packaged Java Swing application published as **SSC Spring Engineering 5.1.3** by **Service Spring Corporation**. The launcher loads `Solutions5.jar`; nearly all domain logic and reference data are compiled into that JAR.

The application is not database-backed. Its engineering catalog is embedded in code, and ordinary calculation inputs are kept in memory rather than saved as local project files. The only persistent settings found in the code are Imperial/Metric mode and drum-weight warnings, stored through Java Preferences. No settings key or license files were present for the current Windows user at inspection time.

Static decompilation recovered the application structure, formulas, reference tables, UI workflows, and external endpoints. No installed files were changed or launched during analysis.

## Application identity

- Product: SSC Spring Engineering
- Version: 5.1.3
- Main class: `com.sscorp.solutions.Main`
- Core package: `com.sscorp.solutions`
- UI framework: Java Swing, with an older NetBeans Swing Layout library
- Bundled runtime: Java 8-era Java/JavaFX runtime
- JSON library: Jackson 2.9.9
- Core JAR SHA-256: `F810461A1D65FFBC8AF67381F3CD6BF503687E6F0FF96C948DF7DD391BE7CC05`
- Launcher SHA-256: `29EE10E569EF73C9C45F8BA872F9A61DCBC72AF90CB4E8FB182404D26A08D75B`

## User-facing modules

The main window exposes eight calculation areas:

1. Conversion
2. Conversion — mismatched springs
3. Conversion — multiple replacements
4. Spring engineering
5. Springs by IPPT/KCPT
6. Approximate pull
7. Rolling steel
8. Drum comparison

The engine supports Imperial and metric display, standard/vertical/high-lift doors, single/duplex/triplex spring assemblies, selectable cycle life, ID or OD inputs, drum compatibility, cable and pitch handling, printing, and optional insertion of calculated springs into a host order form.

## Embedded catalog

The recovered catalog contains:

- 176 drum records
  - 79 standard
  - 27 vertical
  - 70 high-lift
- 64 drum-to-compatibility-group mappings
- 32 inside-diameter entries
- 44 supported wire-size entries
- 41 stocked wire-size entries
- 5 square-wire entries
- 32 ID-specific stocked-wire limit records

Each drum record may contain name, metric name, maximum height and weight, maximum cable diameter, high and flat moment arms, circumference, maximum OD, cable length, rate of rise, high-lift/capacity limits, keyed-hub and spiral flags, 1.25-inch flag, compatibility, and obsolescence status.

The complete normalized catalog is in `ssc-drum-catalog.csv`. Compatibility groups are in `ssc-drum-compatibility.csv`; spring IDs and wire dimensions are in `ssc-spring-dimensions.csv`.

## Core formulas recovered

Let `d` be wire diameter in inches, `ID` spring inside diameter, `N` active coils, `MIP` moment in inch-pounds, and `IPPT` inch-pounds per turn.

- IPPT: `30,000,000 × d^4 / (10.2 × (ID + d) × N)`
- Spring constant before dividing by active coils: `30,000,000 × d^4 / (10.2 × (ID + d))`
- MIP from turns: `turns × IPPT`
- Maximum turns: `wire MIP capacity / IPPT`
- Active coils from wire, ID, and IPPT: `30,000,000 × d^4 / (10.2 × (ID + d) × IPPT)`
- Linear wire length: `total coils × (ID + d) × π`
- Wire weight per foot: `π × (d / 2)^2 × 12 × 0.2836`
- Approximate pull: `1,650,000 × d^5 × stretch / (spring length × (ID + d)^3)`
- Cycle estimate: `(d^2.79 × 159,000 × 1.815 / 10.2 / MIP)^4.67 × 1,000`
- Rolling-steel MIP: `low moment arm × total weight`
- Rolling-steel IPPT: `(MIP − high moment arm × open weight) / barrel revolutions`

Metric presentation uses 25.4 mm/in and 2.20462234 lb/kg conversion factors. KCPT/MKC values use a factor of 1.15212462 from IPPT/MIP.

Cycle selections range from 10,000 to 300,000 and map to fixed capacity factors embedded in the spring model.

## Persistence and integration

- User preferences use the Java Preferences node `/com/sscorp/solutions`.
- Saved preference keys are `Metric` and `Warnings`.
- License-related filenames are `C:\ProgramData\soldemo.dep` and `C:\ProgramData\solutions.dep`; neither was present during inspection.
- The current build's `isRegistered()` method returns `true` unconditionally.
- “Save to Order” does not create a local file. It calls methods named `springEngineeringInsertSpring` and `springEngineeringInsertNote` on an optional host `orderForm` object using reflection.
- No SQLite, Access, JSON catalog, CSV catalog, or other application database is included in the installation.

## Network behavior

The code contains these external connections:

- `https://portal.sscorp.com/scads/api/v2/getad.php?id=1` — retrieves advertising JSON.
- `https://www.sscorp.com` — opens the corporate website.
- `http://www.sscorp.com/images/soladvert.gif` — legacy advertisement image URL.

No evidence was found of spring calculations or user-entered engineering values being uploaded by the standalone calculation code. This conclusion is from static analysis; runtime traffic capture would be the next step for independent confirmation.

## Important caveats

- Decompiled Java is a reconstruction and may differ in formatting, variable names, comments, and some compiler-generated details from the original source.
- The formulas and tables were recovered faithfully from bytecode, but engineering results should be validated against known test cases before using a rewritten implementation in production or for safety-critical decisions.
- This was static analysis. The executable was not launched, and no live network capture or GUI regression run was performed.
- The package includes old Java-era dependencies. A separate dependency/CVE assessment is advisable before continued deployment on networked machines.

## Recommended next phase

Rebuild the calculation engine as testable, documented modules and create golden-result tests by comparing representative standard, vertical, high-lift, conversion, pull, and rolling-steel scenarios against the existing application. The extracted CSVs can become the new data source instead of keeping the drum catalog hard-coded.
