20250602

Laser Surveillance Information Collection

Laser Surveillance Information Collection


Laser Doppler vibrometry (LDV)

time signal differential


https://digital.wpi.edu/pdfviewer/sb3979712

Human speech
"Laser eavesdropping relies on vibrations created by the soundwaves from speech, or sound in general. The sound waves cause hard objects in a room, such as coffee cups or windows to vibrate a tiny amount. When you point a laser at one of these objects, the vibrations from that object cause the laser’s reflected beam to modulate or jump about. This modulated reflected beam is picked up and converted from light back to an audio sound wave. It can then be listened to and recorded." -fcdoservices.gov.uk

Machine operation surveillance, data capture


"Laser eavesdropping is a sophisticated technique typically used by individuals from hostile states to covertly gather information. It involves the remote use of an invisible laser to listen into conversations being held inside a target location. It’s an expensive and very technical form of eavesdropping attack, but it’s preferred by some because it can be conducted from a remote location, therefore reducing the chances of being detected."

70s "A laser beam provided guidance and acted as the data link for the audio sensor payload."


Recommendations

"Laser eavesdropping can intercept a conversation in any room with a window, and generally, it’s difficult to completely secure rooms with windows, so having a good security culture can protect you and your organization.

Our experts in counter-eavesdropping at UK NACE advise taking the following measures to help reduce the risk of a laser eavesdropping attack:

Install heavy blinds or curtains over windows which could help prevent a laser beam reaching a target.

Make sure, where possible, offices are not overlooked or in the line of sight of other buildings, especially high-rise apartments, which provide threat actors with a platform to conduct a laser attack.

Ensure a clear desk policy to reduce the number of objects in a room that would be easy for a laser to pick up sound wave vibrations from." -fcdoservices.gov.uk

.............
Other:

-Drone swarm and satellite array for signal amplification

-Silent propulsion stealth drone application

https://www.ll.mit.edu/news/laser-can-deliver-messages-directly-your-ear-across-room https://opg.optica.org/ol/abstract.cfm?uri=ol-44-3-622 Photoacoustic communications: delivering audible signals via absorption of light by atmospheric H2O

#CIA #FCDO


