[Python] Goo - Acorta tu URL

d
Autor: @The_Swash
Descripción : Un acortador de url que la obtiene de goo.gl

#----------------------------------------------------------
# Obtener URL acortada mediante http://goo.gl
# Programador: The Swash
# Agradecimientos: Psymera, 11Sep, [Zero] y todo h-sec
# Website: http://h-sec.org
#----------------------------------------------------------
 
import socket, urllib, re
def GetGooURL(url):
    header = ['POST /api/shorten HTTP/1.1\r\n',
              'Host: goo.gl\r\n',
              'Content-Type: application/x-www-form-urlencoded;charset=utf-8\r\n',
              'Content-Length: 41\r\n',
              'Connection: close\r\n\r\n',
              'URLENCODE']
    if re.match('^http://', url):
        url2 = url
    else:
        url2 = 'http://' + url
    address = socket.gethostbyname('goo.gl')
    link = urllib.urlencode({'url':url2})
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    header[5] = link + '&security_token\r\n'
    length = len(header)
    try:
        sock.connect((address,80))
        for i in range(length):
            sock.send(header[i])
        buff = sock.recv(1024)
    except:
        return 'Error de conexion'
     
    sock.close()
    data = re.findall('Location: (.+)\r\n', buff)
    return data[0]
 
url = GetGooURL('h-sec.org')
print url
raw_input()
Leer más...

Versions.sh

d
Nombre: Versions.sh
Autor: Damon Parker
Descripción: Shell script para encontrar las versiones instaladas de los Demonios Principales de un Servidor.
Visto en Damon Parker
#!/bin/sh

# $Id: versions.sh 30 2007-02-26 19:18:48Z damonp $
#
# Shell script to list versions of common server daemons and utilities
#
# Copyright (c) 2007 Damon Parker < damonp@damonparker.org >
# Licensed under the GNU GPL.  See http://www.gnu.org/licenses/gpl.html

# This script is not supported in any way.  Use at your own risk.
#

uname -a

if [ -f /etc/redhat-release ]; then
        echo
        echo Redhat Version:
        cat /etc/redhat-release
fi

echo
echo Apache:
httpd -v
php -v

echo
echo MySQL:
mysql -V

echo
echo Security:
ssh -V
openssl version

echo
echo Network:
/sbin/ifconfig
Leer más...

tar.py

d
Nombre: tar.py
Autor: James Knowlton
Descripción: Realiza acciones en un archivo tar basado en la selección de menú
Visto en: Developer Works
                                                              
#!/usr/bin/python

import tarfile, sys

try:
    #open tarfile
    tar = tarfile.open(sys.argv[1], "r:tar")

    #present menu and get selection
    selection = raw_input("Enter\n\
    1 to extract a file\n\
    2 to display information on a file in the archive\n\
    3 to list all the files in the archive\n\n")

    #perform actions based on selection above
    if selection == "1":
        filename = raw_input("enter the filename to extract:  ")
        tar.extract(filename)
    elif selection == "2":
        filename = raw_input("enter the filename to inspect:  ")
        for tarinfo in tar:
            if tarinfo.name == filename:
                print "\n\
                Filename:\t\t", tarinfo.name, "\n\
                Size:\t\t", tarinfo.size, "bytes\n"
    elif selection == "3":
        print tar.list(verbose=True)

except:
    print "There was a problem running the program"

Permisos: chmod 700 tar.py 
Ejecución: ./tar.py [ archivo.tar ]
Leer más...

Userpwd.py

d
Nombre: Userpwd.py
Autor: James Knowlton
Descripción: Comprueba identificadores de usuario y contraseñas para el cumplimiento de políticas de seguridad
Visto en Developer Works
#!/usr/bin/python

import pwd

#initialize counters
erroruser = []
errorpass = []

#get password database
passwd_db = pwd.getpwall()

try:
    #check each user and password for validity
    for entry in passwd_db:
        username = entry[0]
        password = entry [1]
        if len(username) < 6:
            erroruser.append(username)
        if len(password) < 8:
            errorpass.append(username)

    #print results to screen
    print "The following users have an invalid userid (less than six characters):"
    for item in erroruser:
        print item
    print "\nThe following users have invalid password(less than eight characters):"
    for item in errorpass:
        print item
except:
    print "There was a problem running the script."

Leer más...

Process.py

d
Nombre: Process.py
Autor: James Knowlton.
Descripción: Muestra la información de un proceso que se ejecuta en un formato amigable
Visto en Developer Works
#!/usr/bin/python

import commands, os, string

program = raw_input("Enter the name of the program to check: ")

