Any way to trace spoofed number?

Is there any way to trace or determine the source of a spoofed number? I’m getting ready to set an asterisk box up again, and I’ve been having problems with telemarketers/thieves who use false CID. I’ve been doing a lot of research and learned it may be possible to read the BTN (which, unfortunately, can also be spoofed - but may be more illegal), and there might also be additional fields sent to determine the originating caller.

Any thoughts? I basically want my box to record all phone calls (inbound/outbound) automatically, strip the private flag off the call, and have every call recorded with the timestamp/CID/BTN and whatever else is useful.