universidad autonoma metropolitana unidad iztapalapa reyes

Anuncio
UNIVERSIDAD
AUTONOMA
METROPOLITANA
UNIDAD IZTAPALAPA
REYES CHAVERO JAVIER AGUSTIN.
92221615.
INGENIERIA ELETRONICA.
AREA DE CONCENTRACION : COMUNICACIONES.
DMSION DE CIENCIAS BASICAS E INGENIERIA
La realización del presente proyecto no pudo haberse llevado a cabo sin el valioso
asesoramiento del profesor :
M. en I. NORBERT0 RAMlREi MANDUJANO
ASESOR.
MER AGUSTIN.
92221615
ALUMNO.
I
INDICE.
PAGINA
Introducción
3
Objetivos
5
Consideraciones teoncas
6
Transmision de datos con portadoras analogicas
10
Modulacion digital FSK
11
Fundamentos de encriptación
15
Fundamentos de compresion
18
Desarrollo y construcción
21
Software de Transmisión
30
Software de Recepción
36
Método de encriptamiento
42
Método de compresión
51
Conclusiones
66
Bibliografía
67
PROYECTO TERMINAL
COMUNICACI~NINALÁMBRICA DE DATOS ENCRIPTADOSY COMPRIMIDOS
ENTRE DOS pcvS
El constante desarrollo en los equipos de cómputo, obliga a que la mayoría de los campos
de estudio tengan una aplicación relacionada con el uso de una PC, ya sea para simulación
de experimentos; adquisición, almacenamiento y procesamiento de datos; desarrollo de
problemas matemáticos con una mayor velocidad; diseño de proyectos; o simplemente para
el uso de procesadores de texto.
Sin embargo, el campo que con mayor frecuencia utiliza los recursos de un equipo de
cómputo es el de la electrónica, ya que usualmente se realizan tareas como simulaciones
computacionales de circuitos eléctricos; diseño de sistemas; etc.
Dentro del área de la electrónica, uno de los usos más recientes que se le da a los equipos
de cómputo es el de las telecomunicaciones, es decir, la Comunicación (intercambio de
datos) entre dos o más PC's con lo cual se generan grandes ventajas para el procesamiento
de datos como puede ser el intercambio de información, mediciones a distancia, control a
distancia, y transferencia de archivos por citar solo algunas.
La comunicación entre equipos de cómputo ha sido de gran utilidad para el desarrollo de
redes computacionales, ya que utilizando el principio básico de conexión entre dos equipos,
puede ampliarse el intercambio de datos a más equipos, esto claro con ayuda de algún
paquete (software) y la inclusión de circuitos (hardware) necesarios para el control de dicha
comunicación.
A lo largo del desarrollo de las computadoras, la transmisión de datos Ó información entre
dos terminales ha sido más basta cada día. Así, como el almacenamiento y recuperación de
información por lo que se ha requerido de nuevos métodos para dar soporte a los sistemas
de comunicación.
En primera instancia, la solución estaría en aumentar las líneas de transmisión y
dispositivos auxiliares, como son modems y multiplexores. Sin embargo, tomando en
cuenta las grandes inversiones que tendrían que hacer las empresas, esta solución no sería la
más adecuada.
El método más conveniente para solucionar el problema de almacenamiento de datos y
transferencia de información, es inventar un código eficiente para la representación de los
datos. Dos técnicas que generalmente se aplican para dicha solución son: la compresión
fisica y la compresión lógica.
Los beneficios que se consiguen con la compresión de datos son, la reducción de tiempo
de transmisión de datos, la reducción de los requerimientos de almacenamiento de
información y, l a reducción del tiempo de ejecución de los programas.
PROYECTO TERMINAL
COh4UNlCACION INALÁMBRICA DE DATOS ENCRIPTADOS Y COMPRIMIDOS ENTRE DOS PC’s
Otro punto que tocaremos en el proyecto es, la encriptación de información ya que en
algunos sistemas de comunicación se requiere transmitir información secreta. Entonces el
transmisor debe de asegurarse de que ningún intermediario pueda afectar el mensaje por
cualquier medio: específicamente el receptor o intermediario no puede interceptar y leer el
mensaje, interceptar y modificar el mensaje ó fabricar un mensaje substituto.
Es por eso que se ha desarrollado la criptografia, que es el arte y la ciencia de guardar
mensajes seguros.
A
OBJETIVOS
Aplicar
los conocimientos adquiridos a lo largo de la carrera, tanto teórica como
experimentalmente.
Implementar un sistema de comunicación inalámbrica entre dos PC ’s, utilizando un
modulador de FM, siendo el medio de transmisión el aire.
Se persigue también el enviar y recibir los datos encriptados y comprimidos de una PC a
otra.
El hardware que se utilizará para el desarrollo del proyecto, será con circuitos integrados
comerciales y dispositivos discretos como: resistencias, capacitores, transistores etc.
Esto con el propósito como ya antes se dijo, es para aplicar los conocimientos adquiridos.
Se realizará el software corespondiente, para el envío y recepción y almacenamiento de
datos, así como el correspondiente a la encriptación y compresión de éstos.
CONSIDERACIONESTEÓRICAS
EL PROTOCOLO DE C O M U N I C A C I ~ N
RS-232
Toda computadora necesita de una serie de procedimientos formales por medio de los
cuales tanto el hardware como el software estén capacitados para comunicarse con el resto
del mundo.
Los procedimientos de más bajo nivel generalmente describen las interfaces de hardware
(conectores), interfaces eléctricas (niveles de voltaje o corriente), interfaces de tiempo e
interfaces de señal.
Al conjunto de procedimientos de bajo nivel se le llama protocolo de comunicación
El protocolo de comunicación más común es el protocolo serial RS-232, en el cual, los
datos son transmitidos en secuencia, es decir, un bit seguido de otro sobre un solo alambre,
con una tierra de retorno.
El estándar RS-232 fue desarrollado por la Asociación de Industrias de Electrónica (EIA)
en los principios de la era de la computación en Agosto de 1969. El nombre completo del
estándar es "Estándar Recomendado 232, Interface Entre Equipos Terminales de Datos
(DTE) y Equipos de Comunicación de Datos (DCE) Usando Interface Serial".
El Estándar EIA interconecta el Equipo Terminal de Datos (DTE), típicamente una
terminal o una computadora, el Equipo de Comunicación de Datos (DCE), típicamente un
modem. El puerto serial en la mayoria de las computadoras y en la mayoría de los
dispositivos de comunicaciones usa solo entre 9 y 11 pines, los cuales son suficientes para la
mayoría de las aplicaciones de control, además de que es suficiente para operar un modem.
La mayoría de los modems, impresoras, controladores y otros dispositivos en el mercado
de la comunicación de datos siguen los procedimientos del estándar RS-232. Existe además
un equivalente europeo, conocido como la recomendación V.24 de CCITT, la cual no solo
describe la interface eléctica, sino también especifica muchos más de las funciones que
contiene el estándar EIA.
Las asignaciones de los pines para el conector DB-9 como se usan por muchos fabricantes
cumpliendo con las designaciones de el estándar RS-232 se listan a continuación:
PROYECTO TERMINAL
COMUNICACIÓN INALÁMBRICA DE DATOS ENCRiPTpLDOS Y COMPRIMIDOS ENTRE DOS PC’c
1 2 3 4 5
6 7 8 9
Diagrama de pines del RS-232 DB-9
4breviatura
I Num.
4TD
3TR
SG
13
4
5
~~~~~
Descripción Tipo de
Señal
Detector de Control
Señal
Recibida en
la Línea
Función
Direcció
n Hacia
Es un manejador de la DTE
terminal local que indica
que una señal aceptable
está siendo recibida en la
línea de comunicaciones
entre DCE’s
Información recibida en DTE
la terminal local
Información
enviada DCE
desde la terminal local
Manejador de la terminal DCE
que prepara al DCE para
la comunicación
La conexión de tierra a la
que otras señales del
RS-232
son
referenciadas
-
Datos
Dato
Recibido
Dato
Datos
Transmitido
Terminal de Control
Datos Lista
Tierra
Señal
de Tierra
7
-
PROYECTO TERMINAL
COMUNICACIÓN INALÁMBRICA DE DATOS ENCRíPTADOS Y COMeRIMIDOS ENTRE DOS PC's
Abreviatura
Num.
DSR
RTS
CTS
E
u
9
I Descripción
Tipo de Función
Señal
Set de Datos Control Señal de control para la
Listo
terminal local que indica
que el equipo de
comunicación de datos
está conectado y listo
para trabajar
Control Señal de control de la
Envío
terminal
local
para
determinar si un dato
puede ser enviado
Control Señal de control para la
terminal local que indica
que puede comenzar la
transmisión de datos de
la terminal remota
Indicador de Control Manejador enviado a la
Tono
terminal local que indica
que una señal está siendo
recibida en la línea de
comunicación.
Direcció
n Hacia
DTE
DCE
DTE
DTE
PROYECTO TERMINAL
C O m C A C I O N INALÁMBRICA DE DATOS ENCRIPTADOS Y COMPIChlTDOS ENTRE DOS PC's
El estándar RS-232 cubre principalmente las características eléctricas de las señales de
datos. Las señales de datos recibidos, de acuerdo con la norma, se interpretan como sigue:
- Niveles de voltaje entre -3 y -15V es un '1' lógico.
Niveles de voltaje de +3 a +15V es un 'O' lógico.
Niveles entre -3 y +3V no están definidos.
Igualmente, voltajes negativos en comandos de control indican la condición de negación y
voltajes positivos indican la condición de afirmación.
*
*
A continuación se presentan las especificaciones de la interface serial RS-232.
0
o
Máxima distancia recomendada 15m.
2Okbauds
Máxima velocidad de señalización
o
Niveles de voltaje
Circuito abierto <25V
Afirmación, 'O' +5 a + 15V
Negación, '1' -5 a - 15V
0
Máximos niveles de voltaje en el receptor
*3 a*25V
9
PROYECTO TERMINAL
COMUNICACI~NINALÁMBRICA DE DATOS ENCRIPTADOSY COMPRIMIDOS ENTRE DOS PC’S
TRANSMISI~NDE DATOS CON PORTADORAS ANAL~GICAS
La transmisión de datos encierra el transmitir información digital desde un DTE hacia
otro. En vez de construir líneas especiales para este propósito, es más conveniente usar la
red telefónica pública. Desafortunadamente, dicha red fue construida mucho antes del
advenimiento de las comunicaciones de datos a gran escala, además de que fue diseñada
para transportar información que fuera analógica en su naturaleza.
En suma, la información analógica está restringida al rango de frecuencias de 300 a
3200Hz. Por esto la función primaria de un modem en un extremo de la línea de
transmisión es la de convertir pulsos digitales a señales analógicas capaces de ser
transmitidas sobre la red telefónica, y otro modem en el otro extremo se encargará entonces
de reconvertir las señales analógicas en lo pulsos digitales originales.
Los modems se clasifican en categorías dependiendo si son síncronos o asíncronos. Si un
procedimiento de comunicación de datos utiliza modems síncronos, los relojes internos
tanto del modem transmisor como del modem receptor deberán ser sincronizados. Estos
relojes son usados para controlar la velocidad a la cual los datos son transmitidos.
El tipo de modulación usado con modems síncronos es tal que el receptor extrae
información de sincronía de la señal recibida y la usa para mantener la sincronización con el
modem transmisor. Además, la sincronización con la frecuencia portadora entre transmisor
y receptor debe ser establecida y mantenida con el propósito de demodular correctamente la
señal en el extremo de recepción. En cambio, los modems asíncronos no se sujetan a estas
restricciones, ya que la información de sincronía no es transmitida entre ellos.
Una señal digital transmitida sobre un canal telefónico contiene significantes
componentes de energía que varían entre un nivel de DC y alrededor de tres veces la
velocidad de señalización. Por ejemplo, para una velocidad de señalización de 600 Bauds,
la energía de la señal variará entonces entre O y 1800Hz.
La mayoría de la energía de la señal estaría concentrada a bajas frecuencias por debajo de
la velocidad de señalización, o por debajo de 600Hz.
La red telefónica analógica, sobre la cual se transmiten las señales digitales,
desafortunadamente no permite el paso de fiecuencias menores a 300Hz, ni mayores a
3200Hz.
.
'
*
PROYECTOTEWAL
COh4UNICACIÓN INALhlBRICA DE DATOS ENCRIPTADOS Y COMPRIMIDOS ENTRE DOS PC's
En la siguiente figura se realiza una comparación entre la distribución de energía de una
señal digital y la banda de paso de la red telefónica.
AMPLITUD
I
nri
CANAL DEVOZ
SE&U DE DATOS DEPRECüENCIAf
1
f'
2f
3f
FRECUENCIA
ESPECTRO
ESPECTRO DE ENERGIA DE UNA SEÑAL vs.
ANCHO DEBANDA DEL CANAL TELEFONICO
Con el propósito de acoplar la señal digital que se encuentra en la banda de O a 1800Hz (a
una velocidad de 1200 bps) dentro de la banda de paso de la red telefónica (300 a 3200Hz),
la señal se modula con fiecuencias portadoras localizadas dentro la banda de paso, logrando
así, la transmisión.
El valor instantáneo de la fiecuencia portadora Y puede ser representada a un tiempo dado
t por medio de una señal senoidal con tres parámetros, la amplitud máxima A, la fiecuencia
F, y la fase P:
Y = A-sen(2nFt + P)
En consecuencia, si la señal portadora llevará información digital, los tres parámetros,
amplitud, fiecuencia, y fase, serán modulados ya sea separadamente o conjuntamente por la
señal digital.
Los modems pueden operar en transmisión bidireccional alternada (semiduplex), o
simultánea (full duplex).
PROYECTO TERMINAL
COMUNICACIÓN INALÁh4BRlCA DE DATOS ENCRIPTADOS Y COMPRIMIDOS ENTRE DOS PC’c
Las técnicas de señalización utilizan los siguientes métodos:
o
Modulación en amplitud (ASK: Amplitude Shift Keying). En esta técnica se varía
solamente la amplitud de la señal analógica. Tiene ciertas desventajas, siendo la
principal una baja inmunidad al ruido; consecuentemente casi no se usa en la práctica.
0
Modulación en frecuencia (FSK: Frecuency Shift Keying). Aquí la característica que
varía es la Cecuencia de la portadora y es usada para transmisiones a baja velocidad.
Los modems FSK generalmente son asíncronos y pueden operar a una velocidad
máxima de transmisión de 1800bps.
o
Modulación en fase (PSK: Phase Shift Keying). En este caso se modifica la fase de la
señal analógica. Esta técnica puede ser usada a velocidades arriba de 4800bps, además
de que generalmente la transmisión es síncrona.
o
Modulación combinada en fase y amplitud (QASK: Quadrature/Amplitude Shift
Keying). Varían tanto la fase como la amplitud de la portadora y se usa para velocidades
mayores a 9600bps.
PROYECTO TERMINAL
COMUMCACIÓN INALÁMBRICA DE DATOS ENCFUPTADOS Y COMPRIMIDOS ENTRE DOS PC's
LA MODULACIÓN DIGITAL FSK
FSK es una técnica relativamente simple de modulación en la cual, la señal analógica es
modulada por una serie de pulsos digitales ('O' lógicos y '1' lógicos) que varían entre dos
niveles discretos de voltaje.
La salida de una modulador FSK puede ser considerada una función escalón en el
dominio de la frecuencia.
La figura muestra una gráfica de una simulación de una señal FSK.
t
I
T
I
I
1
'I'LOGICO
FRECUENCIA
ALTA
I 'O'LOGICO I
1
I
FRECUENCIA
BAJA
SEÑAL FSK
Una cantidad importante en la modulación FSK es el llamado factor h, el cual expresa el
grado de modulación en este proceso.
El factor h se define como sigue:
I fm - fs I
h=
V
Donde:
fm = frecuencia de un '1'
fs = frecuencia de un 'O'
v = velocidad de entrada de datos (bps)
PROYECTO TERMINAL
COMUNICACIÓN INALÁh4BRICA DE DATOS ENCRIPTADOS Y COMPRIMZDOS ENTRE DOS PC’s
Como una regla general para mejorar el desempeño en FSK, el factor h esta limitado a
valores menores que 1.
La circuitería necesaria para realizar una modulación y demodulación FSK es
relativamente simple debido a los estándares de la actualidad, lo que hace que este tipo de
modems sea muy barato.
El modulador requiere solamente de un switch electrónico para seleccionar una de las dos
frecuencias para el modo ya sea de generación o detección.
El demodulador requiere un laso amarrador de fase (PLL: Phase Locked Loop) o filtros
pasabanda, seguidos de un detector, para determinar que frecuencia es la que está
recibiendo.
Para este tipo de modulación, no es necesario ningún tipo de sincronía entre el transmisor
y el receptor.
MODULACI~NEN FRECUENCIA (FM)
En modulación lineal (como ejemplo Modulación en Amplitud AM), se varía la amplitud
de una señal portadora, en modulación angular la amplitud es constante, las variaciones se
reflejan en la frecuencia de la portadora. En este tipo de modulación, las componentes
espectrales de la forma de onda modulada dependen de la amplitud y frecuencia de la señal
de banda base.
En general, la señal modulada angularmente se representa de la siguiente manera:
XC = AC
cos(oct + Q(t))
Para este caso, se tiene un ángulo total instantáneo
por lo que resulta:
xc = AC cos(0c(t)) = xc = AC Re[J ex(f)]
Si ec(t) contiene la información x(t), se tiene entonces el proceso denominado
modulación angular o modulación exponencial.
La frecuencia instantánea f(t) de la señal modulada esta dada por:
PROYECTO TERMINAL
COh4UNlCACIÓN I N A L h R I C A DE DATOS ENCRIPTADOS Y COMPRIMIDOS ENTRE DOS PC's
donde:
fA es la desviación de frecuencia, es decir, el máximo corrimiento de f(t) con
respecto a la frecuencia de la señal portadora fc(t).
Para una señal FM, el ángulo total instantáneo queda de la siguiente manera:
integrando:
$(t) = 2x fA x(h) dh + @(to)
resulta:
Si to se toma tal que: $(to) = O
$(t) = 2x fA x(h) dh
Entonces, la forma de onda de la señal modulada en frecuencia queda:
xc = AC cos[oct + 2 ~fA
: ~ ( hdh]
)
Debido a que en FM la amplitud de la onda resultante es constante, la potencia promedio
transmitid resulta de la siguiente forma:
3
ST=(Ac) /2
Partiendo del hecho que FM es un tipo de modulación exponencial, lo cual es un proceso
no lineal, la onda modulada no tiene similitud evidente al mensaje transmitido.
FUNDAMENTOS DE ENCRIPTACION
Un mensaje es llamado plaintext o cleartext. El proceso para disfrazar un mensaje de
este tipo es llamado encriptamiento. Un mensaje encriptado es llamado ciphertext. El
proceso para regresar el ciphertext a su forma de plaintext es llamado desencriptamiento.
Plaintext
Ciphertext
I
I
1
Desencriptación
riginal plaintext
I
b
-
‘
3
PROYECTOTERMINAL
CUMUNICACI~NINALÁMBRICA
DE DATOS ENCRIPTADOS Y COMPRIMIDOSENTRE DOS P C ’ ~
El arte y la ciencia de guardar mensajes seguros es llamado criptografía y es realizado por
los criptografos. Los criptoanalistas son los profesionales del criptoanálisis, que es el arte y
la ciencia de romper un ciphertext ; por ejemplo, observando a través del disfiaz.
La rama de las matemáticas que integra tanto a la criptografía como el criptoanálisis es
llamado criptología y los profesionales de dicha rama son llamados criptologistas.
Actualmente casi todos los criptologistas son también matemáticos teóricos.
El plaintext es denotado por la letra P. Pude ser una cascada de bits, un archivo de texto,
una cascada de voz digitalizada o imagen de video digital. Hasta donde a la computadora le
interesa, P es simplemente datos binarios. El plaintext puede ser manipulado para
transmisión o almacenamiento. En cualquier caso, P es el mensaje a encriptar.
El cipehertext es denotado por C. Este también consiste de datos binarios; algunas veces
del mismo tamaño que P, algunas veces más grande (por combinación de la compresión y
encriptamiento, C puede ser más pequeño que P. De cualquier modo, el encriptamiento por
sí solo no cumple con esto). La función de encriptamiento E opera sobre P para producir C.
O, en notación matemática:
E(P) = C
En el proceso inverso , la función de desencriptamiento D opera sobre C para producir P:
D(C) = P
El proceso total de encriptamiento y desencriptamiento de un mensaje nos lleva a
recuperar el plaintext original, lo cual queda representado en la siguiente identidad (la cual
es necesariamente verdadera).
ALGORITMOS Y CIFRADOS
Un algoritmo de criptografía, también llamado un cipher Ó cifrado, es la función
matemática usada para encriptamiento y desencriptamiento.
Para encriptar un mensaje plaintext, se aplica un algoritmo de encriptamiento para el
plaintext. Para desencriptar un mensaje ciphertext, se aplica un algoritmo de
desencriptación para el ciphertext.
La seguridad de un algoritmo es basado en mantener en secreto la naturaleza del
algoritmo, esto es llamado restringido o prohibido. Para una verdadera seguridad, todo
algoritmo moderno de encriptación usa una llave, denotada por K.Esta llave puede tener de
uno a varios valores (de preferencia un número largo es mejor). El rango de posibles valores
de las llaves es llamado el keyspace.
PROYECTO TERMINAL
COMUNICACIÓN INALÁh4BRICA DE DATOS ENCFUPTADOS Y COMPRiMiDOS ENTRE DOS PC’s
El keyspace indica el número total de claves posibles. Por ejemplo, un cifrado que acepta
160 bits para sus claves, su keyspace es de 2I6O, o aproximadamente 1.46 X lo4*.
Aunque recomendamos que cambien los largos de las claves para aumentar el poder de
procesamiento, generalmente el largo de las claves de seguridad para encriptado es de 128
bits; con algoritmos más elaborados se usan claves en donde este tamaño se reduce.
Si no existe otro camino para romper el algoritmo (recuperar el plaintext o clave dado
algún ciphertext) más que examinando todas las claves posibles, entonces decimos que
nuestro algoritmo es seguro. Es aquí donde el largo de la clave toma importancia (mientras
más larga la clave, existen más claves posibles a descubrir y entonces hacemos más seguro
nuestro cifrado o algoritmo). Al atacar un encriptado se simplifica el número de claves que
se necesitan ser descubiertas.
El valor de la llave afecta las funciones de encriptamiento y desencriptamiento, quedando
como:
EK(P)= C
DK(C) = P
Y si la llave de la encriptación y desencriptación son iguales, entonces:
Ciphertext
CRIFTOANÁLISIS
La primera propuesta de la criptografía es proteger el plaintext (o la llave, o ambos)
secreto de los adversarios, interceptores, ó simplemente del enemigo. La Criptoanálisis es la
ciencia de recobrar el plaintext de un mensaje junto con la llave. Un intento de
criptoanálisis es llamado ataque. Un exitoso ataque es llamado un método.
Enseguida mencionaremos los seis métodos de ataque más generales, esta lista se
encuentra ordenada según el poder del ataque.
1 .- Atacar solo ciphertext.
2.- Atacar plaintext conocido.
3.- Atacar plaintext elegido.
4.-Atacar plaintext adaptivo elegido.
5.- Atacar ciphertext elegido.
6.- Atacar llave elegida.
17
PROYECTO TERMINAL
COMUNICACION INALÁMBRICA DE DATOS ENCWTADOS Y COMPRIMIDOS ENTRE DOS PC’s
SEGURIDAD DE CRIPTOSISTEMAS
Los criptosistemas tienen diferentes niveles de seguridad, dependiendo de lo difícil que
son para romperlos. Todos los algoritmos se pueden romper en teoría, dado un tiempo
suficiente y buenos medios de procesamiento.
Si el tiempo y dinero requeridos para romper el algoritmo son mayores que el valor de los
datos encriptados, entonces este es probablemente seguro.
Los algoritmos que no se pueden romper en la práctica son seguros. Un algoritmo es
considerado computacionalmente seguro, si no puede ser roto con los medios disponibles.
Un algoritmo es incondicionalmente seguro, si el interceptor que realiza el criptoanálisis
no cuenta con una parte del ciphertext, puesto que no tiene suficiente información para
recobrar el plaintext.
El lapso de tiempo de proceso y poder requeridos para recuperar la llave de encriptación
es llamado el factor de trabajo, y es expresado como una magnitud. Si un algoritmo tiene un
factor de trabajo de 2128,entonces 2’28operaciones son necesarias para romper el algoritmo.
La mayoría de los algoritmos de encriptamiento que se usan hoy en día son bloques de
cifrados, los cuales operan en una cantidad (generalmente de 64 bits) de datos al mismo
tiempo. Los cifrados en cascada operan con longitudes variables de datos.
Los cifrados en cascada fueron creados bajo la idea de generar números aleatorios a partir
de una base (con la base establecida en la clave); los números aleatorios están combinados
en el plaintext para generar el ciphertext. Mientras los números son generados de la
manera más apropiada, es más seguro el cifiado en cascada.
Los algoritmos en bloques son, en términos de diseño e implementación generalmente
más complejos que los cifiados en cascada.
FUNDAMENTOS DE COMPRESION
Técnicas de compresión
Dos técnicas que puden resultar en una codificación de datos más eficiente son la
compresión lógica y la compresión física. Ambas compresiones reducen el tiempo de
transmisión de datos.
La compresión lógica es normalmente usada para representar bases de datos más
eficientemente, resolviendo el problema llamado run-away datadase. O sea, el exceso de
información provoca el requerimiento de mayor memoria para almacenarla, provocando
PROYECTO T E N A L
COMUNICACI~NINALÁMBRICA DE DATOS ENCRIPTADOS Y COMPRIMIDOSENTRE DOS PC’S
mayores gastos para la compañia. Sin embargo, si se aplica la compresión lógica se pude
evitar tal gasto.
En la compresión física cada dato es codificado por separado, y la probabilidad de
ocurrencia de los caracteres ó grupos de caracteres difieren. Los caracteres que son menos
frecuentes se codifican con más bits, y los más frecuentes son codificados con menos bits.
Por lo tanto, el archivo de datos se puede reducir un cierto porcentaje, esto depende del
algoritmo utilizado para la compresión.
A continuación se ilustra un diagrama de bloques de una compresión básica de datos.
Compresión
de datos
original
comprimido
Descompresión
En la figura se observa que a los datos originales, se le aplica un algoritmo de compresión
para producir una ráfaga de datos comprimidos. Esta compresión de los datos originales es
referida algunas veces como el proceso de codificación, y el resultado de los datos
comprimidos es también llamado ráfaga de datos codificados. El proceso inverso de la
compresión es la descompresión, para reproducir los datos originales. Entonces el proceso
de la descompresión resulta en la decodificación de la compresión de la ráfaga de datos, el
resultado es llamado a veces como ráfaga de datos decodificados.
El grado de la reducción de datos obtenida como resultado del proceso de compresión, es
conocido como la razón de compresión.
Razón de compresión
longitud de la ráfaga de datos original
=
longitud de la ráfaga de datos comprimidos
De la ecuación se observa, que entre más grande es la razón de compresión, más eficiente
es la técnica de compresión utilizada.
BENEFICIOS DE LA COMPRESIÓN
Cuando la compresión de datos es utilizada para reducir los requerimientos de
almacenamiento, generalmente el tiempo de ejecución de los programas se reduce bastante.
PROYECTO TERMINAL
COMUNICACION INALÁh4BRICA DE DATOS ENCRIPTADOS Y COMPRIMIDOS ENTRE DOS PC’s
Con respecto a la transmisión de datos, la compresión provee planeación en la red con
varios beneficios, además del ahorro en costo asociado con el envío de pocos datos sobre la
red de interruptores telefónicos, donde el costo de la llamada es usualmente basada sobre
esta duración.
Finalmente, el texto es representado generalmente en código ASCII, entonces debemos de
pasar el texto a un código diferente para poder comprimirlo, entonces los algoritmos de
compresión proporcionan un cierto nivel de seguridad sobre un monitoreo ilícito.
PROYECTO TERMINAL
COhJNICACION NALÁMBRICA DE DATOS ENCRIPTADOS Y COMPRIMIWS ENTRE DOS PC’s
DESARROLLO Y CONSTRUCCI~N
El diseño del proyecto se planeó de la siguiente manera:
Cada PC consta de tres módulos de hardware: un módem, un módulo para transmisión y un
módulo para recepción.
En términos generales, la representación esquemática del proyecto se presenta en la
siguiente figura.
Circuito Transmisor
FM
Circuito Demodulado
ESQUEMA DE MÓDULOS DE HARDWARE
PROYECTO T E M A L
COMUNICACIÓN INALÁhlBlUCA DE DATOS ENCRIPTADOS Y COMPRIMIWS ENTRE DOS PC’s
El módulo de transmisión consta de 3 partes:
0 Un DB-9.
o Un circuito modulador FSK.
0 Un circuito modulador de FM.
El DB-9 es un simple conector por medio del cual se obtendrán los datos digitales de la
interface serial RS-232 de la PC, y se llevarán a la etapa de modulación FSK.
El circuito modulador de FSK es el encargado de convertir las señales digitales a señales
analógicas cuya frecuencia varia dependiendo del nivel de entrada.
Para tal efecto se utilizó el CI XR2206 de la marca EXAR.
El diagrama de conexión para este circuito se muestra en las figuras siguientes.
AMSI
STO
MO
qT”-h
2
vcc
TCI
TC2
TRI
TR2
SYMA2
SYMAI
VVAVEAZ
VVAVEAI
GND
SYNC0
BIAS
FSKl
22
PROYECTO TERMINAL
COMUNICACI~N INALÁMERICA
DE DATOS m
c m m s Y COMPWOS
ENTRE DOS E'S
vcc
fl
I
DIAGRAMA DE CONEXIÓN DEL CI XR2206
El CI XR2206 consta de cuatro bloques funcionaIes, un oscilador controlado por voltaje
(VCO), un multiplicador analógico, un amplificador de ganancia unitaria (buffer), y un
conjunto de switches de comente.
El VCO produce una frecuencia de salida proporcional a la corriente de entrada, la cual es
determinada por una resistencia conectada de una de sus terminales a tierra.
Con dos de estas terminales, dos Cecuencias discretas de salida pueden ser producidas
independientemente una de otra, facilitando así la generación de FSK.
Las resistencias antes mencionadas se localizan en el diagrama del XR2206 como R1 y
R2, las cuales se conectan a los pines 7 y 8 respectivamente.
Dependiendo de la polaridad de la señal lógica en el pin 9, una de estas resistencias es
activada, Si en el pin 9 se tiene un voltaje 2 2V, solamente R1 es activada.
Similarmente, si el nivel de voltaje en el pin 9 es 5 l V , se activa solo a R2.
Entonces, la fiecuencia de salida puede ser acotada a dos niveles, fi y f2 como:
PROYECTO TERMINAL
COMUMCACIÓN INALÁMBRICA DE DATOS ENCRlpTADOS Y COMPRIMIDOS ENTRE DOS PC’s
fl
=
lí(R1C)
f2 = lí(R2C)
Para nuestro caso, dicho circuito se diseñó para los siguientes valores de frecuencias:
C = lOnf
R1 = 33k
de aquí
fi
= 3.3kHz
R2 = 77k
de aquí
f2 = 1.4kHz
Además de esto, armado el circuito con la configuración mostrada se obtiene un nivel de
salida de:
Vsai = Vcc /2
Una vez obtenidas las señales analógicas correspondientes, la siguiente etapa es la de
modulación en FM.
El circuito utilizado para este fin se muestra a continuación:
I
I
I
FIG. MODULADOR DE FM
PROYECTO TERMINAL
COMLTNICACIÓN INALÁMBRICA DE DATOS ENCRIPTADOS Y COMPRIMIDOS ENTRE D O S PC’s
0
0
0
El módulo de recepción consta de 3 partes:
Un receptor de F.M.
Un circuito demodulador FSK.
UnDB-9.
El receptor utilizado fue un Walkman con sintonía de tipo digital en la banda de F.M.
(88-106mhz) debido a la simplicidad de ajustar digitalmente la portadora enviada por el
sistema transmisor de datos. Así, con esta ventaja, en la salida del Walkman obteníamos la
señal FSK correspondiente a los datos enviados por la PC transmisora.
El circuito demodulador de FSK es el encargado de demodular las señales entregadas por
el Walkman. En la salida de este circuito, los datos se entregaban como originalmente
habían salido de la primera PC,por lo que directamente mediante un conector del tipo DB-9
son recibido por la PC receptora a través de su puerto serial.
El C.I.utilizado para la demodulación FSK fue el XR2211, igualmente de la marca
EXAR.
El diagrama de conexión para este circuito se muestra en las figuras siguientes:
vcc
TIMCI
TIMC2
TlMR
LDU
Vref
NC
CUMPI
INP
LDF
GND
LOUUN
LOUG
DO
25
*
.
PROYECTO TERMINAL
C O ~ U N I C A C I ~INALÁMBRICA
N
DE DATOS ENCRIPTADOS Y COMPRIMIDOSENTRE DOS PC’S
DIAGRAMA DE CONEXIÓN DEL CI XR2211
F,q
DE
ENTRAPA
XR-2211
FSK DEMODULADOFUDECODIFICADORDE TONO
DESCRIPCIÓN GENERAL
El XR2211 es un circuito que opera bajo el principio PLL y que está diseñado
especialmente para aplicaciones de comunicación de datos; en particular, para aplicaciones
de FSK.
Este C.I. opera sobre un amplio rango de voltaje que va desde 4.5 hasta 20 V, y un rango
de frecuencia que va desde 0.01Hz hasta 300KHz, además de poder interfacear con familias
lógicas como TTL,DTL y ECL.
El C.I. internamente consta de un sistema PLL básico para detectar una señal de entrada
dentro de la banda de paso; un detector de fase en cuadratura que proporciona la detección
de portadora, y un comparador de voltaje FSK que es propiamente el encargado de la
demodulación FSK.
El sistema PLL está constituido de un preamplificador de entrada, un multiplicador
analógico usado como detector de fase, y un oscilador controlado por voltaje (VCO) de
precisión. El preamplificador es usado como un limitador tal que señales de entrada
típicamente alrededor de 1OmV R M S son amplificadas a una señal de nivel constante.
El detector de fase actúa como una compuerta XOR cuya salida produce suma y
diferencia de frecuencias de la señal de entrada y de la salida del VCO.
PROYECTO TERMINAL
COMUNICACIÓN INALÁMBRICA DE DATOS ENCRIPTADOS Y COMPRIMIDOS ENTRE W S E ' s
Cuando estas frecuencias (fIN y fvco) son iguales, entonces la suma de ellas resulta en
2fIN y la resta en O H z . Agregando un capacitor a la salida del detector de fase, la
componente de la resultante 2fIN es reducida, dejando un voltaje de DC que representa la
diferencia de fase entre las dos frecuencias. Esto cierra el laso y permite al VCO manejar la
frecuencia de entrada.
El comparador de FSK es usado para determinar si el VCO es manejado por arriba o por
abajo de la frecuencia central (comparador de FSK),lo cual produce salidas activa alta y
activa baja para indicar cuando el PLL esta amarrado.
CARACTRÍSTICAS
RANGO DE FRECUENCIA
RANGO
DE
VOLTAJE
0.01Hz HASTA 300KHz
DE 4.5V HASTA 2 0 V
PORTADORA
AMPLIO RANGO DINAMICO DE lOmV HASTA3Vrms
ENTRADA
ESTABILIDAD DE TEMPERATURA 20 ppm/"C, TIPICO
APLICACIONES DEL XR-2211
1 APLICACIONES
I DEMODULACION FSK
SINCRONIZACION
DATOS
DECODIFICACION
TONOS
DETECCION F M
DETECCION
PORTADORA
I
I
DE
DE
I
I
PROYECTO TERMINAL
COMUNICACI~NINALÁMBRICADE DATOS ENCRIPTADOS Y COMPRIMIDOS
ENTRE DOS PC’S
RATINGS MÁXIMOS ABSOLUTOS
VOLTAJE
ENTRADA
IDISIPACION DE POTENCIA I 900
mW
RECUBRIMIENTO
750
CERAMIC0
mW
RECUBRIMIENTO
DE 800
PLASTIC0
I mW
I
I
I
DECODIFICACIÓN FSK
L a figura la. muestra las conexiones básicas para la decodificación FSK. Los
componentes externos son definidos como sigue: RO y CO colocan la frecuencia central del
PLL, R1 determina el ancho de banda del sistema y C l determina la constante de tiempo
del filtro de lazo, y el factor loop-damping. CF y RF forman un filtro de post-detección de
un polo para la salida de datos FSK. El resistor RB (= 5 10 KR) que va entre el pin 7 y 8,
introduce una retroalimentación positiva a través del comparador FSK para facilitar la
transición rápida entre los estados lógicos de salida.
Los valores recomendados de 10s componentes para algunas de las bandas FSK más
comúnmente usadas se dan en la tabla 1.
TABLA 1
DE
BANDAFSK VALORES
COMPONENTES
300 Baud
C0=0.039 pF,CF=0.005pF
fl=1070=
C1=0.01 pF, RO=18KSZ
f2=1270 Hz
~ 1 = 1 0 KR
0
600 Baud
C0=0.022 pF, CF=O.OOSpF
fl=2025 Hz
C1=0.0047 pF, RO=18 KR
f2=2225 HZ
R1=200 KQ
1200 Baud
C0=0.027 pF,CF=0.0022@
fl=1200 Hz
Cl=O.Ol pF, RO=18 KR
f2=2200 Hz
~ 1 = 3 KR
0
LOS
28
PROYECTO TERMINAL
COMUNICACI~N
INALÁMBRICA DE DATOS ENCRIPTAWS Y C O M P R ~ M I W ENTRE
S
w s E’S
La función del DB-9en este caso es para llevar los pulsos de la salida del demodulador de
FSK hacia la PC.
v
tw
10
1
DATO DE SALIDA
FIG. 1 a: DEMODULADOR FSK
DESARROLLO DEL SOFTWARE DE COMUNICACIÓN
Con el propósito tanto de la transmisión, recepción y procesamiento de los datos, se
desarrolló un programa capaz de realizar dichas funciones, sobre el cual se tuviera un
control total, ya sea para modificar la velocidad de transmisión, o para cambiar la aplicación
que se realizaría sobre los datos recibidos.
El programa se realizó en lenguaje C debido a su facilidad de manejo, pero
principalmente a su capacidad de compilar y ligar instrucciones de ensamblador dentro del
mismo paquete.
El motivo de usar instrucciones de ensamblador es la programación del puerto serial
(UART 8250), así como para la transmisiódrecepción de los datos debido a que es una
herramienta muy poderosa ya que son instrucciones directas al microprocesador, pero
también a su gran facilidad de manejo.
PROYECTO TERMINAL
COMUNICACION I N A L ~ B R I C ADE DATOS ENCRPTADOS Y COMPRIMIWS ENTRE DOS PC'S
El listado del programa usado se presenta a continuación:
SOFTWARE DE LA TRANSMISION
UNIVERSIDAD AUTONOMA METROPOLITANA
UNIDAD IZTAPALAPA
PROYECTO TERMINAL
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<process.h>
#include<dos.h>
#include<ctype.h>
#include<string.h>
#include<fcntl.h>
#include<io.h>
#defineMAX 200
#define LONG 20
#defineESC 27
#define EOS 70'
#define PORT1 Ox3F8
char menu(void);
void abre-archivo(void);
char pregunta(void);
void inicializa(void);
int llena(void);
void transmite(void);
void cuenta(void);
PROYECTO TERMZNAL
COMUNICACION INALÁMBRICA DE DATOS ENCRIPTADOS Y COMPRIMIDOS ENTRE DOS PC's
FILE *@=NULL;
char carac,cad[MAX] ;
int final,bt=O;
char s1[4] ,s4[LONG],arr[LONG], *str1="A:\Y',*str2="B :\Y',* str3="C:\Y';
..........................................................................
**
MODULO PRINCIPAL
.........................................................................
**/
void main(void)
{
char op;
dol
op=menu();
if(op==' 1')
system( "a:edit");
if(op=='2')
system("a:enkds.exe");
if(op=='3')
system("a:comdsc.exe");
if(op=='4')
transmite();
if(op=='S)
system("a:rec4.exe");
} while(op!='@);
clrscr();
1
..........................................................................
**
FUNCION QUE DESPLIEGA EL MENU DE OPCIONES
.........................................................................
* */
char menu(void)
{
char resp;
clrscr();
window( 1,1,9,25);
textcolor(l3LACK);
PROYECTO TERMINAL
COMUNICACIÓN INALÁMBRICA DE DATOS ENCRIPTADOS Y COMPRIMIDOS ENTRE DOS PC's
textbackground(GREEN+1);
cprintf(
11
11
11
I1
window( 1O, 3,SO ,25);
textcolor(I3LACK);
textbackground(GREEN);
khll
11
11
"1 .-EDITAR U?J' PROGRAMA NUEVO.u.\n"
"2.-ENCRPITAIP/DESENCRIPTARUN ARCHTVO.\rui"
"3 .-COMPRIMIEUDESCOI"RIMIR UN ARCHIVO.\r\n"
"4.-TRANSMITIR ARCHIVO.kh"
"5.-RECIBIR ARCHIVO.\r\n"
"6.-SALIR.\rui"
11
11
"Elige una opcion: h");
do {
resp=getch();
}while(resp<49 11 resp>54);
printf('I%cI1,resp);
getch0;
return(resp);
1
..........................................................................
**
FUNCION QUE ABRE EL ARCHIVO Y DEVUELVE UN APUNTADOR
MISMO,
VERTFICANDO POSIBLES ERRORES
.........................................................................
* */
void abrearchivo(void)
{
int error;
char op;
// char s 1[4],s4[LONG],arr[LONG],*
str1="A : \ \ I 1 , *str2="B:\\",*str3="C:\\";
AL
PROYECTO TERMINAL
COMUNICACION [ N A L ~ R I C ADE DATOS ENCRIPTADOS Y COMPRIMIDOS ENTRE DOS PC'S
do {
@=NULL;
clrscr();
printf("\n\t«< C A R G A D O R D E P R O G R A M A S
EXE
>>>");
(BUSQUEDA DE UN ARCHIVO EN DISCO)");
printf("h\t
printf("\nh\t"Cu 1 es la unidad de disco donde ");
printf("se localiza el archivo(A,B,C)?: ");
do {
op=toupper(getch());
}while(op<65 11 op>67);
printf("%c",op);
geW);
if(op=='A')
strcpy(s1,strl);
if(op=='B')
strcpy(s1,str2);
if(op=='C')
strcpy(s1,str3);
printf("\n\t\tDame el nombre del archivo a buscar (con extension):\n ");
gets(arr);
strcpy(s4,sl);
strcat(s4,arr);
op='n'; error-0;
@=fopen(s4,I?+");
if(ferror(@))
{
printf(Yn\n\t\tErroral tratar de abrir el archivo. ");
error= 1;
1
else
{
if(@=NULL)
{
fclose(@);
printf("ui\n\t\tNo se encontrg el archivo, ");
errox=l;
1
1
if(error)
{
printf("h\t\t'Deseas buscar en otro archivo(s/n)?: ");
op=PreguntaO;
1
} while(op='s');
.
*
.
PROYECTO TERMINAL
CdMUNICACIÓN INALhll3RICA DE DATOS ENCRIPTADOS Y COh@RhUDOS ENTRE DOS PC's
if( !eiror)
{
fP=fopen(s4,"r+");
final=feof(fp);
1
else
@=NULL;
.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
*
FUNCION QUE ACEPTA RESPUESTA AFIRMATIVA O NEGATIVA.
.........................................................................
*I
char pregunta(void)
{
char resp;
do {
resp=tolower(getch());
} while(resp!='s' && resp!='n');
printf("%c",resp);
getch0;
return(re sp) ;
1
..........................................................................
*
FUNCION QUE LLENA EL BUFFER DE ENTRADA
.........................................................................
*/
int llena(void)
{
int j=O;
final=O;
do(
carac=fgetc(fp);
bt--;
if(bt==O)
final= 1 ;
else
{
cadb]=carac; j++;
34
PROYECTO TERMINAL
COMUNICACION INALthBRICA DE DATOS ENCRIPTADOS Y COMPRIMIWS ENTRE DOS PC's
1
}while(! fuial&& j<200);
cadlj]=EOS; /*poner condicion de salida*/
returno);
1
..........................................................................
*
FUNCION QUE INICIALIZA EL PUERTO DE COMUNICACIONES
.........................................................................
*/
void inicializa(void)
{
outportb(P0RT 1 + 1 ,O);
outportb(PORT1 + 3,OxSO);
outportb(PORT1 + 0,OxSO);
outportb(PORT1 + 1,OxOl);
outportb(PORT1 + 3,0x03);
outportb(PORT1 + 2,0xC7);
outportb(PORT1 + 4,OxOB);
.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
*
FUNCION QUE TRANSMITE
.........................................................................
*/
void transmite(void)
{
int tope,i,c;
char var;
abre-archivo();
if(fp!=NULL)
{
clrscr();
printf("\n\t<<< C A R G A D O R D E P R O G R A M A S E X E >>>'I);
printf("\nb\tPresionacualquier tecla para iniciar la transmision");
printf("\n\t(ESCpara cancelar): ");
var=getch();
if(var !=ESC)
{
inicializa();
PROYECTO TERMINAL
COMUNICACI~NINALÁMBRICA DE DATOS ENCRIPTADOS Y COMPRIMIDOS ENTRE DOS PC'S
cuenta();
printf("ui\t\tIniciando la transmision...hh\t");
delay(500);
do {
tope=llena();
i=O;
while(i<tope)
{
c=inportb(PORTl + 5);
if(c & 0x20)
{
var=cad[i] ;
printf( "%c",var);
outportb(PORT1,var);
i++;
if(i==50 11 i-100 I( i==150 11 i==200)
{
printf( "ui\t");
1
1
1
if(final)
{
var='M';
outportb(PORT1,var);
var='A';
outportb(P0RT 1,var);
var='R';
outportb(PORT1,var);
VFV;
outportb(PORT1,var);
VF'E';
outportb(PORT1 ,va);
vaFtL1;
outportb(P0RT 1,var);
1
/* condicion de salida */
}while(!final);
printf("ui\t\tArchivo
SOmWARE DE LA RECEPCION
PROYECTO TERMINAL
COMUNICACION INALÁMBRICA DE DATOS ENCRIPTADOS Y CObfFWMJDOS ENTRE DOS PC's
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<process.h>
#include<dos.h>
#include<ctype.h>
#include<string.h>
#defineMAX 200
#define LONG 20
#defineESC 27
#define EOS 70'
#define PORT1 Ox3F8
char menu(void);
void abre-archivo(void);
char pregunta(void);
void inicializa(v0id);
int llena(void);
void recibir(void);
void brinca(void);
char ar[300001;
FILE *@=NULL;
char carac,cad[MAX];
int final;
..........................................................................
**
MODULO PRINCIPAL
.........................................................................
**I
void main(void)
{
char op;
do {
op=menu();
iflop-' 1
I)
{
recibir();
1
37
PROYECTO TERMINAL
COMUNICACIÓN INALÁMl3RICA DE DATOS ENCRIPTADOS Y COMPRIMIDOS ENTRE D O S PC's
} while(op!='2');
clrscr();
1
..........................................................................
**
.........................................................................
**I
char menu(void)
{
char resp;
clrscr();
printf("h\t\tPROYECTO FINAL ");
printf("h\t\tRECEPCION DE ARCHNOS
printf("A TRAVEZ DEL PUERTO SERIAL.");
printf("hhh\t 1.-RECIBIR...");
printf("h\t2.-SALIR.");
printf("hh\tElige una opcion: ");
do {
resp=getch();
)while(resp<49 11 resp>50);
printf("%c",resp);
getch0;
return(resp);
'I);
1
..........................................................................
**
FUNCION QUE ABRE EL ARCHIVO Y DEVUELVE UN APUNTADOR AL
MISMO,
VERIFICANDO POSIBLES ERRORES
.........................................................................
**/
void abre-archivo(void)
fp=fopen(l'a:\\recibido.cmp","w");
1
..........................................................................
*
FUNCION QUE ACEPTA RESPUESTA AFIRMATIVA O NEGATIVA.
PRQYECTO TERMINAL
COMUNICACIÓN INALÁMBRICA DE DATOS ENCRIPTADOS Y COMPRIMIDOS ENTRE DOS PC's
.........................................................................
*/
char pregunta(void)
{
char resp;
do {
resp=tolower(getch());
}while(resp!='s' && resp!='n');
printf("%c",resp);
getch0;
return(resp);
1
..........................................................................
*
FUNCION QUE LLENA EL BUFFER DE ENTRADA
.........................................................................
*/
int llena(void)
{
int j=O;
fmaI=O;
do {
carac=fgetc(fp);
if(feof(fp))
final= 1;
else
{
cadu]=carac; j++;
1
}while(!fmal && jG00);
cadb ]=EOS; /*poner condicion de salida*/
returna);
1
..........................................................................
*
FUNCION QUE INICIALIZA EL PUERTO DE COMUNICACIONES
.........................................................................
*I
39
PROYECTO TERMINAL
COMUNICACI~NINALÁMBRICA DE DATOS ENCRIPTADOS Y COMPRIMIWS ENTRE DOS PC'S
void inicializa(void)
{
outportb(PORT1 + 1,O);
outportb(PORT1 + 3,OxgO);
outportb(PORT1 + 0,OxSO);
outportb(PORT1 + 1,OxOl);
outportb(PORT1 + 3,0x03);
outportb(PORT1 + 2,0xC7);
outportb(PORT1 + 4,OxOB);
1
..........................................................................
*
FUNCION QUE TRANSMITE
.........................................................................
*I
void recibir(void)
{
int i=O, c, 1,j=O, p=O;
char var;
abre archivo();
i f(BT=mL)
{
clrscr();
inicializa();
printf("\n\tIníciando la recepci$n...\n\n\t");
delay(500);
while@!=l)
{
do
/* POLEO DEL REGISTRO*/
{
c=inportb(PORTl + 5);
} while (!( c & 0x01));
var=inportb(PORTl);
printf("%c",var);
/* LEE EL DATO */
PROYECTO TERMINAL
COMUNICACI~N"UCA
DE DATOS ENCRIPTADOSY COMPRIMIDOS ENTRE ms K'S
ar[i++]T a r ;
/* GUARDAR DATO EN BUFFER */
switch(var)
{
case'M: if (j==O) j++;
else j=O;
break;
case'A': if (j==l)
else j=O;
break;
j++;
case'R': if (j==2)j++;
else j=O;
break;
case'V': if (j==3) j++;
else j=O;
break;
case'E': if (j==4) j++;
else j=O;
break;
case'l': if (3-5)
else j=O;
break;
p=l;
} /* FIN DEL CASE */
} /* FIN DEL WHILE */
/* REGRESA LAS 5 POSICIONES FINALES */
i=i4;
ar[i]=EOS;
for ( k 0 ; l<=i; l++) /* ESCRIBE A DISCO */
fprintf(fp,"%Ctf,ar[11);
/* CIERRE DE ARCHIVO */
fclose(fp);
printf("ui Recepci#n Ok! ");
I
else
printf("h
I
** ERROR ** no se pudo crear el archivo");
PROYECTO TERMINAL,
COMUNICACIÓN [NALAMBRICA DE DATOS ENCRIPTADOS Y COMPRIMIDOS EN.JTRE DOS PC’s
METODO UTILIZADO PARA ENCRIPTAR
CIFRADO D E TRANSPOSICION
El cifiado de transposición es una simple columna, y el pleintext es escrito
horizontalmente con un tramo de tamaño fijo y el ciphertext de salida es leído
verticalmente, o sea se lee por columnas. Por ejemplo:
Plaintext : EL CAÑON DE SANTA ELENA, SIN LUGAR A DUDAS SE TRATA DE
UNA DE LAS GRANDES MARAVILLAS NATURALES DE CHIHUA HUA.
E LCAÑONDE S
ANTAE L ENA ,
S I NL UGARAD
UDAS S ET RAT
ADEUN ADE LA
S GRANDE SMA
R A V I L L A S NA
TURA L E S DE C
HI HUA HUA
Ciphertext : EASUASRTH LNIDDGAUI CTNAERVRH AALSUAIAU ÑEUSNNLLA
OLGEADLEH NEATDEASU DNRRESSDA EAAALMNE S,DTAAAC.
Para desencriptarla, es cuestión de escribir el ciphertext verticalmente sobre un tramo, de
idéntico tamaño que en la encripción, y entonces leer el plaintext de salida
horizontalmente. Obteniendo así el pleintext original.
Este tipo de algoritmo, es muy utilizado en los criptosistemas modernos, esto es
dificultoso, ya que se requiere de una ranura de memoria, y el mensaje tarda un poco para
poder establecer un tamaño ó longitud certeras para desarrollar el algoritmo.
PROYECTO TERMINAL
COMUNICACIÓN INALÁMf3RICA DE DATOS ENCRPTADOS Y COMPRIMIDOS ENTRE DOS pc's
DESARROLLO DEL SOFTWARE DE LA ENCRIPTACI~NY
DESENCRIPTACI~N
.................................................................
I*
/* UNlVERSIDAD AUTONOMA METROPOLITANA
/* PROYECTO TERMINAL
/*
*/
*/
*/
*I
.................................................................
#include <conio.h>
#include <string.h>
#include<stdio.h>
#include <dos.h>
#include<io.h>
#include Cstdlib.h>
#include <math.h>
#include<fcntl.h>
#include<a:\ayuda.h>
#include<a:\pantalla.h>
#define MAX 30000
#define TIME 200
#define TIMER 2500
int val-llave(void);
int abre arch(char *nombre,int,int);
int caicula(int);
void encripta(char in[MAX],char out[MAX],int cte,unsigned bytes);
void desencripta(char in[MAX],char out[MAX],int cte,unsigned bytes);
void ayud(void);
char menu(void);
void opcion(char);
void encriptar(v0id);
void desencriptar(v0id);
void extension(char *in,char *out,int opcion);
'
.
PROYECTOTERMINAL
COMUNICACION I N A L k B R I C A DE DATOS ENCFUPTADOS Y COMPRIMIDOS ENTRE DOS PC's
void encripta(char in[MAX],char out[MAX],int cte,unsigned bytes);
void pide-datos(char *name,& *valor,int opcion);
void main(){
char tecla;
char nom[25]="ENCRIRTAR-DESENCRIPTAR";
clrscr();
bienvenida( 1,nom);
do{
tecla = menu();
if(tecla!='4'){
opcion(tec1a);
clrscr();
1
1while(tecla!='4');
limpiajantalla( 1,1,80,25);
clrscr();
1
char menu(void){
char tecla;
limpiaqantalla( 1,1,80,25);
cuadricula(2,2,79,23,1,15);
cuadricula(15,8,60,18,1,15);
textcolor(RED);
gotoxy(5,2);
cprintf("MENu");
gotoxy(293);
cprintf( "(1)ENCRIPTAR");
gotoxy(2,4);
cprintf("(2)DESENCRIPTAR");
JNA OPCIO
PROYECTO TERMINAL
COMUNICACI~NINALÁMBRICA DE DATOS ENCRLPTAWS Y COMPRIMIDOS ENTRE DOS PC'S
tecla = getch();
} while(!strchr("l234",tecla));
return(tec1a);
1
void opcion(char tecla){
clrscr();
if(tecla=='l') encripta();
if(tecla--'2') desencripta();
if(teclae'3') ayudo;
1
/*funcionesprincipales*/
void encriptar() {
clrscr();
calcula( 1);
void desencripta0 {
clrscr();
calcula(2);
cprintf("estas en desencriptar");
}
void ayudo{
char *tex="ayuda.txt";
limpiajantalla( 1,1,80,25);
cuadricula(2,2,79,23,1,15);
textcolor(RED) ;
ayuda(tex);
gotoxy(22,22); cprintfl"PRESI0NE CUALQUIER TECLA PARA CONTINUAR");
getche();
1
/*esta funcion realiza la encriptacion o desencriptacion segun
sea el valor de opcion */
int calcula(int opcion){
char nombre[ 1S],nameout[ 153;
int valor,valido=O;
int handle,handlel,i;
PROYECTO TERMINAL
COMUNICACIÓN INALÁMBRICA
DE DATOS ENCRIPTADOS Y COMPRIMIDOS ENTRE DOS PC's
unsigned bytes,count;
char buqMAX1,bufl [MAX];
valido=O,i=O;
do {
pide-datos(nombre,&valor,opcion);
valido= abre-arch(nombre,valor,opcion);
i++;
} while(valido==1 ~ 3 ) ;
if(opcion==l){
gotoxy(8,6);
cprintf("FIN DE ENCRIPTA");
return O;
1
if(opcion-2) {
gotoxy(8,6);
cprintf("FIN DE ENCRIPTA");
return O;
1
return O;
}
/*esta funcion pide datos al usuario nombre del archivo
ruta y la llave para encriptar o desencriptar*/
void pide-datos(char *name,int *valor,int opcion){
char numero[ 1291;
long int llave-val;
long int numero val;
int f,valido,ban<i,handle;
limpiajantalla( 1,1,80,25);
cuadricula(2,2,78,23,1,15);
cuadricula(5,4,70,12,1,15);
textcolor(RED);
if(opcion==l){
gotoxy(25,2); cprintf("ENCRIPTAR);
]else {
gotoxy(25,2); cprintf("DESENCRIPTAR");
1
band=O; i=O;
do{
gotoxy(7,4); cprintf("N0MBRE Y RUTA DEL ARCHNO I' );
gets(name);
if Cdosopen(name, O-RDONLY, &handle) != O) {
gotoxy(7,4); delhe();
gotoxy(7,4); cprhtf("N0 PUEDE HABRIR ARCHIVO");
PROYECTO TERMINAL,
COMUNICACIONINALAMBIUCA
DE DATOS ENCRIPTADOS Y COMPR~MIWSENTRE DOS PC'S
delay(TIMER);
dellhe();
gotoxy(7,4); cprintf("RUTA O NOMBRE! INVALIDO");
delay(TIMER);
delhe();
band= 1;
i++;
1
} while(band== 1&&i<3);
if(i==3) {
limpiajantalla( 1,1,80,25);
clrscr();
textcolor( 15);
exit( 1);
1
gotoxy(7,5); cprintf("SELECCI0NE LA LLAVE :'I);
gotoxy(7,6); cprhtf("RECUERDE QUE ESTA EN EL ");
textcolor( 14);
gotoxy(35,6); cprintf("INTERVAL0 [O-2551");
textcolor( 15);
cuadricula(5,15,70,22,10,0);
textcolor(2);
*valor= val-llave();
1
/* da el nombre de salida con su extension*/
void extension(char *h,char *out& opcion)(
int i=O;
strcpy(out,"");
/*nombre de archivo de salida =al de entradad*/
while(in[i] !='\O'){
if(in[i] r- break;
out[i] = in[i];
i++;
I.')
1
if(opcion== 1){
if(in[i] !='\O'll i<9 ){
out[i++] =
out[i++] = 'k';
out[i++] = Y;
out[i++] = 'if;
'.I;
1
/*crea extension*/
/*para encriptaci$n*/
1
if(opcion==2){
if(in[i] !='\O'l/ i<9 ){
out[i++] = I.';
/*extensign delarch desencriptado*/
PROYECTO TERMINAL
COMUNICACI~NINALÁMBRICA DE DATOS ENCRIPTADOS Y COMPRIMIDOS ENTRE DOS PC'S
out[i++]
out[i++]
out[i++]
= 'u';
=Y;
=Y;
1
1
out[i] = '\Of;
1
/*lecturade los bloques del archivo de entrada a memoria
y de memoria al archivo de salida */
int abrearch(char *nombre& valor,int opcion) {
char nameout[ 151;
int handle,handle1 ;
unsigned bytes,count;
char buf[MAX],bufl [MAX];
int band =O;
extension(nombre,nameout,opcion);
if(opcion== 1){
i f Cdosopen(nombre, O-RDONLY, &handle) != O) {
gotoxy(5,3); cprintf("N0 PUEDE HABRIR ARCHIVO");
gotoxy(5,3); cprintf("RUTA O NOMBRE INVALIDO");
dellhe();
band = l ;
return band;
1
1
if(opcion==2) {
i f Cdosopen(nombre, O-RDONLY, &handle) != O) {
gotoxy(6,3); cprintf("n0 puede habrir el archivo de entrada");
delay( TIMER);
delay(TIMER);
band = l ;
return band;
1
1
i f Cdoscreat(nameout, -ANORMAL, &handle1 ) != O){
gotoxy(6,4); cprintqlho puede crear el archivo de salida");
delay(=);
band= 1 ;
return band;
1
do{
i f Cdos-read(handle, buf, MAX, &bytes) != O) {
cprintf("n0 puede leer archivo de entrada");
48
.
+
PROYECTO T E m A L
COMUNICACION lNALÁh4BRICA DE DATOS ENCRJPTADOS Y COMPRIMIDOS ENTRE DOS X ' s
delay(TIME);
band =l;
return band;
I
else {
if(opcion=l){
encripta(buf,bufl ,valor,bytes);
if Cdos-write(handle 1, bufl ,bytes, &count) != O) {
cprintf("no puede escribir a archivo de salida");
delay(TIME);
band= 1;
return band;
1
1
if(opcion--2) {
desencripta(buf,bufl ,valor,bytes);
if (-dos-write(hand1e 1, bufl ,bytes, &count) != O){
cprintf("no puede escribir a arcivo de salida");
delay(-);
band= 1;
return band;
I
1
1
}while(bytes==MAX);
-dosclose(hand1e 1);
-dos-close(hand1e);
return O;
1
/* esta funcion realiza la encriptacion*/
void encripta(char in[MAX],char out[MAX],int cte,unsigned bytes){
int i=O;
for(i=O;i<bytes;i++) {
out[i] = in[i] + cte;
if((int)out[i]>255) out[i] = out[i] - 255;
1
out[i]='\O';
1
int val-llave(void) /* validacion de la base para rango [O-255]*/
{
char entrada 1[71;
int llave,i,c;
long d;
PROYECTO TERMINAL
COMUNICACION INALÁh4BRICA DE DATOS ENCRlpTAwS Y COMPRIMIDOS ENTRE DOS PC's
do{
textcolor( 14);
gotoxy( 2 5,l); cprhtf( "LLAVE: ");
for(i=O;i<5;i++) {
c = getch();
i f (c==13){
entrada 1 [i]='\O';
break;
} else if( 6 4 81\05 7)
1--;
else
entrada1 [i]=c;
1
llave=atol(entrada 1 );
textcolor( 15);
gotoxy(25,l); cprintf("LLAVE:");
gotoxy(3 5,l); cprintftentrada1);
iftllave < O )I llave >255){
gotoxyt 15,l); cprintf("LLAVE INVALIDA");
delay(TIMER);
dellhe();
1
}while(llave < O I( llave >255);
return llave;
1
/*esta funcion realiza la desencriptaci$n*/
void desencriptatchar in[MAX],char out[MAX],int cte,unsigned bytes) {
int i=O;
for( i=O;i<bytes;i++) {
out[i] = in[i] - cte;
if((int)out[i]>255) out[i] = out[i] + 255;
}
out[ i]='\O';
1
PROYECTO TERMINAL
COMLJNICACI~NINALÁMBRICA
DE DATOS ENCRIPTADOSY COMPRIMIWS ENTRE DOS PC’S
METODO UTILIZADO PARA COMPRIMIR
CODIGO DE HSJFFMAN
El código de Hufñnan es un método para crear un código de longitud de un código fijo.
La idea básica del código de Hufñnan es:
Cada uno de los bits de la salida tiene reservado la misma cantidad de espacio, y cada bit
debe de tener la misma probabilidad.
Este método tiene su origen en el código de Shannon-Fano, en el cual se crea un árbol con
todos los caracteres empezando por la raíz y desglosándolo según las ocurrencias de cada
uno. Cada ramificación debe de sumar la misma probabilidad. Ejemplo :
Imaginemos que sabemos el número de ocurrencias de cada símbolo. Si la entrada de los
caracteres es (aabbaac), entonces el conteo de la ocurrencia es:
c (a) = 4
c(b) = 2
c(c)= 1
Entonces, el árbol queda:
a
l
4
I
root
\
3
\ I
b
1
2
X
\
1
\
C
PROYECTO TEiUvUNAL
COMUNICACION NALÁMBRICA DE DATOS ENCRIPTADOS Y COMpR[MIDoS ENTRE DOS PC’s
El número en cada rama indica la suma de fiecuencia en las “subárboles”. Como se puede
observar las sumas no son iguales, entonces se dice que el código y la entropía no son
buenos.
Para resolver este problema, tomamos todos los caracteres y cada uno tiene una
ocurrencia asociada a esta, y entonces se pone en nodos que no se enlazan o se conectan.
Llamados estos como SO.Entonces C(S0) es la suma de todos los conteos en SO.
Tomamos el nodo con el conteo más alto, y lo asignamos a una S1. Ahora C(S0) es el
más bajo. Y así sucesivamente hasta que C(S1) > = C(S0). Ahora los datos se dividen de la
siguiente manera:
Ahora, tomando [S 13 como punto de partida, y dividiendo este en [S2]y [S 11. Hacemos lo
mismo para [SO],dividiéndolo en [S3]y [SO].
Ejemplo :
C(a> = 4‘
C(b) = 2
C(c) = 1
C(d) = 1
SO = { a, b, c, d }, C(S0)
=8
Y se obtiene:
S1 = {a}, C(S1) = 4; SO = {b, c, d}, C(S0) = 4
El conteo es igual y se tiene un solo miembro, por lo tanto se para la construcción de S 1.
SO = {b, c, d}, C(S0) = 4
Se saca b para hacer S2.
52
PROYECTO TERMINAL,
COMUNICACIÓN INALAMBRICA DE DATOS ENCRIPTADOS Y COMF'RIMIDOS ENTRE DOS E ' s
S2 = {b}, C(S2) = 2; SO = {c, d}, C(S0) = 2
El conteo es igual y tiene un solo miembre, entonces se para la edificación de S2.
SO = {c, d}, C(S0)
=2
Tomando S2 = { c } , y SO = {d}, como se tiene un solo miembro hemos terminado.
Quedando el árbol como sigue:
a
l
4
I
b
1
2
root
\ I
X
C
I
1
\
2
\ I
X
\
1
\
d
En el código de Huf€inan, tomamos una lista de todos los caracteres, poniendo los nodos en
la hoja, y dando a cada nodo un conteo igual al conteo de los caracteres en ésta. Estos nodos
no tienen origen.
Ahora, olvidemos que estos son caracteres y los llamaremos los nodos con conteo. La
clasificación se hace según el conteo, el conteo más bajo es el primero. Tomamos los dos
nodos de conteo más bajos, y hacemos un nuevo nodo como el origen de estos dos, y el
conteo del nuevo nodo es igual a la suma de estos dos conteos. Ahora se suma este nuevo
nodo a la nueva lista de clases. Esto se repite hasta que en la lista quede solo un miembro, y
entonces se ha llegado a la raíz y es cuando entonces se ha terminado.
Ejemplificaremos este método para que quede más claro:
[a] = 4
[b] = 2
[c] = 1
[d] = 1
‘
.
PROYECTO TERMINAL
C ~ M U N I C A C I ~INALÁMBRICA
N
DE DATOS ENCRIPTADOS Y COMPRIMIDOS ENTRE DOS PC’S
[ 3- indica un nodo, así [ [XI, [y], [z] 3 es un nodo con dos derivados; entonces se tiene una
hoja [XI, y uno tiene dos derivados en el mismo, [y] y [z]. Si [XI = N, el conteo de este nodo
es N.
inicializando el código; los listamos desde el conteo más bajo.
[c] = 1
[d] = 1
[b] = 2
[a] = 4
Tomamos los dos más bajos: [c] y [d], y hacemos un nuevo nodo: [[c], [d]]
lo ubicamos en la clase de orden [b] = 2.
= 2,entonces
[a] = 4
Nuevamente, tomamos los dos más bajos: [b] y [[c], [d]], y hacemos un nuevo nodo:
[[blY [[CIY [dlll = 4
[a] = 4
Finalmente, elegimos los dos más bajos y hacemos un nuevo nodo:
[[al, [PI, [CIY [dl11 = 8
Hemos llegado a la raíz, ya que es solo nodo.
El árbol queda:
a
l
4
b
I
1
2
root
\ I
X
C
I
1
\
2
\ I
X
\
1
\
d
PROYECTO TERMINAL
COMUNICACI~NINALÁMBIUCA
DE DATOS ENCRIPTADOSY COMPRIMIDOSENTRE DOS PC’S
Este código tiene los principios del código Shannon-Fano, pero su análisis es más fácil y
rápido.
DESARROLLO DEL SOFTWARE DE COMPRESIÓN Y DESCOMPRESIÓN
.................................................................
/*
*I
/* UNIVERSIDAD AUTONOMA METROPOLITANA
*/
/* PROYECTO TERMINAL
*/
/*
*/
.................................................................
#include <conio.h>
#include <string.h>
#incIude<stdio.h>
#include <dos.h>
#include<io.h>
#include <stdlib.h>
#include <math.h>
#include<fcntl.h>
#include<a:\ayuda.h>
#include<a:\pantalla.h>
#define MAX 30000
#define TIME 200
#define TIMER 2500
struct tabla{
unsigned char carac;
unsigned int fiec;
} tabla[256];
int val-llave(void);
int abre-arch(char *nombre,int,int);
int calcula(int);
void inicializa(void);
void fiecuencia(unsigned char in);
void ordena(void);
int table(void);
int busca(unsigned char carac,int);
void comprim(char *in,char *out& cont);
void.descomprim(char *in,char *out,unsigned descuento);
void calcula 1 (int opcion);
PROYECTO TERMINAL
COMUNICACIÓN INALÁMBRICA DE DATOS ENCRIPTADOS Y COMPRIMIDOS ENTRE DOS X ' s
char menu(void);
void opcion(char);
void comprime(void);
void extension(char *in,char *out& opcion);
void ayuda(void);
void pide-datos(char *name);
void descomprime(void);
/*INICI PROGRAMA PRINCIPAL*/
void main(){
char tecla,*texto="COMPRIME-DESCOI"RIh'lE'';
clrscr();
bienvenida(3 ,texto);
do {
tecla = menu();
if(tecla!='4') {
opcion(tec1a);
clrscr();
1
1
} while(tecla! ='4');
limpiaqantalla( 1,1,80,25);
clrscr();
/* muestra un menu en pantalla */
char menu(void) {
char tecla;
limpiaqantalla( 1,1,80,25);
cuadricula(2,2,79,23,1,15);
cuadricula( 15,8,60,18,1,15);
textcolor(I3ED);
gotoxy(5,2);
cprintf( "MENU");
gotoxy(2,3);
cprintf("( 1)COMPRIME");
gotoxy(2,4);
cprintf'("( 2)DE SCOMPRIME");
gotoxy(2,5);
cprintf( 3)AYUDA");
gotoxy(2 ,O
cprintf( "(4)SALIR");
gotoxy(2
Ir(
97);
PROYECTO TERMINAL
COMUMCACIÓN INALÁMBRICA DE DATOS ENCRIPTADOS Y COMPRIMIDOS ENTRE WS Pc'c
cprintf("INTR0DUZCA UNA OPCION
do {
tecla = getch();
'I);
} while(!strchr("l234",tecla));
return(tec1a);
/* llama ala funcion a realizarze dependiendo de la tecla de
entrada oprimida*/
void opcion(char tecla) {
clrscr();
if(tecla=='l') comprime();
if(tecla-'2')
descomprime();
if(tecla=='3') ayuda();
}
void comprime() {
clrscr();
calcula( 1);
void descomprime(void) {
clrscr();
calcyla l(2);
1
void ayuda(){
char *tex="ayuda2.txt";
limpiajantalla( 1,1,80,25);
cuadricula(2,2,79,23,1,15);
textcolor(RED);
ayucía(tex);
gotoxy(22,22); cprintq"PRESI0NE CUALQUIER TECLA PARA CONTINUAR');
getche();
1
/* FUNCION PRINCIPAL DONDE SE LLEVA LA COMPRESION*/
int calcula(int opcion){
PROYECTO TERMINAL
COMUNICACIÓN INALÁMBRICA DE DATOS ENCRIPTADOS Y COMpRIh4IDOS ENTRE W S E ' s
char nombre[ 1S],nameout[ 151;
int valor;
int handle,handle1,i,cantidad;
unsigned bytes,count;
char buflMAX1,bufl [MAX];
inicializa();
pide-datos(nombre);
if (-dos-open(nombre, O-RDONLY, &handle) != O) {
gotoxy(5,4); cprintf("no puede habrir el archivo ");
return 1;
1
extension(nombre,nameout,opcion);
do {
if Cdosread(handle, buf, MAX, &bytes) != O) {
cprintf("no puede leer de %sf');
return 1;
1
else
for(i=O ;i<bytes;i++)
fiecuencia(bufli]);
} while(bytes==MAX);
-dosclose(hand1e);
ordena();
cantidad =table();
/*ORDENA EN ORDEN DE MAYOR FRECUENCIA*/
/*table() da en numero de caracteres existentes*/
comprim(nombre,nameout,cantidad);
gotoxy(8,6); cprintq"FIN DE COMPRIMIR");
delay(TIh4ER);
return O;
1
/*funcion que pide datos de entrada*/
void pide-datos(char *name){
char numero[l29];
long int llave-val;
long int numero-val;
int f,valido,i=O,band,handle;
limpiaqantalla( 1,1,80,25);
'
*
-
PROYECTOTERMTNAL
COWNICACI~N INALÁMBRICA DE DATOS ENCRIPTADOS Y COMPRIMIDOS
ENTRE DOS PC'S
cuadricula(2,2,78,23,1,15);
cuadricula(5,4,70,12,1,15);
gotoxy(25,2);
textcolor(ñED); cprintf("C0MPRIMIR");
do{ band=O;
gotoxy(7,4); cprintf("N0MBRE Y RUTA DEL ARCHIVO
gets(name);
if Cdos-open(name, O-RDONLY, &handle) != O) {
gotoxy(7,4); delhe();
gotoxy(3,4); cprintf("no puede habrir el archivo ");
delay(TIMER);
dellhe();
gotoxy(3,30); cprintqname);
gotoxy(3,4); cprintf("RUTA O NOMBRE INVALIDOS");
dellhe();
delay(TIMER);
band=l; i++;
1
} while(i<3&&band==1);
/* da el nombre de salida con su extension*/
void extension(char *in,char *out,& opcion){
int i=O;
strcpy(out,"");
while(in[i] !='\O'){
if(in[i] == break;
out[i] = in[i];
i++;
I.')
1
if(opcion-- 1){
if(in[i] !='\O'Il i<9 ){
out[i++] = '.I;
out[i++] =
out [i++] = 'm';
out[i++] = 'PI;
IC';
1
1
if(opcion==2){
if(in[i] !='\@I1 i<9 ){
out[i++] =
out[i++] = Id';
out[i+-t] = Y ;
out[i++] = 'm';
'.I;
'I
);
PROYECTO TERMINAL
COMUNICACIÓN I N A L h R I C A DE DATOS ENCRIPTADOS Y COMPRIMTDOS ENTRE DOS PC's
I
}
out[i]
= '\O';
1
void inicializal (void) {
int i;
for(i=O;i<256;i++) {
tabla[i].carac = O;
I
I
void inicializa() {
unsigned char j=O;
int i;
for(i=O;i<25 6;i++) {
tabla[i].carac = j++;
tabla[i].fiec = O;
I
1
void fiecuencia(unsigned char in){
tabla[in] .fkec++;
1
void ordena() {
struct tabla aux;
int i=Oj;
int bandera= 1 ;
while(i<=25 5&&bandera) {
//bandera= O;
foru =i+ 1 ;i<=2 5 5 ;i++)
if(tabla[ i] .fiec<tablaD] .fiec) {
aux.carac = tabla[i].carac;
aux.fiec = tabla[i].fiec;
tabla[i] .carac = tablati] .carac;
tabla[i] .fiec = tablaU].fiec;
tablati].carac = aw.carac;
tablati].fiec = aux.fiec;
bandera = 1 ;
1
i++;
I
PROYECTO TERMINAL
COMUNICACI~NINALPLMBIUCA DE DATOS ENCRIPTADOS Y COMPRIMIDOS ENTRE DOS PC'C
int table() {
int i=O;
while(tabla[i] .fiec>O&&i<256)
i++;
return(i);
}
int busca(unsigned char carac,int cont){
int i=O;
while(tabla[ i] .carac !=carac&&i<cont)
i++;
retum(i+l);
1
void comprim(char *in,char *out& cont){
FILE *salida;
int handle,handle1,alfa,bandera=1;
char bufIMAX];
char bufl [MAX];
unsigned char carac;
unsigned bytes,count,delta,gama=O;
long i,lugar,mascara,pos;
if Cdos-open(in, O-RDONLY, &handle) != O) {
cprintf("no puede habrir elarchivo %s",in);
exit(0);
1
salida = fopen(out,"wb");
fwrite(&cont,sizeoflcont), 1,salida);
for(i=O;i<cont;i++)
fwrite(&tabla[i] .carac,sizeoqtabla[i] .carac), 1,salida);
fclose(salida);
if ((handle1 = open(out, O-APPEND I O-WRONLY 1 OBINARY )) =-1)
{
cprintf("no puede crear el archivo %s",out);
PROYECTO TERMINAL
COMUNICACI~NINALÁMBRICADE DATOS E
N c w m s Y COMPRIMIDOS ENTRE DOS
exit( O);
1
do{
i f Cdosread(handle, buf, MAX, &bytes) != O) {
cprintf("no puede leer de %s",in);
exit(0);
1
else {
gama = O;
delta = O;
carac = buflgama];
lugar = busca(carac,cont);
mascara = 255;
pos = 7;
while(gama<bytes) {
for(+ 1 ;i<=lugar;i++) {
if(pos<O) {
bufl [delta] = mascara;
if((delta+l )==MAX){
i f ((alfa -Mte(handlel, bufl,delta+l))
{
cprintf("no puede escribir a %s",out);
exit(0);
I
bandera=O ;
1
if(bandera)
delta++;
else {
delta=O;
bandera= 1 ;
1
pos = 7 ;
mascara = 255;
1
if(i=lugar)
mascara -= pow(2,pos);
pos--;
1
gama++;
carac = buqgama];
-1)
PC'S
PROYECTO TERMINAL
COMUNlCACION INALÁMBRICA DE DATOS ENCRIPTADOS Y COMF'R[MIDoS ENTRE DOS PC's
lugar = busca(carac,cont);
1
if((delta+ l)==MAX) {
i f ((alfa wite(handle1, bufl,delta+l)) =- 1 )
{
cprintf("no puede escribir a %s",out);
exit(0);
1
delta=O;
1
bufl [delta] = mascara;
i f ((alfa Wte(handle1, bufl,delta+l)) = -1)
{
cprintf("no puede escribir a %s",out);
exit( O);
}
1
} while(bytes==MAX);
-dosclose(hand1e 1);
-dosclose( handle);
}
/* funcion principal que lleva a cabo la descompresion */
void calcula 1 (int opcion){
FILE *ap;
char line[l29];
char nombre[ 1 S],nameout[ 151;
int i,cantidad;
unsigned descuento=O;
inicializa();
pide-datos( nombre);
ap = fopen(nombre,'lrbl');
if(ap=NLJLL) {
gotoxy(3 3);cprintfl"archivo no localizado");
exit(EXIT_SUCCESS);
}
Cead(&cantidad,sizeoqcantidad), 1 ,ap);
if(cantidad>256) {
gotoxy(7,5); cprintf("archivo no es un archivo comprimido");
exit(E7UT-SUCCESS);
1
descuento =cantidad +2;
PROYECTO TERMINAL
C ~ M U N I C A C I ~INALAMBRICA
N
DE DATOS ENCRIPTADOS Y COMPRMDOS ENTRE DOS E'S
for( i=O; i<cantidad;i++)
fiead(&tabla[i] .carac,sizeof(tabla[i] .carac), 1 ,ap);
fclose(ap);
extension(nombre,nameout,opcion);
descomprim(nombre,naeout,descuento);
limpiajantalla( 1,1,80,24);
fclose(ap);
1
/* funcion que realiza la descompresion*/
void descomprim(char *in,char *out, unsigned descuento) {
int handle,handle1 ;
char buqMAX],bufl [MAX];
unsigned bytes,count,delta=O,gama=O;
unsigned char carac;
int i,mascara,pos;
if (-dos-open(in, O-RDONLY, &handle) != O) {
cprintf("no puede habrir el archivo ");
exit(0);
I
i f (-dos-read(handle, buf, descuento, &bytes) != O) {
cprintf("n0 puede leer de ");
exit(0);
1
if cdoscreat(out, A-NORMAL, &handlel) != O)
{
I
cprintf("n0 puede crear el archivo 'I);
exit( O);;
do {
i f Cdos-read(handle, buf, MAX, &bytes) != O) {
cprintf("no puede leer de ");
exit(0);
1
else {
gama = O;
delta = O;
PROYECTO TERMINAL
COMUNICACI~NINALÁMBRICA DE DATOS ENCRIPTADOSY COMPRIMIM)~ENTRE DOS
carac = bufigama];
mascara = 128;
pos = o;
while(gama<byíes){
if(mascara&carac) {
pos++;
1
else {
bufl [delta] = tabla[pos].carac;
delta++;
pos=o;
I
mascara »=l ;
if(!mascara){
mascara = 128;
gama++;
carac = buqgama];
1
I
if (-dos-write(handle1,
bufl ,delta, &count) != O)
cprintf("no puede escribir a %s",out);
exit(0);
1
I
} while(bytes==MAX);
-dos-close(hand1e 1);
-dos-close(hand1e);
1
K'S
PROYECTO T E M A L
COhWNICACIÓN [NALhfBRICA DE DATOS ENCRIPTADOS Y COMPRIMIDOS ENTRE DOS P C ’ s
CONCLUSIONES
El proyecto ideado cumplió con el objetivo propuesto, ya que se realizó la transmisión de
caracteres de una PC hacia otra, con el apoyo del hardware y del software diseñados para tal
efecto.
Sin embargo, se presentaron algunos inconvenientes, como por ejemplo: para los circuitos
EXAR, se tenían problemas de estabilidad ya que a pequeñas variaciones de los
potenciómetros que originalmente debían utilizarse, las señales correspondientes de FSK
sufrían distorsiones considerablemente grandes.
Una forma de solucionar el problema fue el siguiente: una vez armados los circuitos con
los potenciómetros correspondientes y ajustados correctamente, se midió el valor de
resistencia de cada uno y se sustituyó con resistencias fijas de valores lo más aproximado
posible.
Aún cuando estas resistencias no eran exactamente iguales al valor de los potenciómetros,
las distorsiones eran despreciables; las únicas variables que se modificaban un poco eran la
amplitud y la frecuencia de las señales de FSK, lo cual no afectó en lo más mínimo al buen
funcionamiento del proyecto en general.
Otra contingencia que se presentó fue con los moduladores de FM, ya que, como se
mencionó en el reporte, se eligió trabajar en la banda comercial de radiodifusión de FM,
con lo cual, el ancho de trabajo permitido era pequeño, y la estabilización del transmisor se
dificultaba debido al valor de las bobinas con las cuales se controlaba el valor de la
frecuencia portadora.
Para contrarrestar este hecho, se estabilizó cada circuito variando el valor de la bobina y
aislándola para evitar así, cambios en la frecuencia portadora, lo cual funcionó
adecuadamente.
El punto que menores problemas ocasiono fue la programación del software, ya que el
compilador de Turbo C, es relativamente accesible y presenta la facilidad de compilar y
ligar instrucciones de ensamblador, con lo cual, la programación del UART 8250 no tuvo
mayores complicaciones.
PROYECTO TERMINAL
COMUNICACI~NINALÁMBRICA DE DATOS ENCRIPTADOSY COMPRIMIDOS
ENTRE DOS PC'S
BIBLIOGRAFÍA
Introducción a los Sistemas de Comunicación "
Ferrel G. Stremler
Ed. Addison Wesley Iberoamericana
U.S.A. 1993
"
" Comunicactions Systems "
A. Bruce Carlson
Ed. McGraw-Hill
U S A . 1986
Madem Handbook for the Communications Professional "
Cass Lewart
Intertext Publications Inc.
U.S.A. 1987
"
Information Transmission, Modulation and Noise ''
Mischa Schwartz
Ed. Mc Graw-Hill
U.S.A. 1990
"
" Compilation of Data Communications Standars "
Harold Folts, Harry R.Karp
Ed. Mc Graw-Hill
U.S.A. 1980
0
c.
Communication System Engineering Handbook "
Donald H. Hamsher
Ed. Mc Graw-Hill
U.S.A. 1990
0
"
Teleinformática y Redes de Computadoras "
Antonio Alabo Muííoz
Ed. Marcombo
México 1987
0
0
"
" Data Compression"
Gilbert Held
Ed. John Wiley & Sons
67
PROYECTO TERMINAL,
COMUNICACIÓN INALAMBRICA DE DATOS ENCRIPTADOS Y COMpR[MIwS ENTRE DOS P C ' s
Great Britain 1987
0
"Applied Cryptography "
Bruce Schneier
Ed. John Wiley & Sons
U.S.A. 1994
C: A Reference Manual "
Samuel P. Harrison
Ed. Prentice Hall
U.S.A.1987
0
"
MANUALES.
0
National Interface Databook
o
Manual de Circuitos EXAR
PAGINAS ELECTRÓNICAS DEL WORLD WIDE WEB (www)
0
PáginadeEXAR:
http://www.exar.com
0
Página de NATIONAL:
http://www.national.com
0
Página de MOTOROLA:
http ://www.mot.corn
0
Página de referencias del RS-232:
http://www.asic.com
0
Página del modulador de FM
http://www.elektron.et.tudelft.n1
0
Página de Criptografia
http://www.mach5.com/crypto/concepts.html
Página de Compresión
http://mms.utexas.edu/ cbloom/algs/statisti.html
Descargar