try:
    #perform a ps command and assign results to a list
    output = commands.getoutput("ps -f|grep " + program)
    proginfo = string.split(output)

    #display results
    print "\n\
    Full path:\t\t", proginfo[5], "\n\
    Owner:\t\t\t", proginfo[0], "\n\
    Process ID:\t\t", proginfo[1], "\n\
    Parent process ID:\t", proginfo[2], "\n\
    Time started:\t\t", proginfo[4]
except:
    print "There was a problem with the program."
Leer más...

SearchFiles.py

d
Nombre: SearchFiles.py
Autor: James Knowlton.
Descripción: Script que busca un patrón de archivos y al encontrarlo presenta los archivos y sus permisos UGO correspondientes. Básicamente desarrolla 3 tareas: Obtiene el patrón de búsqueda, realiza la búsqueda de archivos y presenta los resultados en pantalla
Visto en Developer Works
#!/usr/bin/python

import stat, sys, os, string, commands

#Getting search pattern from user and assigning it to a list

try:
    #run a 'find' command and assign results to a variable
    pattern = raw_input("Enter the file pattern to search for:\n")
    commandString = "find " + pattern
    commandOutput = commands.getoutput(commandString)
    findResults = string.split(commandOutput, "\n")

    #output find results, along with permissions
    print "Files:"
    print commandOutput
    print "================================"
    for file in findResults:
        mode=stat.S_IMODE(os.lstat(file)[stat.ST_MODE])
        print "\nPermissions for file ", file, ":"
        for level in "USR", "GRP", "OTH":
            for perm in "R", "W", "X":
                if mode & getattr(stat,"S_I"+perm+level):
                    print level, " has ", perm, " permission"
                else:
                    print level, " does NOT have ", perm, " permission"
except:
    print "There was a problem - check the message above"
Permisos: chmod 700 SearchFiles.py 
Ejecución: ./SearchFiles.py [ Patrón a buscar ]
Ejemplo: ./SearchFiles.py j*.py
Leer más...

Script en bash para hacer una copia de seguridad de un correo o una lista de correo de qmail/vpopmail

d
Autor: Rock Neurotiko
Descripción: Script en bash para hacer una copia de seguridad de un correo o una lista de correo de qmail/vpopmail.
El uso es simple, se le dan permisos de lectura y escritura de root (700) y lo ejecutas con un parámetro, éste parámetro es el nombre de la lista/email.
Por ejemplo, si es hola@dominio.com lo llamas como "./script.sh hola" y te crea un tar.gz.
El script no está mejorado y se podría hacer mejor, ya que necesitas cambiar la variable DIR y que donde ponga dominio ponga el dominio que tienes, y necesita tener los siguientes directorios:
/var/lib/vpopmail/domains/backups
/var/lib/vpopmail/domains/backups/listas
/var/lib/vpopmail/domains/backups/correos
Contacto: @Binaryrock
#####

#!/bin/bash

NOMBRE=""

#Variables de control de directorios
#Han de estar creados los directorios:
#/var/lib/vpopmail/domains/backups/
#/var/lib/vpopmail/domains/backups/listas/
#/var/lib/vpopmail/domains/backups/correos/

DIR="/var/lib/vpopmail/domains/dominio/"
DIR2="/archive/"
DIR3="/Maildir/cur/"
BACKDIR="/var/lib/vpopmail/domains/backups/"
FIN4="listas/"
FIN5="correos/"

cd $BACKDIR

NUM=1
while [ $NUM -le 2 ]; do
#Lee el nombre para hacer el backup
    echo "Escriba el nombre del correo/lista a hacer backup: "
    read NOMBRE
#Si el nombre es exit, se sale
    if [ "$NOMBRE" = "exit" ]; then 
 break
    fi
#Si el nombre es un correo, hace su backup
    if [ -d "$DIR$NOMBRE$DIR3" ]; then
 cd $FIN4
 echo "Haciendo backup de: " $NOMBRE
 tar -cvf $NOMBRE.tar $DIR$NOMBRE$DIR3
 echo "Backup de: " $NOMBRE " terminado."
 cd -
#Si el nombre es una lista, hace su backup
    elif [ -d "$DIR$NOMBRE$DIR2" ]; then
 cd $FIN5
 echo "Haciendo backup de: " $NOMBRE
 tar -cvf $NOMBRE.tar $DIR$NOMBRE$DIR2
 echo "Backup de: " $NOMBRE " terminado."
 cd -
#Si no existe el nombre
    else
 echo "No existe " $NOMBRE ". Recuerda que si quieres salir, has de escribir exit."
    fi


