Preventing user from saving/printing screen

Hello all,

I hope this is an appropriate place to ask this question, but I am looking for a way to prevent users from saving/printing the screen. I’ve looked at different solutions using the win32 api, and it seems that if I implement this functionality at the user-level, that it can be circumvented quite easily.

I need this functionality because I am displaying to the user very private information and I don’t want the user to copy the image to their clipboard and print it out.

I consulted Google and unfortunately it wasn’t much help. The majority of the search results that were returned were related to disabling the “print screen” button which I didn’t think was an adequate solution to this problem. In my opinion, I think the best approach would be to implement a driver that is some how able to hook into the clipboard and scans the clipboard to see if a bitmap image exists. I am not sure if this will work which is why I decided to ask the pros :slight_smile:

Any help would be greatly appreciated… Thanks

Any solution you come up with can be circumvented quite easily. Just run it
in a VM. Then take the screen shot from the application that shows you the
VM console.


Jake Oshins
Hyper-V I/O Architect
Windows Kernel Team

This post implies no warranties and confers no rights.


wrote in message news:xxxxx@ntdev…
> Hello all,
>
> I hope this is an appropriate place to ask this question, but I am looking
> for a way to prevent users from saving/printing the screen. I’ve looked
> at different solutions using the win32 api, and it seems that if I
> implement this functionality at the user-level, that it can be
> circumvented quite easily.
>
> I need this functionality because I am displaying to the user very private
> information and I don’t want the user to copy the image to their clipboard
> and print it out.
>
> I consulted Google and unfortunately it wasn’t much help. The majority of
> the search results that were returned were related to disabling the “print
> screen” button which I didn’t think was an adequate solution to this
> problem. In my opinion, I think the best approach would be to implement a
> driver that is some how able to hook into the clipboard and scans the
> clipboard to see if a bitmap image exists. I am not sure if this will
> work which is why I decided to ask the pros :slight_smile:
>
> Any help would be greatly appreciated… Thanks
>

On 3/10/2009 4:43 PM, Jake Oshins wrote:

Any solution you come up with can be circumvented quite easily. Just
run it in a VM. Then take the screen shot from the application that
shows you the VM console.

And don’t forget that digital cameras have become cheap and ubiquitous.
Most mobile phones can do “screenshots” that are quite legible.

Thanks guys for your replies. Actually, assuming that the user is running
on the bare metal (non-virtualized environment) and is prohibited from using
any external devices… what would be the recommended approach?

On Tue, Mar 10, 2009 at 9:11 AM, Hagen Patzke wrote:

> On 3/10/2009 4:43 PM, Jake Oshins wrote:
>
>> Any solution you come up with can be circumvented quite easily. Just run
>> it in a VM. Then take the screen shot from the application that shows you
>> the VM console.
>>
>
> And don’t forget that digital cameras have become cheap and ubiquitous.
> Most mobile phones can do “screenshots” that are quite legible.
>
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>

The assumption that you’ll be able to stop a clever user from getting your app up in a VM is a pretty far-fetched one.

I would say that the hard truth is that this is a losing battle. You can pour a lot of time and effort to devise complicated solutions for which an attacker will almost certainly be able to circumvent with a slim fraction of the effort that you spent devising the system.

  • S

From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Jonathon
Sent: Tuesday, March 10, 2009 10:07 AM
To: Windows System Software Devs Interest List
Subject: Re: [ntdev] Preventing user from saving/printing screen

Thanks guys for your replies. Actually, assuming that the user is running on the bare metal (non-virtualized environment) and is prohibited from using any external devices… what would be the recommended approach?
On Tue, Mar 10, 2009 at 9:11 AM, Hagen Patzke > wrote:
On 3/10/2009 4:43 PM, Jake Oshins wrote:
Any solution you come up with can be circumvented quite easily. Just run it in a VM. Then take the screen shot from the application that shows you the VM console.

And don’t forget that digital cameras have become cheap and ubiquitous.
Most mobile phones can do “screenshots” that are quite legible.


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit: http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

