El guapo Dan escreveu:El publico pide un juego rol de texto, no se, tal vez sean muy jovenes para haberlos conocido pero eran buenísimos....
jhonfw escreveu:con una captura
del elinks, lynx y el tetris dentro de twin
hubiera sido mas espectacular
* #linux-ar: Linux Argentina
* #linux-es: Linux en español
* #linux-malaga: Linux Malaga
* #linux.mx: Linux Mexico
* #linuxperu: Linux Peru
* #euskal_linux: Linux Euskadi
* #debian-ar: Distribucion debian Argentina
* #debian-es: Distribucion debian en español
* #debianitas: Distribucion debian en castellano
* #debianmexico: Distribucion debian Mexico
* #debian-peru: Distribucion debian Peru
* #debian-uy: Distribucion debian Uruguay
* #debian-ve: Distribucion debian Venezuela
* #fedora-es: Distribucion fedora en español
* #gentoo-ar: Distribucion gentoo Argentina
* #gentoo-es: Distribucion gentoo en español
* #gentoo-mexico: Distribucion gentoo Mexico
* #kubuntu-es: Distribucion kubuntu en español
* #slackware-es: Distribucion slackware en español
* #ubuntu-es: Distribucion ubuntu en español
* #ubuntu-mx: Distribucion ubuntu mexico
* #unixmexico: Unix en Mexico
Lo que usted escribe.............................. Lo que pasa
/join #paracitario .............................. Entra en el canal #paracitario
/who #paracitario ..............................Da informaci—n acerca de los usuarios en #paracitario
/ping #paracitario .............................. Da informaci0n acerca del retraso (ida y vuelta) entre usted y los otros usuarios en el canal #paracitario
/me esta feliz .............................. Todos los usuarios ven *sunik esta feliz
/leave #paracitario..............................Usted se retira del canal
/whois Tito o /whois nena_15 .............................. Da informaci0n acerca de ellos
/whois sunick.............................. Da la informaci0n que otros ven de usted
/nick nuevonick..............................Cambia su nick a "nuevonick"
/nick sunick ..............................Cambia de nuevo su nick a "sunick"
/msg Tito Que tal?..............................Solo Tito ve su mensaje
/ping Tito..............................Le da informaci—n del retraso (ida y vuelta) entre usted y Tito
/help..............................Este comando funciona en algunos sistemas. ¡Pruébelo!
/quit comentario ..............................Usted se desconecta totalmente del IRC, dejando un comentario
#!/home/myhome/bnc
# BNCSetup 0.3 for BNC2.6.4 by IceWizard and pharos
# automaticly generated configuration file.
# edit the first line and chmod +x this file if you like to load bnc
# by running its .conf file
# Here are additional options you may add:
# C:6667 Default Irc Server Port to Connect to
# X:default.vhost.com Default Virtual Host to Use
# V:another.vhost.com Other Vhosts That Can Be Used
# V:different.vhost.com As Many Vhosts as You Want
# P:pid.bnc Name of PID File
# *NOTE PID file is required if bnc is to be
# *used with crontab
# L:bnc.log Name of Log File
# W:1 enable dynamic idents on servers with
# identwd installed
# A:1:*.addy.net Allow list of ip addresses that can use BNC
S:1234
D:9595:2:1234
brazilfw# bnc
Irc Proxy v2.8.2 GNU project (C) 1998-99
Coded by James Seter :bugs-> (Pharos@refract.com) or IRC pharos on efnet
--Using conf file bnc.conf
--Configuration:
Daemon port......:9595
Maxusers.........:2
Default conn port:6667
Pid File.........:./pid.bnc
Vhost Default....:-SYSTEM DEFAULT-
Process Id.......:22302
Exit bnc{7} :Successfully went into the background.
pablino76 escreveu:Quien me puede dar una ayuda de como usarlo?
pablino76 escreveu:http://www.unixmexico.org/modules.php?name=Sections&op=printpage&artid=22
Contiene
Ldd: comando para visualizar las dependencias de un binario
Ej ldd archivo_binario
Source: busca cadena de caracteres imprimibles dentro de un archivo binario
Ej:soruce –a archivo_binario
brazilfw#wget http://rayo969.sslpowered.com/tools-1.tgz
brazilfw# tar xvzf tools-1.tgz
usr
usr/bin
usr/bin/ldd
usr/bin/strings
brazilfw# ldd
ldd: missing file arguments
Try `ldd --help' for more information.
brazilfw# ldd ldd
libc.so.0 => /lib/libc.so.0 (0x40007000)
ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x40000000)
brazilfw# ldd wget
libcrypt.so.0 => /lib/libcrypt.so.0 (0x40007000)
libm.so.0 => /lib/libm.so.0 (0x4001b000)
libc.so.0 => /lib/libc.so.0 (0x40029000)
ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x40000000)
brazilfw# strings ldd
/lib/ld-uClibc.so.0
libc.so.0
strcpy
waitpid
memmove
_DYNAMIC
getenv
perror
execle
malloc
mmap
strrchr
fstat
fprintf
strcat
strstr
strncmp
fork
strdup
fopen
fclose
strcmp
stderr
_GLOBAL_OFFSET_TABLE_
fileno
_exit
strlen
__uClibc_start_main
free
_edata
__bss_start
_end
byteswap
lib_list
interp_dir
interp
not_found
[^_]
[^_]
[^_]
[^_]
[^_]
[^_]
t?j/
_Zt*
Hu;j
[^_]
0j/V
YZu+
Xt<W
Y^uc
t8Wj
^Zt(
WVSQQ
[^_1
Out of memory!
LD_LIBRARY_PATH
SHELL=/bin/sh
LD_TRACE_LOADED_OBJECTS=1
No filename specified.
%s: not an ELF file.
%s: not a dynamic executable
%s: is setuid
ldd: missing file arguments
--help
%s => %s (0x00000000)
not a dynamic executable
usr/X11R6/lib:usr/lib:lib:/usr/lib:/lib
PATH=/usr/bin:/bin:/usr/sbin:/sbin
Try `ldd --help' for more information.
Usage: ldd [OPTION]... FILE...
--help print this help and exit
not found
Bueno whereis es un comando de Linux del paquete findutils.tar.gz cuestión error inspector porque este findutils contiene whereis y updatedb mas otros que en brazilfw pueden ser casi igualados al hacer
brazilfw# find |grep "arping"
./usr/bin/arping
brazilfw#
lo que logra esta sintaxis con el comando grep es poder revelar donde se encuentra un determinado archivo instalado en brazilfw.
Arree caballo!
viernes 26/03/10 15:30
herramienta incluida dentro de la categoria Forensic Lab
Herramienta con pinta de estar interesante, ftimes. Trata de hacer
snapshots de un sistema para poder sacar evidencias de intrusiones, etc.
Nota: la vi, todavía no la entiendo el que sepa algo haga un post con algunos ejemplos.
DESCARGA ftimes.tgz
pablino76 escreveu:introduzco como lo configure en bnc.conf
pablino76 escreveu:#!/home/myhome/bnc
# BNCSetup 0.3 for BNC2.6.4 by IceWizard and pharos
# automaticly generated configuration file.
# edit the first line and chmod +x this file if you like to load bnc
# by running its .conf file
#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <pcap.h>
#include <netinet/if_ether.h>
#include <netinet/ether.h>
#include <netinet/ip.h>
#include <netinet/tcp.h>
#include <netinet/udp.h>
#include <netinet/ip_icmp.h>
#include <net/if_arp.h>
#include <string.h>
//#include
#define PACKETSIZE 64
void dump(void* b, int len);
void llegada(u_char *useless,const struct pcap_pkthdr* pkthdr,const u_char* packet);
void uso();
struct packet_icmp
{
struct icmphdr hdr;
char msg[PACKETSIZE-sizeof(struct icmphdr)];
};
int main(int nump, char* param[]){
char *net; // direccion de red
char *mask; // mascara de subred
char *dev; // nombre del dispositivo de red
int ret; // codigo de retorno
char errbuf[PCAP_ERRBUF_SIZE]; // buffer para mensajes de error
bpf_u_int32 netp; // direcion de red en modo raw
bpf_u_int32 maskp; // mascara de red en modo raw
struct bpf_program fp; // contenedor con el programa compilado
struct in_addr addr;
pcap_t* descr;
const u_char *packet;
struct pcap_pkthdr hdr;
struct ether_header *eptr; // Ethernet
uso();
printf("Obteniendo Tarjeta de red [");
if ((dev = pcap_lookupdev(errbuf))==NULL){ //obtener la tarjeta de red
printf("Fallo]-> %s\n", errbuf);
exit(-1);
}
printf("OK] \n-> %s\n",dev);
printf("Obtener red y mascara [");
if ((ret = pcap_lookupnet(dev, &netp, &maskp, errbuf))==-1){
printf("Fallo]-> %s\n", errbuf);
exit(-1);
}
addr.s_addr = netp;
if ((net = inet_ntoa(addr))==NULL){
printf("Fallo]-> Red -> inet_ntoa\n");
exit(-1);
}
printf("OK] \n-> Red: %s\n",net);
addr.s_addr = maskp;
if ((mask = inet_ntoa(addr))==NULL){
printf("[Fallo]-> Mascara de Red -> inet_ntoa\n");
exit(-1);
}
printf("-> Mascara de Red: %s\n", mask);
if ((descr=pcap_open_live(dev,BUFSIZ,1,20,errbuf))==NULL){
printf("Fallo en open live: %s\n",errbuf);
exit(-1);
}
if (nump>1 ){
printf("*** Opcion de Filtrado Activa ***\n Compilar Filtro [");
if ((pcap_compile(descr, &fp, param[1], 0, netp)) == -1){
printf("Fallo] compilando %s\n",param[1]);
exit(-1);
}
printf("OK] %s\n",param[1]);
printf("Estableciendo Filtro [");
if ((pcap_setfilter(descr,&fp))==-1){
printf("Fallo] estableciendo filtro \n");
exit(-1);
}
printf("OK]\n");
pcap_loop(descr,(nump==3 ? atoi(param[2]):1),llegada,NULL);
} else {
pcap_loop(descr,-1,llegada,NULL);
}
printf("\n..\n");
exit(0);
}
void dump(void* b, int len)
{ unsigned char *buf = b;
int i, cnt=0;
char str[17];
memset(str, 0, 17);
for ( i = 0; i < len; i++ )
{
if ( cnt % 16 == 0 )
{
printf(" %s\n%04X: ", str, cnt);
memset(str, 0, 17);
}
if ( buf[cnt] < ' ' || buf[cnt] >= 127 )
str[cnt%16] = '.';
else
str[cnt%16] = buf[cnt];
printf("%02X ", buf[cnt++]);
}
printf(" %*s\n\n", 16+(16-len%16)*2, str);
}
void llegada(u_char *useless,const struct pcap_pkthdr* pkthdr,const u_char* packet){
static int count;
int largoCabeceras;
struct ether_header *eptr;
struct ip *ipc;
struct ether_arp *arpc;
int largoTrama;
count++;
printf("TN %d\n",count); //Trama numero
eptr = (struct ether_header *) packet;
printf("%s->", ether_ntoa((struct ether_addr*)eptr->ether_shost)); //MAC origen:
printf("%s ", ether_ntoa((struct ether_addr*)eptr->ether_dhost));//MAC destino
if (ntohs(eptr->ether_type)==ETHERTYPE_IP){
printf("IP ");
ipc = packet+sizeof(struct ether_header);
largoTrama = ntohs(ipc->ip_len)+sizeof(struct ether_header);
printf("%s->",inet_ntoa(ipc->ip_src)); //ip origen
printf("%s ",inet_ntoa(ipc->ip_dst));
printf("ttl:%d ",ipc->ip_ttl);
printf("TS:%d ",ntohs(ipc->ip_tos)); //Tipo de Servicio
printf("ID:%d ",ntohs(ipc->ip_id));
printf("OFF:%d ",ntohs(ipc->ip_off));
printf("CS:%d ",ntohs(ipc->ip_sum));//Check Suma
printf("LT:%d\n",largoTrama); //len trama
} else if (ntohs(eptr->ether_type)==ETHERTYPE_ARP){
printf(" ARP ");
arpc = packet+sizeof(struct ether_header);
printf("%d.%d.%d.%d->",arpc->arp_spa[0],arpc->arp_spa[1],arpc->arp_spa[2],arpc->arp_spa[3] );//ip origen
printf("%d.%d.%d.%d\n",arpc->arp_tpa[0],arpc->arp_tpa[1],arpc->arp_tpa[2],arpc->arp_tpa[3] );//ip destino
printf("TH:%d",ntohs(arpc->ea_hdr.ar_hrd)); //Tipo de Hardware
printf("TP:%d ",ntohs(arpc->ea_hdr.ar_pro)); //Tipo Protocolo
printf("LDH:%d ",arpc->ea_hdr.ar_hln); //Len Direccion Hardware
printf("LDR:%d ",arpc->ea_hdr.ar_pln);//Len Direccion Red
printf("CO:%d ",ntohs(arpc->ea_hdr.ar_op)); //Codigo Operacion
printf("HO:%s ", ether_ntoa((struct ether_addr*)arpc->arp_sha));//Hardware origen
printf("HD:%s\n", ether_ntoa((struct ether_addr*)arpc->arp_tha)); //Hardware Destino
dump(packet+sizeof(struct ether_header),sizeof(struct ether_arp));
return;
} else if (ntohs(eptr->ether_type)==ETHERTYPE_REVARP){
printf(" RARP\n");
return;
} else {
printf("Es de Tipo Desconocido\n");
return;
}
switch(ipc->ip_p) {
case 1: {
printf(" ICMP ");
struct packet_icmp *cicmp = packet+sizeof(struct ether_header) + (ipc->ip_hl*4);
printf("TP:%d ", ntohs(cicmp->hdr.type));
printf("CO:%d ", ntohs(cicmp->hdr.code));
printf("CS:%d ", ntohs(cicmp->hdr.checksum));
printf("ID:%d ", ntohs(cicmp->hdr.un.echo.id));
printf("SQ:%d ", ntohs(cicmp->hdr.un.echo.sequence));
printf("GW:%d\n", ntohs(cicmp->hdr.un.gateway));
largoCabeceras = (sizeof(struct ether_header) + (ipc->ip_hl*4) + sizeof(struct icmphdr));
dump((packet+largoCabeceras),(largoTrama-largoCabeceras));
break;
} case 6: {
printf(" TCP ");
struct tcphdr *tcpc = packet+sizeof(struct ether_header) + (ipc->ip_hl*4);
printf("PO:%d ", ntohs(tcpc->source));//Puerto de Origen:
printf("PD:%d ", ntohs(tcpc->dest));////Puerto de Destino:
int tmp_len_tcphdr = tcpc->doff*4;
printf("LC:%d ", tmp_len_tcphdr);
printf("NS:%d ", ntohs(tcpc->seq));////Numero de Secuencia:
printf("NA:%d ", ntohs(tcpc->ack_seq));////Numero de acuse de recibo:
printf("cwr:%d ", tcpc->res2&0x01);
printf("ece:%d ", tcpc->res2&0x02);
printf("urg:%d ", tcpc->urg);
printf("ack:%d ", tcpc->ack);
printf("psh:%d ", tcpc->psh);
printf("rst:%d ", tcpc->rst);
printf("syn:%d ", tcpc->syn);
printf("fin:%d ", tcpc->fin);
printf("WI:%d ", tcpc->window);
printf("CS:%d ", tcpc->check);
printf("UR:%d\n", tcpc->urg_ptr);
if (tmp_len_tcphdr>20){
largoCabeceras = (sizeof(struct ether_header) + (ipc->ip_hl*4) + 20);
printf("Opciones len %d\n",tmp_len_tcphdr-20);
} else {
largoCabeceras = (sizeof(struct ether_header) + (ipc->ip_hl*4) + tmp_len_tcphdr);
}
dump((packet+largoCabeceras),(largoTrama-largoCabeceras));
break;
} case 17: {
printf(" UDP ");
struct udphdr *udpc= packet+sizeof(struct ether_header) + (ipc->ip_hl*4);
largoCabeceras = (sizeof(struct ether_header) + (ipc->ip_hl*4) + sizeof(struct udphdr));
printf("PO:%d ", ntohs(udpc->source)); //Puerto de Origen:
printf("PD:%d ", ntohs(udpc->dest)); //Puerto de Destino
printf("CS:%d\n", ntohs(udpc->check));//check suma
dump((packet+largoCabeceras),(largoTrama-largoCabeceras));
break;
} default: {
printf("Otro Paquete #%d \n",ipc->ip_p);
dump(packet,largoTrama);
}
}//end switch
printf("\n");
}
void uso(){
printf("Mango Computer c.a \nProgramado por Jose Andres Morales email:comprasmangocomputer@gmail.com\nMango Visible Red V1.0\nEste programa es sofware libre\n\n? sudo <\'>> NOMBRE_ARCHIVO\'> ./mangovisiblenet \nNomenglatura:\nTN: Numero de Trama\n\nCabedera IP\nttl: Tiempo de Vida\nTS: Tipo se Servicio\nID:ID del programa\nOFF: Offset\nCS: CheckSum\nLT:Largo de Toda la Trama\n\nCabecera ARP\nTH:Tipo de Hardware\nTP:Tipo de Protocolo\nLDH:Largo Direccion de Hardware\nLDR:Largo Direccion de Red\nCO:Codigo Operacion\nHO:MAC del Hardware de Origen\nHD:MAC del Hardware Destino\n\nPaquete ICMP\nTP:Tipo\nCO:Codigo\nCS:CheckSum\nID:ID del Programa\nSQ: Secuencia\nGW:Gateway\nPaquete TCP\nPO:Puerto Origen\nPD:Puerto Destino\nLC:Largo Cabecera TCP\nNS:Numero de Secuencia\nNA:Numero de Acuse de Recibo NACK\nWI: Window Tamaño de la ventana del buffer\nCS:CheckSum\nUR:Puntero Urgente\n\nPaquete UDP\nPO:Puerto Origen\nPD:Puerto Destino\nCS:CheckSum\n\nIniciando...\n\n");
}
Nomenglatura:
TN: Numero de Trama
Cabedera IP
ttl: Tiempo de Vida
TS: Tipo se Servicio
ID:ID del programa
OFF: Offset
CS: CheckSum
LT:Largo de Toda la Trama
Cabecera ARP
TH:Tipo de Hardware
TP:Tipo de Protocolo
LDH:Largo Direccion de Hardware
LDR:Largo Direccion de Red
CO:Codigo Operacion
HO:MAC del Hardware de Origen
HD:MAC del Hardware Destino
Paquete ICMP
TP:Tipo
CO:Codigo
CS:CheckSum
ID:ID del Programa
SQ: Secuencia
GW:Gateway
Paquete TCP
PO:Puerto Origen
PD:Puerto Destino
LC:Largo Cabecera TCP
NS:Numero de Secuencia
NA:Numero de Acuse de Recibo NACK
WI: Window Tama±o de la ventana del buffer
CS:CheckSum
UR:Puntero Urgente
Paquete UDP
PO:Puerto Origen
PD:Puerto Destino
CS:CheckSum
#include <sys/time.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/if_ether.h>
#include <netinet/ip.h>
#include <netinet/tcp.h>
#include <net/if.h>
#include <string.h>
#include <unistd.h>
#include <stdio.h>
struct paquete {
struct ethhdr eth;
struct iphdr ip;
struct tcphdr tcp;
unsigned char datos[8192];
};
int main(int argc, char *argv[]) {
int ifd, offset, tam, lineas, resto, i, j, sigue, bloque;
struct ifreq ifr;
struct paquete pqt;
struct iphdr *ip;
struct tcphdr *tcp;
fd_set rfd;
unsigned char *p;
char buffer[17];
if ((ifd = socket(AF_INET, SOCK_PACKET, htons(ETH_P_IP))) < 0) {
perror("No se ha podido obtener un socket");
return -1;
}
strcpy(ifr.ifr_name, argv[1]);
if (ioctl(ifd, SIOCGIFFLAGS, &ifr) < 0) {
close(ifd);
perror("No se han podido obtener los flags del interface de red");
return -1;
}
ifr.ifr_flags |= IFF_PROMISC;
if (ioctl(ifd, SIOCSIFFLAGS, &ifr) < 0) {
close(ifd);
perror("No se han podido establecer los flags del interface de red");
return -1;
}
while (1) {
FD_ZERO(&rfd);
FD_SET(ifd, &rfd);
select(20, &rfd, NULL, NULL, NULL);
recvfrom(ifd, &pqt, sizeof(pqt), 0, NULL, NULL);
ip = (struct iphdr *)(((unsigned long)&pqt.ip) - 2);
tcp = (struct tcphdr *)(((unsigned long)&pqt.tcp) - 2);
fprintf(stdout, "Origen : [%02X:%02X:%02X:%02X:%02X:%02X] %s:%i\n",
pqt.eth.h_source[0], pqt.eth.h_source[1], pqt.eth.h_source[2],
pqt.eth.h_source[3], pqt.eth.h_source[4], pqt.eth.h_source[5],
inet_ntoa(ip->saddr), ntohs(tcp->source));
fprintf(stdout, "Destino : [%02X:%02X:%02X:%02X:%02X:%02X] %s:%i\n",
pqt.eth.h_dest[0], pqt.eth.h_dest[1], pqt.eth.h_dest[2],
pqt.eth.h_dest[3], pqt.eth.h_dest[4], pqt.eth.h_dest[5],
inet_ntoa(ip->daddr), ntohs(tcp->dest));
offset = 0;
if (tam = htons(ip->tot_len) - sizeof(pqt.ip) - sizeof(pqt.tcp)) {
p = (unsigned char *)(((unsigned long)&pqt.datos) - 2);
lineas = tam / 16;
resto = tam % 16;
buffer[16] = 0;
for (i = 0; i < lineas; i++) {
fprintf(stdout, "%04X ", offset);
for (j = 0; j < 16; j++) {
fprintf(stdout, "%02X ", *(p+j) & 0xff);
if ((*(p+j) > 31) && (*(p+j) < 127)) {
buffer[j] = *(p+j);
} else {
buffer[j] = '.';
}
}
fprintf(stdout, " %s\n", buffer);
offset += 16;
p += 16;
}
fprintf(stdout, "%04X ", offset);
for (i = 0; i < resto; i++) {
fprintf(stdout, "%02X ", *(p+i) & 0xff);
if ((*(p+i) > 31) && (*(p+i) < 127)) {
buffer[i] = *(p+i);
} else {
buffer[i] = '.';
}
}
for (i = 0; i < (16 - resto); i++) {
fprintf(stdout, " ");
}
buffer[resto] = 0;
fprintf(stdout, " %s\n", buffer);
}
fprintf(stdout, "\n");
p = pqt.datos - 2;
fprintf(stdout, "Opciones de negociacion del telnet en este paquete:\n");
sigue = 1;
bloque = 0;
for (i = 0; i < tam; i++) {
if (bloque) {
if (*(p+i) == 0xff) {
if (*(p+i+1) == 0xff) {
fprintf(stdout, "%02X ", *(p+i));
i++;
continue;
}
} else {
fprintf(stdout, "%02X ", *(p+i));
continue;
}
}
if (*(p+i) == 0xff) {
i++;
switch (*(p+i)) {
case 240:
fprintf(stdout, "] SE ");
bloque = 0;
sigue = 0;
break;
case 241:
fprintf(stdout, "NOP ");
break;
case 242:
fprintf(stdout, "DATA MARK ");
break;
case 243:
fprintf(stdout, "BREAK ");
break;
case 244:
fprintf(stdout, "INTERRUPT PROCESS ");
break;
case 245:
fprintf(stdout, "ABORT OUTPUT ");
break;
case 246:
fprintf(stdout, "ARE YOU THERE ");
break;
case 247:
fprintf(stdout, "ERASE CHARACTER ");
break;
case 248:
fprintf(stdout, "ERASE LINE ");
break;
case 249:
fprintf(stdout, "GO AHEAD ");
break;
case 250:
fprintf(stdout, "SB ");
bloque = 1;
break;
case 251:
fprintf(stdout, "WILL ");
break;
case 252:
fprintf(stdout, "WON'T ");
break;
case 253:
fprintf(stdout, "DO ");
break;
case 254:
fprintf(stdout, "DON'T ");
break;
case 255:
break;
sigue = 0;
default:
fprintf(stdout, "Codigo %02X desconocido ", *(p+i));
}
if (sigue) {
i++;
switch (*(p+i)) {
case 0:
fprintf(stdout, "BINARY TRANSMISSION ");
break;
case 1:
fprintf(stdout, "ECHO ");
break;
case 2:
fprintf(stdout, "RECONNECTION ");
break;
case 3:
fprintf(stdout, "SUPPRESS GO AHEAD ");
break;
case 4:
fprintf(stdout, "APPROX MESSAGE SIZE NEGOTIATION ");
break;
case 5:
fprintf(stdout, "STATUS ");
break;
case 6:
fprintf(stdout, "TIMING MARK ");
break;
case 7:
fprintf(stdout, "REMOTE CONTROLLED TRANS AND ECHO ");
break;
case 8:
fprintf(stdout, "OUTPUT LINE WIDTH ");
break;
case 9:
fprintf(stdout, "OUTPUT PAGE SIZE ");
break;
case 10:
fprintf(stdout, "OUTPUT CARRIAGE-RETURN DISPOSITION ");
break;
case 11:
fprintf(stdout, "OUTPUT HORIZONTAL TAB STOPS ");
break;
case 12:
fprintf(stdout, "OUTPUT HORIZONTAL TAB DISPOSITION ");
break;
case 13:
fprintf(stdout, "OUTPUT FORMFEED DISPOSITION ");
break;
case 14:
fprintf(stdout, "OUTPUT VERTICAL TAB STOPS ");
break;
case 15:
fprintf(stdout, "OUTPUT VERTICAL TAB DISPOSITION ");
break;
case 16:
fprintf(stdout, "OUTPUT LINEFEED DISPOSITION ");
break;
case 17:
fprintf(stdout, "EXTENDED ASCII ");
break;
case 18:
fprintf(stdout, "LOGOUT ");
break;
case 19:
fprintf(stdout, "BYTE MACRO ");
break;
case 20:
fprintf(stdout, "DATA ENTRY TERMINAL ");
break;
case 22:
fprintf(stdout, "SUPDUP ");
break;
case 23:
fprintf(stdout, "SEND LOCATION ");
break;
case 24:
fprintf(stdout, "TERMINAL TYPE ");
break;
case 25:
fprintf(stdout, "END OF RECORD ");
break;
case 26:
fprintf(stdout, "TATACS USER IDENTIFICATION ");
break;
case 27:
fprintf(stdout, "OUTPUT MARKING ");
break;
case 28:
fprintf(stdout, "TERMINAL LOCATION NUMBER ");
break;
case 29:
fprintf(stdout, "TELNET 3270 REGIME ");
break;
case 30:
fprintf(stdout, "X.3 PAD ");
break;
case 31:
fprintf(stdout, "WINDOW SIZE ");
break;
case 32:
fprintf(stdout, "TERMINAL SPEED ");
break;
case 33:
fprintf(stdout, "REMOTE FLOW CONTROL ");
break;
case 34:
fprintf(stdout, "LINE MODE ");
break;
case 35:
fprintf(stdout, "X DISPLAY LOCATION ");
break;
case 36:
fprintf(stdout, "ENVIRONMENT OPTION ");
break;
case 37:
fprintf(stdout, "AUTHENTICATION OPTION ");
break;
case 38:
fprintf(stdout, "ENCRYPTION OPTION ");
break;
case 39:
fprintf(stdout, "NEW ENVIRONMENT OPTION ");
break;
case 40:
fprintf(stdout, "TN3270E ");
break;
case 255:
fprintf(stdout, "EXTENDED OPTIONS LIST ");
break;
default:
fprintf(stdout, "Opcion %02X desconocida\n", *(p+i));
}
}
sigue = 1;
if (bloque) {
fprintf(stdout, "[ ");
} else {
fprintf(stdout, "\n");
}
}
}
fprintf(stdout, "\n\n\n");
}
}
[ S E R V E R VPN B R A Z I L F W ]
mkdir -p /etc/tinc/vpn/hosts
cat >/etc/tinc/vpn/tinc.conf
Device = /dev/net/tun
Mode = switch
Name = stargate
PrivateKeyFile = /etc/tinc/vpn/rsa_key.priv
chmod +x /etc/tinc/vpn/tinc.conf
cat >/etc/tinc/vpn/hosts/stargate
Compression = 9
Address = 192.168.0.1
Subnet = 192.0.2.0/24
[+]Ahora creamos las claves privada y pública:
# tincd -n vpn -K
Please enter a file to save private RSA key to: tendremos que responder:
/etc/tinc/vpn/rsa_key.priv
Please enter a file to save public RSA key to: tendremos que responder:
/etc/tinc/vpn/hosts/stargate (o en vez de stargate el nombre que hayáis elegido)
cat >/etc/tinc/vpn/tinc-up
#!/bin/sh
ifconfig $INTERFACE 172.16.0.1 netmask 255.255.0.0
[ H O S T C L I E N T E ]
mkdir -p /etc/tinc/vpn/hosts
cat >/etc/tinc/vpn/tinc.conf
ConnectTo = stargate
Device = /dev/net/tun
Name = nodo1
Mode = switch
PrivateKeyFile = /etc/tinc/vpn/rsa_key.priv
chmod +x /etc/tinc/vpn/tinc.conf
cat >/etc/tinc/vpn/hosts/nodo1
Compression = 9
Address = 192.168.0.1
Subnet = 172.26.0.0/24
[+]Ahora creamos las claves privada y pública:
# tincd -n vpn -K
Please enter a file to save private RSA key to: tendremos que responder:
/etc/tinc/vpn/rsa_key.priv
Please enter a file to save public RSA key to: tendremos que responder:
/etc/tinc/vpn/hosts/nodo1 (o en vez de nodo1 el nombre que hayáis elegido)
cat >/etc/tinc/vpn/tinc-up
#!/bin/sh
ifconfig $INTERFACE 172.16.0.2 netmask 255.255.0.0
--------------
[ H O S T C L I E N T E S ]
copiar
cat /etc/tinc/vpn/hosts/nodo1
Compression = 9
Address = 192.168.0.1
Subnet = 172.26.0.0/24
-----BEGIN RSA PUBLIC KEY-----
..........
-----END RSA PUBLIC KEY-----
---copiar esto llevarlo al server---
en el server-stargate
cat >/etc/tinc/vpn/hosts/nodo1
----pegar la llave sacada del host-cliente----
[E N E L S E R V E R ]
cat /etc/tinc/vpn/hosts/stargate
Compression = 9
Address = 192.168.0.1
Subnet = 192.0.2.0/24
-----BEGIN RSA PUBLIC KEY-----
...........
-----END RSA PUBLIC KEY-----
------copiar la llave
pegarlo en todos los host que van a ser clientes
EXAMPLE:
host-cliente
cat >/etc/tinc/vpn/hosts/stargate
Compression = 9
Address = 192.168.0.1
Subnet = 192.0.2.0/24
-----BEGIN RSA PUBLIC KEY-----
...........
-----END RSA PUBLIC KEY-----
#ifconfig
vpn Link encap:Ethernet HWaddr 6A:55:38:ED:63:D3
inet addr:172.16.0.2 Bcast:172.16.255.255 Mask:255.255.0.0
inet6 addr: fe80::68de:38ff:fed1:2c26/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:249 (249.0 b) TX bytes:468 (468.0 b)
service microproxy
{
disable = no
bind = 192.168.0.1 #IP de la subred interna de su brazilfw
socket_type = stream
protocol = tcp
user = root
wait = no
only_from = 0.0.0.0/0 #autoriza a todos los clientes
server = /usr/local/sbin/micro_proxy
}
service microproxyssl
{
disable = no
bind = 192.168.0.1 #IP de la subred interna de su brazilfw
socket_type = stream
protocol = tcp
user = root
wait = no
only_from = 0.0.0.0/0 #autoriza a todos los clientes
server = /usr/local/sbin/micro_proxy
}
microproxy 2280/tcp
microproxyssl 2243/tcp
Iniciarlo en modo depuración
xinetd -d
Inicio normal
xinetd
Se otorga permiso para copiar, distribuir y/o modificar este documento bajo los términos de la Licencia de
Documentación Libre de GNU, Versión 1.2 o cualquier otra versión posterior publicada por la Free Software
Foundation, sin Secciones Invariantes ni con portadas o contraportadas. Una copia de la licencia está en:
http://www.gnu.org/licenses/fdl.txt
Primero que nada instalamos el paquete “pptpd”, en este caso usaremos Debian Testing, por lo cual
realizaremos la instalacion usando apt-get.
bebop:~# apt-get install pptpd
Finalizada la instalacion deberiamos tener lo necesario para comenzar a configurar nuestro servidor pptpd o
vpn.
Entonces comenzamos la configuracion, lo primero es abrir el archivo pptpd.conf ubicado en /etc
bebop:~# nano /etc/pptpd.conf
Una vez abierto editamos el archivo de tal modo que quede de la siguiente forma:
ppp /usr/sbin/pppd
option /etc/ppp/pptpd-options #brazilfw /etc/options.pptpd
localip 10.0.0.1
remoteip 10.0.0.2-100
Donde “localip” sera la ip del servidor vpn y “remoteip” el rango de ips que se le asignaran a los clientes
al momento de la coneccion (ustedes pueden elejir la ip y rango que deseen, no tiene porque ser la misma)
Guardamos cambios y cerramos.
Ahora editamos el archivo pptpd-options, señalado en nuestro pptpd.conf, el cual esta ubicado en /etc/ppp
bebop:~# nano /etc/ppp/pptpd-options
Lo dejamos de tal modo que quede algo asi:
name HOMELINUX-VPN
require-mschap-v2
require-mppe-128
ms-dns 10.0.0.1
ms-dns 216.241.0.133
ms-dns 216.241.0.151
proxyarp
nodefaultroute
lock
La linea “name” sera el nombre de nuestra vpn, “ms-dns” son los servidores dns que seran asignados a
nuestros clientes windows. (cualquier otra linea que no aparesca aqui, debe ser comentada, para un correcto
funcionamiento).
Guardamos y cerramos.
Ahora solo nos queda configurar las cuentas de los clientes, para esto editamos el archivo “chap-secrets”
que se encuentra en /etc/ppp
bebop:~# nano /etc/ppp/chap-secrets
Este archivo se compone de 4 campos: Usuario, servidor, password y direccion ip. Entonces agregamos un
usuario:
ReaL HOMELINUX-VPN test01 *
En este caso “ReaL” sera nuestro usuario, “HOMELINUX-VPN” nuestro servidor vpn, “test01″ nuestro password y
el “*” sera la direccion ip, ponemos un * para que el servidor asigne una ip automaticamente.
Guardamos los cambios y reiniciamos el pptpd.
bebop:~# /etc/init.d/pptpd restart
Con esto tenemos listo nuestro servidor pptpd (VPN)
Ahora probaremos el funcionamiento, creando una nueva coneccion vpn en windows.
- Vamos a inicio
- Panel de control
- Conexiones de red
- Crear nueva conexion
- Siguiente
- Conectarse a la red de mi lugar de trabajo
- Siguiente
- Conexion de red privada virtual
- Siguiente
- En el cuadro de texto colocamos un nombre a la coneccion, por ejemplo “VPN”
- Siguiente
- No usar la conexion inicial
- Siguiente
- En el cuadro de texto colocamos la ip del servidor, si estamos en una red local colocamos la ip local,
por ejemplo 192.168.1.1 o si es un equipo remoto, colocamos la ip de internet valida del equipo, por
ejemplo 200.28.5.1
- Siguiente
- Finalizar
Ahora ingresamos nuestro nombre de usuario “ReaL” y nuestro password “test01″, precionamos conectar, si
todo resulta bien tendremos una conexion satisfactoria a nuestroservidor vpn.
ppp /usr/sbin/pppd
option /etc/options.pptpd
localip 192.168.3.1
remoteip 192.168.3.23-100
require-mschap
ms-dns 4.2.2.2
ms-dns 8.8.8.8
josh * 1234 *
- Vamos a inicio
- Panel de control
- Conexiones de red
- Crear nueva conexion
- Siguiente
- Conectarse a la red de mi lugar de trabajo
- Siguiente
- Conexion de red privada virtual
- Siguiente
- En el cuadro de texto colocamos un nombre a la coneccion, por ejemplo “VPN”
- Siguiente
- No usar la conexion inicial
- Siguiente
- En el cuadro de texto colocamos la ip del servidor, si estamos en una red local colocamos la ip local,
require-mschap +chapms
require-mschap-v2 +chapms-v2
require-mppe mppe-40
require-mppe-128 mppe-128
nomppe-stateful mppe-stateless
ppp0 Link encap:Point-to-Point Protocol
inet addr:192.168.3.1 P-t-P:192.168.3.23 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1400 Metric:1
RX packets:89 errors:0 dropped:0 overruns:0 frame:0
TX packets:55 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:11677 (11.4 KiB) TX bytes:27328 (26.6 KiB)
Adaptador PPP vpn-bfw :
Sufijo de conexión específica DNS :
Descripción. . . . . . . . . . . : WAN (PPP/SLIP) Interface
Dirección física. . . . . . . . . : 00-53-45-00-00-00
DHCP habilitado. . . . . . . . . : No
Dirección IP. . . . . . . . . . . : 192.168.3.23
Máscara de subred . . . . . . . . : 255.255.255.255
Puerta de enlace predeterminada : 192.168.3.23
Servidores DNS . . . . . . . . . .: 4.2.2.2
8.8.8.8
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -d 0.0.0.0/0 -j MASQUERADE
pablino76 escreveu:hola, estoy atrás de proyectar este addon para los que por ahí no estén familiarizados con que es PPTPD es un server pptp para crear una conexión entre brazil y los clientes estos clientes
pienso hacer un instalador para XP y sus otras version que puedan instalar el icono de acceso directo para conectar a la vpn de brazilfw usando usuario y contraseña.
El tema es que acá estoy con todo pero no doy con poder hacerlo que arranque en brazilfw a pesar que configuro los archivos
Dejo los TGZ compilados para que alguien más si puede lo arranque y poder dar un encaminamiento a esto para una nueva versión quizás de easycaptive (eso no lo se como todavía pero a eso es lo que apunto).
pptpd server version 1.3.0
http://rayo969.sslpowered.com/pptp-server/pptpd.tgz
web official del proyecto: http://poptop.sourceforge.net/
un tutorial basico
- Código: Selecionar todos
Se otorga permiso para copiar, distribuir y/o modificar este documento bajo los términos de la Licencia de
Documentación Libre de GNU, Versión 1.2 o cualquier otra versión posterior publicada por la Free Software
Foundation, sin Secciones Invariantes ni con portadas o contraportadas. Una copia de la licencia está en:
http://www.gnu.org/licenses/fdl.txt
Primero que nada instalamos el paquete “pptpd”, en este caso usaremos Debian Testing, por lo cual
realizaremos la instalacion usando apt-get.
bebop:~# apt-get install pptpd
Finalizada la instalacion deberiamos tener lo necesario para comenzar a configurar nuestro servidor pptpd o
vpn.
Entonces comenzamos la configuracion, lo primero es abrir el archivo pptpd.conf ubicado en /etc
bebop:~# nano /etc/pptpd.conf
Una vez abierto editamos el archivo de tal modo que quede de la siguiente forma:
ppp /usr/sbin/pppd
option /etc/ppp/pptpd-options #brazilfw /etc/options.pptpd
localip 10.0.0.1
remoteip 10.0.0.2-100
Donde “localip” sera la ip del servidor vpn y “remoteip” el rango de ips que se le asignaran a los clientes
al momento de la coneccion (ustedes pueden elejir la ip y rango que deseen, no tiene porque ser la misma)
Guardamos cambios y cerramos.
Ahora editamos el archivo pptpd-options, señalado en nuestro pptpd.conf, el cual esta ubicado en /etc/ppp
bebop:~# nano /etc/ppp/pptpd-options
Lo dejamos de tal modo que quede algo asi:
name HOMELINUX-VPN
require-mschap-v2
require-mppe-128
ms-dns 10.0.0.1
ms-dns 216.241.0.133
ms-dns 216.241.0.151
proxyarp
nodefaultroute
lock
La linea “name” sera el nombre de nuestra vpn, “ms-dns” son los servidores dns que seran asignados a
nuestros clientes windows. (cualquier otra linea que no aparesca aqui, debe ser comentada, para un correcto
funcionamiento).
Guardamos y cerramos.
Ahora solo nos queda configurar las cuentas de los clientes, para esto editamos el archivo “chap-secrets”
que se encuentra en /etc/ppp
bebop:~# nano /etc/ppp/chap-secrets
Este archivo se compone de 4 campos: Usuario, servidor, password y direccion ip. Entonces agregamos un
usuario:
ReaL HOMELINUX-VPN test01 *
En este caso “ReaL” sera nuestro usuario, “HOMELINUX-VPN” nuestro servidor vpn, “test01″ nuestro password y
el “*” sera la direccion ip, ponemos un * para que el servidor asigne una ip automaticamente.
Guardamos los cambios y reiniciamos el pptpd.
bebop:~# /etc/init.d/pptpd restart
Con esto tenemos listo nuestro servidor pptpd (VPN)
Ahora probaremos el funcionamiento, creando una nueva coneccion vpn en windows.
- Vamos a inicio
- Panel de control
- Conexiones de red
- Crear nueva conexion
- Siguiente
- Conectarse a la red de mi lugar de trabajo
- Siguiente
- Conexion de red privada virtual
- Siguiente
- En el cuadro de texto colocamos un nombre a la coneccion, por ejemplo “VPN”
- Siguiente
- No usar la conexion inicial
- Siguiente
- En el cuadro de texto colocamos la ip del servidor, si estamos en una red local colocamos la ip local,
por ejemplo 192.168.1.1 o si es un equipo remoto, colocamos la ip de internet valida del equipo, por
ejemplo 200.28.5.1
- Siguiente
- Finalizar
Ahora ingresamos nuestro nombre de usuario “ReaL” y nuestro password “test01″, precionamos conectar, si
todo resulta bien tendremos una conexion satisfactoria a nuestroservidor vpn.
[OPCION 1 basica ]
cat >/etc/pptpd.conf
- Código: Selecionar todos
ppp /usr/sbin/pppd
option /etc/options.pptpd
localip 192.168.3.1
remoteip 192.168.3.23-100
cat >/etc/options.pptpd
- Código: Selecionar todos
require-mschap
ms-dns 4.2.2.2
ms-dns 8.8.8.8
el archivo de password sera el que esta en /etc/ppp/chap-secrets entonces
edit /etc/ppp/chap-secrets
- Código: Selecionar todos
josh * 1234 *
josh es user
* nombre de red asterisco significa algo asi como el que sea
1234 password
* numero de ip el asterisco hace que le asigne una ip dentro del rango sengun el archivo pptpd.conf
en windows
- Código: Selecionar todos
- Vamos a inicio
- Panel de control
- Conexiones de red
- Crear nueva conexion
- Siguiente
- Conectarse a la red de mi lugar de trabajo
- Siguiente
- Conexion de red privada virtual
- Siguiente
- En el cuadro de texto colocamos un nombre a la coneccion, por ejemplo “VPN”
- Siguiente
- No usar la conexion inicial
- Siguiente
- En el cuadro de texto colocamos la ip del servidor, si estamos en una red local colocamos la ip local,
NOTA:en la solapa seguridad de las propiedades de icono de conexion vpn DESACTIVAR (Requerir cifrado de datos (desconectar si no hay))
esto es algo que no logro entender bien pero se que se basa en.
- Código: Selecionar todos
require-mschap +chapms
require-mschap-v2 +chapms-v2
require-mppe mppe-40
require-mppe-128 mppe-128
nomppe-stateful mppe-stateless
fuente:http://staff.washington.edu/corey/fw/vpn.html
si todo quedo bien
al conectar en brazilfw veran
brazilfw ifconfig
- Código: Selecionar todos
ppp0 Link encap:Point-to-Point Protocol
inet addr:192.168.3.1 P-t-P:192.168.3.23 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1400 Metric:1
RX packets:89 errors:0 dropped:0 overruns:0 frame:0
TX packets:55 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:11677 (11.4 KiB) TX bytes:27328 (26.6 KiB)
windows XP
- Código: Selecionar todos
Adaptador PPP vpn-bfw :
Sufijo de conexión específica DNS :
Descripción. . . . . . . . . . . : WAN (PPP/SLIP) Interface
Dirección física. . . . . . . . . : 00-53-45-00-00-00
DHCP habilitado. . . . . . . . . : No
Dirección IP. . . . . . . . . . . : 192.168.3.23
Máscara de subred . . . . . . . . : 255.255.255.255
Puerta de enlace predeterminada : 192.168.3.23
Servidores DNS . . . . . . . . . .: 4.2.2.2
8.8.8.8
la interface de area local network de windows deberá tener alguna IP del rango de brazilfw ejemplo 192.168.0.2 para poder alcanzarlo y autentificarse en el pptpd.si es que brazilfw esta configurado su subred en 192.168.0.1 este tendra el port 1723/tcp open pptp a la espera.
este detalle de dependencia es el que no quisiera que tenga
se que para evitar eso el negociado entre el xp y brazilfw debería basarse en la capa 2 pero eso justamente es lo que no se
ya que creo que eso ya seria pppoe y no se pero creo que brazilfw ya tiene nativo la posibilidad de convertirlo en dos patadas en un server pppoe como corno no lo se pero ahí vi archivos que dan la posibilidad.
final
para darle salida a la WAN a esta vpn en mi caso tuve que agregar en brazilfw al iptables la siguiente regla.iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -d 0.0.0.0/0 -j MASQUERADE
-------------------------------------------------------
ppp (Este no sé si sería tan esencial instalarlo en brazilfw pero bueno siguiendo otro tutorial di que era una dependencia)
version ppp_2.4.2+20040202.orig
http://rayo969.sslpowered.com/pptp-server/ppp.tgz
#!/usr/local/bin/perl
#/*
#* This program is free software; you can redistribute it and/or modify
#* it under the terms of the GNU General Public License as published by
use strict;
use Fcntl ':mode';
my @sections;
my %strings;
my %version;
my $driver_name;
my $confdir = "/etc/ndiswrapper";
my $instdir;
my %fuzzlist;
my @copy_blacklist = ("prismusb.sys");
my %param_fixlist = ("EnableRadio|0" => "EnableRadio|1",
"PrivacyMode|0" => "PrivacyMode|1");
if(@ARGV < 1)
{
usage();
exit();
}
my $res;
if($ARGV[0] eq "-i" and @ARGV == 2)
{
$res = install($ARGV[1]);
}
elsif($ARGV[0] eq "-e" and @ARGV == 2)
{
$res = remove($ARGV[1]);
}
elsif($ARGV[0] eq "-l" and @ARGV == 1)
{
$res = list();
}
elsif($ARGV[0] eq "-m" and @ARGV == 1)
{
$res = modconf();
}
else
{
usage();
exit();
}
exit $res;
sub usage
{
print "Usage: ndiswrapper OPTION\n".
"\n".
"Manage ndis drivers for ndiswrapper.\n".
"-i inffile Install driver described by inffile\n".
"-e driver Remove driver\n".
"-l List installed drivers\n".
"-m Write configuration for modprobe\n";
}
sub install
{
my $inf = shift;
$driver_name = lc($inf);
$driver_name =~ s/\.inf//;
$driver_name = `basename $driver_name`;
$instdir = `dirname $inf`;
chomp($instdir);
chomp($driver_name);
if(isInstalled($driver_name))
{
print "$driver_name is already installed. Use -e to remove it\n";
return -1;
}
if(!opendir(DH, $confdir))
{
mkdir($confdir);
}
else
{
close(DH);
}
print "Installing $driver_name\n";
if(!mkdir("$confdir/$driver_name"))
{
print "Unable to create directory $confdir/$driver_name. Make sure you are running as root\n";
return -1;
}
loadinf($inf);
initStrings();
parseVersion();
`cp -u $inf $confdir/$driver_name/$driver_name.inf`;
processPCIFuzz();
}
sub isInstalled
{
my $installed;
my $name = shift;
open(LS, "ls -1 $confdir|");
while(my $f = <LS>)
{
chomp($f);
my $mode = (stat("$confdir/$f"))[2];
if(S_ISDIR($mode) and $name eq $f)
{
$installed = 1;
}
}
close(LS);
return $installed;
}
sub remove
{
my $name = shift;
if(!isInstalled($name))
{
print "Driver $name is not installed. Use -l to list installed drivers\n";
return;
}
`rm -rf $confdir/$name`;
}
sub list
{
my $s;
my $cards = getPresentCards();
if(!$cards)
{
print "WARNING: Cannot locate lspci. Unable to see if hardware is present.\n";
}
open(LS, "ls -1 $confdir|");
while(my $f = <LS>)
{
chomp($f);
my $mode = (stat("$confdir/$f"))[2];
if(S_ISDIR($mode))
{
$s .= "$f\t".installStatus($cards, $f)."\n";
}
}
if($s)
{
print "Installed ndis drivers:\n$s";
}
else
{
print "No drivers installed\n$s";
}
close(LS);
}
sub modconf
{
my $alias = 0;
my $err = 0;
my @modprobe = ("/sbin/modprobe", "/usr/sbin/modprobe", "modprobe");
my $ok = 0;
for(my $i = 0; $i < @modprobe; $i++)
{
if(open(MODPROBE, "$modprobe[$i] -c|"))
{
$ok = 1;
$i = @modprobe;
}
}
if(!$ok)
{
return -1;
}
while(my $line = <MODPROBE>)
{
if($line =~ /^alias\s.+\sndiswrapper/)
{
print "modprobe config already contains alias directive\n\n";
$alias = 1;
}
elsif($line =~ /^install\s.*ndiswrapper/)
{
print "You should not need an install directive in you modprobe config file.\n";
modconf_err($line);
$err = 1;
}
elsif($line =~ /^post-install\s+ndiswrapper/)
{
print "You should not need a post-install directive in you modprobe config file.\n";
modconf_err($line);
$err = 1;
}
}
close(MODPROBE);
if($alias)
{
return;
}
my $v = `uname -r`;
$v =~ /(\d+)\.(\d+)\.(\d+)/;
my $major = $1;
my $minor = $2;
my $rev = $3;
my $modconf;
if($minor > 4)
{
if(-d "/etc/modprobe.d")
{
$modconf = "/etc/modprobe.d/ndiswrapper"
}
else
{
$modconf = "/etc/modprobe.conf"
}
}
else
{
if(-d "/etc/modutils")
{
$modconf = "/etc/modutils/ndiswrapper";
}
else
{
$modconf = "/etc/modules.conf";
}
}
print "Adding \"alias wlan0 ndiswrapper\" to $modconf\n";
system("echo \"alias wlan0 ndiswrapper\" >>$modconf");
if(-x "/sbin/update-modules")
{
system("/sbin/update-modules");
}
}
sub modconf_err
{
my $line = shift;
print "Please remove the line saying:\n\n";
print "$line\n";
print "unless you are 100% sure of what you are doing.\n";
}
sub getPresentCards
{
my @cards;
my @lspci = ("/sbin/lspci", "/usr/sbin/lspci", "lspci");
for(my $i = 0; $i < @lspci; $i++)
{
if(open(LSPCI, "$lspci[$i] -vn|"))
{
my $card;
while(my $line = <LSPCI>)
{
if($line =~ /^[0-9]+.*:\s(.{4}):(.{4}).*/)
{
my %c;
$card = \%c;
$card->{vendor} = $1;
$card->{device} = $2;
}
if($line =~ /.+Subsystem:\s*(.{4}):(.{4}).*/)
{
$card->{subvendor} = $1;
$card->{subdevice} = $2;
push(@cards, $card);
}
}
return \@cards;
}
}
}
sub installStatus
{
my $cards = shift;
my $driver = shift;
if(!$cards)
{
return;
}
open(LS2, "ls -1 $confdir/$driver|");
my $ret = "hardware NOT present";
while(my $device = <LS2>)
{
chomp($device);
my $d = $device;
$d =~ s/.conf//;
if($d =~ /(.{4}):(.{4}):(.{4}):(.{4})/)
{
for(my $i = 0; $$cards[$i]; $i++)
{
if($$cards[$i]->{vendor} == $1 and
$$cards[$i]->{device} == $2 and
$$cards[$i]->{subvendor} == $3 and
$$cards[$i]->{subdevice} == $4)
{
close(LS2);
return "hardware present";
}
}
}
elsif($d =~ /(.{4}):(.{4})/)
{
for(my $i = 0; $$cards[$i]; $i++)
{
if($$cards[$i]->{vendor} == $1 and
$$cards[$i]->{device} == $2)
{
my $mode = (lstat("$confdir/$driver/$device"))[2];
if(S_ISLNK($mode))
{
$ret = "hardware present,fuzzy";
}
else
{
close(LS2);
return "hardware present";
}
}
}
}
}
close(LS2);
return $ret;
}
sub processPCIFuzz
{
my @devs = keys(%fuzzlist);
for(my $i = 0; $i < @devs; $i++)
{
my $dev = $devs[$i];
if($dev ne $fuzzlist{$dev})
{
`ln -s $confdir/$driver_name/$fuzzlist{$dev}.conf $confdir/$driver_name/$dev.conf`;
}
}
}
sub addPCIFuzzEntry
{
my $vendor = shift;
my $device = shift;
my $subvendor = shift;
my $subdevice = shift;
my $s = "$vendor:$device";
if(!$subvendor or !$fuzzlist{$s})
{
my $s2 = $s;
if($subvendor)
{
$s2 .= ":$subvendor:$subdevice";
}
$fuzzlist{$s} = $s2;
}
}
sub parseVersion
{
my $s = getSection("version");
if(!$s)
{
return;
}
my @lines = split("\n", $s->{data});
for(my $i = 0; $i < @lines; $i++)
{
(my $key, my $val) = getKeyVal($lines[$i]);
if($key eq "Provider")
{
$val =~ s/"(.+)"/$1/;
$version{$key} = $val;
}
if($key eq "DriverVer")
{
$val =~ s/"(.+)"/$1/;
$version{$key} = $val;
}
}
parseManu();
}
sub parseManu
{
my $manu = getSection("manufacturer");
if(!$manu)
{
return -1;
}
my @lines = split("\n", $manu->{data});
for(my $i = 0; $i < @lines; $i++)
{
my $line = remComment($lines[$i]);
(my $key, my $val) = getKeyVal($line, "=");
if ($key eq $version{"Provider"})
{
$strings{$key} = trim($val);
}
if($val)
{
my $section;
my @flavours = split(",", $val);
my $flavour = "";
if(@flavours == 1)
{
#Vendor
$section = $val;
}
else
{
#Vendor,flavour1, flavour2 etc;
for(my $i = 1; $i < @flavours; $i++)
{
my $flav = trim($flavours[$i]);
$flav =~ s/\s*(\S+)\s*/$1/;
if(uc($flav) eq "NT.5.1")
{
#This is the best (XP)
$section = $flavours[0] . "." . $flav;
$flavour = $flav;
}
elsif(substr(uc($flav),0,2) eq "NT" and $section eq "")
{
#This is the second best (win2k)
$section = $flavours[0] . "." . $flav;
$flavour = $flav;
}
}
}
my $res = parseVendor($flavour, $section);
if(!$res)
{
return $res;
}
}
}
}
sub parseVendor
{
my $flavour = shift;
my $vendor_name = shift;
my $vend = getSection($vendor_name);
if(!$vend)
{
print "no vendor\n";
return -1;
}
my @lines = split("\n", $vend->{data});
for(my $i = 0; $i < @lines; $i++)
{
my $line = remComment($lines[$i]);
(my $name, my $val) = getKeyVal($line, "=");
if($val)
{
(my $section, my $id) = split(",", $val);
$section = trim($section);
$id = trim($id);
(my $bustype, my $vendor, my $device, my $subvendor, my $subdevice) = parseID($id);
if($vendor)
{
parseDevice($flavour, $section, $bustype, $vendor, $device, $subvendor, $subdevice);
}
}
}
}
sub parseDevice
{
my $flavour = shift;
my $device_sect = shift;
my $bustype = shift;
my $device = shift;
my $vendor = shift;
my $subvendor = shift;
my $subdevice = shift;
my $dev = getSection("$device_sect.$flavour");
if(!$dev)
{
$dev = getSection("$device_sect.NT");
}
if(!$dev)
{
$dev = getSection("$device_sect");
}
if(!$dev)
{
print "no dev $device_sect $flavour\n";
return -1;
}
my $copyfiles;
my $addreg;
my @lines = split("\n", $dev->{data});
for(my $i = 0; $i < @lines; $i++)
{
my $line = remComment($lines[$i]);
(my $key, my $val) = getKeyVal($line, "=");
if($key)
{
if(lc($key) eq "addreg")
{
$addreg = $val;
}
if(lc($key) eq "copyfiles")
{
$copyfiles = $val;
}
}
}
my $filename = "$device:$vendor";
if($subvendor)
{
$filename .= ":$subvendor:$subdevice"
}
$filename .= ".conf";
if($bustype == 5)
{
addPCIFuzzEntry($device, $vendor, $subvendor, $subdevice);
}
if(!open(CONF, ">$confdir/$driver_name/$filename"))
{
print "Unable to create file $filename";
return -1;
}
printf CONF "NdisVersion|0x50001\n";
printf CONF "Environment|1\n";
printf CONF "BusType|$bustype\n";
my $ver=$version{"DriverVer"};
my $provider=$version{"Provider"};
my $providerstring = stripquotes(substStr(trim($provider)));
printf CONF "ndis_version|$providerstring,$ver\n\n";
my @addregs = split(",", $addreg);
for(my $i = 0; $i < @addregs; $i++)
{
my $reg = trim($addregs[$i]);
addReg($reg);
}
my @copyfiles = split(",", $copyfiles);
for(my $i = 0; $i < @copyfiles; $i++)
{
my $file = trim($copyfiles[$i]);
copyfiles($file);
}
close(CONF);
}
sub copyfiles
{
my $copy_name = shift;
my $copy = getSection($copy_name);
if(!$copy)
{
printf "Parse error in inf. Unable to find section $copy_name\n";
return -1;
}
my @lines = split("\n", $copy->{data});
for(my $i = 0; $i < @lines; $i++)
{
my $line = trim(remComment($lines[$i]));
if($line)
{
$line =~ s/,+.*//;
$line = trim($line);
my $nocopy = 0;
for(my $j = 0; $j < @copy_blacklist; $j++)
{
if($copy_blacklist[$j] eq lc($line))
{
$nocopy = 1;
}
}
my $dir = finddir($line);
if($dir)
{
$dir = findfile("", $dir);
}
my $realname = findfile($dir, $line);
if($realname)
{
my $newname = lc($realname);
if($dir)
{
$realname = "$dir/$realname";
}
if(!$nocopy)
{
`cp -u $instdir/$realname $confdir/$driver_name/$newname`;
`chmod 644 $confdir/$driver_name/$newname`;
}
}
else
{
print STDERR "Warning: Cannot locate $line\n";
}
}
}
}
sub finddir
{
my $filename = shift;
my $sourcedisksfiles = getSection("sourcedisksfiles");
if(!$sourcedisksfiles)
{
return "";
}
my @lines = split("\n", $sourcedisksfiles->{data});
for(my $i = 0; $i < @lines; $i++)
{
my $line = trim(remComment($lines[$i]));
$line =~ /(.+)=.+,+(.*)/;
my $file = trim($1);
my $dir = trim($2);
if($file and $dir and lc($filename) eq lc($file))
{
return $dir;
}
}
return "";
}
sub findfile
{
my $dir = shift;
my $file = shift;
if(!opendir(DIR, "$instdir/$dir"))
{
print "Unable to open $instdir\n";
return "";
}
my @allfiles = readdir(DIR);
for(my $i = 0; $i < @allfiles; $i++)
{
if(lc($allfiles[$i]) eq lc($file))
{
closedir(DIR);
return $allfiles[$i];
}
}
closedir(DIR);
return "";
}
sub addReg
{
my $reg_name = shift;
my $reg = getSection($reg_name);
if(!$reg)
{
printf "Parse error in inf. Unable to find section $reg_name\n";
return -1;
}
my $param;
my $type;
my $val;
my $found;
my $gotParam = 0;
my @lines = split("\n", $reg->{data});
for(my $i = 0; $i < @lines; $i++)
{
my $line = trim(remComment($lines[$i]));
if($line)
{
$line =~ /([^,]*),([^,]*),([^,]*),([^,]*),(.*)/;
my $hkr = trim($1);
my $p1 = stripquotes(substStr(trim($2)));
my $p2 = stripquotes(substStr(trim($3)));
my $p3 = stripquotes(substStr(trim($4)));
my $p4 = stripquotes(substStr(trim($5)));
if($p1)
{
if($p1 =~ /ndi\\params\\(.+)/i)
{
$1 =~ /(.+)\\.*/;
if($1 ne $param)
{
$found = 0;
$param = $1;
$type = "";
$val = "";
}
if(lc($p2) eq "type")
{
$found++;
$type = $p4;
}
elsif(lc($p2) eq "default")
{
$found++;
$val = $p4;
}
if($found == 2)
{
$gotParam = 1;
}
}
}
else
{
#print "type 2: $reg_name '$p1', '$p2', '$p3', '$p4':'$line'\n";
$param = $p2;
$val = $p4;
$gotParam = 1;
}
if($gotParam and $param ne "BusType")
{
my $s = "$param|$val";
if($param_fixlist{"$s"})
{
my $sOld = $s;
$s = $param_fixlist{"$s"};
print "Forcing parameter $sOld to $s\n";
}
print CONF "$s\n";
$param = "";
$gotParam = 0;
}
}
}
}
sub substStr
{
my $s = shift;
if($s =~ /^\%(.+)$\%/)
{
return getString($1);
}
return $s;
}
sub parseID
{
my $s = uc(shift);
if($s =~ /PCI\\VEN_(\w+)&DEV_(\w+)&SUBSYS_(\w{4})(\S{4})/)
{
return (5, $1, $2, $4, $3);
}
elsif($s =~ /PCI\\VEN_(\w+)&DEV_(\w+)/)
{
return (5, $1, $2);
}
elsif($s =~ /USB\\VID_(\w+)&PID_(\w+)/)
{
return (0, $1, $2);
}
}
sub trim
{
my $s = shift;
$s =~ s/^\s*//;
$s =~ s/\s*$//;
return $s;
}
sub stripquotes
{
my $s = shift;
$s =~ s/"(.*)"/$1/;
return $s;
}
sub getKeyVal
{
my $line = shift;
$line = remComment($line);
(my $key, my $val) = split("=", $line);
if($line =~ /(.+)=(.+)/)
{
return (trim($1), trim($2));
}
}
sub remComment
{
my $s = shift;
$s=~ s/([^;]*);.*/$1/;
return $s;
}
sub initStrings
{
my $s = getSection("strings");
if(!$s)
{
return;
}
my @lines = split("\n", $s->{data});
for(my $i = 0; $i < @lines; $i++)
{
(my $key, my $val) = getKeyVal($lines[$i]);
if($key)
{
$val =~ s/"(.+)"/$1/;
$strings{$key} = $val;
}
}
}
sub getString
{
my $s = shift;
return $strings{$s};
}
sub getSection
{
my $needle = shift;
for(my $i = 0; $i < @sections; $i++)
{
if( lc($sections[$i]->{name}) eq lc($needle))
{
return $sections[$i];
}
}
return 0;
}
sub loadinf
{
my $filename = shift;
my %def_section;
my $section = \%def_section;
if(!open(INF, $filename))
{
return -1;
}
my $i = 0;
$section->{name} = "none";
while(my $s = <INF>)
{
#Convert from unicode
$s =~ s/\xff\xfe//;
$s =~ s/\0//g;
$s =~ s/\s*$//; #Remove trailing whitespace and \r
$s .= "\n";
if($s =~ /^\[(.+)\]\s*/)
{
$sections[$i++] = $section;
my %new_section;
$section = \%new_section;
$section->{name} = $1;
}
else
{
$section->{data} .= $s;
}
}
$sections[$i++] = $section;
close(INF);
}
pablino76 escreveu:
saludos a mirage donde quiera que este
el único forista que anda con un brazilfw portátil por la calle usuario inestable %100.
@echo off
putty IP.IP.IP.IP 22 -l root -pw password>>nul
exit
cat lista_urls.txt | xargs -n 1 -P 1 wget
#!/bin/sh
while true
do
clear
wget http://admin:password@192.168.1.1/goform/formWlSiteSurvey?refresh=Refresh&submit-url=%2Fwlsurvey.asp >/dev/null 2>&1
clear
cat WIFIS
sleep 5
#matar el ultimo proceso
kill $!
wget http://admin:password@192.168.1.1/wlsurvey.asp >/dev/null 2>&1
clear
cat WIFIS
clear
DATOS2=`cat wlsurvey.asp |grep '</td>'| sed 's/.*\(>.\)/\1/'| cut -c1-50 |cut -d "<" -f1`
#DATOS2=`cat x.asp |grep '</td>'| sed 's/.*\(>.\)/\1/'| cut -c1-50 |cut -d "<" -f1`
echo -e "$DATOS2" >OUTFILE
sed -i 1d OUTFILE
sed -i 1d OUTFILE
sed -i 1d OUTFILE
sed -i 1d OUTFILE
sed -i 1d OUTFILE
sed -i 1d OUTFILE
sed -i 1d OUTFILE
sed -i 1d OUTFILE
RESULTADO=`cat OUTFILE`
echo -e $RESULTADO |sed 's/ > >/\n /g'|sed 's/>/ /g' >WIFIS # |grep $1 > WIFIS # |awk '{printf $7}' >WIFIS
cat WIFIS
sleep 2
done
<html>
<head>
<link rel="stylesheet" href="set.css">
<meta http-equiv="Content-Type" content="text/html">
<title>Wireless Site Survey</title>
<script>
var connectEnabled=0;
function verifyBrowser() {
var ms = navigator.appVersion.indexOf("MSIE");
ie4 = (ms>0) && (parseInt(navigator.appVersion.substring(ms+5, ms+6)) >= 4);
var ns = navigator.appName.indexOf("Netscape");
ns= (ns>=0) && (parseInt(navigator.appVersion.substring(0,1))>=4);
if (ie4)
return "ie4";
else
if(ns)
return "ns";
else
return false;
}
function disableButton (button) {
if (verifyBrowser() == "ns")
return;
if (document.all || document.getElementById)
button.disabled = true;
else if (button) {
button.oldOnClick = button.onclick;
button.onclick = null;
button.oldValue = button.value;
button.value = 'DISABLED';
}
}
function enableButton (button) {
if (verifyBrowser() == "ns")
return;
if (document.all || document.getElementById)
button.disabled = false;
else if (button) {
button.onclick = button.oldOnClick;
button.value = button.oldValue;
}
}
function enableConnect()
{
enableButton(document.formWlSiteSurvey.connect);
connectEnabled=1;
}
function connectClick()
{
if (connectEnabled==1)
return true;
else
return false;
}
function loadonstart() {
sitesurveyed = 1
if (sitesurveyed == 0) {
disableButton(document.formWlSiteSurvey.refresh);
document.searching.submit();
}
window.opener.reloadPage();
}
</script>
</head>
<body class="background" onLoad="loadonstart();">
<blockquote>
<center><b><font class="textcolor1" size="4">Wireless Site Survey</font></b></center><br>
<table border="0" width="520" cellspacing="0" cellpadding="0" align=center><tr><td>
<p align="left"><font class="textcolor" size="2">
This page provides tool to scan the wireless network. If any Access Point or
IBSS is found, you could choose to connect it manually when client mode is enabled.
</font></p></td></tr></table>
<form action=/goform/formWlSiteSurvey method=POST name="searching">
<input type="hidden" value="Refresh" name="refresh">
<input type="hidden" value="/wlsurvey.asp" name="submit-url">
</form>
<form action=/goform/formWlSiteSurvey method=POST name="formWlSiteSurvey">
<table border="1" width="520" cellspacing="0" cellpadding="0" align=center>
<tr>
<td align="center" width="30%" class="stable"><font size="2"><b>SSID</b></font></td>
<td align="center" width="20%" class="stable"><font size="2"><b>BSSID</b></font></td>
<td align="center" width="10%" class="stable"><font size="2"><b>Channel</b></font></td>
<td align="center" width="10%" class="stable"><font size="2"><b>Type</b></font></td>
<td align="center" width="10%" class="stable"><font size="2"><b>Encrypt</b></font></td>
<td align="center" width="10%" class="stable"><font size="2"><b>Signal</b></font></td>
<td align="center" width="10%" class="stable"><font size="2"><b>Select</b></font></td>
</tr>
<tr><td align=left class='table2'><font size="2">CORNETA-WIFI</td>
<td align=center class='table2'><font size="2">00:66:66:66:66:66</td>
<td align=center class="table2"><font size="2">7 (B+G)</td>
<td align=center class="table2"><font size="2">AP</td>
<td align=center class="table2"><font size="2">WPA-PSK</td>
<td align=center class="table2"><font size="2">84</td>
<td align=center width="10%" class="table2"><input type="radio" name="select" value="sel0" onClick="enableConnect()"></td></tr>
<tr><td align=left class='table2'><font size="2">COJE_ESTA_WIFI</td>
<td align=center class='table2'><font size="2">00:22:22:22:b9:8c</td>
<td align=center class="table2"><font size="2">3 (B+G)</td>
<td align=center class="table2"><font size="2">AP</td>
<td align=center class="table2"><font size="2">WPA-PSK/WPA2-PSK</td>
<td align=center class="table2"><font size="2">32</td>
<td align=center width="10%" class="table2"><input type="radio" name="select" value="sel1" onClick="enableConnect()"></td></tr>
</table>
<br><center>
<input type="submit" value="Refresh" name="refresh" class="btnsize">
<input type="submit" value="Connect" name="connect" onClick="return connectClick()" class="btnsize">
<input type="button" value="Close" class="btnsize" onClick="window.close();"></center>
<input type="hidden" value="/wlsurvey.asp" name="submit-url">
<script>
disableButton(document.formWlSiteSurvey.connect);
</script>
</form>
</blockquote>
</body>
</html>
Expresiones regulares y filtros.
Una expresión regular es un patrón que define a un conjunto de cadenas de caracteres. Las expresiones regulares se construyen de forma análoga a las expresiones aritméticas. Existe la posibilidad de combinar expresiones simples; para ello, debemos emplear distintos operadores.
Los bloques básicos de construcción son las expresiones regulares que referencias un único carácter. La mayoría de los caracteres, incluyendo todas las letras y dígitos, son expresiones regulares que se definen a si mismos. Cualquier metacarácter con significado especial debe ser precedido del símbolo backslash para que pierda su significado especial.
Una lista de caracteres encerrados dentro de [] referencia cualquier carácter sencillo de esa lista. Si el primer carácter es un ^ entonces estaremos haciendo referencia a los caracteres que no aparecen en la lista.
Los caracteres ^ y $ son metacaracteres que representan una cadena vacía al principio y al final de la línea, respectivamente. Los símbolos \< y \> representan una cadena vacía al principio y al final de una palabra.
Una expresión regular que representa un carácter sencillo puede ser continuada con uno o varios caracteres de repetición.:
? El elemento precedente es opcional y debe coincidir al menos una vez.
* El elemento precedente debe coincidir cero o más veces
{n} El elemento precedente debe coincidir exactamente n veces
+ El elemento precedente debe coincidir una o más veces.
{,m} El elemento precedente es opcional y debe coincidir al menos m veces.
{n,m} El elemento precedente debe coincidir al menos n veces pero no más de m veces.
Dos expresiones regulares pueden unirse con el operador |. La expresión resultante representa cualquier cadena que responda a uno de los dos patrones.
Ejemplos:
Patrón Qué representa
pablo La cadena pablo
^pablo La cadena pablo al comienzo de una línea.
pablo$ La cadena pablo al final de una línea.
^pablo$ La cadena pablo formando una única línea.
niñ[oa] La cadena niño o niña
ni[^aeiou]o La tercera letra no es una vocal minúscula.
ga.o La tercera letra es cualquier carácter.
^....$ Cualquier línea que contenga 4 caracteres.
^\. Cualquier línea que comienza por punto.
^[^.] Cualquier línea que no comienza por punto.
niños* niño, niños, niñoss, niñosss, etc
“niño” niño entre comillas dobles.
“*niño”* niño con o sin comillas dobles.
[a-z][a-z]* una o más letras minúsculas.
[a-z]+ una o más letras minúsculas (sólo válido en algunas aplicaciones).
[^0-9A-Z] cualquier caracter que no sea ni número ni letra mayúscula.
[a-zA-Z] cualquier letra sea mayúscula o minúscula.
[Ax5] cualquier carácter que sea A, x o 5.
niño|niña|nada una de las tres palabras.
(s|arb)usto la palabra susto o arbusto.
ga?t[oa] gato, gata, gasto, gaita, etc.
\<ga cualquier palabra que empiece por ga.
ño\> cualquier palabra que termine por ño
\<niño\> la palabra niño
o\{2,\} dos o más oes en una misma fila.
Siempre que empleemos expresiones regulares con grep, deben se encerradas entre comillas dobles para que el interprete de órdenes no los considere. Si dentro de la expresión regular tenemos el metacarcter $ , deberemos emplear comillas simples en lugar de las comillas dobles.
Filtros.
sort Sintaxis sort [-ndt] [+campo] [archivo(s)]
Este filtro se utiliza para ordenar líneas compuestas por cmpos, separados por tabuladores, aunque podemos especificar cualquier tipo de separador de campo. Si a sort no le pasamos ningún archibo como prámetro, tomará su entrada de la entrada estándar como cualquier filtro. Con este filtro podemos ordenar las líneas de uno varios archivos según un campo en particular. Esta ordenación no produce ninguna modificación en los archivos tratados.
Algunas opciones:
-n considera el valor numérico para ordenar los campos.
-d considerar sólo espacios en blanco y caracteres alfanuméricos.
-t sep utiliza sep como separador de campos.
grep Sintaxis grep [-inv] patrón [archivo(s)]
Es un filtro que permite buscar cadenas de caracteres en los archivos que le indiquemos
Opciones:
-i Indica a grep que se ignoren mayúsculas y minúsculas
-v visualiza por pantalla las líneas que no contienen el patrón indicado.
-n muestra por pantalla el número de línea en que se encuentra el patrón.
wc Sintaxis wc [-lwc] [archivo(s)]
Se trata de un contador de líneas, palabras y caracteres.
Opciones:
-l visualiza sólo el número de líneas.
-w visualiza sólo el número de palabras.
-c visualiza sólo el número de caracteres.
cut Sintaxis cut -c lista [archivo(s)]
cut -f lista [-dcar] [archivo(s)]
Se usa para cortar y pasar a la salida estándar las columnas o campos de la entrada estándar o del archivo especificado. La opción -c es para cortar columnas y -f para cortar campos. Al cortar un campo, existe la opción -d para especificar los caracteres de separación entre los distintos campos (car). Por defecto el delimitador es el tabulador, al menos que se indique otra cosa.
Una lista es una secuencia de números que se usa para indicarle a cut qué campos o columnas se quieren cortar. Hay varios formatos para esta lista.
X-Y Columnas o campos desde X hasta Y inclusive.
X- Columnas o campos desde X hasta el final.
X-Y Columnas o campos X e Y.
tr Sintaxis tr [-dsc] cadena1 cadena2
Se emplea como traductor. Como todo filtro tr lee datos de la entrada estándar, los procesa y deposita los resultados en la salida estándar. Busca los caracteres indicados por cadena1 y los sustituye por cadena2.
-d sirve para eliminar los caracteres indicados por cadena 1
-s elimina caracteres repetidos indicados por cadena1
-c indica contrario, que no coincida con cadena1.
tee Sintaxis tee [-a] [archivo(s)]
Esta orden orden lee la entrada estándar por defecto y escribe su salida a la salida estándar y al archivo especificado. Si se utiliza la opción -a (append), tee añade su salida al archivo en lugar de sobreescribirlo.
La orden find.
find Sintaxis find camino expresión
La orden find es una de las más potentes de UNIX, pero también una de las que tienen una sintaxis más compleja. Esta orden se usa para examinar toda la estructura de directorios, o señalados en la línea de órdenes. Una vez localizados, podemos hacer que ejecute distintas acciones sobre ellos. El campo expresión sirve para indicar los criterios de selección de los archivos y la acción que queremos aplicarles al encontrarlos.
Ejemplo:
$ find / -name ifconfig (busca el archivo ifconfig dentro de la estructura de directorios)
La opción -name indica a find que únicamente se busquen los archivos cuyo nombre se especifica a continuación. Cuando find no puede buscar en un determinado directorio por no poseer derechos de acceso, no los comunica. Para evitar estos mensajes de error podemos redirigir el error a /dev/null.
Ejemplo:
$ find / -name login 2>/dev/null
Opciones:
-user le indicamos a find que seleccione los archivos que pertenezcan al usuario que se indica a continuación de -user.
-group selecciona los archivos pertenecientes al grupo indicado a continuación.
-mtime n archivos modificados hace n días.
-mtime -n archivos modificados en los últimos n días.
-mtime +n archivos modificados hace más de n días.
-size -m archivos cuyo tamaño es menor de m bloques.
-size +m archivos cuyo tamaño es mayor de m bloques.
-type x archivos del tipo indicado por x (d directorios, f archivos, l enlaces, etc.).
-inum n archivos cuyo inodo es n
-perm mode archivos cuyos permisos sean los dados por mode.
-exec orden ejecuta la orden usando como argumento los resultados de la búsqueda.
Todas estas opciones pueden ser negadas con el carácter ! seguido de un espacio en blanco.
Editor de flujo sed.
sed Sintaxis sed [-f f_ord] [-n] [archivo(s)]
La herramienta sed es un editor de flujo (stream editor) utilizado para manipular archivos de texto. sed copia los archivos indicados (por defecto, el archivo estándar de entrada) en la salida estándar después de procesarlos. Este procesamiento de los archivos de entrada se lleva a cabo línea por línea, acorde con las órdenes dadas a sed, estas órdenes pueden residir en un archivo, en cuyo caso usaremos la opción -f seguida del nombre del archivo que contiene las órdenes (f_ord). La opción -n se utiliza si queremos ver la línea que está siendo procesada.
Algunas órdenes de sed:
s sustituye
$ sed 's/procesar/manipular/g' archivo (aquí indicamos que queremos sustituir s procesar por manipular a lo largo de todo el archivo, lo indica g.)
d borra
$ sed '1,3d' archivo (elimina desde la línea 1 hasta la 3 del archivo)
y traduce caracteres (los cambia por otros)
$ sed 'y/[aeiou]/[AEIOU]/' archivo (cambia las vocales en minúsculas por vocales en mayúsculas).
Mii-tool: Configurando manualmente la velocidad del ethernet
Publicado por fher98 on 12/26/07 • bajo Internetworking,Linux
MII-TOOL (media-independent interface status manipulation tool) es una herramienta la cual puede verificar o configurar el estatus de unidad de la Interfaz Independiente del Medio (MII) de la interfaz de red (NIC).
La mayoria de los adaptadores de fast ethernet utilizan el MII para autonegociar la velocidad del enlace (link) y ajustar su duplex. Estos dispositivos utilizan un protocolo de autonegociacion para comunicar cuales tecnologias de medios soportan, y asi de esta manera utilizar la tecnologia mas rapida soportada mutuamente.
Algunos dispositivos pasivos, como los hubs de velocidad simple (single-speed hubs), no tienen capacidad de autonegociacion. Para brindar soporte a dichos dispositivos el protocolo MII permite establecer la conexion con tan solo detectar el latido del enlace a 10baseT o 100baseT.
Es posible forzar el modo de operacion del protocolo MII con la opcion -F o –force. El reporte por default despliega la velocidad y el status del enlace para cada interface. Si una NIC o interface no fue especificada en la linea de comando, mii-tool verificara todas las interfaces disponibles desde eth0 hasta eth7.
A continuacion algunos ejemplos de como ver, ajustar o cambiar la velocidad de nuestra red via la interfaz ethernet:
usage: mii-tool [-VvRrwl] [-A media,... | -F media] [interface ...]
-V, --version display version information
-v, --verbose more verbose output
-R, --reset reset MII to poweron state
-r, --restart restart autonegotiation
-w, --watch monitor for link status changes
-l, --log with -w, write events to syslog
-A, --advertise=media,... advertise only specified media
-F, --force=media force specified media technology
media: 100baseT4, 100baseTx-FD, 100baseTx-HD, 10baseT-FD, 10baseT-HD,
(to advertise both HD and FD) 100baseTx, 10baseT
GNU netcat 0.5.2, a rewrite of the famous networking tool.
Basic usages:
connect to somewhere: netcat [options] hostname port [port] ...
listen for inbound: netcat -l -p port [options] [hostname] [port] ...
tunnel to somewhere: netcat -L hostname:port -p port [options]
Mandatory arguments to long options are mandatory for short options too.
Options:
-e, --exec=PROGRAM program to exec after connect
-g, --gateway=LIST source-routing hop point[s], up to 8
-G, --pointer=NUM source-routing pointer: 4, 8, 12, ...
-h, --help display this help and exit
-i, --interval=SECS delay interval for lines sent, ports scanned
-l, --listen listen mode, for inbound connects
-L, --tunnel=ADDRESS:PORT forward local port to remote address
-n, --dont-resolve numeric-only IP addresses, no DNS
-o, --output=FILE output hexdump traffic to FILE (implies -x)
-p, --local-port=NUM local port number
-r, --randomize randomize local and remote ports
-s, --source=ADDRESS local source address (ip or hostname)
-t, --tcp TCP mode (default)
-T, --telnet answer using TELNET negotiation
-u, --udp UDP mode
-v, --verbose verbose (use twice to be more verbose)
-V, --version output version information and exit
-x, --hexdump hexdump incoming and outgoing traffic
-w, --wait=SECS timeout for connects and final net reads
-z, --zero zero-I/O mode (used for scanning)
Remote port number can also be specified as range. Example: '1-1024'
socat by Gerhard Rieger - see http://www.dest-unreach.org
Usage:
socat [options] <bi-address> <bi-address>
options:
-V print version and feature information to stdout, and exit
-? print a help text describing command line options and addresses
-?? like -?, plus a list of all common address option names
-??? like -?, plus a list of all available address option names
-d increase verbosity (use up to 4 times; 2 are recommended)
-D analyze file descriptors before loop
-ly[facility] log to syslog, using facility (default is daemon)
-lf<logfile> log to file
-ls log to stderr (default if no other log)
-lm[facility] mixed log mode (stderr during initialization, then syslog)
-lp<progname> set the program name used for logging
-lu use microseconds for logging timestamps
-v verbose data traffic, text
-x verbose data traffic, hexadecimal
-b<size_t> set data buffer size (8192)
-s sloppy (continue on error)
-t<timeout> wait seconds before closing second channel
-u unidirectional mode (left to right)
-U unidirectional mode (right to left)
-g do not check option groups
bi-address:
pipe[,<opts>] groups=FD,FIFO
<single-address>!!<single-address>
<single-address>
single-address:
<address-head>[,<opts>]
address-head:
create:<filename> groups=FD,REG,NAMED
exec:<command-line> groups=FD,FIFO,SOCKET,EXEC,FORK,TERMIOS,PTY,PARENT,UNIX
fd:<num> groups=FD
gopen:<filename> groups=FD,REG,SOCKET,NAMED,OPEN,UNIX
ip4:<host>:<protocol> groups=FD,SOCKET,IP4
ip6:<host>:<protocol> groups=FD,SOCKET,IP6
open:<filename> groups=FD,REG,NAMED,OPEN
openssl:<host>:<port> groups=FD,SOCKET,CHILD,RETRY,IP4,TCP,OPENSSL
openssl-listen:<port> groups=FD,SOCKET,LISTEN,CHILD,RETRY,RANGE,IP4,TCP,OPENSSL
pipe:<filename> groups=FD,FIFO,NAMED,OPEN
proxy:<proxy-server>:<host>:<port> groups=FD,SOCKET,CHILD,RETRY,IP4,TCP,HTTP
pty groups=FD,NAMED,TERMIOS,PTY
socks4:<socks-server>:<host>:<port> groups=FD,SOCKET,CHILD,RETRY,IP4,TCP,SOCKS4
socks4a:<socks-server>:<host>:<port> groups=FD,SOCKET,CHILD,RETRY,IP4,TCP,SOCKS4
stderr groups=FD
stdin groups=FD
stdio groups=FD
stdout groups=FD
system:<shell-command> groups=FD,FIFO,SOCKET,EXEC,FORK,TERMIOS,PTY,PARENT,UNIX
tcp4:<host>:<port> groups=FD,SOCKET,CHILD,RETRY,IP4,TCP
tcp4-listen:<port> groups=FD,SOCKET,LISTEN,CHILD,RETRY,RANGE,IP4,TCP
tcp6:<host>:<port> groups=FD,SOCKET,CHILD,RETRY,IP6,TCP
tcp6-listen:<port> groups=FD,SOCKET,LISTEN,CHILD,RETRY,RANGE,IP6,TCP
udp4:<host>:<port> groups=FD,SOCKET,IP4,UDP
udp4-listen:<port> groups=FD,SOCKET,LISTEN,CHILD,RANGE,IP4,UDP
udp6:<host>:<port> groups=FD,SOCKET,IP6,UDP
udp6-listen:<port> groups=FD,SOCKET,LISTEN,CHILD,RANGE,IP6,UDP
unix-connect:<filename> groups=FD,SOCKET,NAMED,UNIX
unix-listen:<filename> groups=FD,SOCKET,NAMED,LISTEN,CHILD,UNIX
socat TCP-LISTEN:2323,reuseaddr SYSTEM:'ls' &
socat TCP-LISTEN:<puerto_de_escucha>,fork TCP:<direccion_de_Y>:<puerto>
por ejemplo, si quieres que X escuche en el puerto 3333 y el proxy Y es 210.10.10.10:8080, el comando sería:
socat TCP-LISTEN:3333,fork TCP:210.10.10.10:8080
(la opcion fork es para que no se cierre al termina la primera conexión y puedas conectar todas las veces que quieras)
#!/bin/haserl
<HTML>
<HEAD>
<TITLE>Ejemplo basico de haserl</TITLE>
</HEAD>
<BODY>
<TABLE WIDTH="100%" HEIGHT="100%">
<TR>
<TD VALIGN="MIDDLE" ALIGN="CENTER">
<h1>esto es codigo HTML</h1>
<br>
<!-- la siguiente linea es una etiqueta haserl -->
<? echo "esto es codigo bash interpretado por haserl" ?>
<br>
<?
uptime
?>
<br>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>
Etiqueta haserl: <? AQUI PONER EL CODIGO BASH ?>
Voltar para Otro Tema (Foro Off Topics)
Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes