Sunday, September 24, 2017

How to Use C Programming Language with Python



C is one of the first programming language a programmer should learn. But the syntax of the language and semicolons make it hard. But C is the most powerful language ever created. So, we want to use power of C in python and python provides a very good way to do so.

On windows the C runtime is msvcrt.dll which is located in C:\Windows\System32 and on linux it is libc.so.6. We will write a code in Windows and see the result. So Let us C -


from ctypes import *
msvcrt=cdll.msvcrt
message_string="My Name is Anthony\n"
msvcrt.printf("Testing %s",message_string)

In the above code we import all the modules of ctypes, which is responsible for using C in python. Then assign a variable to the dll we need to run the code in the second line. Next, the string we want to print. In the next statement we use pure C function printf() to print our message.

Similarly for Linux OS we need to do a little change. Just replace the second statement to have that libc.so.6. e.g.


from ctypes import *
libc = CDLL("libc.so.6")
message_string="My Name is Anthony\n"
msvcrt.printf("Testing %s",message_string)

That's all for today. In the next entry we'll learn about structure and Union.

(ref: Gray Hat Python)

Thursday, August 31, 2017

Extracting Email id Using Python Regular Expression



Regular expression is handy for extracting important part from a document or a string.  Suppose you want to extract email id from a string then it can be easily done by '\S+@\S+' this expression. Where \S represents non-whitespace character, then followed by an @ sign and again by \S;as actually it is in a generic email id. So , let's get the code and extract email id - 


import re

str = 'I have tried to email you at medhrk@gmail.com but it did not work so I send the mail to you by using your rediff account idhrk@rediffmail.com  at  @2PM'

lst = re.findall('\S+@\S+', str)

print lst  


The output will be  - ['medhrk@gmail.com',ídhrk@rediffmail.com],  

Wednesday, July 5, 2017

Copying with Pyperclip


Pyperclip is a python module for copying and pasting clipboard content. pyperclip.copy() and pyperclip.paste() functions are the main functions of the modules and works in the same manner as the name implied. Peruse the below code and try to grasp what the code will do -

import pyperclip

while True:
    fh=open('allcopies1.txt','a+')    
    text=str(pyperclip.paste())
    if text not in str(fh.read()):
        fh.write(text)
        fh.write("\n\r\n")
    else:
        print "Already Copied"
        fh.close()
        break
fh=open('allcopies1.txt','r')
for word in fh:
    print word
       

This program is useful when you need to have a file for storing all the copied content. Make sure the file has a 777 permission. After opening the file we check if the content of the clipboard copied previously? If not then it adds the clipboard content to the file.
A small but useful tool for big future programs. Can you name me instances when it can be used.

ref: Automate boring stuff by python.

Monday, July 3, 2017

Web Scraping with Python


The main modules which are needed for web related operations are urllib, urlopen, requests, selenium. Other than this four there are other main and supporting modules like beautifulsoup, webbrowser are there. so, let's start with urllib  -

Follow the below code closely -

import urllib
ts=urllib.urlopen("http://pythonbeginner.in")
for textscript in ts:
    print textscript

This code first fetches the whole content of a website and display them line wise. As simple like that. In web scraping, we have to find a given information in a web page. The projects I have got are mostly something like  -  go through the website on a regular basis and update the price of a product accordingly. Or, it can be useful in share market auto trading etc. 
Suppose, we have to find how many times the word 'python' is used in the code. Then what will we do? Web scrapers often face problems like this. Let's look at the second code - 

import urllib,re
ts=urllib.urlopen("http://pythonbeginner.in")
count=0
for line in ts:
    if re.search('python',line):
        print line
        count+=1
print count

Remember the codes from the entry Regular Expression. Here I used the same code to find out the number of times the word 'python' occurs. It found out that I have used it 38 times on the website main page😮.

You can open any page in your default browser with the module webbrowser. Look at the example -

import webbrowser
webbrowser.open("www.yahoo.com")

But for dynamic web pages where the pages are created by ajax, javascript or any other run-time programs then the web scraping becomes difficult. As in the above example, we are getting a static web page, not a dynamic one. To get dynamic values we need to use selenium. I will discuss it in the next blog entry. Wait for it.


Sunday, July 2, 2017

Masking Columns in a database


This simple code was one of my project in fiverr.com, a project worth $20. In this code we have to select a database, find certain values in a column according to id and then replace the value by 'x' or numbers by 'y', so that it will be safe. The other part of the code is to keep the original data in a backup file so that we get the data when needed. Look at the code , and see the comments for better understanding of the code

-

See below is the program named databasemask.py , a program which is responsible for masking and backing up the data which will be replaced. Here, in this particular problem we have the database with tables album,customer and invoice , so we declare three dictionaries to hold their values. Lets divulge the secret of the code with comments now -


##As Described above they are for the tables in the database
album = {}
customer = {}
invoice = {}

class Cipherise(): 

"""This class  is for replacing characters with 'x' and numbers with 'y' for a particular column of the table"""
    def __init__(self, key, *the_phrase):

