Zabbix Ruckus Unleashed Template

I’ve created a Zabbix Template for Ruckus Unleashed access point, monitor if all your access point in the network are online.

You must “enable snmp” on master.

You must create a host with the ip of the master and add the macros  {$SNMP_COMMUNITY} with the name of your community (example: public).

Modify in Template the trigger “Rukus Access Point Offline” with the number of your access point.

Add in your zabbix server the mib of Ruckus in your snmp

 

Download:
Ruckus Mib Files.zip
zabbix Templates Ruckus Unleashed.zip

 

Installare definizioni virus Sanesecurity su clamav in Debian per Amavis

Malware

Molti malware e virus non vengono intercettati da amavis/clamav, per aggiungere ulteriori definizioni ci viene in aiuto uno script molto utile e ben fatto su github https://github.com/extremeshok/clamav-unofficial-sigs che ci consente di aggiungere diverse definizioni aggiuntive presenti gratuitamente su internet.

Scaricate il master.zip dal github:

cd /opt
wget https://github.com/extremeshok/clamav-unofficial-sigs/archive/master.zip
unzip master.zip
cd clamav-unofficial-sigs-master/
cp clamav-unofficial-sigs.sh /usr/local/bin/
chmod 755 /usr/local/bin/clamav-unofficial-sigs.sh
mkdir /etc/clamav-unofficial-sigs/
cd config/
cp * /etc/clamav-unofficial-sigs/
mkdir /var/log/clamav-unofficial-sigs/
cd /etc/clamav-unofficial-sigs/
mv os.debian8.conf os.conf

 

Ora editate il file os.conf e commentate clamd_pid=”/var/run/clamd.pid” e de-commentate clamd_socket=”/var/run/clamav/clamd.ctl”, salvate e chiudete.

Editate user.conf e de-commentate la riga user_configuration_complete=”yes”, salvate e chiudete.

Ok adesso siete pronti per lanciarlo la prima  /usr/local/bin/clamav-unofficial-sigs.sh
vedrete che scaricherà diversi db di definizioni e nella /var/lib/clamav trovetere tutte le definizioni aggiuntive con i permessi corretti:

-rw-r--r-- 1 clamav clamav     47260 mag 13 10:18 antidebug_antivm.yar
-rw-r--r-- 1 clamav clamav    288262 mag 13 09:55 blurl.ndb
-rw-r--r-- 1 clamav clamav      1740 mag 13 09:48 bofhland_cracked_URL.ndb
-rw-r--r-- 1 clamav clamav     99837 mag 13 09:48 bofhland_malware_attach.hdb
-rw-r--r-- 1 clamav clamav      4832 mag 13 09:48 bofhland_malware_URL.ndb
-rw-r--r-- 1 clamav clamav      6216 mag 13 09:48 bofhland_phishing_URL.ndb
-rw-r--r-- 1 clamav clamav    378368 apr 15 21:35 bytecode.cld
-rw-r--r-- 1 clamav clamav    417603 mag 13 09:48 crdfam.clamav.hdb
-rw-r--r-- 1 clamav clamav  10137088 mag 13 08:18 daily.cld
-rw-r--r-- 1 clamav clamav     25780 mag 12 10:53 foxhole_filename.cdb
-rw-r--r-- 1 clamav clamav     44147 mar 25 19:53 foxhole_generic.cdb
-rw-r--r-- 1 clamav clamav     48176 ago  5  2015 hackingteam.hsb
-rw-r--r-- 1 clamav clamav   6595967 mag 11 09:54 junk.ndb
-rw-r--r-- 1 clamav clamav   1687824 mag 13 09:55 jurlbl.ndb
-rw-r--r-- 1 clamav clamav 109143933 mar 29 17:19 main.cvd
-rw-r--r-- 1 clamav clamav      8376 mag 13 10:18 malicious_document.yar
-rw-r--r-- 1 clamav clamav      9460 feb 19  2015 malwarehash.hsb
-rw-r--r-- 1 clamav clamav      1040 mag 13 10:18 mirrors.dat
-rw-r--r-- 1 clamav clamav   3859098 mag 11 21:14 phish.ndb
-rw-r--r-- 1 clamav clamav   5055292 mag 13 09:46 phishtank.ndb
-rw-r--r-- 1 clamav clamav     56820 mag 13 09:46 porcupine.hsb
-rw-r--r-- 1 clamav clamav    298884 mag 13 09:46 porcupine.ndb
-rw-r--r-- 1 clamav clamav    598699 apr  6 03:48 rfxn.hdb
-rw-r--r-- 1 clamav clamav    437666 apr  6 03:48 rfxn.ndb
-rw-r--r-- 1 clamav clamav   3203193 mag 12 16:56 rogue.hdb
-rw-r--r-- 1 clamav clamav     11102 mar  9 09:56 sanesecurity.ftm
-rw-r--r-- 1 clamav clamav      1462 lug  1  2015 Sanesecurity_sigtest.yara
-rw-r--r-- 1 clamav clamav      1233 feb 22 13:21 Sanesecurity_spam.yara
-rw-r--r-- 1 clamav clamav   1881431 apr 21 09:58 scam.ndb
-rw-r--r-- 1 clamav clamav      6679 apr  6 13:55 sigwhitelist.ign2
-rw-r--r-- 1 clamav clamav       199 apr  6 16:55 spamattach.hdb
-rw-r--r-- 1 clamav clamav       671 apr 18 17:57 spamimg.hdb
-rw-r--r-- 1 clamav clamav    526635 mag 12 09:14 winnow.attachments.hdb
-rw-r--r-- 1 clamav clamav        66 mag 12 09:14 winnow_bad_cw.hdb
-rw-r--r-- 1 clamav clamav    107753 mag 12 09:14 winnow_extended_malware.hdb
-rw-r--r-- 1 clamav clamav    165256 mag 12 09:14 winnow_malware.hdb
-rw-r--r-- 1 clamav clamav    632292 mag 12 09:14 winnow_malware_links.ndb
-rw-r--r-- 1 clamav clamav      1584 mag 12 09:14 winnow_malware.yara