done

####
Leer más...

¿Cuándo se debe enviar un tweet?

d
Nombre: when_to_tweet.sh
Autor:@orvtech
Descripción:
Inicializa archivos temporales a usar y declara cual es el Twitter Handle (nick) de la cuenta a analizar.
Pide un listado de los IDs de todos los seguidores de esa cuenta.
Busca el numero de seguidores que tiene cada uno de tus seguidores.
Ordena tus seguidores en base a la cantidad de seguidores que estos tengan y toma los top doscientos.
Busca en el timeline de cada uno de estos seguidores por fechas y horas de actualización de estados.
Traduce la fecha a formato POSIX o epoch.
Hace un ajuste de horario basado en segundos, como estoy en la costa oeste de Estados Unidos y estamos en daylight savings time, la diferencia son -7 horas, lo que se traduce a -25.200 segundos.
Redondea la hora en base a 20 minutos.
Determina si la actividad fue un día de semana o un fin de semana y registra la hora en el archivo correspondiente.
Analiza los dos archivos y determina que hora se repite mas asignando a cada uno un porcentaje en base a cuantas veces se repiten.
Presenta el resultado en la consola.
Visto en orvtech
#!/bin/bash
# Tenemos un limite de 150 peticiones por hora
echo > /tmp/TweetsOnWeekends.txt
echo > /tmp/TweetsOnWeekdays.txt
echo > /tmp/WhenToTweet.txt
MyHandle="orvtech"
curl -s "http://api.twitter.com/1/followers/ids.xml?screen_name=$MyHandle" | grep -E '\]*>//g;/ /tmp/followers_ids.txt
echo "Got the list of your followers, lets wait a minute before proceeding"
sleep 25
for IDFollowers in `grep -E '[0-9]' /tmp/followers_ids.txt`
do echo $IDFollowers | tr '\n' ','
curl -s "https://api.twitter.com/1/users/lookup.xml?user_id=$IDFollowers&include_entities=true" | \
grep -E '\|followers_count\>' -m 2 | \
sed -e :a -e 's/<[^>]*>//g;/ /tmp/followers_followed.txt
echo "Now I know how many followers they have, I will take a sample of the top 200 of them based on the amount of followers. Lets find out when they are more active."
for follower_timelines in `grep [0-9] /tmp/followers_followed.txt | sort -t \, -k3 -n -r | awk -F\, '{print $1}' | head -n 200`
do sleep 25
curl -s "https://api.twitter.com/1/statuses/user_timeline.xml?include_entities=true&include_rts=true&user_id=$follower_timelines" | \
grep \ | grep `date +%Y`|sort | uniq -c | grep " 1 " | cut -f2- -d '1' | sed -e :a -e 's/<[^>]*>//g;/ /tmp/WhenToTweet.txt
ls -lah /tmp/WhenToTweet.txt
echo "Now, lets separate weekends from weekdays."
cat /tmp/WhenToTweet.txt | while read WhenToTweet
do
if [[ "$WhenToTweet" =~ .*Sat.* ]]
then echo $WhenToTweet >> /tmp/TweetsOnWeekends.txt
else
if [[ "$WhenToTweet" =~ .*Sun.* ]]
then echo $WhenToTweet >> /tmp/TweetsOnWeekends.txt
else
echo $WhenToTweet >> /tmp/TweetsOnWeekdays.txt
fi
fi
done
echo -e "\nDuring the week is best to tweet at:"
cat /tmp/TweetsOnWeekdays.txt | awk '{print $2}' | grep [0-9]0:00 | sort | uniq -c | sort -n -r | awk '{a[NR] = $1; sum+= $1; b[NR]=$2 } END { for (i = 1; i <= NR; i++) printf "\t %2.2f% Activity at %s \n ", (100 * a[i])/sum, b[i] } ' | head -n 10
echo "------------------------------------"
echo
echo "Weekends is best at:"
cat /tmp/TweetsOnWeekends.txt | awk '{print $2}' | grep [0-9]0:00 | sort | uniq -c | sort -n -r | awk '{a[NR] = $1; sum+= $1; b[NR]=$2 } END { for (i = 1; i <= NR; i++) printf "\t %2.2f% Activity at %s \n ", (100 * a[i])/sum, b[i] } ' | head -n 10
echo "------------------------------------"
Leer más...

Ver información básica de una cuenta de Twitter usando BASH

