Re: Intellectual Property Protection



The basic problem with the task you're faced with is that it's impossible.

Certainly, looking for keystrokes and stuff is a silly and doomed approach. If nothing else, I can just pop up the character map (or any other onscreen keyboard) and type whatever I want. Or just rename the file, or whatever. There are a million ways to defeat something like that.

If you want to do something a tiny bit secure, about the only way is to encrypt the file you're protecting, and only allow opening/decrypting it through some secure interface which you provide. Even that fails, but at least it's a lot harder to break.

Geoff wrote:
The company I work for, a publishing company, is concerned about
unauthorized copying of its intellectual property when distributed by
mass-media like CDROM.

I have been tasked with finding a means of recognizing when one of
our copyrighted works is being copied.

It seems to me that what I should do is hook the keyboard, and buffer
what is being typed, and compare it to a database of copyrighted works.

When we detect that someone is copying our work, we disable the
keyboard -- except for BACKSPACE.  And DELETE.  And
LEFT-ARROW.

In order to prevent people from making illegal printouts of our
copyrighted works, it seems to me what I should do is hook the
CreateDC() function, and forward all requests to the original driver,
except DrvTextOut().  When what is being printed matches something
in our database, we disable the printer.

If we can also detect that the content is being displayed on two monitors
at the same time on dual-monitor systems, that would be great.  If the
license lookup indicates that this is not allowed, then we can blank one
of the the screens.

Is it possible to blank just the secondary monitor?  It does not matter
which, really.  Blanking one makes the use compliant with the license.

In order to prevent people from making illegal copies, an upper-filter
on top of all the drive-stacks would be in order.  All WRITE IRPs are
scanned and compared to the database, and if we detect that someone
is copying our work, we disable the disk drive.

Actually, that is probably going a little too far.

Maybe just write the string "PIRACY IS WRONG" in place of
the in-violation-of-copyright data?

Periodically we can make an internet connection to our server and
make sure all their licenses are in order.

So, is that it?  Keyboard Hook, CreateDC Hook, and Upper Filters
across all drives.  And require an internet connection and online
registration.

Ideally, we would deploy this on all computers, but intially we are
targetting only Windows computers.





--
Ray
.



Relevant Pages

  • Re: Intellectual Property Protection
    ... the amount of hooking software alone makes the whole thing a strict ... > It seems to me that what I should do is hook the keyboard, ... and compare it to a database of copyrighted works. ... Blanking one makes the use compliant with the license. ...
    (microsoft.public.development.device.drivers)
  • RE: Problem Overriding Word menu items using VSTO 2005... Shortcuts no
    ... The code that you've implemented essentially allows you to hook the click ... event of the Paste button, however, using the CTRL+V keyboard shortcut to ... execute the paste would not execute the click event of the Paste menu item ... override the CTRL+V shortcut. ...
    (microsoft.public.vsnet.vstools.office)
  • Re: Hook Api
    ... Here's an implementation of a Keyboard hook. ... Public Function KeyboardProc(ByVal nCode As Long, ... Friend Sub KeyHandler(ByVal nCode As Long, ...
    (microsoft.public.vb.winapi)
  • Re: WH_KEYBOARD_LL not capture all key events
    ... I use a global hook because I think there is ... the only way to capture all keyboard input events. ... Thank you very much Paul, ...
    (microsoft.public.windowsce.app.development)
  • Re: Hooks
    ... If you've declared the hook procedure as you have, ... the pointer before passing it to SetWindowsHookEx(). ... If you tell us, again, why you are trying to capture all mouse and keyboard ... > write these types of drivers? ...
    (microsoft.public.windowsce.embedded.vc)