Ora lanciate questo comando per vedere se clamav li ha presi in carico:

clamscan --debug 2>&1 /dev/null | grep "loaded"

Dovrebbe dare un output del genere:

LibClamAV debug: /var/lib/clamav/sigwhitelist.ign2 loaded
LibClamAV debug: daily.info loaded
LibClamAV debug: daily.cfg loaded
LibClamAV debug: daily.idb loaded
LibClamAV debug: daily.pdb loaded
LibClamAV debug: daily.ndb loaded
LibClamAV debug: daily.ign loaded
LibClamAV debug: daily.crb loaded
LibClamAV debug: daily.cdb loaded
LibClamAV debug: daily.ldb loaded
LibClamAV debug: daily.hdb loaded
LibClamAV debug: daily.fp loaded
LibClamAV debug: daily.mdb loaded
LibClamAV debug: daily.wdb loaded
LibClamAV debug: daily.msb loaded
LibClamAV debug: daily.sfp loaded
LibClamAV debug: cli_loadftm: File type signature for HWP embedded OLE2 not loaded (required f-level: 82)
LibClamAV debug: cli_loadftm: File type signature for HWPML Document not loaded (required f-level: 82)
LibClamAV debug: cli_loadftm: File type signature for HWP3 Document not loaded (required f-level: 82)
LibClamAV debug: daily.ftm loaded
LibClamAV debug: daily.ign2 loaded
LibClamAV debug: daily.hsb loaded
LibClamAV debug: /var/lib/clamav/daily.cld loaded
LibClamAV debug: /var/lib/clamav/scam.ndb loaded
LibClamAV debug: bytecode.info loaded
LibClamAV debug: 3986218.cbc loaded
LibClamAV debug: 4306157.cbc loaded
LibClamAV debug: 3986289.cbc loaded
LibClamAV debug: 3986233.cbc loaded
LibClamAV debug: 3986223.cbc loaded
LibClamAV debug: 3986337.cbc loaded
LibClamAV debug: 3986310.cbc loaded
LibClamAV debug: 3986234.cbc loaded
LibClamAV debug: 3986212.cbc loaded
LibClamAV debug: 3986306.cbc loaded
LibClamAV debug: 3986230.cbc loaded
LibClamAV debug: 3986236.cbc loaded
LibClamAV debug: 3986185.cbc loaded
LibClamAV debug: 3986303.cbc loaded
LibClamAV debug: 3986222.cbc loaded
LibClamAV debug: 3986215.cbc loaded
LibClamAV debug: 3986187.cbc loaded
LibClamAV debug: 3986216.cbc loaded
LibClamAV debug: 3986305.cbc loaded
LibClamAV debug: 3986214.cbc loaded
LibClamAV debug: 4306126.cbc loaded
LibClamAV debug: 3986334.cbc loaded
LibClamAV debug: 3986220.cbc loaded
LibClamAV debug: 3986219.cbc loaded
LibClamAV debug: 3986259.cbc loaded
LibClamAV debug: 3986327.cbc loaded
LibClamAV debug: 3986322.cbc loaded
LibClamAV debug: 3986328.cbc loaded
LibClamAV debug: 3986206.cbc loaded
LibClamAV debug: 3986244.cbc loaded
LibClamAV debug: 3986221.cbc loaded
LibClamAV debug: 3986318.cbc loaded
LibClamAV debug: 3986283.cbc loaded
LibClamAV debug: 3986188.cbc loaded
LibClamAV debug: 3986301.cbc loaded
LibClamAV debug: 3986321.cbc loaded
LibClamAV debug: 3986232.cbc loaded
LibClamAV debug: 3986282.cbc loaded
LibClamAV debug: 3986229.cbc loaded
LibClamAV debug: 3986292.cbc loaded
LibClamAV debug: 3986242.cbc loaded
LibClamAV debug: 3986231.cbc loaded
LibClamAV debug: 3986326.cbc loaded
LibClamAV debug: 3986217.cbc loaded
LibClamAV debug: 3986235.cbc loaded
LibClamAV debug: 3986224.cbc loaded
LibClamAV debug: 3986249.cbc loaded
LibClamAV debug: /var/lib/clamav/bytecode.cld loaded
LibClamAV debug: /var/lib/clamav/bofhland_malware_URL.ndb loaded
LibClamAV debug: /var/lib/clamav/foxhole_filename.cdb loaded
LibClamAV debug: /var/lib/clamav/phishtank.ndb loaded
LibClamAV debug: /var/lib/clamav/winnow.attachments.hdb loaded
LibClamAV debug: load_oneyara: successfully loaded YARA.CryptoWall_Resume_phish
LibClamAV debug: load_oneyara: successfully loaded YARA.docx_macro
LibClamAV debug: load_oneyara: successfully loaded YARA.java_JSocket_20151217
LibClamAV debug: cli_loadyara: loaded 3 of 3 yara signatures from /var/lib/clamav/winnow_malware.yara
LibClamAV debug: /var/lib/clamav/winnow_malware.yara loaded
LibClamAV debug: /var/lib/clamav/junk.ndb loaded
LibClamAV debug: /var/lib/clamav/winnow_extended_malware.hdb loaded
LibClamAV debug: /var/lib/clamav/rogue.hdb loaded
LibClamAV debug: /var/lib/clamav/malicious_document.yar loaded
LibClamAV debug: /var/lib/clamav/rfxn.hdb loaded
LibClamAV debug: /var/lib/clamav/bofhland_cracked_URL.ndb loaded
LibClamAV debug: /var/lib/clamav/foxhole_generic.cdb loaded
LibClamAV debug: /var/lib/clamav/rfxn.ndb loaded
LibClamAV debug: /var/lib/clamav/winnow_bad_cw.hdb loaded
LibClamAV debug: /var/lib/clamav/hackingteam.hsb loaded
LibClamAV debug: /var/lib/clamav/spamattach.hdb loaded
LibClamAV debug: /var/lib/clamav/winnow_malware.hdb loaded
LibClamAV debug: /var/lib/clamav/jurlbl.ndb loaded
LibClamAV debug: load_oneyara: successfully loaded YARA.Sanesecurity_TestSig_Type4_Hdr_2
LibClamAV debug: load_oneyara: successfully loaded YARA.Sanesecurity_TestSig_Type3_Bdy_4
LibClamAV debug: load_oneyara: successfully loaded YARA.Sanesecurity_TestSig_Type4_Bdy_3
LibClamAV debug: load_oneyara: successfully loaded YARA.Sanesecurity_PhishingTestSig_1
LibClamAV debug: cli_loadyara: loaded 4 of 4 yara signatures from /var/lib/clamav/Sanesecurity_sigtest.yara
LibClamAV debug: /var/lib/clamav/Sanesecurity_sigtest.yara loaded
LibClamAV debug: /var/lib/clamav/malwarehash.hsb loaded
LibClamAV debug: main.info loaded
LibClamAV debug: main.hdb loaded
LibClamAV debug: main.hsb loaded
LibClamAV debug: main.mdb loaded
LibClamAV debug: main.msb loaded
LibClamAV debug: main.ndb loaded
LibClamAV debug: main.fp loaded
LibClamAV debug: main.sfp loaded
LibClamAV debug: main.crb loaded
LibClamAV debug: /var/lib/clamav/main.cvd loaded
LibClamAV debug: /var/lib/clamav/antidebug_antivm.yar loaded
LibClamAV debug: /var/lib/clamav/crdfam.clamav.hdb loaded
LibClamAV debug: cli_loadftm: File type signature for HWP embedded OLE2 not loaded (required f-level: 82)
LibClamAV debug: cli_loadftm: File type signature for HWPML Document not loaded (required f-level: 82)
LibClamAV debug: cli_loadftm: File type signature for HWP3 Document not loaded (required f-level: 82)
LibClamAV debug: /var/lib/clamav/sanesecurity.ftm loaded
LibClamAV debug: /var/lib/clamav/bofhland_phishing_URL.ndb loaded
LibClamAV debug: load_oneyara: successfully loaded YARA.Sanesecurity_Spam_test
LibClamAV debug: load_oneyara: successfully loaded YARA.Sanesecurity_Spam_pornspam
LibClamAV debug: cli_loadyara: loaded 2 of 2 yara signatures from /var/lib/clamav/Sanesecurity_spam.yara
LibClamAV debug: /var/lib/clamav/Sanesecurity_spam.yara loaded
LibClamAV debug: /var/lib/clamav/spamimg.hdb loaded
LibClamAV debug: /var/lib/clamav/winnow_malware_links.ndb loaded
LibClamAV debug: /var/lib/clamav/porcupine.hsb loaded
LibClamAV debug: /var/lib/clamav/blurl.ndb loaded
LibClamAV debug: /var/lib/clamav/porcupine.ndb loaded
LibClamAV debug: /var/lib/clamav/phish.ndb loaded
LibClamAV debug: /var/lib/clamav/bofhland_malware_attach.hdb loaded

