elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ... 45
141  Programación / Programación General / fat12maker en: 4 Julio 2012, 16:53 pm
Hola, cree una herramienta que permite crear imágenes de disquete con el sistema de archivos FAT12.

Muchos considerarán inútil, pero le puede ser útil a aquella gente que quiera conocer como trabaja el sistema de archivos FAT12. Esta herramienta, la programé para el Kernel que estoy desarrollando. Puedes hacer un bootloader (de 512 bytes) y esta herramienta se encarga de meterla en el sector 0 de la imagen. También permite crear imágenes de disquete sin bootloader, soporta los siguientes tipos: 2880KB, 1440 KB, 1200 KB, 720 KB, 360 KB, 320 KB, 180 KB, 160 KB.

Las imágenes generadas siguen el estándar de Microsoft y pueden ser abiertas por el Nero o el UltraISO.

El código es bastante interesante, está escrito en C, creo que está bastante bien.

Código
  1. /*
  2.  * addFileFAT12()
  3.  * Add file to our FAT12_t structure
  4. */
  5. int addFileFAT12(char * fileName, FAT12_t * fat12)
  6. {
  7. int result = 0;
  8. linked_list_t * l = NULL;
  9. directory_entry_t directoryEntry;
  10.  
  11. if (fat12 == NULL)
  12. return FAT12_INVALID_FAT12_POINTER;
  13.  
  14. if (fat12->active != 0)
  15. return FAT12_INACTIVE;
  16.  
  17. result = getDirectoryEntry(fileName, fat12, &directoryEntry);
  18. if (result == DE_OK)
  19. {
  20. fat12->list.list = fat12->list.last;
  21.  
  22. l = (linked_list_t*)malloc(sizeof(linked_list_t));
  23. if (l == NULL)
  24. return FAT12_LINKED_LIST_MALLOC_ERR;
  25.  
  26. if (fat12->list.list == NULL)
  27. fat12->list.list = l;
  28. else
  29. {
  30. fat12->list.list->next = l;
  31. fat12->list.list = fat12->list.list->next;
  32. }
  33.  
  34. fat12->list.list->directoryEntry = directoryEntry;
  35.  
  36. fat12->list.list->fileName = (char *)malloc(strlen(fileName) + 1);
  37. if (fat12->list.list->fileName == NULL)
  38. return FAT12_LINKED_LIST_FILENAME_MALLOC_ERR;
  39.  
  40. strncpy(fat12->list.list->fileName, fileName, strlen(fileName) + 1);
  41. //fat12->list.list->fileName = strdup(fileName);
  42.  
  43. fat12->list.list->next = NULL;
  44.  
  45. if (fat12->list.first == NULL)
  46. fat12->list.first = fat12->list.list;
  47.  
  48. fat12->list.last = fat12->list.list;
  49. fat12->NumberOfFiles++;
  50.  
  51. return FAT12_OK;
  52. }
  53. else
  54. return result;
  55. }
  56.  
  57. ...
  58. while (fat12->list.list != NULL)
  59. {
  60. sectorsCount = (unsigned short)(fat12->list.list->directoryEntry.FileSize / fat12->boot_sector.BytesPerSector) + 1;
  61. fat12->list.list->directoryEntry.StartingCluster = LBAAddress;
  62.  
  63. printf("\nFile: %s, Size: %d bytes, Sectors count: %d, LBA Address: 0x%.4x", fat12->list.list->fileName,
  64. fat12->list.list->directoryEntry.FileSize, sectorsCount, LBAAddress);
  65.  
  66. LBAAddress += sectorsCount;
  67.  
  68. if (sectorsCountOfNextFile != -1) //Quiere decir que ya usamos un cluster
  69. sectorsCount--;
  70. sectorsCountOfNextFile = -1;
  71.  
  72. fat12->list.list = fat12->list.list->next; //Preparamos el siguiente archivo
  73. while (sectorsCount > 0)
  74. {
  75. switch (sectorsCount)
  76. {
  77. case 1:
  78. sectorsCount = 0;
  79. fat_entry = 0x000FFF00;
  80.  
  81. if (fat12->list.list != NULL)
  82. {
  83. sectorsCountOfNextFile = (unsigned short)(fat12->list.list->directoryEntry.FileSize / fat12->boot_sector.BytesPerSector) + 1;
  84. if (sectorsCountOfNextFile == 1)
  85. fat_entry = 0xFFFFFF00;
  86. else
  87. fat_entry += (nextCluster + 1) << 20;
  88. }
  89. break;
  90. case 2:
  91. fat_entry = 0xFFF00000 + (nextCluster << 8);
  92. sectorsCount = 0;
  93. break;
  94. default:
  95. fat_entry = (unsigned long)((nextCluster + 1) << 20) + (nextCluster << 8);
  96.  
  97. sectorsCount -= 2;
  98. break;
  99. }
  100. nextCluster+=2;
  101.  
  102. *fatTable++ = (unsigned char)((fat_entry & 0x0000FF00) >> 8);
  103. *fatTable++ = (unsigned char)((fat_entry & 0x00FF0000) >> 16);
  104. *fatTable++ = (unsigned char)((fat_entry & 0xFF000000) >> 24);
  105. }
  106. }
  107.  
  108.  