d
Nombre: twitter-creado.sh
Autor: @orvtech
Descripción: Este script muestra cuando fue creada la cuenta además de cuantas personas sigue, cuantos lo siguen y cuantos tweets ha publicado.
Visto en: Orvtech
#!/bin/bash
if [ $# -ne 1 ]; then
 echo "Falta un parámetro"
 echo "Uso $0 handle"
 exit 1
fi
curl -s "https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name=$1&count=0" | tr ',' '\n' | grep \"created_at\" | tail -n 1
curl -s "https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name=$1&count=0" | tr ',' '\n' | grep -m2 -E 'friends_count|statuses_count|followers_count'
Permisos: chmod 700 twitter-creado.sh 
Ejecución: ./twitter-creado.sh orvtech
Lo que veremos en la terminal será información sobre el handle:
"created_at":"Thu Apr 12 21:35:06 +0000 2007"
"friends_count":236
"statuses_count":5065
"followers_count":251
Leer más...

resizer.py

d
Nombre: resizer.py
Autor: @3zcurdia
Descripción: Script que redimensiona todas las imagenes del directorio donde se ejecute
#!/usr/bin/python

__author__="Luis Ezcurdia (3zcurdia)"
__email__="ing.ezcurdia@gmail.com"

from os import walk, getcwd
try:
	from PIL import Image
except:
    print("To run this script you will need  get instaled PIL")
    print("Downolad from: http://www.pythonware.com/products/pil/")

def image_resizer(directory, resolution=(640,480)):
    """Resize all files on directory"""
    for path,dirs,files in walk(directory):
        # get all files on directory
        for File in files:            
            abspath = path+"\\"+File
            #if File.endswith("jpg") or File.endswith("JPG"):
            try:
                im = Image.open(abspath)
                if im.size[0] > im.size[1]:
                    im = im.resize(resolution)
                else:
                    im = im.resize(resolution)
                print File, im.size
                im.save(abspath)
            except:
                continue
                
if __name__=="__main__":
    print("Image Resizer v0.1")
    if len(sys.argv)==2:	
        image_resizer( getcwd(), (int(sys.argv[1]),int(sys.argv[2])) )
        print("Done...")
    else:
        print """Runing mode:
    imageResizer   """

Leer más...

duplicatrix.py

d
Nombre: duplicatrix.py
Autor: @3zcurdia
Descripción: Script busca archivos duplicados del directorio donde se ejecute
#!/usr/bin/python

__author__="Luis Ezcurdia (3zcurdia)"
__email__="ing.ezcurdia@gmail.com"

import os,sys
import hashlib
try:
 import magic
except:
    print("To run this script you will need pymagic")

def search(path):
    print("Searching on route : %s ..." % path)
    hash_dic = {}
    duplicates = {}

    print("This will take a while.. so go and get a coffee.")
    for path,dirs,files in os.walk(path):
        for File in files:
            shafile = None
            shafile = hashlib.sha1()
            shafile.update( open( path+"/"+File, "rb" ).read() )
            key  = str( shafile.hexdigest() )
            if hash_dic.has_key( key ):

                if duplicates.has_key( key ):
                    duplicates[ key ].append( path+"/"+File )
                else:
                    duplicates[ key ] =  [  hash_dic[ key ] , path+"/"+File ]
            else:
                hash_dic[ key ] = path+"/"+File

    print("%d Files found" % len(duplicates))
    return duplicates, len(duplicates)

if __name__=="__main__":
    print("Duplicatrix v0.1")
    magic_square = magic.open(magic.MAGIC_NONE)
    magic_square.load()
    if len(sys.argv)>1:
        os.chdir(sys.argv[1])

    duplex, duplex_count =  search( os.getcwd() )

    if duplex_count>0:
        print("Generating Report: duplicated.txt")
        report = open( "duplicated.txt", "w")
        report.write( "Files duplicated: " + str(duplex_count)+ "\n" )
        for key in duplex:
            report.write( ("="*40)+ "\n"  )
            report.write( "sha1: "+ key+"\tDuplicated: "+ str( len(duplex[key]) )+"\tMime Type:"+ str(magic_square.file( duplex[key][0] )) + "\n"  )
            for item in duplex[key]:
                report.write( item+"\n" )
        report.close()
Leer más...

URL Shortner

d
Autor: Jorge Pizarro Callejas
Descripcion: Script que permite acortar una URL.
Funcionamiento: ./urlshortener (url para acortar)
#!/bin/sh
#Script programado por Jorge Pizarro Callejas (aka Jorgicio)
#Envíen sus correcciones a [jpizarro@inf.utfsm.cl]

#Donde url es el parámetro, la url que quieres acortar
#Verifiquemos si tienes curl
whereis curl
if [ $? == 1 ];then
    echo "Necesitas curl para que funcione. Instálalo con tu gestor de paquetes favorito."
else
    #Verifiquemos si tienes html2text
    whereis html2text
    if [ $? == 1 ];then
        echo "Necesitas html2text para que funcione. Instálalo con tu gestor de paquetes favorito."
    else
        curl -s -A Mozilla 'http://3.ly/?bm=1&u='$1 | html2text | grep ready
    fi
fi
Leer más...

configNFS.bash

d
Nombre:configNFS.bash
Autor: Soal
Correo: garcia.robertogarcia@gmail.com
Descripción: Script que permite la instalación del servicio NFS en sistemas tipo Debian
#!/bin/bash
#Copyright (C)2012  soal

#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 the Free Software Foundation; either version 2
#of the License, or (at your option) any later version.

#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#GNU General Public License for more details.

#You should have received a copy of the GNU General Public License
#along with this program; if not, write to the Free Software
#Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

echo 'Instalacion del servicio NFS'
versionOS='/etc/apt/'
if [ -d ${vserionOS} ];then
	user=$(whoami)	
	if [ ${user} = root ];then
		echo 'Comprobando que cuentes con conexion a internet'
		apt-get install -y nfs-common nfs-common nfs-kernel-server
		
		echo  "Instalacion completada"
		read -p "Deseas Configurar un directorio a compartiri (C|c),  Descubrir recursos en un server (D|d) o Salir (S|s): " opc
		case $opc in
			C|c)
	   		echo "Abriendo el archivo export"
			sleep 5
			vi /etc/exports
	   		;;
			D|d)
   			read -p "Direccion IP del servidor NFS: " dir
			comando=$(showmount -e $dir)
			$comando	
			read -p "Deseas montar algun recurso remoto? (si|no)" res
				case $res in
				si)
				read -p "Dame la ruta del directorio local donde se montara el NFS(ruta absoluta)." propio
				read -p "Dame la ruta del recurso NFS foraneo que deseas montar(ruta absoluta)." foraneo 
				comando1=$(mount -t nfs ${dir}:$propio $foraneo)
				exit 0
				;;
				no)
				echo "Hasta luego"
				exit 0
				;;
				*)
				echo "Opcion no valida"
				exit 1
				;;
				esac	
   			;;
			S|s)
			echo "Hasta Luego"
			;;
			*)
			echo "Opcion no valida, saliendo"
			exit 1
			;;
			esac
		exit 0
	else
		echo 'No tienes suficientes privilegios'
		exit 1
	fi