— NTDEV is sponsored by OSR For our schedule of WDF, WDM, debugging and other seminars visit: http://www.osr.com/seminars To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

There’s no way to do this without breaking a ton of applications
(especially graphics editors and games) that make use of the ability to
read/write pixels off of the screen. So even if you were able to prevent
the literal “printscreen” functionality, the data would still be
available through, for example, DirectX (at about a hundred layers in
there).

Even if you didn’t mind about that, in a lot of cases the video memory
is part of system memory, and trying to prevent reading that is
ultimately futile.

Besides, even if there were a way, what are you going to do about people
with photographic memories? The truth is, any data the user can sense,
the user can copy, somehow.

Jonathon wrote:

Thanks guys for your replies. Actually, assuming that the user is
running on the bare metal (non-virtualized environment) and is
prohibited from using any external devices… what would be the
recommended approach?

On Tue, Mar 10, 2009 at 9:11 AM, Hagen Patzke > mailto:xxxxx> wrote:
>
> On 3/10/2009 4:43 PM, Jake Oshins wrote:
>
> Any solution you come up with can be circumvented quite easily.
> Just run it in a VM. Then take the screen shot from the
> application that shows you the VM console.
>
>
> And don’t forget that digital cameras have become cheap and ubiquitous.
> Most mobile phones can do “screenshots” that are quite legible.
>
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>
>


Ray
(If you want to reply to me off list, please remove “spamblock.” from my
email address)</mailto:xxxxx>

> I need this functionality because I am displaying to the user

very private information and I don’t want the user to copy
the image to their clipboard and print it out.

And what stops the user from snapping a digital photo of the screen with
their cell phone camera and priting it out?

Jan

Only allow trusted users to run your application.

ScottR

As others have said there isn’t any decent approach that could be considered
secure on any level.

Now, if you want to protect against the classic Granny attack, I do recall
there being a WM_ message sent when

clipboard data is modified (which is where Print Screen images are sent, I
think). So with a global message hook,

you should be able to detect a Print Screen operation. There is also an api
that

will clear or empty the clipboard, however I don’t know what it’s scope is.
Just search for the ‘clipboard’ api.

While an approach like this is rather lame, I think it’s the only way to
achieve anything remotely

similar to the functionality your seeking, that is, if the clipboard api
work the way I think they do along

with the Print Screen functionality.

From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Skywing
Sent: Tuesday, March 10, 2009 12:22 PM
To: Windows System Software Devs Interest List
Subject: RE: [ntdev] Preventing user from saving/printing screen

The assumption that you’ll be able to stop a clever user from getting your
app up in a VM is a pretty far-fetched one.

I would say that the hard truth is that this is a losing battle. You can
pour a lot of time and effort to devise complicated solutions for which an
attacker will almost certainly be able to circumvent with a slim fraction of
the effort that you spent devising the system.

  • S

From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Jonathon
Sent: Tuesday, March 10, 2009 10:07 AM
To: Windows System Software Devs Interest List
Subject: Re: [ntdev] Preventing user from saving/printing screen

Thanks guys for your replies. Actually, assuming that the user is running
on the bare metal (non-virtualized environment) and is prohibited from using
any external devices… what would be the recommended approach?

On Tue, Mar 10, 2009 at 9:11 AM, Hagen Patzke wrote:

On 3/10/2009 4:43 PM, Jake Oshins wrote:

Any solution you come up with can be circumvented quite easily. Just run it
in a VM. Then take the screen shot from the application that shows you the
VM console.

And don’t forget that digital cameras have become cheap and ubiquitous.
Most mobile phones can do “screenshots” that are quite legible.


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

— NTDEV is sponsored by OSR For our schedule of WDF, WDM, debugging and
other seminars visit: http://www.osr.com/seminars To unsubscribe, visit the
List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

No virus found in this incoming message.
Checked by AVG - www.avg.com
Version: 8.0.237 / Virus Database: 270.11.8/1985 - Release Date: 03/09/09
07:14:00

Thank you all for your input… Although you guys have provided me sort of
depressing news, with my research, I have accepted that it is impossible to
stop the crafty user.