##Initialize with key, and the_phrase, as the_phrase can be a dictionary or a list we use *
        self.num = key
        self.the_phrase = the_phrase
        self.orginal_phrase = the_phrase #retain the initial value in the orginal_phrase value
        self.converted_phrase = ""#initialize converted_phrase with blank string value 

    def __str__(self):
        return """This is for substituting characters with X and numeric with Y"""

    # def convert(self): #You can use this function if you a pass only string ,not a list  to the database
    #     for i in self.the_phrase:
    #
    #         try:
    #             i = int(i)
    #             i = 'Y'
    #             self.converted_phrase += i
    #         except:
    #             i = 'X'
    #             self.converted_phrase += i
    #
    #     return self.converted_phrase

    def convertall(self): ##This is responsible for converting
        maskedlist = [] ## we create an empty masked list
        for phrase in self.the_phrase: ##we peruse through the phrase, remember here the dictionary is supplied
            # print "the phrase as whole",self.the_phrase #To verify what is passed
            for singlephrase in phrase: #Now we peruse through
                self.converted_phrase = '' #start with an empty phrase and then add characters
                for singlechar in singlephrase:
                    try:
                        singlechar = int(singlechar) #See if it is convertible to integer or not
                        singlechar = 'Y' #if yes, then replace it by Y
                        self.converted_phrase += singlechar #Add the value to converted_phrase
                    # print self.converted_phrase
                    except:
                        if singlechar==" ": #Except add X as a replacement of any character
                            singlechar=" "
                            self.converted_phrase += singlechar
                        else:
                            singlechar="X"
                            self.converted_phrase += singlechar

                print (singlephrase)

                maskedlist.append(self.converted_phrase) #Appending the list to maskedlist List variable

        return maskedlist #Returning the masked list from the function

    def getoriginal(self):
        return self.orginal_phrase #Return the original phrase if needed

    def createdictionary(self):#Testing purpose, as here we have a album table this will create an album backup
        global album
        album[self.num] = self.orginal_phrase

    def getdictionary(self):
        global data
        return data


def getbackupalbum():
    f = open('album.txt', 'a+')
    for i in album:
        f.write(str(i) + "," + str(album[i]) + "\n")
    f.close()


def getbackupcustomer():
    f = open('customer.txt', 'a+')
    for i in customer:
        f.write(str(i) + "," + str(customer[i]) + "\n")
    f.close()


def getbackupinvoice():
    f = open('invoice.txt', 'a+')
    for i in invoice:
        f.write(str(i) + "," + str(invoice[i]) + "\n")
    f.close()









from databasemask import *
import sqlite3 as db


scope=str(input("Enter the File Name: "))
database=str(input("Enter the database name :"))
try:
    dbase=db.connect(database)
    cur=dbase.cursor()
except:
    print ("No Such Db")

#Divide the file after reading
def update_table(table,column):
    pkid=str(table)+"Id"
    cur.execute('select %s,%s from %s'%(pkid,column,table))
    data=cur.fetchall()
    for data in data:
        id=data[0]
        #print id
        data=(data[1])
        cipherise=Cipherise(id,(data,))
        maskeddata=cipherise.convertall()
        maskeddata=maskeddata[0]
        id=int(id)
        print (maskeddata)
        cipherise.createdictionary()
        table=str(table)
        try:
            cur.execute('update "%s"'%table +'set "%s"'%column+'="%s"'%maskeddata+' where "%s"'%pkid+'="%d"'%int(id))
        except:
            print ("Error")

        dbase.commit()
    print ("Job Done")

try:
    f=open(scope,'r')
except IOError:
    print ("No such file")
for line in f:
    columnames ={}
    line=line.strip()
    try:
        line=line.split(':')
        table_name=line[0]
        column_names=line[1]

        try:
            column_names=column_names.split(',')
            for column in column_names:
               update_table(table_name,column)
    #             columnames[i]=column_names[i]
        except:
            columnames.append(column_names)
     #       continue
    #     print columnames
    except:
        continue
f.close()
dbase.close()

Thursday, May 25, 2017

Cyberoam Firewall - How to block sites and url


The procedure to block unwanted websites/ip address and ports by a cyberoam firewall is as follows -




  • First login and then go to objects > hosts . Add a blockIPList as I have done in the above picture. Click ok after adding all the IPs you want to block.
  • In the same way go the object > services . Add the ports you want to block. As I have created a blocked ports.

  • Then go to Firewall > Rule. Under the LAN to WAN policy create a new rule. As the picture above Enter the services and hosts as previously created.
Now  if you want to simply block a website from your network , do the following steps - 


  • Go to web filter > category. Create a category by clicking add category and then adding the websites you want to block.
  • Next add the category to your web policy and block connection from those sites.

Wednesday, January 11, 2017

About Python

Python is a multi function programming language

- this means it can be used to virtually every program. So, in this blog we will try to know Python and how to apply the language to modern day life. But first of all we need to understand the language.
There are many tutorials available in the web. You must visit those tutorials and here is my version of the tutorial. You can learn from here too, if you bear with me.

You can also learn python from sites like -

Install Python:
Install Python by going to the site - www.python.org and download the python 2.7  or 3. Here I am concentrating on Python 2.7. So it is advisable to download the later one.
For windows you have to install Python actually, Python is already installed in Linux or Mac. Just extract the downloaded file and double click setup. exe.
How to check python is  installed properly:
For Linux just open the terminal and type Python. Of out shows a reply message with version on it and a '>>' sign, then you are OK.
For windows, open command prompt and type Python.. That's it. If there is an error like command not found, then set the part variable properly or see if you are in proper directory.

After installation of the python from the instruction above you are ready to rock in the python world. You need to download some modules for required project when needed. You can get all the module in github so no worries in this respect.
Why python is Multi-function Programming Language?
Python can be used in many aspects of our every programming needs- from core programming options where we program different hardware to sophisticated web development , we can use python. Python is in its core is made to do tasks without thinking much about syntax of the programming, and concentrate on the semantics of the program. We will start from our very next blog - let's start by saying 'Hello World'.

Feautured Post

Python Trivia Post: enumerate()

Python has a very useful inbuilt function, which is called enumerate(). This is needed whenever you need the numbering of a certain element...