Computer Games Forum

Go Back   Computer Games Forum > Tech > Software

Notices

Reply
 
LinkBack Thread Tools
Old 14-07-2000, 23:31   #1 (permalink)
Registered User
 
Rabbit's Avatar
 
Join Date: May 2000
Location: Bucureşti
Post Low-level programming

Cum pot sa accesez dintr-un program propriu serial number-ul placii de baza? Exemplul meu: 04/02/1999-VP3-586B-SMC6-2A5LESHDC-00. "2A5LE" este id-ul pentru VIA (M)VP3, asa cum "2A69K" este pentru Intel BX/ZX (toate id-urile se gasesc in SiSoft Sandra -> SANDRA.BIO). Ce intrerupere sau port sa apelez? Aceeasi intrebare pentru citirea seriei hard discului si a parametrilor lui (nu prin citirea datelor din BIOS, care nu-mi zic de exemplu fabricantul).
 
Rabbit is offline    Reply With Quote
Old 16-07-2000, 04:49   #2 (permalink)
Cd
Registered User
 
Cd's Avatar
 
Join Date: Jan 2000
Location: Chicago, IL, USA
Post

Iepuras, numarul de serie al BIOS-ului e scris undeva in ROM. Adresa e aceeasi la toate BIOS-urile de acelasi tip (e.g. Award, sau AMI), dar s-ar putea sa nu fie universala. Oricum, cauta in real-mode sirul respectiv intre adresele F000:0000 si F000:FFFF la BIOS-ul tau, si sunt sanse mari ca si la alt BIOS sa fie tot la adresa aia. Experimenteaza putin pe calculatoarele prietenilor. O metoda destul de sigura sa identifici un BIOS, fara sa stii unde e numarul de serie, este sa calculezi o functie oarecare de hash pentru cei 64Kb ai BIOS-ului.

In general, te lovesti de doua probleme (erorile de tip I si II din statistica) atunci cand folosesti BIOS-ul ca sa identifici un calculator:
a) Continutul BIOS-ului (si probabil si numarul de serie) se schimba cand upgradezi BIOS-ul;
b) Daca flash-ezi doua calculatoare cu acelasi upgrade de BIOS, s-ar putea sa obtii BIOS-uri identice, pentru ca nu stiu daca programelul care face treaba asta genereaza un nou numar de serie (aleator sau pe baza celui vechi), incat calculatoare diferite sa aiba in continuare numere de serie diferite.

Discurile IDE raspund la o comanda de genul "read configuration data", care functioneaza foarte asemanator cu comanda obisnuita de citit sectoare, insa obtii un "sector" virtual cu toate informatiile interesante despre disc. Problema e ca nu stiu sa existe vreo functie DOS sau BIOS care sa faca treaba asta, si nu e o placere sa programezi controller-ul IDE si DMA-ul ca sa citesti informatiile alea -- insa se poate face. Cauta pe Net documentatie despre IDE (sau, mai bine, despre ATAPI), si te lamuresti. Ai grija sa nu dea SmartDrive-ul peste tine in timp ce incerci sa citesti numarul de serie, ca cine stie ce porcarie mai iese!
__________________
In afara cainelui, cartea este cel mai bun prieten al omului (inauntrul cainelui e prea intuneric ca sa citesti).
 
Cd is offline    Reply With Quote
Old 18-07-2000, 00:18   #3 (permalink)
Registered User
 
Rabbit's Avatar
 
Join Date: May 2000
Location: Bucureşti
Post

Crezi ca toate softurile astea mishto gen Sandra au in "ele" o baza de data cu adresele tuturor biosurilor? Pai daca stau sa ma gandesc sunt vreo 20 - asta poti gasi daca cauti in fisierul SI32.EXE (Norton SysInfo). Iar problema mai urata ar fi sa gasesti in zilele noastre un prieten cu BIOS non-Award. Au facut cam toti upgrade.
Acum mult timp, cand nu eram interesat de asa ceva am gasit un programel in Pascal care afisa datele despre hard disc (seria, cilindri, heads etc.) dar l-am pierdut demult. Tin minte ca apela intreruperea 74h, dar cautand in Ralf Brown's interrupt list nu am gasit nimic concret.
 
Rabbit is offline    Reply With Quote
Advertisment
Reply

  Computer Games Forum > Tech > Software

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT +2. The time now is 03:21.


This site is copyrighted ©1997 - 2009, Computer Games Online SRL