I think I am just going to prevent the granny attack with the win32 api, and
try to enforce this by other means (policies?)

Thanks again

On Tue, Mar 10, 2009 at 10:55 AM, Matt wrote:

> As others have said there isn?t any decent approach that could be
> considered secure on any level.
>
>
>
> Now, if you want to protect against the classic Granny attack, I do recall
> there being a WM_ message sent when
>
> clipboard data is modified (which is where Print Screen images are sent*,
> I think*). So with a global message hook,
>
> you should be able to detect a Print Screen operation. There is also an api
> that
>
> will clear or empty the clipboard, however I don?t know what it?s scope is.
> Just search for the ?clipboard? api.
>
>
>
> While an approach like this is rather lame, I think it?s the only way to
> achieve anything remotely
>
> similar to the functionality your seeking, that is, if the clipboard api
> work the way I think they do along
>
> with the Print Screen functionality.
>
>
>
>
>
>
>
> From: xxxxx@lists.osr.com [mailto:
> xxxxx@lists.osr.com] *On Behalf Of *Skywing
> Sent: Tuesday, March 10, 2009 12:22 PM
> To: Windows System Software Devs Interest List
> Subject: RE: [ntdev] Preventing user from saving/printing screen
>
>
>
> The assumption that you?ll be able to stop a clever user from getting your
> app up in a VM is a pretty far-fetched one.
>
>
>
> I would say that the hard truth is that this is a losing battle. You can
> pour a lot of time and effort to devise complicated solutions for which an
> attacker will almost certainly be able to circumvent with a slim fraction of
> the effort that you spent devising the system.
>
>
>
> - S
>
>
>
> From: xxxxx@lists.osr.com [mailto:
> xxxxx@lists.osr.com] *On Behalf Of *Jonathon
> Sent: Tuesday, March 10, 2009 10:07 AM
> To: Windows System Software Devs Interest List
> Subject: Re: [ntdev] Preventing user from saving/printing screen
>
>
>
> Thanks guys for your replies. Actually, assuming that the user is running
> on the bare metal (non-virtualized environment) and is prohibited from using
> any external devices… what would be the recommended approach?
>
> On Tue, Mar 10, 2009 at 9:11 AM, Hagen Patzke wrote:
>
> On 3/10/2009 4:43 PM, Jake Oshins wrote:
>
> Any solution you come up with can be circumvented quite easily. Just run
> it in a VM. Then take the screen shot from the application that shows you
> the VM console.
>
>
>
> And don’t forget that digital cameras have become cheap and ubiquitous.
> Most mobile phones can do “screenshots” that are quite legible.
>
>
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>
>
> — NTDEV is sponsored by OSR For our schedule of WDF, WDM, debugging and
> other seminars visit: http://www.osr.com/seminars To unsubscribe, visit
> the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>
> No virus found in this incoming message.
> Checked by AVG - www.avg.com
> Version: 8.0.237 / Virus Database: 270.11.8/1985 - Release Date: 03/09/09
> 07:14:00
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>

I wouldn’t even bother trying to prevent the granny attack, there are so
many ways to circumvent it, it would be like taking a sieve, plugging up one
of 500 holes, and then hoping that no water would get through the other
499…

From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Jonathon
Sent: 10 March 2009 18:28
To: Windows System Software Devs Interest List
Subject: Re: [ntdev] Preventing user from saving/printing screen

Thank you all for your input… Although you guys have provided me sort of
depressing news, with my research, I have accepted that it is impossible to
stop the crafty user.

I think I am just going to prevent the granny attack with the win32 api, and
try to enforce this by other means (policies?)

Thanks again

On Tue, Mar 10, 2009 at 10:55 AM, Matt wrote:

As others have said there isn’t any decent approach that could be considered
secure on any level.

Now, if you want to protect against the classic Granny attack, I do recall
there being a WM_ message sent when

clipboard data is modified (which is where Print Screen images are sent, I
think). So with a global message hook,

you should be able to detect a Print Screen operation. There is also an api
that

