Monthly Archives: ianuarie 2007

Pagerename.py

Posted by on ianuarie 30, 2007
Fără categorie / No Comments

Pagerename.py is a script for the pywikipedia framework, used to rename a series of pages on Wikipedia and other MediaWiki sites. The script is designed to make the same modification on all the titles it reads from the input file. You can remove parts of the title or add a new text at the beginning and/or and of the title. You can find it’s source code below or at this site.
Continue reading…

Computer Systems’ Structure homeworks

Posted by on ianuarie 30, 2007
Fără categorie / No Comments

Computer Systems’ Structure homeworks from Automatics and Computer Science Faculty, 4th year, prof. Emil Sluşanschi. The archive contains a homework made in C. Themes: threads, semaphores, queues, locks, fat-tree inter-connection structures, file-sharing, network programming in python. The C homework is a simulation using the Blitzen simulator (not included).
Continue reading…

Operating Systems homeworks

Posted by on ianuarie 30, 2007
Fără categorie / No Comments

Operating Systems homeworks from the Automatics and Computer Science Faculty, 4th year, prof. Marius Dorian Zaharia. Themes:

  • using Linux;
  • bash;
  • processes and threads in Linux;
  • IPC: semaphores, message queues, signals, shared memory;
  • readers-writers, producers-consumers and philosopher’s problems.

Continue reading…

PR Update

Posted by on ianuarie 28, 2007
Fără categorie / No Comments

We’ve had a Google PR update these days, Strainu onLine is now at PR4. We’ll soon be over me previous site, strainu.3x.ro 😆 The blog and energreen both have PR3. The articles section has made a jump to PR2.

Maşină de codare cu algoritmul ARCFOUR şi microcontrollerul Atmel ATmega16

Posted by on ianuarie 23, 2007
Fără categorie / 6 Comments

Pentru versiunea originală a articolului, inclusiv codul, vezi pagina de proiecte.

Cuprins

Ideea proiectului

Proiectul constă în realizarea unui dispozitiv de codare/decodare a datelor de pe un card de memorie folosind un algoritm asemănător cu RC4.

Codarea

Datele vor fi citite de la calculator prin interfaţa serială, vor fi codate în microporcesor şi vor fi scrise pe un card SD/MMC care poate fi apoi transportat la o maşină de decodare

Decodarea

Datele codate vor fi citite de pe card, decodate şi scrise pe interfaţa serială către calculator.

Proiectul nu va coda decât bucăţi de text introduse în hyperterminal. Pentru a coda şi alte tipuri de date se poate crea un program care să ruleze pe calculator şi care să facă o codare în base64.

Modalitatea de implementare

Vom folosi plăcuţa realizată la faza 1, care conţine microcontrolerul Atmel ATMega16, circuitul de alimentare la 5V şi portul serial de comunicare cu calculatorul.

La acest circuit vom mai ataşa un cititor de carduri SD/MMC pentru a stoca datele codate. Comunicarea între microcontroler şi cititorul de carduri se face prin portul SPI (pinii PB4-PB7 ai microcontrolerului). Cardurile MMC sunt alimentate la 3,3V şi nu la 5V ca restul circuitului, de aceea mai avem nevoie şi de o sursă de tensiune de 3,3V care să ofere Vcc pentru card.

Utilizatorul va comunica cu programul prin intermediul portului serial şi a unui program dedicat (de exemplu hyperterminal). El va putea decide dacă doreşte să codeze sau să decodeze un text, va putea să introducă parola şi eventual textul care trebuie codat.

Partea hardware

Schema electrică a întregului ansamblu:

Schema folosită la simulare. Se observă folosirea SPI debugger în locul cardului SD/MMC

Comunicarea cu cardul

Comunicarea se face prin trimiterea de comenzi către card şi primirea răspunsurilor. În total există 15 comenzi şi 3 răspunsuri, pe care însă nu le vom descrie aici. Pentru o desciere amănunţită, vezi [4]. Citirea/scrierea se fac pe blocuri, dimensiunea implicită fiind de 512 octeţi. Multe carduri nu permit schimbarea acestei dimensiuni, deşi protocolul prevede şi această posibilitate.

Comunicarea are 3 componente:

  1. Initializarea
  2. Citirea
  3. Scrierea

Initializarea

În primul rând cardul trebuie resetat. Acest lucru se face trimiţând comanda 0, la care cardul trebuie să rărpundă cu 0x01 (ceea ce înseamnă că a intrat în starea IDLE). Apoi se face iniţializare propriu zisă, în care se trimite comanda 1 şi se asteaptă răspunsul 0x00. Iniţializarea poate dura câteva zeci de milisecunde, timp în care se va primi altceva.

Citirea

În cadrul acestui proiect vom face numai citirea unui singur bloc. Se va trimite comanda 17 cu un argument ce reprezintă numarul de octeţi de la începutul cardului de la care se va face citirea. Răspunsul primit trebuie să fie 0xFE, altfel avem eroare. Dacă nu avem eroare, va urma un bloc de date şi 2 octeţi reprezentând CRC-ul blocului. În această aplicaţie am decis să ignorăm acest câmp.

Scrierea

Scrierea va fi tot pe un bloc. Se va trimite comanda 24, se va aştepta răspunsul plus timpul necesar încă unui octet, apoi se vor trimite datele. După terminarea transmisiei, cardul va trimite imediat un răspuns, urmat de o perioadă de BUSY în care se va face efectiv scrierea, şi în care trebuie să aşteptăm cardul să devină disponibil.

Comunicarea cu seriala Atmel ATmega16 are inclusă posibilitatea de comunicaţie pe serială. Funcţiile implementate asigură conversia dintre \r\n şi \n. În plus, am folosit macroul FDEV_SETUP_STREAM pentru a putea folosi seriala ca intrare/ieşire standard.

Lista componentelor necesare

Lista cuprinde doar componentele suplimentare faţă de cele folosite în plăcuţa comună. Pentru lista componentelor folosite la plăcuţă, vezi aici.

Cititor carduri SD/MMC 1 bucată Comet S.R.L.
Rezistenţe de 1K8 3 bucăţi Comet S.R.L.
Rezistenţe de 3K3 3 bucăţi Comet S.R.L.
Stabilizator tensiune de 3,3V 1 bucată Comet S.R.L.
Condensatori de 100nF 2 bucăţi rămaşi de la faza 1

Partea software

Programul rulat de microcontroler foloseşte portul serial pentru a primi informaţii de la utilizator. Acesta trebuie să aleagă dacă doreşte să codeze sau să decodeze text.

CODARE

La codare, utilizatorul trebuie să introducă parola cu care se face codarea precum şi textul de codat. Rezultatul codării este scris în sectorul 1 al cardului MMC

DECODARE

La decodare, utilizatorul va introduce parola şi programul va decoda textul. Dacă parola este corectă, textul va avea sens, dacă nu, cel mai probabil vom avea caractere din setul ASCII extins, eventual neafişabile.

LIMITĂRI

Datorită limitărilor hardware (doar 512 octeţi de RAM) şi a faptului că algoritmul ARCFOUR foloseşte un vector de 256 de elemente, limita pentru lungimea parolei este de 8 caractere (64 de biţi) şi lungimea textului este de maxim250 de caractere. Teoretic s-ar putea dezvolta o metodă prin care cei 256 de octeţi ar putea fi reduşi la 224, ceea ce ar elibera încă 32 de octeţi, însă această metodă ar fi mare consumatoare de timp.

O altă soluţie ar fi citirea câte 250 de caractere până la finalizarea textului, însă acest lucru ar putea crea confuzie pentru anumiţi utilizatori.

STRUCTURA PROGRAMULUI

Pe lângă programul principal, codul mai are 3 module: unul care se ocupă de comunicarea pe serială, altul care se ocupă de comunicarea cu cardul MMC şi a treia care se ocupă efectiv de codare.

UNELTE SOFTWARE

Pentru acest proiect am folosit avr-studio, win-avr pentru compilatorul gcc-avr şi Proteus pentru simulare.

Concluzii

Datorită problemelor software menţionate la punctul anterior dispozitivul nu poate fi utilizat în lumea reală. Dacă problemele acestea ar fi depăşite, proiectul ar putea fi cu adevărat util. Printre dezvoltările ulterioare ce ar putea fi realizate aş enumera folosirea unui algoritm de criptare mai performant (slăbiciunile lui ARCFOUR au fost demonstrate de spargerea criptării WEP), critarea fişierelor şi/sau a directoarelor, etc. Dacă la faza 2 am spus că voi folosi întreruperi pentru a decide dacă e vorba de codare sau decodare, până la urmă am renunţat la această soluţie ca fiind nepractică (se poate uita foarte uşor să se apese pe buton). Singura problemă hardware cu adevărat dificilă a fost defectarea stabilizatorului de 3,3V. Cum toate magazinele de specialitate erau în inventar, am recurs la o schemă de stabilizare folosind o diodă Zener şi o rezistenţă de 100Ω, care dă o tensiune de aproximativ 3,2V, în limitele de funcţionare ale cardului.

Referinte şi Link-uri

  1. Schema electrică pentru MMC: http://www.captain.at/electronic-atmega-mmc.php
  2. Codarea RC4: http://en.wikipedia.org/wiki/RC4
  3. Date tehnice MMC: http://mmc.drzeus.cx/wiki/
  4. Comenzi MMC în modul SPI: http://elm-chan.org/docs/mmc/mmc_e.html

Managementul schimbării

Posted by on ianuarie 12, 2007
Fără categorie / No Comments

Descriere: O definiţie pentru managementul schimbării ar fi: elaborarea, administrarea şi evaluarea sistematică a schimbărilor într-o întreprindere.
Materie: Management
Referat făcut la facultate.
Continue reading…

Comentariu de text (Management)

Posted by on ianuarie 12, 2007
Fără categorie / No Comments

Descriere: Comentariul unui articol din Ziarul Financiar pe teme de Management
Materie: Management
Referat făcut la facultate.
Continue reading…

Traffic data class

Posted by on ianuarie 12, 2007
Fără categorie / No Comments

Traffic data class (trafic_data) is a PHP class which allows you to retrieve all the traffic data for the websites using the trafic.ro engine. The code can get all the data (including the site ID) using only the URL of a page containing the trafic.ro code.
Continue reading…