VOGONS


First post, by dennis714

User metadata
Rank Newbie
Rank
Newbie

An emulation of old copy-protection dongle for DOS software can be implemented right in DosBox DOS emulator.

Here is my patches for DosBox 0.74, enabling it to support 93c46-based dongle:
http://conus.info/stuff/dosbox/dongle.cpp
http://conus.info/stuff/dosbox/dosbox.cpp.patch

At least old Rainbow Sentinel Cplus and MicroPhar are 93c46-based dongles.

93c46 memory chip contain 64*16 words. More on it here:
http://www.atmel.com/dyn/resources/prod_docum … nts/doc0172.pdf

Source code is self-explanatory. What you need is to add dongle.cpp to project, patch dosbox.cpp, fill MEMORY array representing dongle memory. You may also need to change rewiring scheme between 93c46 and printer port. Wiring scheme may differ from dongle to dongle, but usually, DI (data input), SK (clock), CS (chip select) and power lines are taken from D0..D7 in some order. DO (data output) may be connected to ACK or BUSY printer lines.

Now how to read 93c46-based dongle? Get a free reader there (sread.zip):
http://safe-key.com/freesoftware.html
It produce crypted file, however, sread.exe can be patched (write 0xC3 byte at 0xE1B address) then unencrypted dump file will be created.

But what if you do not have a dongle to read information from it? First, take a look on log messages: which cells are reading by your software? Try 0x6669 here, for example. Compile DosBox with heavy debug option and produce all instructions and register's state executed:
http://blogs.conus.info/node/55

... then just grep LOGCPU.TXT for 6669: value from dongle is probably compared with some other constant, however, it is not rule, things may be much more complex.

Reply 1 of 6, by dosquest

User metadata
Rank Oldbie
Rank
Oldbie

How do you apply the patch?

Reply 3 of 6, by ph_elec

User metadata
Rank Newbie
Rank
Newbie

Can You Make for all old dongles?
Can't find out how to patch? - Have tried google 🙁
Regards
Per

PH

Reply 4 of 6, by Yushatak

User metadata
Rank Member
Rank
Member

Need a patch program. On Linux it's part of the OS, on Windows you need to go grab one (it's just called patch.exe). Once you have that, the semantics on how to invoke the program depend on the patch, but generally it's "patch -p0 < patchfile", if memory serves, from the directory containing the source tree. If it wasn't clear, you then have to compile the program yourself. I'd be willing to give you a simple walkthrough on doing that on Windows if you need one (I'm nice 😜).

DOS copy protection dongles, however, are generally just LPT passthrough devices. If you use one of the parallel-port-capable builds like HAL's, you'd be able to use an actual physical dongle, provided your machine still has a parallel port, or could pass-through to a purchased USB parallel port without losing functionality (I haven't tried this).

Reply 5 of 6, by h-a-l-9000

User metadata
Rank DOSBox Author
Rank
DOSBox Author

And you are sure this dongle is 93c46-based?
Also his problem is he doesn't have a compatible LPT device.

> USB parallel port without losing functionality (I haven't tried this).

Then don't spread rumors. It doesn't work.

1+1=10

Reply 6 of 6, by danbuffalo

User metadata
Rank Newbie
Rank
Newbie

http://safe-key.com/freesoftware.html
It produce crypted file, however, sread.exe can be patched (write 0xC3 byte at 0xE1B address) then unencrypted dump file will be created.

Hi,

I've successfully retrieved the .saf file before I start looking for solution on how to look for the dump files.

I did not use the patching method that you guys were talking about. Instead I used Hex Workshop v6 to go to the adress and changed "50" to "C3".

I supposed I am still doing something wrong here as I still get .saf file after that not dmp or dng file. Please advice thanks.