will clear or empty the clipboard, however I don’t know what it’s scope is.
Just search for the ‘clipboard’ api.

While an approach like this is rather lame, I think it’s the only way to
achieve anything remotely

similar to the functionality your seeking, that is, if the clipboard api
work the way I think they do along

with the Print Screen functionality.

From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Skywing
Sent: Tuesday, March 10, 2009 12:22 PM

To: Windows System Software Devs Interest List

Subject: RE: [ntdev] Preventing user from saving/printing screen

The assumption that you’ll be able to stop a clever user from getting your
app up in a VM is a pretty far-fetched one.

I would say that the hard truth is that this is a losing battle. You can
pour a lot of time and effort to devise complicated solutions for which an
attacker will almost certainly be able to circumvent with a slim fraction of
the effort that you spent devising the system.

- S

From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Jonathon
Sent: Tuesday, March 10, 2009 10:07 AM
To: Windows System Software Devs Interest List
Subject: Re: [ntdev] Preventing user from saving/printing screen

Thanks guys for your replies. Actually, assuming that the user is running
on the bare metal (non-virtualized environment) and is prohibited from using
any external devices… what would be the recommended approach?

On Tue, Mar 10, 2009 at 9:11 AM, Hagen Patzke wrote:

On 3/10/2009 4:43 PM, Jake Oshins wrote:

Any solution you come up with can be circumvented quite easily. Just run it
in a VM. Then take the screen shot from the application that shows you the
VM console.

And don’t forget that digital cameras have become cheap and ubiquitous.
Most mobile phones can do “screenshots” that are quite legible.


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

— NTDEV is sponsored by OSR For our schedule of WDF, WDM, debugging and
other seminars visit: http://www.osr.com/seminars To unsubscribe, visit the
List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

No virus found in this incoming message.
Checked by AVG - www.avg.com
Version: 8.0.237 / Virus Database: 270.11.8/1985 - Release Date: 03/09/09
07:14:00



NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

— NTDEV is sponsored by OSR For our schedule of WDF, WDM, debugging and
other seminars visit: http://www.osr.com/seminars To unsubscribe, visit the
List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

“I wouldn’t even bother trying to prevent the granny attack”

“Granny Attack” - according to Google’s multi-zillion records, I coined
a ‘term’ regarding application security. Whoopee…

I’m bored…

:slight_smile:

Tha roughly describes why there are no screen doors on submarines.

The personal opinion of
Gary G. Little

“Crispin Wright” wrote in message news:xxxxx@ntdev…
I wouldn’t even bother trying to prevent the granny attack, there are so many ways to circumvent it, it would be like taking a sieve, plugging up one of 500 holes, and then hoping that no water would get through the other 499…

From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Jonathon
Sent: 10 March 2009 18:28
To: Windows System Software Devs Interest List
Subject: Re: [ntdev] Preventing user from saving/printing screen

Thank you all for your input… Although you guys have provided me sort of depressing news, with my research, I have accepted that it is impossible to stop the crafty user.

I think I am just going to prevent the granny attack with the win32 api, and try to enforce this by other means (policies?)

Thanks again

On Tue, Mar 10, 2009 at 10:55 AM, Matt wrote:

As others have said there isn’t any decent approach that could be considered secure on any level.

Now, if you want to protect against the classic Granny attack, I do recall there being a WM_ message sent when

clipboard data is modified (which is where Print Screen images are sent, I think). So with a global message hook,

you should be able to detect a Print Screen operation. There is also an api that

will clear or empty the clipboard, however I don’t know what it’s scope is. Just search for the ‘clipboard’ api.

While an approach like this is rather lame, I think it’s the only way to achieve anything remotely

similar to the functionality your seeking, that is, if the clipboard api work the way I think they do along

with the Print Screen functionality.

From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Skywing
Sent: Tuesday, March 10, 2009 12:22 PM

To: Windows System Software Devs Interest List

Subject: RE: [ntdev] Preventing user from saving/printing screen

The assumption that you’ll be able to stop a clever user from getting your app up in a VM is a pretty far-fetched one.