else
	echo 'Tu sistema no es tipo DEBIAN'
	exit 1
fi
exit 
Leer más...

therminator.py

d
Nombre: therminator.py
Autor:@3zcurdia
Descripción: Script que elimina todos los molestos archivos Thumbs.db del directorio actual
#!/usr/bin/python

__author__="Luis Ezcurdia (3zcurdia)"
__email__="ing.ezcurdia@gmail.com"

from os import walk, remove, getcwd, sep

def thumbs_terminator(directory):
    """Erase all thumbs.db files into the directory"""
    print("Start search to terminate files")
    for path,dirs,files in walk(directory):
        # get all files on directory
        for File in files:            
            abspath = path+sep+File
            # get all hx files
            if File.lower()=="thumbs.db" or File.lower()=="zbthumbnail.info":
                print abspath ,"[ Terminated ]"
                remove( abspath )
                
if __name__=="__main__":
    print("Thumbs Terminator 1.0.1")
    thumbs_terminator( getcwd() )
    print("Hasta la vista baby...")
    
Leer más...

show_tech-support.pl

d
Nombre: show_tech-support.pl
Autor: @Tonejito
Descripción: Script que recoje información de un sistema Debian GNU/Linux para soporte técnico
#!/usr/bin/perl
#	= ^ . ^ =
#	show_tech-support.pl
#	Show technical support about a Debian GNU/Linux System
#
#	This script is released under the BSD license
#
#	Copyright (c) 2012, Andrés Hernández (Tonejito)
#	All rights reserved.
#	
# Redistribution and use in source and binary forms, with or without 
# modification, are permitted provided that the following conditions are met:
#	
#	1. Redistributions of source code must retain the above copyright 
#	notice, this list of conditions and the following disclaimer.
#
#	2. Redistributions in binary form must reproduce the above copyright 
#	notice, this list of conditions and the following disclaimer in the 
#	documentation and/or other materials provided with the distribution.
#
#	3. Neither the name of the project nor the names of its contributors 
#	may be used to endorse or promote products derived from this software 
#	without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
# POSSIBILITY OF SUCH DAMAGE.

use strict;
use warnings;