Estoy haciendo más portable el código para que se pueda compilar en sistemas *nix, además, estoy escribiendo una buena documentación en español sobre el sistema de archivos FAT12.

https://sourceforge.net/projects/fat12maker/

Espero que os sea de utilidad  ;D

Saludos.
142  Programación / Programación General / Re: Robusteciendo las Prácticas de Programación con Estándares de Lenguajes y C en: 4 Julio 2012, 15:36 pm
Yo también estoy empezando con esto de programar tu propio Sistema Operativo, cree un programa en C que permite crear imágenes de disquetes con el formato FAT12. Después hice un bootloader en ASM que ocupa 512 bytes y lo metí en el sector 0 de mi imagen floppy. Y ahora ando a vueltas para cargar el stage2 del bootloader del sistema de archivos FAT12, y me va a llevar tiempo...

Saludos.
143  Programación / Programación General / Re: Sincronización aplicación Php y Delphi en: 28 Junio 2012, 23:19 pm
También tienes otra manera más óptima, pero más laboriosa. Sería interconectar el servidor y tu aplicación ya sea cliente/servidor o servidor/cliente y enviar algún tipo de información diciendo que ya puede descargar el archivo. De esta manera se descargaría al momento.

Saludos.
144  Programación / Programación General / Re: Sincronización aplicación Php y Delphi en: 28 Junio 2012, 14:46 pm
Yo creo que lo más normal sería leer el archivo php, cuando lo descargas desde la aplicación de Delphi se va a ejecutar, así que cuando termine de ejecutarse haces que imprima un OK o algo así... De esta manera, en Delphi lees el archivo y si pone OK, descargas el archivo .txt...

Saludos.
145  Informática / Hardware / Re: Ayuda compra en: 26 Junio 2012, 15:27 pm
Lo que no entiendo es , si la tarjeta va directa a la placa base por que es mejor el adaptador? es mayor la velocidad desde un USB?

Tienen mayor alcance los adaptadores Wifi USB, y además, tienen drivers para la mayoría de las distribuciones Linux, en cambio las integradas no todas tienen.

Saludos.
146  Informática / Hardware / Re: Ayuda compra en: 23 Junio 2012, 00:24 am
Bueno, pues el disco duro te sirve, entonces solo te falta conseguir un monitor. A poder ser, evita los viejos de tubo CRT jajaja, yo me dejé la vista en uno de esos xD

Cuelga fotos aquí cuando tengas el equipo montado y pregunta si te hace falta ayuda para montarlo.

Saludos.
147  Informática / Hardware / Re: Sandy Bridge vs FM1 en: 23 Junio 2012, 00:14 am
El rendimiento de los Sandy Bridge es muy superior a los FM1. En esta página puedes hacerte una idea:

http://www.cpubenchmark.net/

Saludos.
148  Informática / Hardware / Re: Ayuda compra en: 21 Junio 2012, 23:57 pm
zaico, primero deberías decirnos si tienes monitor, y que disco duro tienes, porque si no, no hacemos nada.

Aquí tienes otro presupuesto, suponiendo que el disco no nos sirve y tienes pantalla. Este micro Intel, rinde un poco más que la APU A6 3500, y los gráficos integrados están más o menos a la par. Lo ideal sería irte a por la APU que te puse antes, la A8-3850 o la que te recomendó Aprendiz-Oscuro.

No es un equipo malo, está ajustado al máximo:

Intel Dual Core G630 2.7Ghz Box Socket 1155 - 55 €
http://www.pccomponentes.com/intel_dual_core_g630_2_7ghz_box_socket_1155.html

Gigabyte GA-B75M-D3V - 64 €
http://www.pccomponentes.com/gigabyte_ga_b75m_d3v.html

G.Skill Ripjaws X DDR3 1333 PC3-10666 4GB 2x2GB CL9 - 26.95 €
http://www.pccomponentes.com/g_skill_ripjaws_x_ddr3_1333_pc3_10666_4gb_2x2gb_cl9.html

Seagate Barracuda 7200.12 500GB SATA3 - 64.95 €
http://www.pccomponentes.com/seagate_barracuda_7200_12_500gb_sata3.html

NOX Urano 450W - 25 €
http://www.pccomponentes.com/nox_urano_450w.html

Nox Nova - 21 €
http://www.pccomponentes.com/nox_nova.html

Total: 256,9 €

Saludos.
149  Informática / Hardware / Re: Ayuda PC para juegos como el Ajedrez en: 20 Junio 2012, 12:53 pm
La mayoría de los portátiles con i7 suelen costar de 600 € para arriba. En principio no debería hacerte falta ventilación adicional.

El único portatil que se ajusta al precio que quieres es este:

http://www.pccomponentes.com/acer_as5755g_i7_2670qm_4gb_640gb_gt540m_15_6__rojo.html

No está nada mal, pero la marca Acer no me gusta mucho  :-\

Saludos.
150  Informática / Hardware / Re: Ayuda compra en: 20 Junio 2012, 00:44 am
No zaico, soy de Galicia. Pero el plan Bolonia creo que debería ser igual para todas las universidades, lo único que cambian son las asignaturas, pero no mucho.

En segundo de carrera, ya no tengo más matemáticas, solo programación y teoría pura y dura de arquitectura de sistemas, base de datos, redes, etc..

Volviendo al PC, ¿tienes monitor?.

Yo creo que podrías comprar una APU de cuatro núcleos y montarte PC decentillo.

AMD APU A8-3850 2.9Ghz Socket FM1 - 97.95 €
http://www.pccomponentes.com/amd_apu_a8_3850_2_9ghz_socket_fm1.html

Gigabyte GA-A75M-D2H - 67 €
http://www.pccomponentes.com/gigabyte_ga_a75m_d2h.html

G.Skill Sniper DDR3 1866 PC3-14900 8GB 2x4GB CL9 - 59.95 €
http://www.pccomponentes.com/g_skill_sniper_ddr3_1866_pc3_14900_8gb_2x4gb_cl9.html

Total: 224.9 €

Si no tienes monitor, podrías comprar uno como este:

LG E2251S-BN Ultra Slim 21.5" LED - 109 €
http://www.pccomponentes.com/lg_e2251s_bn_ultra_slim_21_5__led.html

Si ya dispones de monitor, podrías comprar una caja decentilla y una fuente de alimentación, o un disco duro. Por cierto, el disco duro que tienes, ¿es SATA?.

Si te decantas por una APU, también podrías esperar a Septiembre que salen las nuevas APU Trinity y parece ser que van a estar al mismo precio que estas.

Saludos.
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ... 45
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines