https://github.com/rkbalgi/isosim
ISO8583 Web Simulator - Built with Go!
https://github.com/rkbalgi/isosim
chrome cryptography golang iso-websim iso8583 iso8583-parser iso8583-simulator mac pin-block react simulator
Last synced: 2 days ago
JSON representation
ISO8583 Web Simulator - Built with Go!
- Host: GitHub
- URL: https://github.com/rkbalgi/isosim
- Owner: rkbalgi
- License: apache-2.0
- Created: 2016-07-28T16:41:20.000Z (over 8 years ago)
- Default Branch: main
- Last Pushed: 2022-11-24T16:06:25.000Z (over 2 years ago)
- Last Synced: 2025-03-30T00:11:32.476Z (26 days ago)
- Topics: chrome, cryptography, golang, iso-websim, iso8583, iso8583-parser, iso8583-simulator, mac, pin-block, react, simulator
- Language: Go
- Homepage:
- Size: 7.55 MB
- Stars: 105
- Watchers: 7
- Forks: 45
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://goreportcard.com/report/github.com/rkbalgi/isosim)
[](https://codecov.io/gh/rkbalgi/isosim)
[](https://pkg.go.dev/github.com/rkbalgi/isosim?tab=doc)


# ISO WebSim
A very short screencast - [https://youtu.be/vSRZ_nzU-Jg](https://youtu.be/vSRZ_nzU-Jg)Pulling a [docker](https://github.com/rkbalgi/isosim/wiki/Running-on-Docker) image would be the quickest way to run without any hassles of building/configuring etc!

Iso Websim is a ISO8583 simulator built using [Go](http://golang.org), [React](https://reactjs.org/), [Material-UI](https://material-ui.com/) and
other amazing open source libraries.## Features -
* A mechanism to define ISO specifications
* ASCII, EBCDIC, BCD and BINARY encoding for fields
* Fixed, Variable, Bitmapped fields
* Embedded/Nested fields
* Supported MLI's - 2I, 2E, 4I, 4E
* Define and run servers based on specs
* Run servers from the UI or in [standalone mode](https://github.com/rkbalgi/isosim/wiki/Start-standalone-ISO-server-from-command-line)
* Rules to respond to messages based on fields (rules based on amount, currency etc)
* A UI to build and send transactions to servers (as a client)
* Ability to edit fields on UI
* [UI hints](https://github.com/rkbalgi/isosim/wiki/Field-Hints-for-UI) to render special fields
* Client-side validation of fields for content, length
* [PIN](https://github.com/rkbalgi/isosim/wiki/Pin-Field-(DF52)-Generation) and [MAC](https://github.com/rkbalgi/isosim/wiki/MAC-Generation-(DF64-128)) generation
* [Padding](https://github.com/rkbalgi/isosim/wiki/Field-Padding) support
* Save messages that be can be replayed later
* Build [Test Cases](https://github.com/rkbalgi/isosim/wiki/Test-Cases) that can be saved and re-run for regression testing etc
* [Log](https://github.com/rkbalgi/isosim/wiki/Message-History) of past messages
* TLS, [Docker](https://github.com/rkbalgi/isosim/wiki/Running-on-Docker)Checkout the [wiki](https://github.com/rkbalgi/isosim/wiki) for more details!
The specifications themselves are defined in yaml file (Check out an example - [iso_specs.yaml](https://github.com/rkbalgi/isosim/blob/master/test/testdata/specs/iso_specs.yaml))
The [frontend](https://github.com/rkbalgi/isosim-react-frontend) is bundled with the application and can be accessed at [http://localhost:8080/](http://localhost:8080/)
* A quick walkthrough - https://github.com/rkbalgi/isosim/wiki/Test-Examples
` Please note that this application has been tested only on the chrome browser.`### Usage:
```
C:>go run isosim.go -help
-data-dir string
Directory to store messages (data sets). This is a required field.
-html-dir string
Directory that contains any HTML's and js/css files etc.
-http-port int
HTTP/s port to listen on. (default 8080)
-log-level string
Log level - [trace|debug|warn|info|error]. (default "debug")
-specs-dir string
The directory containing the ISO spec definition files.
```### Running Iso WebSim
```
$> git checkout https://github.com/rkbalgi/isosim.git
$> cd isosim\cmd\isosim
$> go run isosim.go -http-port 8080 -specs-dir ..\..\test\testdata\specs -html-dir ..\..\web -data-dir ..\..\test\testdata\appdata
```
Open chrome and hit this URL [http://localhost:8080/](http://localhost:8080/)