 |
spit - introduccion a los routers cisco y sus seguridad
|
|
|
|
 |
 |
-[ 0x08 ]--------------------------------------------------------------------
-[ ROUTERS CISCO I ]---------------------------------------------------------
-[ by Hendrix ]-------------------------------------------------------SET-18-
CURSO DE ROUTERS CISCO (I)
**************************
por Hendrix,
Este es el primer articulo que escribo para SET, si no os gusta lo siento
por vosotros porque pienso escribir muchos mas...
Introduccion:
Los Routers son los aparatos encargados de encaminar los paquetes que
circulan por una red, en definitiva son ellos los que forman el nucleo de
Internet. Un Router recoge el paquete que le llega, lo analiza y decide cual
es camino que debe seguir para llegar a su destino, haciendo de puente entre
los distintos medios de transmision (Frame Relay, X.25, RDSI, etc..) y los
distintos protocolos. Fisicamente un Router no es mas que un ordenador
dedicado, es decir tiene su Microprocesador, su memoria y hasta su Sistema
Operativo!
La empresa CISCO acapara el 70% del mercado de los routers, es algo asi como
Microsoft en el software. Para comprender el funcionamiento practico de
estos aparatos lo mejor es conocer el Sistema Operativo de Cisco: CISCO IOS.
[IOS stands for Internetworking Operating System, capici?]
Modelos:
El modelo mas sencillo de CISCO es el 761, un peque~o router RDSI pensado
para peque~as oficinas. Este router no tiene sistema operativo y se
configura localmente conectandose al puerto serie. Tambien puede configurarse
via telnet. La serie 1000 de Cisco ya incorpora el CISCO IOS y sobre este
tipo de aparatos nos centraremos en el curso. Los otros modelos: series 2000,
2600, 3000, 4000, etc. funcionan basicamente igual, eso si, contra mas
grande sea el modelo mas cosas tiene, mola mas y vale mas pelas.
Otro dia podria dedicarle mas tiempo a explicar como es cada modelo (si a
alguien le interesa que me lo diga o que mire el la web de Cisco).
Vamos pa'dentro:
Lo mejor que podemos hacer es entrar en un Router y asi queda todo mucho mas
claro que si suelto una parrafada teorica de las mias.
Vamos p'alla, suponemos que hacemos un telnet a la direccion x.x.x.x donde
esta el router. Esto es lo que pasara:
> telnet x.x.x.x
User Access Verification
Password: ********
router>
$$$ Entramos la contrase~a y ya estamos dentro (en principio no pide login)
$$$ Ahora nos aparece el interprete de comandos. El comando mas sencillo es
$$$ el Help, "?" que nos da una lista de los comandos posibles
router> ?
<1-99> Session number to resume
connect Open a terminal connection
disable Turn off privileged commands
disconnect Disconnect an existing network connection
enable Turn on privileged commands
exit Exit from the EXEC
help Description of the interactive help system
lock Lock the terminal
login Log in as a particular user
logout Exit from the EXEC
name-connection Name an existing network connection
pad Open a X.29 PAD connection
ping Send echo messages
ppp Start IETF Point-to-Point Protocol (PPP)
resume Resume an active network connection
show Show running system information
slip Start Serial-line IP (SLIP)
systat Display information about terminal lines
telnet Open a telnet connection
terminal Set terminal line parameters
traceroute Trace route to destination
tunnel Open a tunnel connection
where List active connections
x3 Set X.3 parameters on PAD
$$$ Estos no son todos los comandos que tiene ya que como veis no hay ninguno
$$$ de configuracion, para ver mas cosa hay que entrar en modo enable con la
$$$ orden "enable" (evidente, no?)
router> enable
password: ********
router# ?
<1-99> Session number to resume
bfe For manual emergency modes setting
clear Reset functions
clock Manage the system clock
configure Enter configuration mode
connect Open a terminal connection
copy Copy a config file to or from a tftp server
debug Debugging functions (see also 'undebug')
disable Turn off privileged commands
disconnect Disconnect an existing network connection
enable Turn on privileged commands
erase Erase flash or configuration memory
exit Exit from the EXEC
help Description of the interactive help system
lock Lock the terminal
login Log in as a particular user
logout Exit from the EXEC
name-connection Name an existing network connection
no Disable debugging functions
pad Open a X.29 PAD connection
ping Send echo messages
ppp Start IETF Point-to-Point Protocol (PPP)
reload Halt and perform a cold restart
resume Resume an active network connection
rsh Execute a remote command
send Send a message to other tty lines
setup Run the SETUP command facility
show Show running system information
slip Start Serial-line IP (SLIP)
start-chat Start a chat-script on a line
systat Display information about terminal lines
telnet Open a telnet connection
terminal Set terminal line parameters
test Test subsystems, memory, and interfaces
traceroute Trace route to destination
tunnel Open a tunnel connection
undebug Disable debugging functions (see also 'debug')
verify Verify checksum of a Flash file
where List active connections
write Write running configuration to memory, network, or terminal
x3 Set X.3 parameters on PAD
$$$ Nos ha pedido otra password y ha cambiado el prompt de ">" a "#" para
$$$ indicar el modo. Para volver al modo normal solo hay que introducir el
$$$ comando "disable". Ahora aparecen mas opciones.
Hare una parada en la demostracion para hacer una serie de explicaciones (muy
por encima, eso si). En principio hay cuatro tipos de comandos:
1. Comando "Show": muestra la configuracion o los datos de un servicio
2. Comandos de configuracion (hay que entrar en modo "configure")
3. Comandos "Debug": Hace que el router envie una secuencia de testeo y
devuelve un informe
4. Comandos TCP/IP de testeo: telnet, ping, traceroute, etc. estos paso de
explicarlos porque ya estareis hartos de usarlos
$$$ A~adiendo "?" a un comando nos devuelve una ayuda, por ejemplo:
router# show ip ?
accounting The active IP accounting database
aliases IP alias table
arp IP ARP table
cache IP fast-switching route cache
community-list List community-list
eigrp IP-EIGRP show commands
interface IP interface status and configuration
irdp ICMP Router Discovery Protocol
masks Masks associated with a network
nhrp NHRP information
protocols IP routing protocol process parameters and statistics
redirects IP redirects
route IP routing table
sockets Open IP sockets
tcp TCP/IP header-compression statistics
traffic IP protocol statistics
$$$ Volvemos al router, utilizare las ordenes mas simples y las ire
$$$ comentando:
router#show users
Line User Host(s) Idle Location
* 1 vty 0 idle 0 Hendrix.esmentira.com
$$$ Vaya, estoy solo. (La explicacion de "Line" y "vty" para el proximo dia,
$$$ vale?)
router#show version
Cisco Internetwork Operating System Software
IOS (tm) 1000 Software (C1005-Y-M), Version 10.3(7), RELEASE SOFTWARE (fc1)
Copyright (c) 1986-1995 by cisco Systems, Inc.
Compiled Wed 01-Nov-95 15:34 by vatran
Image text-base: 0x05008000, data-base: 0x023F5324
ROM: System Bootstrap, Version 5.3.2(6) [vatran 6], RELEASE SOFTWARE (fc1)
ROM: 1000 Bootstrap Software (C1000-RBOOT-R), Version 10.3(6), RELEASE SOFTWARE
(fc1)
router uptime is 50 weeks, 7 days, 13 hours, 57 minutes
System restarted by power-on
System image file is "flash:c1005-y-mz.103-7", booted via flash
cisco 1000 (68360) processor (revision 0x00) with 3584K/512K bytes of memory.
Processor board serial number 32325888
Bridging software.
X.25 software, Version 2.0, NET2, BFE and GOSIP compliant.
1 Ethernet/IEEE 802.3 interface.
1 Serial network interface.
8K bytes of non-volatile configuration memory.
4096K bytes of processor board PCMCIA flash (Device not programmable)
$$$ Tachan!!! Este es el Router: un Cisco 1005 con Cisco IOS 10.3.
$$$ Tambien podeis ver otras cosas: Microprocesador 68360, (Motorola, como el
$$$ Amiga!) 4 Megas de RAM, una tarjeta PCMCIA con 4 Megas mas, una tarjeta
$$$ Ethernet y otra tarjeta serie (para una conexion Frame Relay, se
$$$ supone)
$$$ Tambien incluye software para X.25 y software de Bridge, aunque no se
$$$ utilizan
router#show interfaces
Ethernet0 is up, line protocol is up
Hardware is QUICC Ethernet, address is 0000.0f112.ffff (bia 0000.0f112.ffff)
Internet address is 197.111.1.2 255.255.255.0
MTU 1500 bytes, BW 10000 Kbit, DLY 1000 usec, rely 255/255, load 1/255
Encapsulation ARPA, loopback not set, keepalive set (10 sec)
ARP type: ARPA, ARP Timeout 4:00:00
Serial0 is up, line protocol is up
Serial0.1 is up, line protocol is up
Hardware is QUICC Serial
Internet address is 10.1.1.1 255.255.255.252
MTU 1500 bytes, BW 1024 Kbit, DLY 20000 usec, rely 255/255, load 1/255
Encapsulation FRAME-RELAY IETF
Serial0.2 is up, line protocol is up
Hardware is QUICC Serial
Internet address is 10.1.1.2 255.255.255.252
MTU 1500 bytes, BW 1024 Kbit, DLY 20000 usec, rely 255/255, load 1/255
Encapsulation FRAME-RELAY IETF
$$$ Tambien aparecen estadisticas de paquetes cursados, paquetes erroreos,
$$$ etc, pero me lo salto porque ocupa mucho. Lo que si podeis ver es la
$$$ configuracion de la tarjeta Ethernet (IP:197.111.1.2), 10Mb de BW.
$$$ Tambien tiene una tarjeta serie con 2 conexiones Frame Relay a 10.1.1.1 y
$$$ a 10.1.1.2 El ancho de banda es de 1 Mb cada conexion.
router#show arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 197.111.1.1 87 0600.0c07.ffff ARPA Ethernet0
Internet 197.111.1.11 7 0600.09d0.3fe0 ARPA Ethernet0
Internet 197.111.1.10 4 0660.b0ee.e4ee ARPA Ethernet0
Internet 197.111.1.19 3 0600.09ee.7e74 ARPA Ethernet0
Internet 197.111.1.18 1 0600.0ee9.a6aa ARPA Ethernet0
Internet 197.111.1.14 21 0600.0333.5aab ARPA Ethernet0
Internet 197.111.1.20 9 0600.099a.2633 ARPA Ethernet0
Internet 197.111.1.102 32 0620.aff6.5335 ARPA Ethernet0
$$$ siempre va bien ver el resto de ordenadores conectados a la red local,
$$$ Veamos ahora el fichero de configuracion:
$$$ Los comentarios del fichero son mios, no os vayais a liar.
router#show configuration
version 10.3 /* Version del Cisco IOS */
service udp-small-servers /* servicios activos */
service tcp-small-servers
!
hostname router /* nombre del router */
!
enable secret 5 $7$5fr3$Lblju33t7NjnSUThFgxy34 /* clave secreta encriptada */
enable password holahola /* clave para acceso por el
puerto serie */
!
!
interface Ethernet0 /* Configuracion de la T.de Red */
ip address 197.111.1.2 255.255.255.0
!
interface Serial0 /* configuracion de Frame Relay */
no ip address
encapsulation frame-relay IETF
frame-relay lmi-type ansi
!
interface Serial0.1 point-to-point
ip address 10.1.1.1 255.255.255.252
frame-relay interface-dlci 510
!
interface Serial0.2 point-to-point
ip address 10.1.1.2 255.255.255.252
frame-relay interface-dlci 512
!
ip host otro1 10.1.1.1
ip host otro2 10.1.1.2
snmp-server community public RO
!
line con 0
exec-timeout 40 0
line vty 0 5 /* conf. acceso remoto */
password hola
login
!
end
$$$ El DLCI es como la direccion IP pero para una red Frame Relay.
$$$ (Que estais pidiendo un cursillo de Frame Relay?, bueno, me lo apunto
$$$ para otra).
router> exit
Se acabo por hoy, otro dia mas.
PD: no os molesteis en copiar las IP de este ejemplo ya que TODOS los datos
son falsos, no vaya a ser que se moleste el due~o del router
-[ 0x11 ]--------------------------------------------------------------------
-[ SEGURIDAD EN ROUTERS CISCO ]----------------------------------------------
-[ by Hendrix ]-------------------------------------------------------SET-20-
/////////////////////////////////////////////////////////////////////
///// /////
///// SEGURIDAD EN ROUTERS CISCO v1.0 /////
///// /////
///// por Hendrix Julio-1999 /////
///// /////
/////////////////////////////////////////////////////////////////////
Disclamer:
Toda la informacion que a aparece en este documento ha sido extraida de
los manuales de Cisco que aparecen en su web asi que no me toqueis los
huevos con resposabilidades legales.
Introduccion:
En SET#18 escribi un articulo explicando el funcionamiento de un router
Cisco y de los comandos mas usuales del Cisco IOS (show, ping, etc..)
Lo titule curso de routers cisco I, pues bien, supuestamente esta seria
la leccion 2 pero no me gustaba el formato y he decidido cambiarlo. Que
asi mola mas. En vez de ir haciendo partes ire ampliando las versiones
de este documento, si tengo ganas, claro...
0. Indice
---------
1. Ficheros de Configuracion
2. Como acceder al router
3. Acceso Consola
4. Acceso Telnet
5. Password modo enable
6. Acceso SNMP
7. Acceso TFTP
8. Firewall
9. Autenticacion local
10. Autenticacion Remota (RADIUS/TACACS+)
11. Control de acceso PAP/CHAP
12. Firewall PIX
13. Bugs DoS
1. Ficheros de configuracion
-----------------------------
El Cisco IOS tiene solo dos ficheros, el "running-config" y el
"startup-config" que se pueden ver con el comando show en modo enable.
router# show running-config
Estos archivos se pueden modificar desde la linea de comandos del router o
cargando el fichero mediante una conexion TFTP.
El running-config es la configuracion que se esta utilizando es ese momento,
el fichero se encuentra en la memoria volatil por lo que los cambios que se
realicen no seran permanentes. Para hacer los cambios permanentes habra
que utilizar la orden.
router# copy running-config startup-config
El startup-config se graba en la memoria no volatil (NVRAM) y sera el
fichero de configuracion utilizado al reiniciar el router.
2. Como acceder al Router
--------------------------
Existen varias maneras de acceder al router:
- Consola: acceso a traves del puerto serie
- Telnet: tipico
- SNMP
- TFTP
Como ya dije en el anterior articulo, al entrar al router por telnet o
por consola nos aparece el siguiente mensaje:
User Access Verificafion
Password: *******
router>
y entramos al router en modo no-privilegiado lo que nos permite monitorizar
el trafico pero sin poder modificar la configuracion. Para acceder al modo
privilegiado:
router> enable
Password: *******
router#
Ya estamos en modo privilegiado, se diferencia por el promt #. IOS no utiliza
logins normalmente, solo passwords.
3. Acceso por Consola
-----------------------
En el fichero de configuracion nos encontramos con las siguientes lineas
line console 0 /* line con 0, tambien vale */
login
password hola
exec-timeout 1 30
Cada tipo de acceso tiene un numero de lineas asociadas, el acceso consola
tiene solo una line, el 0. Login indica el tipo de autenticacion de usuario,
en este caso ninguno. Password indica la contrase~a en claro. Se puede
encriptar de modo parecido a unix. El comando exec-timeout indica el tiempo
maximo que puede estar activa la conexion, en este caso 1 minuto 30 segundos.
En el ejemplo del pasado articulo teniamos esto:
!
line con 0
exec-timeout 40 0
No se declaraba ninguna contrase~a para acceder por consola y se establece
un timeout de 40 minutos (por defecto el timeout es de 10 minutos)
4. Acceso Telnet
------------------
Cada puerto telnet recibe el nombre de terminal virtual (VTY).
line vty 0 4
login
password prueba
En este ejemplo se configuran 5 puertos virtuales del 0 al 4 y todos
con la misma password "prueba".
Se puede restringir el acceso por telnet definiendo una lista. La listas
se definen con el siguente esquema:
>>> access-list [numero] [permit/deny] IP mascara
Ejemplo:
access-list 12 permit 192.85.55.0 0.0.0.255
line vty 0 4
access-class 12 in
En este caso se permite el acceso a los puertos vty solo desde las maquinas
de la red 192.85.55.0, las listas se explicaran mas adelante cuando hablemos
de firewalls. Se pueden definir listas del 0 al 99 y para activarlas se
utliza la orden: access-class [numero] in
Se puede acceder via telnet a diferentes puertos TCP del router. En las
versiones de IOS anteriores a 9.1(11.5), 9.21(3.2) y 10.0 (¿? cuantas
versiones, menudo caos que llevan los de cisco!) los puertos son los
siguientes:
7: Echo
9: Discard
23: Telnet
79: Finger
1993: SNMP sobre TCP
del 2001 al 2999: Telnet al puerto auxiliar (AUX), terminal (TTY) y terminal
virtual (VTY)
del 3001 al 3999: Telnet a los puertos rotary
del 4001 al 4999: Telnet modo stream, mirror del rango 2000
del 5001 al 5999: Telnet modo stream, mirror del rango 3000
del 6001 al 6999: Telnet modo binario, mirror del rango 2000
del 7001 al 7999: Telnet modo binario, mirror del rango 3000
del 8001 al 8999: Xremote (solo servidores de comunicacion)
del 9001 al 9999: Reversal Xremote (solo servidores de comunicacion)
del 10001 al 19999: Reverse Xremote rotary
Los puertos rotary (3000, 5000, 7000 y 10000) deben ser configurados
explicitamente con el comando rotary. De lo contrario no funcionaran. Por
cierto no me preguntes que significa lo de rotary ni lo de Xremote porque
yo tampoco lo se
[Daemon: Xremote, que empieza por X y es distribuido?. X Windows!.
Xremote es un protocolo para "mejorar" el rendimiento de XWindows
sobre enlaces en serie.
En cuanto a rotary pues primero lo traducimos a castellano y eso
ayuda :-DD, aluego descubrimos que se trata de agrupar lineas en
"rotary groups" y mas tarde descubrimos que el grupo rotary 1 esta
en el puerto 3001, el rotary 2 en el 3002 y asi. Normalmente se hace para
distribuir lineas en DDR (Dial on Demand Routing), para "reservarse" lineas
(netadmin rules!) o..moveos vosotros que seguro que aprendeis mas]
En las versiones 9.1(11.5), 9.21(3.2), 10.0 y posteriores se arreglo el
caos de puertos abiertos quedando definitivamente asi:
7: Echo
9: Discard
23: Telnet
79: Finger
1993: SNMP sobre TCP
2001: Puerto auxiliar (AUX)
4001: Puerto auxiliar (AUX) modo stream
6001: Puerto auxiliar (AUX) modo binario
Se puede cerrar el puerto finger con el comando "no service finger", para
cerrar los puertos 7 y 9 se puede utilizar el comando "no service
tcp-small-servers" y, para los puertos telnet, aux y SNMP se pueden
definir listas de acceso.
5. Password modo enable
-------------------------
router# enable secret pepe
Con este comando creamos una contrase~a para el modo enable, igual para
cualquier tipo de acceso (consola, telnet, ...). Recordad que para que
el cambio sea permanente es necesario copiarlo en el startup-config.
Esta contrase~a se puede encriptar con el comando enable secret.
router# configure terminal
router(config)# enable secret pepe
router(config)# exit
router# show running-config
Bulding configuration ...
Current configuration:
!
version 11.1
! bla, bla, bla ...
enable secret 5 $1$h7dd$VTNs4.BAfQMUU0Lrvmw6570
!
! bla, bla, bla ...
Entramos en modo configure y creamos la password enable, en este caso
"pepe" con el comando enable secret. Salimos y abrimos el fichero de
configuracion donde podemos ver la password encriptada.
En el manual se pide que se realicen posteriormente los pasos siguientes,
no se que sentido tienen pero lo pongo por si acaso:
router# configure terminal
router(config)# enable secret 5 $1$h7dd$VTNs4.BAfQMUU0Lrvmw6570
router(config)# exit
La clave se encripta con el algoritmo MD5, un algoritmo muy fuerte.
Finalmente se copia al startup para que los cambios sean permanentes.
router# copy running-config startup-config
6. Acceso SNMP
----------------
El comando para configurar este acceso es el siguiene,
snmp-server community [RO|RW] [lista de acceso]
por ejemplo, para permitir acceso SNMP no privilegiado
snmp-server community public RO 1
Si queremos dar acceso solo desde las maquinas 1.1.1.1 y 2.2.2.2;
access-list 1 permit 1.1.1.1
access-list 1 permit 2.2.2.2
snmp-server community public RO 1
Para dar acceso al modo privilegiado con el string private:
snmp-server community private RW 1
El acceso privilegiado permite modificar la configuracion, en cambio, el no
privilegiado solo permite monitorizar el trafico.
7. Acceso TFTP
----------------
Se puede modificar el archivo de configuracion via TFTP, este metodo es
mas comodo pero tambien tiene sus peligros ya que puede ser utilizado por
otras personas para acceder al router sin autorizacion (y no miro a nadie )
enviando un fichero de configuracion modificado.
Ademas del TFTP se pude utilizar el Maintenance Operations Protocol (MOP),
LAT o X.25.
8. FIREWALL
-------------
Un router Cisco pueden funcionar como un firewall a nivel de red permitiendo
o denegando el acceso a IPs determinadas. Esto se consigue con las listas
de acceso:
access-list nn [permit/deny] ip IP-in Mask-in IP-out Mask-out
Para permitir el acceso a las maquinas 147.22.x.x
acces-list 101 permit ip 147.22.0.0 0.0.255.255 0.0.0.0 255.255.255.255
Se pueden filtrar por otros protocolos [tcp, udp y icmp] en lugar de por ip.
Por ejemplo, para denegar el acceso a conexiones udp a las maquinas de la
red 156.23.22.0
access-list 101 deny udp 156.23.22.0 0.0.0.255 0.0.0.0 255.255.255.255
Una opcion imprescindible en toda lista de acceso que se precie es impedir
los ataques por spoofing, es muy sencillo solo tenemos que restringir los
accesos con una ip interior que vienen del exterior, suponiendo que nuestra
red es la 123.2.0.0 solo tenemos que hacer
access-list 102 deny ip 123.2.0.0 0.0.255.255 0.0.0.0 255.255.255.255
Tambien se puede filtrar por puertos, especificando un puerto concreto (eq x)
o un rango (gt x, mas grande que x por ejemplo)
Para permitir trafico Domain Name System (DNS) y Network Time Protocol (NTP)
usamos esto:
access-list 101 permit ip 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255 eq 53
access-list 101 permit ip 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255 eq 123
Este ejemplo deniega el acceso al Network File System (NFS) usando el puerto
UDP,
access-list 101 deny udp 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255 eq 2049
...
(y podria estar escribiendo ejemplos hasta cansarme, que es precisamente
lo que acaba de pasarme ... )
Despues de definir la lista de acceso es necesario guardala en la memoria no
volatil (NVRAM) y aplicarla a un interface concreto, por ejemplo
interface ethernet 0
ip access-group 101
9. Autenticacion Local
------------------------
Se pueden declarar logins y password personalizados, el comando es el
siguiente
username juan password 7 hola123
username pedro password 7 aaafr3
Con la opcion 7 el password se guarda cifrado, con 0 el password se guardaria
en claro. Al entrar al router tendriamos:
User Access Verification
Username: juan
Password: hola123
router>
La encriptacion utilizada es muy pobre y puede romperse facilmente, el motivo
es que en algunos casos, como en el protocolo CHAP, el propio router necesita
la clave en claro. El objetivo de esta esta encriptacion es impedir que
alguien obtenga la clave a simple vista. Se trata pues de una debilidad
asumida por la propia compa~ia. En el caso de la clave enable se utiliza el
algoritmo "5" que que como ya dijimos es el MD5 y es indescifrable. A
continuacion muestro dos programas, uno en C y otro en Perl que descifran el
algoritmo "7".
<++> set_020/cisco/ciscocrack.c
/* This code is originally from a Bugtraq post by
Jared Mauch . I patched it with an improved
translation table by Janos Zsako
-Fyodor (fyodor@dhp.com) */
#include
#include
char xlat[] = {
0x64, 0x73, 0x66, 0x64, 0x3b, 0x6b, 0x66, 0x6f,
0x41, 0x2c, 0x2e, 0x69, 0x79, 0x65, 0x77, 0x72,
0x6b, 0x6c, 0x64, 0x4a, 0x4b, 0x44, 0x48, 0x53 , 0x55, 0x42
};
char pw_str1[] = " password 7 ";
char pw_str2[] = "enable password 7 ";
char pw_str3[] = "ip ftp password 7 ";
char pw_str4[] = " ip ospf message-digest-key 1 md5 7 ";
char *pname;
cdecrypt(enc_pw, dec_pw)
char *enc_pw;
char *dec_pw;
{
unsigned int seed, i, val = 0;
if(strlen(enc_pw) & 1)
return(-1);
seed = (enc_pw[0] - '0') * 10 + enc_pw[1] - '0';
if (seed > 15 || !isdigit(enc_pw[0]) || !isdigit(enc_pw[1]))
return(-1);
for (i = 2 ; i <= strlen(enc_pw); i++) {
if(i !=2 && !(i & 1)) {
dec_pw[i / 2 - 2] = val ^ xlat[seed++];
val = 0;
}
val *= 16;
if(isdigit(enc_pw[i] = toupper(enc_pw[i]))) {
val += enc_pw[i] - '0';
continue;
}
if(enc_pw[i] >= 'A' && enc_pw[i] <= 'F') {
val += enc_pw[i] - 'A' + 10;
continue;
}
if(strlen(enc_pw) != i)
return(-1);
}
dec_pw[++i / 2] = 0;
return(0);
}
usage()
{
fprintf(stdout, "Usage: %s -p n", pname);
fprintf(stdout, " %s
|
Hoy habia 16 visitantes¡Aqui en esta página!
|
|
 |
|
|
|