Se è tutto ok possiamo finalizzare l’installazione aggiungendo lo script per aggiornarlo automaticamente e lo script per la rotazione dei log:

/usr/local/bin/clamav-unofficial-sigs.sh --install-cron
chmod 755 /etc/cron.d/clamav-unofficial-sigs
/usr/local/bin/clamav-unofficial-sigs.sh --install-logrotate

Perfetto, ora Clamav avrà più possibilità di intercettare malware nelle email.

 

Estrarre Archivio DEB

Il file .DEB è un archivio che contiene 3 files:

  • debian-binary
  • control.tar.gz
  • data.tar.gz

Di solito quello che serve è il data.tar.gz che contiene il programma.

Per prima cosa dobbiamo estrarre i 3 pacchetti sopraindicati dal file .DEB:

ar vx mypackage.deb

 

Poi estrarre il contenuto di data.tar.gz utilizzando tar:

tar -xzvf data.tar.gz

 

 

Package DEBPer più informazioni sui comandi tar e ar consultate le pagine man : tar(1) e ar(1).

Arduino per domotica, collegato in rete come client/server parte 2

Proseguendo col mio progetto di domotica/antifurto, aggiungo un secondo arduino con ethernet per prendere i vari sensori dall’altra parte della casa e inviarli al server via UDP.

Questo è il link dell’articolo precedente

 

I messaggi che manda sono nel formato “NUMERO SCHEDA” + “NUMERO SENSORE” + “STATO”

ad esempio la scheda 4 arduino con il sensore 6 e lo stato 00001 = 040600001

Come porte UDP ho utilizzato la solita 5055 per la trasmissione utilizzando il protocollo sopra indicato.

Al contrario della scheda illustrata prima questa non riceve comandi ma invia soltanto i dati dei vari sensori collegati

Nel mio caso ho utilizzato:

  • un arduino nano
  • un ENC28J60 Ethernet Shield V1.0 per scheda di rete
  • zoccolo per arduino (shield)

 

enc28j60-shield-variations base ArduinoNanoFront_3_sm
/* 
 * pin 10 -11 -12 -13 occupati da ethernet
 * pin 2 -3 -4 -5 -6 -7 -8 -9 digitali
 * da A0 ad A7 analogici
 */

#include <UIPEthernet.h>

EthernetUDP udpserver;
EthernetUDP udp;

int success;
char IRF;
int counter; //lo utilizzo per il conteggio del client per mandare i messaggi al server


void setup() {
  
  pinMode(2, INPUT); //
  pinMode(3, INPUT); //
  pinMode(4, INPUT); //
  pinMode(5, INPUT); //
  pinMode(6, INPUT);  //
  pinMode(7, INPUT);  //
  pinMode(8, INPUT);  //
  pinMode(9, INPUT);  //
  
  
  Serial.begin(9600); //imposto la porta seriale per debug
  uint8_t mac[6] = {0x02,0x03,0x04,0x05,0x06,0x07}; //imposto mac address

  Ethernet.begin(mac,IPAddress(10,0,0,254)); //imposto ip

  success = udpserver.begin(5056); // apro la porta udp
  }

void loop() {

// qui parto con le letture dei sensori
     
    delay(200);
    
    for (int i=2; i < 10; i++){
       success = udp.beginPacket(IPAddress(10,0,0,1),5055);
       String Messaggio = "060" + String(i-1) + "0000" + String(!digitalRead(i));
       success = udp.print(Messaggio);
       success = udp.endPacket();
       delay(100);
    } 
      
     for (int i=0; i < 8; i++){
       success = udp.beginPacket(IPAddress(10,0,0,1),5055);
       String Scheda;
       if ((i+9)>9) {
         Scheda="06";
       } else {
         Scheda="060";
       }
       String Messaggio = Scheda + String(i+9) + String(analogRead(i));
       success = udp.print(Messaggio);
       success = udp.endPacket();
       delay(100);
     } 
       

}

Raspberry Owncloud Client compiled ver.2.0.1

raspberry

The version shipped with raspbian not work with owncloud server 8 so I recompiled to arm the client version 2.

Since raspberry pi take long to compile and there are many dependencies to be installed for compile correctly I’ve decided to post here the version already compiled.

First you have to install the version provided by the repository and then overwrite the client with the downloadable version I’ve done

To install from repository you have to do the following:

sudo apt-get update
sudo apt-get install owncloud-client

Then download the client compiled and ready to install : Client 2.0.2 builded

copy this in /opt

sudo cp owncloud-client-build.tar.bz2 /opt
tar xvzf owncloud-client-build.tar.bz2
cd ./client-build
make install

In some case you must relink a library to the new one:

rm /usr/lib/arm-linux-gnueabihf/libowncloudsync.so.0
ln -s /usr/local/lib/libowncloudsync.so.2.0.2 /usr/lib/arm-linux-gnueabihf/libowncloudsync.so.0

 

This is the archive with compiled owncloud ready to install with instrucion wrote above: Client 2.0.2 builded

This is the only Owncloud 2.0.1 executable : owncloud

Also this the only cmd version: owncloudcmd

Arduino per domotica, collegato in rete come client/server

Con questo articolo parto a spiegarvi come utilizzare arduino e altri strumenti per autocostruirsi un impianto di domotica e relativo antifurto.

Con questo parte di progetto utilizzo arduino per inviare via UDP lo stato degli I/O e anche di ricevere pacchetti UDP per controllare 4 relay.
Tutto il progetto completo è formato da diversi blocchi come questo che comunicano con un server (raspberry pi) che in python controlla il tutto e agisce di conseguenza. Sul Rasberry è installato anche Asterisk che interfacciato con il mio programma python è in grado di ricevere telefonate per attivare l’antifurto o disattivarlo e decidere chi chiamare, tutto tramite voce i segnali DTMF.

Comunque senza perderci troppo con il primo pezzo, cioe’ arduino che invia e riceve pacchetti.

I messaggi che manda sono nel formato “NUMERO SCHEDA” + “NUMERO SENSORE” + “STATO”

ad esempio la scheda 5 arduino con il sensore 6 e lo stato 00001 = 050600001

In questo modo posso utilizzare quanti arduino voglio, di sensori in teoria fino a 99, teniamo conto che arduino si può facilmente espandere con I/O su i2c.
Per il valore utilizzo 5 cifre perchè oltre al segnale on/off posso trasmettere temperature, livello di Co2 e tutto quello può servirvi.

Come porte UDP ho utilizzato 5055 per la trasmissione e 5056 per la ricezione, poi potete comunque modificarle con altre se vi torna comodo.

Nel mio caso ho utilizzato:

  • un arduino nano
  • un ENC28J60 Ethernet Shield V1.0 per scheda di rete
  • un piccola espansione per fare dei collegamenti decenti
  • Scheda a 4 relay

 

baseenc28j60-shield-variations
relay
ArduinoNanoFront_3_sm

 

 

 

 

 

 

serve la libreria per gestire lo shield Ethernet, quindi scaricate la libreria qui: https://github.com/ntruchsess/arduino_uip

Installate la libreria in Arduino IDE e qui sotto c’e’ il programma ad hoc che utilizzo su una scheda, più’ sotto vi spiego i vari blocchi:

/*
 * pin 10 -11 -12 -13 occupati da ethernet
 * pin 2 -3 -4 -5 -6 -7 -8 -9 digitali
 * da A0 ad A7 analogici
 */

#include <UIPEthernet.h>

EthernetUDP udpserver;
EthernetUDP udp;

int success;
char IRF;
int counter; //lo utilizzo per il conteggio del client per mandare i messaggi al server


void setup() {
 
 pinMode(2, OUTPUT); //rele
 pinMode(3, OUTPUT); //rele
 pinMode(4, OUTPUT); //rele
 pinMode(5, OUTPUT); //rele
 pinMode(6, INPUT); // finestra cortile filo rosso
 pinMode(7, INPUT); // finestra vicino lavandino filo nero
 pinMode(8, INPUT); // porta cucina filo bianco
 pinMode(9, INPUT); // sensore lampada 500w portico
 
 
 Serial.begin(9600); //imposto la porta seriale per debug
 uint8_t mac[6] = {0x00,0x01,0x02,0x03,0x04,0x05}; //imposto mac address
 Ethernet.begin(mac,IPAddress(10,0,0,253)); //imposto ip
 success = udpserver.begin(5056); // apro la porta udp
 }

void loop() {
 
 //controllo nuovi udp-packet:
 int size = udpserver.parsePacket();
 if (size > 0) {
 do
 {
 char* msg = (char*)malloc(size+1);
 int len = udpserver.read(msg,size+1);
 msg[len]=0;
 Serial.print("received: ");
 Serial.println(msg);
 if (String(msg[0])=="1") {
 digitalWrite(2, HIGH);
 } else {
 digitalWrite(2, LOW);
 }

 if (String(msg[1])=="1") {
 digitalWrite(3, HIGH);
 } else {
 digitalWrite(3, LOW);
 }

 if (String(msg[2])=="1") {
 digitalWrite(4, HIGH);
 } else {
 digitalWrite(4, LOW);
 }

 if (String(msg[3])=="1") {
 digitalWrite(5, HIGH);
 } else {
 digitalWrite(5, LOW);
 }

 free(msg);
 }
 while ((size = udpserver.available())>0);
 //finish reading this packet:
 udpserver.flush();
 
 // restituisco la lettura delle uscite
 for (int i=20; i < 24; i++){
 success = udpserver.beginPacket(IPAddress(10,0,0,10),5056);
 String Messaggio = "050" + String(i) + "0000" + String(digitalRead(i-18));
 success = udpserver.print(Messaggio);
 success = udpserver.endPacket();
 delay(100);
 } 
 udpserver.stop();
 //restart with new connection to receive packets from other clients
 Serial.print("restart connection: ");
 Serial.println (udpserver.begin(5056) ? "success" : "failed");
 }

// qui parto con le letture dei sensori
 if (counter > 1200) {
 
 
 for (int i=6; i < 10; i++){
 success = udp.beginPacket(IPAddress(10,0,0,1),5055);
 String Messaggio = "050" + String(i-5) + "0000" + String(!digitalRead(i));
 success = udp.print(Messaggio);
 success = udp.endPacket();
 delay(100);
 } 
 
 for (int i=0; i < 2; i++){
 if (analogRead(i) > 300) { //leggo lo stato degli irf
 IRF='1';
 } else {
 IRF='0';
 }
 success = udp.beginPacket(IPAddress(10,0,0,1),5055);
 String Messaggio = "050" + String(i+5) + "0000" + IRF;
 success = udp.print(Messaggio);
 success = udp.endPacket();
 delay(100);
 } 

 counter=0;
 } else {
 counter = counter + 1;
 }

}

