AntiGuide: ArduinoEnc28J60StereoManInTheMiddleFrame



PagePrincipale :: DerniersChangements :: ParametresUtilisateur :: Vous êtes 216.73.216.49 :: Signaler un abus :: le: 20251017 00:03:05
pour le matériel: ArduinoEnc28J60StereoMegaTwoWired

light
do nothing
proof of concept ; watch throughput

pourrait servir à observer le trafic entre deux boites noires, voir SondeEthernet

// framework "man in the middle"
// http://antiguide.free.fr/wiki/wakka.php?wiki=ArduinoEnc28J60StereoManInTheMiddleFrame
// Ethercard is cloned yo EtherCard_bis, all elements sufixed _bis!
#include <EtherCard.h>
#include <EtherCard_bis.h>

//   TWO mac address to & from terminals
// my private values!
byte VOSTROMAC[6] = { 0,0x24,0xE8,0xE6,0xEE,0x85};
byte ACERMAC[6]={00,0x24,0x21,7,0x8E,0x25};
byte FREEBOXMAC[6]={00,0x24,0xD4,A7,0xd9,0xC9};

byte IPDUMMY[4]={0,0,0,0};

#define PINCSZOMBIE 49
#define PINCSLAN 53

#define LENBUFFER 1800  // more than max windows tcp
byte ENC28J60::buffer[LENBUFFER];
byte ENC28J60_bis::buffer[LENBUFFER];

int qreceivedfromzombie=-1;
int qreceivedfromlan=-1;
int success=0;

void setup () {
  Serial.begin(9600);
  Serial.println("[TCP-Pass-Through_(manInTheMiddle)]");
  digitalWrite(10,HIGH);
    Serial.print( "Access Ethernet controller... on pin ");
    Serial.print(PINCSZOMBIE);
//  if (ether.begin(sizeof ENC28J60::buffer, mymaczombie,PINCSZOMBIE) == 0) {
  if (ether.begin(sizeof ENC28J60::buffer, ACERMAC,PINCSZOMBIE) == 0) {
    Serial.println( " Failed!");
    return;
  }
       Serial.println( "Success.!");
 
    Serial.print( "Access Ethernet controller... on pin ");
    Serial.print(PINCSLAN);
  if (ether_bis.begin(sizeof ENC28J60_bis::buffer, VOSTROMAC,PINCSLAN) == 0) {
    Serial.println( " Failed!");
    return;
  }
     Serial.println( " Success.!");
 
 // zombie
 
      memcpy(ether.myip,IPDUMMY,4);
      memcpy(ether.mymask,IPDUMMY,4);
      memcpy(ether.gwip,IPDUMMY,4);
      memcpy(ether.dnsip,IPDUMMY,4);
//lan
       memcpy(ether_bis.myip,IPDUMMY,4);
      memcpy(ether_bis.mymask,IPDUMMY,4);
      memcpy(ether_bis.gwip,IPDUMMY,4);
      memcpy(ether_bis.dnsip,IPDUMMY,4);
   
    success=1;
}
//---------------------------------------------------------------
// --------------------------------------------------------------
void loop () {
   if (!success) return;
  // ------------------------- get onr ZOMBIE
   qreceivedfromzombie=  ether.packetReceive();

   if (qreceivedfromzombie>0) {
      // put on lan
      ether_bis.sendEthernet((char *)ether.buffer,qreceivedfromzombie);
      return;
    }
 
  // get on lan
  
   qreceivedfromlan=  ether_bis.packetReceive();
  
   if (qreceivedfromlan>0) {
      // put on Zombie
      ether.sendEthernet((char *)ether_bis.buffer,qreceivedfromlan);
   }
  
}