Python Forensics - การใช้งานระบบคลาวด์

Cloud computingสามารถกำหนดเป็นชุดของบริการโฮสต์ที่ให้บริการแก่ผู้ใช้ทางอินเทอร์เน็ต ช่วยให้องค์กรสามารถใช้หรือแม้แต่คำนวณทรัพยากรซึ่งรวมถึง Virtual Machines (VMs) ที่เก็บข้อมูลหรือแอปพลิเคชันเป็นยูทิลิตี้

ข้อได้เปรียบที่สำคัญที่สุดอย่างหนึ่งของการสร้างแอปพลิเคชันในภาษาการเขียนโปรแกรม Python คือความสามารถในการปรับใช้แอปพลิเคชันแทบทุกแพลตฟอร์มซึ่งรวมถึง cloudเช่นกัน. หมายความว่า Python สามารถทำงานบนเซิร์ฟเวอร์คลาวด์ได้และยังสามารถเปิดใช้งานบนอุปกรณ์พกพาเช่นเดสก์ท็อปแท็บเล็ตหรือสมาร์ทโฟน

หนึ่งในมุมมองที่น่าสนใจคือการสร้างฐานคลาวด์ด้วยการสร้าง Rainbow tables. ช่วยในการรวมแอปพลิเคชันเวอร์ชันเดียวและหลายกระบวนการซึ่งต้องมีการพิจารณาบางอย่าง

พี่เมฆ

Pi Cloud เป็นแพลตฟอร์มคลาวด์คอมพิวติ้งซึ่งรวมภาษาการเขียนโปรแกรม Python เข้ากับพลังการประมวลผลของ Amazon Web Services

ลองมาดูตัวอย่างของการใช้ Pi clouds กับ rainbow tables.

ตารางสายรุ้ง

rainbow table ถูกกำหนดให้เป็นรายการของการเรียงสับเปลี่ยนข้อความธรรมดาที่เป็นไปได้ทั้งหมดของรหัสผ่านที่เข้ารหัสเฉพาะสำหรับอัลกอริทึมแฮชที่กำหนด

  • ตารางสายรุ้งเป็นไปตามรูปแบบมาตรฐานซึ่งจะสร้างรายการรหัสผ่านที่แฮช

  • ไฟล์ข้อความใช้ในการสร้างรหัสผ่านซึ่งรวมถึงอักขระหรือข้อความธรรมดาของรหัสผ่านที่จะเข้ารหัส

  • ไฟล์ถูกใช้โดย Pi cloud ซึ่งเรียกใช้ฟังก์ชันหลักที่จะจัดเก็บ

  • ผลลัพธ์ของรหัสผ่านที่แฮชจะถูกเก็บไว้ในไฟล์ข้อความเช่นกัน

อัลกอริทึมนี้สามารถใช้เพื่อบันทึกรหัสผ่านในฐานข้อมูลได้เช่นกันและมีที่เก็บข้อมูลสำรองในระบบคลาวด์

โปรแกรมในตัวต่อไปนี้จะสร้างรายการรหัสผ่านที่เข้ารหัสในไฟล์ข้อความ

ตัวอย่าง

import os
import random
import hashlib
import string
import enchant    #Rainbow tables with enchant 
import cloud      #importing pi-cloud

def randomword(length): 
   return ''.join(random.choice(string.lowercase) for i in range(length))

print('Author- Radhika Subramanian')

def mainroutine():
   engdict = enchant.Dict("en_US")
   fileb = open("password.txt","a+")

   # Capture the values from the text file named password
   while True:
      randomword0 = randomword(6)
      if engdict.check(randomword0) == True:
         randomkey0 = randomword0+str(random.randint(0,99))
      elif engdict.check(randomword0) == False:
         englist = engdict.suggest(randomword0)
         if len(englist) > 0:
            randomkey0 = englist[0]+str(random.randint(0,99))
         else:
            randomkey0 = randomword0+str(random.randint(0,99))

      randomword3 = randomword(5)
      if engdict.check(randomword3) == True:
         randomkey3 = randomword3+str(random.randint(0,99))
      elif engdict.check(randomword3) == False:
         englist = engdict.suggest(randomword3)
         if len(englist) > 0:
            randomkey3 = englist[0]+str(random.randint(0,99))
         else:
            randomkey3 = randomword3+str(random.randint(0,99))
      
      if 'randomkey0' and 'randomkey3' and 'randomkey1' in locals():
         whasher0 = hashlib.new("md5")
         whasher0.update(randomkey0)
         whasher3 = hashlib.new("md5")
         whasher3.update(randomkey3)
         whasher1 = hashlib.new("md5")
         whasher1.update(randomkey1)
         print(randomkey0+" + "+str(whasher0.hexdigest())+"\n")
         print(randomkey3+" + "+str(whasher3.hexdigest())+"\n")
         print(randomkey1+" + "+str(whasher1.hexdigest())+"\n")
         fileb.write(randomkey0+" + "+str(whasher0.hexdigest())+"\n") 
         fileb.write(randomkey3+" + "+str(whasher3.hexdigest())+"\n")
         fileb.write(randomkey1+" + "+str(whasher1.hexdigest())+"\n")

jid = cloud.call(randomword)  #square(3) evaluated on PiCloud
cloud.result(jid)
print('Value added to cloud')
print('Password added')
mainroutine()

เอาต์พุต

รหัสนี้จะสร้างผลลัพธ์ต่อไปนี้ -

รหัสผ่านจะถูกเก็บไว้ในไฟล์ข้อความซึ่งมองเห็นได้ดังที่แสดงในภาพหน้าจอต่อไปนี้