{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "c21745e6",
   "metadata": {},
   "source": [
    "Project Number: BYK-BUG2\n",
    "\n",
    "Laser Audio Surveillance Device\n",
    "submitted to the Faculty of WORCESTER POLYTECHNIC INSTITUTE\n",
    "by Vincent Amendolare Wade Sarraf on December 19, 2005\n",
    "Approved: Professor Brian King, Advisor \n",
    "\n",
    "https://digital.wpi.edu/pdfviewer/sb3979712"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ba0bd0e0",
   "metadata": {},
   "source": [
    "7.3dsPIC Code"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ab2a1f77",
   "metadata": {},
   "outputs": [],
   "source": [
    "#include \"p30f4013.h\"    //support for the dsPIC\n",
    "\n",
    "externvoid square_wave(void); //assembly language squarewave\n",
    "int main(void) // begin \n",
    "{\n",
    "\n",
    "ADC_Init(); //initialize the ADC \n",
    "TRISC=0; //set PORTC to all outputs\n",
    "TRISD=0; //set PORTD to all outputs\n",
    "TRISF=0; //set PORTF to all outputs \n",
    "PORTF=47;   // initialize PORTF \n",
    "PORTD=2; //sets the reset signal to high meaning no reset\n",
    "\n",
    "while(1) //infinite loop\n",
    "{\n",
    "\n",
    "    square_wave(); //call the assembly language squarewave \n",
    "function \n",
    "\n",
    "} // while loop \n",
    "} // end main"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1a8045a3",
   "metadata": {},
   "outputs": [],
   "source": [
    "#include \"p30f4013.h\" \n",
    "\n",
    "         .text\n",
    "\n",
    "         .global _square_wave\n",
    "_square_wave:\n",
    "\n",
    "main:\n",
    "\n",
    "nop   ;actually 36 nop on either side but it would not fit\n",
    "nop   ;in report that way\n",
    "nop \n",
    "NEG PORTF\n",
    "nop\n",
    "nop\n",
    "nop\n",
    "\n",
    "goto main\n",
    "\n",
    "return\n",
    " .end "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e327c946",
   "metadata": {},
   "outputs": [],
   "source": [
    "#include \"p30f4013.h\" // support for dsPIC\n",
    "/*Declarations*/\n",
    "\n",
    "int i=0; // index\n",
    "volatileunsignedint * iPtr;  //pointer for ADC\n",
    "\n",
    "/*Dynamic Interupt Adjust Variables*/\n",
    "int high_time=0;\n",
    "int low_time=0;\n",
    "int delay=0;\n",
    "\n",
    "/*Smooth Adjust Variables*/\n",
    "int past = 0; \n",
    "int present = 0;\n",
    "int smooth = 0; \n",
    "\n",
    "//Prototypes \n",
    "\n",
    "void ADC_Init(void); \n",
    "void __attribute__((__interrupt__)) _ADCInterrupt(void);\n",
    "\n",
    "void ADC_Init(void)\n",
    "{\n",
    "// Configure Analog Pins\n",
    "\n",
    "     TRISB = 1; // sets 1st pin in PORTB(AN0) to an input\n",
    "     ADPCFG = 0xFFFB; /*sets AN2 to an analog input,\n",
    "                           the      rest      are      digital      I/O\n",
    "\n",
    "// Selecting Input to S/H Channels \n",
    "\n",
    "    ADCHS = 2;   // 0 set AN0 as input to CH0\n",
    "                        // CH0+ input is AN2.\n",
    "                        // CHO- input is VREFL (AVss)\n",
    "    ADCSSL = 0;  // no inputs are scanned\n",
    "\n",
    "// Set PWM Frequency \n",
    "\n",
    "      TMR1 = 0x0000;     // timer 1 default settings\n",
    "      PR1 = 2105;        // PWM period \n",
    "      T1CON = 0x8000;  // turn on timer 1\n",
    "\n",
    "// Set PWM Duty Cycle Timer\n",
    "\n",
    "      TMR2 = 0x0000;     // timer 2 default settings \n",
    "      PR2 = 0x000;       // Duty Cycle \n",
    "      T2CON = 0x8000;  // turn on timer 2 \n",
    "\n",
    "// Select ADC Conversion Clock\n",
    "\n",
    "      TMR3 = 0x0000;     // timer 3 default settings\n",
    "      PR3 = 8192;        // Sampling Period\n",
    "      T3CON = 0x8000;  // turn on timer 3 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "74f26e1c",
   "metadata": {},
   "outputs": [],
   "source": [
    "// Select ADC Conversion Trigger \n",
    "\n",
    "      ADCON1bits.ADSIDL = 0; // continue operation in idle mode\n",
    "      ADCON1bits.FORM = 0; // sets output of ADC as int\n",
    "      ADCON1bits.SSRC = 2; // timer 3 is sample/convert trigger\n",
    "      ADCON1bits.ASAM = 1; // sample once convert is done\n",
    "      ADCON2bits.VCFG = 3;  // AVdd and AVss are voltage \n",
    "      ADCON2bits.CSCNA = 0; // Do not scan input selections \n",
    "      ADCON2bits.SMPI = 0; // 1 sample per interrupt \n",
    "      CON2bits.BUFM      =      0;      // 16 word buffers\n",
    "      ADCON2bits.ALTS = 0; // Use A inputs for multiplexing\n",
    "      ADCON3bits.ADRC = 0; // sets clock as system derived\n",
    "      ADCON3bits.ADCS = 32; // adc conversion clock select bit \n",
    "\n",
    "// turn ADC on\n",
    "\n",
    "      ADCON1bits.ADON = 1;\n",
    "\n",
    "// Enable Interrupts\n",
    "\n",
    "      IFS0bits.ADIF = 0;       // clear conversion interrupt\n",
    "      IEC0bits.ADIE = 1;       // enable ADC interrupt \n",
    "      IFS0bits.T3IF = 0;       // clear timer 3 interrupt\n",
    "      IEC0bits.T3IE = 0;       // enable timer 3 interrupt\n",
    "      IFS0bits.T2IF = 0;       // clear timer 2 interrupt \n",
    "      IEC0bits.T2IE = 1;       // enable timer 2 interrupt\n",
    "      IFS0bits.T1IF = 0;       // clear timer 1 interrupt\n",
    "      IEC0bits.T1IE = 1;       // enable timer 1 interrupt\n",
    "\n",
    "      return;\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "46ca458a",
   "metadata": {},
   "outputs": [],
   "source": [
    "void __attribute__((__interrupt__)) _ADCInterrupt(void)\n",
    "{\n",
    "      PR2 += smooth;     // 4th addition of the smooth factor \n",
    "      PORTC = 0x2FFF;    // set PWM high\n",
    "      ORTF=47;                  // inverted clock high\n",
    "      TMR3 = 0;          // resets Timer 3\n",
    "      IFS0bits.T3IF = 0; // clear interrupt flag\n",
    "      PORTD = 0;         // begin reset signal\n",
    "      past = present;    // save last pulse width \n",
    "      iPtr = &ADCBUF0; // set pointer to ADCBUF0\n",
    "      present = (*iPtr>>1);  // load new duty cycle into PWM\n",
    "\n",
    "      smooth = (present-past)>>2; //calculate new smooth factor \n",
    "\n",
    "/* to accommodate delays from branching executing\n",
    "instructions the floor value is 36 but we still\n",
    "need to represent the values between 1 and 36*/ \n",
    "\n",
    "     if(PR2<36){PR2+=36;}\n",
    "\n",
    "/* past values for pwm high time are between 36\n",
    "and 2048 this scales down the high time to a max of 256*/\n",
    "\n",
    "      high_time = past>>3;\n",
    "      low_time = 256-high_time;\n",
    "\n",
    "/* this for loop is timed up to last as long as the next\n",
    "pulse's high time would if there were no interrupt\n",
    "wasting time is avoided by making continuing to modulate port F */\n",
    "      for(i=0; i<high_time; i++){\n",
    "            PORTF=-PORTF;}\n",
    "\n",
    "      PORTC = 0; // set PWM low after appropriate delay\n",
    "\n",
    "/* this delay makes the Interrupt last as long\n",
    "as any of other PWM high/low periods*/\n",
    "\n",
    "      for(i=0; i<low_time; i++){\n",
    "            ORTF=-PORTF;}            // modulate port F\n",
    "            PORTD=2;                  // end reset signal\n",
    "            IEC0bits.ADIE = 1; // enable ADC interrupt\n",
    "            IFS0bits.ADIF = 0; // Clear the A/D Interrupt flag\n",
    "            TMR1=TMR3+4;            // sync up timers\n",
    "\n",
    "            delay=1;                  // delays for timing\n",
    "            delay=1; \n",
    "            delay++; \n",
    "            PORTC=0x2FFF;            // set PWM high \n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "69268f50",
   "metadata": {},
   "outputs": [],
   "source": [
    "void __attribute__((__interrupt__, __shadow__)) _T2Interrupt(void)\n",
    "{\n",
    "                PORTC      =      0;                        // Set PWM Low \n",
    "                IFS0bits.T2IF = 0;       //clear interrupt flag\n",
    "                0bits.T2IE      =      0;            // disable timer 2 \n",
    "interrupt\n",
    "}\n",
    "\n",
    "void __attribute__((__interrupt__, __shadow__)) _T1Interrupt(void)\n",
    "{\n",
    "            PORTC      =      0x2FFF;                  // Set PWM High\n",
    "            PR2      +=      smooth;                  // increment pulse width\n",
    "\n",
    "/* trying to sync up timer 2 and 1 time to will not\n",
    "increment during this command which takes two clock periods\n",
    "it also does not increment when t2 interrupt flag\n",
    "is cleared so we need to add 3*/\n",
    "\n",
    "            TMR2      =      TMR1+\n",
    "\n",
    "            if (PR2<36){PR2=36;} // avoid underflow \n",
    "            IFS0bits.T1IF = 0;  // clear interrupt flag \n",
    "            IFS0bits.T2IF      =      0;      // Clear timer 2 interrupt\n",
    "            IEC0bits.T2IE      =      1;      // Enable timer 2 interrupt\n"
   ]
  }
 ],
 "metadata": {
  "language_info": {
   "name": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}

No comments:

Post a Comment