I would say that the hard truth is that this is a losing battle. You can pour a lot of time and effort to devise complicated solutions for which an attacker will almost certainly be able to circumvent with a slim fraction of the effort that you spent devising the system.

- S

From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Jonathon
Sent: Tuesday, March 10, 2009 10:07 AM
To: Windows System Software Devs Interest List
Subject: Re: [ntdev] Preventing user from saving/printing screen

Thanks guys for your replies. Actually, assuming that the user is running on the bare metal (non-virtualized environment) and is prohibited from using any external devices… what would be the recommended approach?

On Tue, Mar 10, 2009 at 9:11 AM, Hagen Patzke wrote:

On 3/10/2009 4:43 PM, Jake Oshins wrote:

Any solution you come up with can be circumvented quite easily. Just run it in a VM. Then take the screen shot from the application that shows you the VM console.

And don’t forget that digital cameras have become cheap and ubiquitous.
Most mobile phones can do “screenshots” that are quite legible.


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit: http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

— NTDEV is sponsored by OSR For our schedule of WDF, WDM, debugging and other seminars visit: http://www.osr.com/seminars To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

No virus found in this incoming message.
Checked by AVG - www.avg.com
Version: 8.0.237 / Virus Database: 270.11.8/1985 - Release Date: 03/09/09 07:14:00



NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

— NTDEV is sponsored by OSR For our schedule of WDF, WDM, debugging and other seminars visit: http://www.osr.com/seminars To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

Information from ESET NOD32 Antivirus, version of virus signature database 3924 (20090310)

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com

CreateDesktop, SwitchDesktop, create your “sensitive information” window on that desktop. Make sure to intercept Print Screen.
Your desktop won’t have any hooks installed by other code.

“The assumption that you’ll be able to stop a clever user from getting your app
up in a VM is a pretty far-fetched one.”

Secure environments assume the user doesn’t have administrative privileges.

Preemptive snarky comment: Secure environments assume the user isn’t
running Windows.

xxxxx@broadcom.com wrote:

“The assumption that you’ll be able to stop a clever user from getting your app
up in a VM is a pretty far-fetched one.”

Secure environments assume the user doesn’t have administrative privileges.


Ray
(If you want to reply to me off list, please remove “spamblock.” from my
email address)

> Preemptive snarky comment: Secure environments assume the

user isn’t running Windows.

That’s odd, if you look at the FIPS certification page at
http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm it seems
to show a variety of Microsoft OS products as FIPS 140-2 certified.

And the page at http://www.commoncriteriaportal.org/products_OS.html#OS
seems to show a variety of Microsoft OS’s as being common criteria
certified.

Your statement is based on data from where?

Jan

Jan Bottorff wrote:

Your statement is based on data from where?

That would be this data, here:

http://en.wiktionary.org/wiki/snarky

Ray
(If you want to reply to me off list, please remove “spamblock.” from my
email address)

Would someone be able to tell me what APIs I should look at if I wanted to
capture the screen programmatically?
I mean, is there a way to find the routine that is called by default, when
the user pushes the print screen button? I am just curious how the windows
does it…

Thanks :slight_smile:

On Tue, Mar 17, 2009 at 4:22 PM, Ray Trent wrote:

> Jan Bottorff wrote:
>
>> Your statement is based on data from where?
>>
>
> That would be this data, here:
>
> http://en.wiktionary.org/wiki/snarky
> –
> Ray
> (If you want to reply to me off list, please remove “spamblock.” from my
> email address)
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>

Jonathon wrote:

Would someone be able to tell me what APIs I should look at if I
wanted to capture the screen programmatically?

I mean, is there a way to find the routine that is called by default,
when the user pushes the print screen button? I am just curious how
the windows does it…

There’s nothing magical about it.

HDC dcScreen = GetDC(0);
BitBlt( dcMemory, 0, 0, GetDeviceCaps(dc, HORZRES), GetDeviceCaps(dc,
VERTRES), dcScreen, 0, 0, SRCCOPY );


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.