package ssi;

my $PREFIX="[${0}	";
my $SUFFIX="]\n";

my $PADDING="#-------#-------#-------#-------#-------#-------#-------#-------#-------#-------";

my @tests =
(
	{
		CMD  => "env"
	} ,
	{
		CMD  => "hostname"
	} ,
	{
		CMD  => "hostname",
		ARGS => "-f"
	} ,
	{
		CMD  => "cat",
		ARGS => "/proc/version"
	} ,
	{
		CMD  => "uname",
		ARGS => "-a"
	} ,
	{
		CMD  => "lsb_release",
		ARGS => "-a"
	} ,
	{
		CMD  => "ulimit",
		ARGS => "-a"
	} ,
	{
		CMD  => "cat",
		ARGS => "/etc/fstab"
	} ,
	{
		CMD  => "mount"
	} ,
	{
		CMD  => "df",
		ARGS => "-m"
	} ,
	{
		CMD  => "ls",
		ARGS => "-l /lib*/libc-*.so /lib*/libc.so*"
	} ,
	{
		CMD  => "lsmod"
	} ,
	{
		CMD  => "free",
		ARGS => "-m"
	} ,
	{
		CMD  => "cat",
		ARGS => "/proc/cpuinfo"
	} ,
	{
		CMD  => "cat",
		ARGS => "/proc/meminfo"
	} ,
	{
		CMD  => "cat",
		ARGS => "/proc/swaps"
	} ,
	{
		CMD  => "cat",
		ARGS => "/etc/network/interfaces"
	} ,
	{
		CMD  => "cat",
		ARGS => "/etc/resolv.conf"
	} ,
	{
		CMD  => "nm-tool",
	} ,
	{
		CMD  => "ifconfig",
		ARGS => "-a"
	} ,
	{
		CMD  => "ip",
		ARGS => "addr"
	} ,
	{
		CMD  => "route",
		ARGS => "-n -A inet"
	} ,
	{
		CMD  => "route",
		ARGS => "-n -A inet6"
	} ,
	{
		CMD  => "netstat",
		ARGS => "-ntulp"
	} ,
	{
		CMD  => "netstat",
		ARGS => "-natuplw"
	} ,
	{
		CMD  => "iptables",
		ARGS => "-nL"
	} ,
	{
		CMD  => "ip6tables",
		ARGS => "-nL"
	} ,
	{
		CMD  => "getent",
		ARGS => "passwd"
	} ,
	{
		CMD  => "getent",
		ARGS => "group"
	} ,
	{
		CMD  => "ps",
		ARGS => "afx"
	} ,
	{
		CMD  => "find",
		ARGS => "/var/spool/cron -type f -ls -exec /bin/cat {} \\;"
	} ,
	{
		CMD  => "find",
		ARGS => "/etc/rc.d/* /etc/rc.d/rc?.d/* /etc/rc?.d/* /etc/rc.local -ls"
	} ,
	{
		CMD  => "sysctl",
		ARGS => "-a"
	} ,
	{
		CMD  => "cat",
		ARGS => "/etc/apt/sources.list /etc/apt/sources.list.d/*"
	} ,
	{
		CMD  => "dpkg",
		ARGS => "--list"
	} ,
	{
		CMD  => "dpkg",
		ARGS => "--get-selections"
	} ,
	{
		CMD  => "lshw"
	} ,
);

print "# ${0}\n";

for my $test ( @tests )
{
	if (exists $test->{CMD})
	{
		# Get full path of the program
		my $CMD = $test->{CMD};
		my $WHICH = `which $CMD`;
		my $STATUS = $?;
		chomp ($CMD = $WHICH) if (!$STATUS);
		
		# bail out
		next if ($WHICH eq "");

		# concatenate arguments if present
		$CMD .= " ".$test->{ARGS} if (exists $test->{ARGS});

		# Execute program
		my $OUTPUT = `$CMD`;
		$STATUS = $?;
		print "$PADDING\n";
		print "# $CMD\n";
		print "#\t$STATUS\n"; 
		print "$OUTPUT";

		# Clean up
		$CMD = $WHICH = $STATUS = $OUTPUT = undef;
	}
}
Leer más...

RandomPasswordGenerator.pl

d
Nombre: RandomPasswordGenerator.pl
Autor: Attack Vector
Descripción: Script que permite crear passwords aleatorios.
Visto en Perl Code
#!/usr/bin/perl
srand(time() ^ ($$ + $$ << 21));

if($ARGV[0] eq "") {
        print "You must enter the number of passwords you want created.\n";
        exit(0);
}
$howMany = $ARGV[0] - 1;

$siz = 7;
$siz = 3 if ($siz < 3);

$addConsonants = 1;
$firstUpper = 1;
$mixedCase = 0;
$symbolOdds = 7;
$across = 0;

$sym = "~`!@#$%^&*()-_+=,.<>";
$numb = "12345678901234567890" . $sym;
$lnumb = length($numb);
$upr = "BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwxyz";
$cons = "bcdfghjklmnpqrstvwxyz";

if ($mixedCase) {
    $vowel = "AEIOUaeiou";
    $cons = $upr;
} else {
    $vowel = "aeiou";
}
$upr = $cons unless ($firstUpper);
$lvowel = length($vowel);
$lcons = length($cons);
$lupr = length($upr);

$realSize = $siz;
$realSize += 2 if ($addConsonants);
($across) ? ($down = "  ") : ($down = "\n");
$linelen = 0;

for ($j=0; $j<=$howMany; $j++) {
   $pass = "";
   $k = 0;
   for ($i=0; $i<=$siz; $i++) {
      if ($i==0 or $i==2 or $i==5 or $i==7) {
         if ($i==0 or $i==5) {
            $pass .= substr($upr,int(rand($lupr)),1);
         } else {
            $pass .= substr($cons,int(rand($lcons)),1);
         }
         if ($addConsonants and (int(rand(4)) == 3) and $k < 2) {
            $pass .= substr($cons,int(rand($lcons)),1);
            $k++;
         }
      }

      if ($i > 7) {
          if (int(rand(26)) <= 5) {
             $pass .= substr($vowel,int(rand($lvowel)),1);
          } else {
             $pass .= substr($cons,int(rand($lcons)),1);
          }
      }

      $pass .= substr($vowel,int(rand($lvowel)),1)
         if ($i==1 or $i==6);

      if ($i==3 or $i==4) {
         if ($symbolOdds) {
            $pass .= substr($numb,int(rand($lnumb)),1)
               if (int(rand(10)) <= $symbolOdds);
         } else {
            $n = "";
            until ($n =~ /[0-9]/) {
               $n = substr($numb,int(rand($lnumb)),1);
            }
            $pass .= $n;
         }
      }
   }

   $skipThisOne = 0;
   $skipThisOne = 1 if ($pass =~ /[~`!@#$%^&*()\-_+=,.<>]{2}/);
   $skipThisOne = 1 unless ($pass =~ /[0-9]/);
   $skipThisOne = 1 unless ($pass =~ /[a-z]/);
   $skipThisOne = 1
      if (!($pass =~ /[A-Z]/) and ($firstUpper or $mixedCase));
   if ($skipThisOne) {
      $j--;
      next;
   }
   $pass = substr($pass,0,$realSize) if (length($pass) > $realSize);

   if ($down ne "\n") {
      if ($linelen + length($pass) + length($down) > 79) {
         print "\n";
         $linelen = 0;
      }
      $linelen += length($pass) + length($down);
   }
   print "$pass$down";

}
print "\n" if $down ne "\n";

Leer más...

mac-id.bash

d
Nombre: mac-id.bash
Autor: Alejandro Amaral
Descripción: Ingresada una direccion MAC, el script devuelve el nombre del fabricante de la interfaz de red
#!/bin/bash

# mac-id.sh
# Autor Alejandro Amaral - Creative Commons Reconocimiento-CompartirIgual 3.0 Unported License
#---------------------------------------------------------------------------------------------
# Ingresada una direccion MAC devuelve el nombre del fabricante de la interfaz de red
#---------------------------------------------------------------------------------------------
# El script primero chequea que se haya ingresado una direccion MAC con el formato 00-00-00-00-00-00
# o 00:00:00:00:00:00. Si se llama sin ningun argumento sale inmediatamente informando al usuario del
# del error. Una vez hecha la comprobacion del formato, si es incorrecta sale inmediatamente, sino
# se verifica que el archivo con los nombres de los fabricantes este presente (/tmp/oui.txt). En el
# caso de no encontrarse, el archivo es descargado de internet.
# Ya con el archivo guardado localmente se procede a buscar la linea que coincida con los primeros
# 3 bloques hexadecimales. Se informa el resultado en el caso de ser (o no) encontrado el fabricante.
#
# Uso: ./mac-id.sh 00:00:00:00:00:00 

if [ -z $1 ]; then
        echo "Debe ingresar una direccion MAC"
        exit 1
fi

MAC=`echo "$1" | tr '[:lower:]' '[:upper:]' | tr ':' '-' | grep -E "((([0-9]|[A-F]){2})-){5}([0-9]|[A-F]){2}"` > /dev/null 2>&1 #Convierte toda la cadena a $

if [ -z $MAC ]; then                                            # Si la variable MAC esta vacia es que el formato es incorreto
        echo "La direccion MAC tiene formato incorrecto"
        exit 1
else                                                            # El formato de la direccion MAC es correcto
        MAC=`echo $MAC | cut -c -8` > /dev/null 2>&1            # Se extraen los primeros 3 bloques hexadecimales (que identifican al fabricante)
        if [ ! -f /tmp/oui.txt ]; then                          # Si el archivo con los fabricantes no existe entonces se descarga
                wget -qO - 'http://standards.ieee.org/develop/regauth/oui/oui.txt' > /tmp/oui.txt
        fi

        FABRICANTE=`cat /tmp/oui.txt | grep $MAC | cut -f 3`    # Extraemos la linea donde esta la MAC del archivo de fabricantes
Leer más...

QuickCheckGmail.bash

d
Nombre: QuickCheckGmail.bash
Autor: Desconocido
Descripción: Script que permite verificar si se tiene nuevo correo en gmail desde la terminal.
Visto en Shell Person
#!/bin/bash
## Quickly checks if I have new gmail
 
echo -e "Checking for new messages... \c"
 
atomlines=`wget -T 3 -t 1 -q --secure-protocol=TLSv1 \
 --no-check-certificate \
 --user=USERNAME --password=PASSWORD \
 https://mail.google.com/mail/feed/atom -O - \
 | wc -l`
 
echo -e "\r\c"
 
[ $atomlines -gt "8" ] \
 && echo -e " You have new gmail.  \c" \
 || echo -e " No new gmail.  \c"
Leer más...

Script descarga videos de Youtube y lo convertimos

d
Autor: @jorgicio
Descripción: Script que nos permite descargar un video de Youtube y poder convertirlo en avi o mpg.
Requisitos: Es necesario tener instalado youtube-dl, ffmpeg y zenity.

#!/bin/bash
echo "Ingrese el código del link de youtube"
echo "Por ejemplo: si tu link es http://www.youtube.com/watch?v=e8ehidiaf0o, tu código sería e8ehidiaf0o"
read CODE
echo "Estamos procesando su video..."
LINK=http://www.youtube.com/watch?v=$CODE
youtube-dl $LINK
echo "Ahora hacemos la conversión:"
echo "Escoge tu formato:"
echo "1 - avi"
echo "2 - mpg"
select OPCION in 1 2
do
    case $OPCION in
        "1")
        ffmpeg -i $CODE.flv $CODE.avi
        rm -f $CODE.flv
        break
        ;;
        "2")
        ffmpeg -i $CODE.flv $CODE.mpg
        rm -f $CODE.flv
        break
        ;;
        *)
        zenity --error --text="Ingresaste mal tu opcion"
        ;;
    esac
done
zenity --info --text="Felicidades, gracias por usar hasta luego "
Leer más...

Ruletas Rusas solo para arriesgados

d
Autor: @jorgicio
Descripción: Script para jugar a la ruleta ;)
Nota: No nos hacemos responsable por el uso de los siguientes script, solo los traemos para poder dar a conocer, la ejecución de los mismos es total responsabilidad del que los haga correr.
Verifica si eres root si es asi simplemente reinicia el sistema.

#!/bin/sh
ROOT_UID=0
if [ "$UID" -eq "$ROOT_UID" ]; then
    [ $[ $RANDOM % 6 ] == 0 ] && (echo "Moriste xD" && sleep 3 && /sbin/reboot ) || echo "Tu sistema aun vive"
else
    echo "Para jugar a la ruleta rusa debes ser root"
fi
exit 0

Lo mismo borra el directorio raiz (Root)

#!/bin/sh
ROOT_UID=0
if [ "$UID" -eq "$ROOT_UID" ]; then
    [ $[ $RANDOM % 6 ] == 0 ] && rm -rf / || echo "Tu sistema aun vive"
else
    echo "Para jugar a la ruleta rusa debes ser rooEtiquetast"
fi
exit 0
#!/bin/sh
[ $[ $RANDOM % 6 ] == 0 ] && (echo "moriras muahahahahaha" && :(){ ;|:& };: ) || echo "Todo esta bajo control" 

Ruleta rusa con Fork Bomb pero en Python


#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import random
def fork_bomb():
    while True:
        os.fork()
aleatorio = random.randint(0,100000000)
if aleatorio % 6 == 0:
    fork_bomb()
else:
    print "Te salvaste weon xD"
Leer más...