Lo shield per la scheda di rete utilizza i pin di Arduino 10 -11 -12 -13
Quindi questi non li possiamo utilizzare per la nostra domotica.

 uint8_t mac[6] = {0x00,0x01,0x02,0x03,0x04,0x05}; //imposto mac address
 Ethernet.begin(mac,IPAddress(10,0,0,253)); //imposto ip
 success = udpserver.begin(5056); // apro la porta udp

Dobbiamo impostare il mac address per la scheda di rete (utilizzare dei numeri esadecimali a caso), poi impostiamo un IP statico nel range della vostra rete; nella mia rete utilizzo 10.0.0.0/24 quindi ho preso un IP libero a caso  10.0.0.253.. Alla fine imposto la porta di ascolto 5056 per ricevere dati da server (utilizzare certe porte come uscite).

Nel ciclo di loop è tutto abbastanza semplice, leggo i valori degli input e li invio uno a uno via UDP al mio server.
Per la parte della gestione uscite in Arduino rimane in ascolto sulla porta 5056 e riceve una stringa di 4 caratteri che attivano o disattivano i relay (1 attiva 0 disattiva).
Quindi 0001 attiva il primo relay.

Questa è la prima parte del progetto, spero vi possa essere di spunto per i vostri progetti.

Nel prossimo articolo posterò un progetto quasi uguale per Arduino dove invece lo utilizzo solo per leggere ingressi e non ho uscite, quindi manca la parte server.

 

 

Configurare pc windows come thinclient

Avendo un vecchio pc e installando windows xp o un windows embedded ci sono diversi problemi per metterlo a punto:

  • fare l’autologin
  • lanciare allo startup uno script che avvia la connessione al terminal
  • fare in modo che si colleghi al terminale senza richiedere username e password ma mostrando direttamente la la schermata di login del server
  • al logoff dal terminal il thin client deve spegnersi

Per l’autologin vi rimando a un’articolo precendente

Per lo script di startup io ho utilizzato 2 files:

Startup.vbs
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\temp\STARTUP.bat" & Chr(34), 0
Set WshShell = Nothing

Startup.bat
C:\temp\miaconnessinone.rdp
shutdown /p

il primo va messo nello startup di windows e impedisce la visualizzazione noisa della schermata del prompt e permette di eseguire un comando alla volta.
Il secondo lancia la connessione utilizzando un rdp già preconfigurato con i nostri valori.

Per configurare correttamente il file rdp utilizzate il solito Connessione a Desktop Remoto e poi salvate il file come miaconnessione.rdp mettendo l’indirizzo del server e le varie opzioni che vi interessano. (vi consiglio di smarcare “visualizza barra delle connessioni in modalità schermo intero in modo che l’utente non possa minimizzare la schermata remota)

Connessione Desktop Remoto

Ora editate con notepad  il file miaconnesione.rdp e aggiungete la riga:
enablecredsspsupport:i:0
salvate e chiudete. Questa opzione permetterà di collegarsi senza chiedere prima username e password ma mi mostrerà la schermata di login sul server. In questa foto vedete la schermata che di solito sempre compare e così l’abbiamo annullata:

Login classico

Mettere in startup (esecuzione automatica) il file Startup.vbs
quando il pc o thinclient partirà si colllegherà direttamente al terminal server mostrando la login, quando l’utente farà disconnetti si spegnerà anche il thinclient rendendo trasparente l’utilizzo del terminal.

Spero vi possa essere utile!

Windows 2008 R2 cambiare la password di administrator persa

Semplicemente con il DVD di installazione e qualche operazione si può cambiare la password di administrator o di qualsiasi altro utente in modo molto veloce e semplice, un hack ridicolo che funziona alla grande. Guardate il video che in 3 min cambia la password a un server.

Video di hack della password di administrator

[youtube Ar-VoO9ogHc]