Mengedit Logo dari Perusahaan/Brand

CATATAN : TIDAK ADA MAKSUD UNTUK MELANGGAR HAK CIPTA SEBUAH LOGO, TULISAN INI DIMAKSUDKAN UNTUK MEMENUHI TUGAS YANG DIBERIKAN DOSEN.

Kali ini saya diberikan tugas untuk mengedit/merubah logo dari yang sebelumnya sudah saya tulis di web. Langsung ke cara pengubahannya. Disini saya menggunakan aplikasi Adobe Photoshop CS6

    LANGKAH-LANGKAH PENGUBAHAN.


    Seleksi menggunakan rectangular marquee tool lalu hapus bagian yang di seleksi












    Seleksi gambar melati, lalu seleksi gambar dan pindahkan ke layer yang pertama (logo Huawei awal)











    Selesai













    PENJELASAN MAKNA DARI LOGO

    Bunga Melati melambangkan keindahan dalam kesederhanaan dan kerendahan hati, dikarenakan meskipun Bunga Melati Putih ini kecil dan sederhana, tetapi wanginya harum semerbak. begitupun juga dengan huawei dengan menggunakan logo ini di harapkan akan menambah terkenal produk huawei ke seluruh penjuru dunia

    Desain Pemodelan Grafik

    M. Kizbudin
    53417413
    3IA03

    Tugas ini dibuat untuk memenuhi tugas ke-1 mata kuliah Desain pemodelan Grafik.

    Menganalisa Logo dari Logo Huawei


    Huawei diambil dari dua kata, yaitu Hua dan Wei. Hua bisa berarti bunga, atau arti lainnya adalah gelora dan mewah. Sementara Wei artinya adalah pencapaian, prestasi, atau aksi dalam bahasa Mandarin. Jadi, bisa disimpulkan bahwa Huawei memiliki terjemahan kasar pencapaian yang membanggakan atau bergelora. Dari arti Hua yang berarti bunga itulah, Huawei memilih logo berupa kelopak bunga

    Categories:

    Desain Permodelan Grafik

    Desain Permodelan Grafik (Power Point)

    Minggu 1


    Minggu 2 - 3



    Minggu 4



    Minggu 5



    Minggu 6





    Minggu 7




    Minggu 8




    Minggu 9 - 10




    Minggu 12



    Minggu 13




    Minggu 14-15


    Categories:

    Writeup Minggu ke 1 HackerClass Compfest 11

    Pada kesempatan kali ini saya akan membahas soal hackerclass compfest 11 yang di berikan oleh panitia pada minggu pertama hackerclass, pada minggu pertama ini panitia memberikan 3 soal kategori easy untuk pemanasan sebelum compfest 11 dimulai

    WEB

    Cascading Style Sheets (50 Point)
    diberikan link yang beralamatkan https://hackerclass.compfest.id/greeting, setelah dibuka maka akan muncul tampilan berikut, ada kata dalam bahasa mandarin yang bila translate menjadi "Hello, World!"










    selanjutnya karna saya penasaran dengan webnya, saya bedah bagian source code web tersebut dengan menggunakan ctrl+u













    seperti pada judul soal saya curiga kalau flagnya ada pada css, lalu saya mencoba periksa kembali webnya dengan menggunakan inspect element











    ternyata setelah diperiksa terdapat objek yang sengaja di sembunyikan dengan mengubah warna tulisanya ke warna putih, lalu saya ganti warna dari hurufnya dengan menghilangkan # maka akan muncul flagnya











    PWN

    Intro to Shell (50 Point)

    Diberikan sebuah soal dengan deskripsi sebagai berikut :























    saya langsung mengeksekusi perintah nc "18.36.136.167.108 18007" seperti yang kita ketahui nc adalah sebuah command untuk mengakses service netcat, selanjutnya saya hanya memasukan perintah standar linux untuk melihat file dan membacanya
















    Misc

    Redacted Document (50 Point)
    pada soal kali ini kita diberikan sebuah file document yang dimana ada sebuah kalimat berisikan flag yang telah di tutupi oleh sesuatu













    pada challenge ini kita hanya perlu untuk block pada bagian yang di tutupi dan akan menampilakan flagnya












    Cukup sekian untuk pembahasan soal kita kali ini, terimakasih sudah mampir di blog saya

    Categories: , ,

    Pengantar Web Science #2

    Dalam mata kuliah ini, kelas kami dibagi menjadi beberapa kelompok, dan berikut adalah kelompok saya :
    Barra Waskito
    Issac Bramukty
    Joshua
    M Kizbudin
    Nanda Tri Setyadi
    Vincent Alvin
    Kami diberi tugas bertema “Program Aplikasi Web” dari dosen kami, yaitu Ibu Atika Laras Paramita

    Hal pertama yang kami lakukan ialah menentukan tema web dan platform apa yang akan kami gunakan. Kami pun berunding di dalam kelas dan bersepakat bahwa tema yang kami gunakan ialah “Aplikasi Web Penjualan Sepatu”, dan untuk platform yang kami gunakan ialah komputer desktop ataupun laptop yang berbasis windows.. Untuk program aplikasi Web kami tujukan untuk usia >13 tahun. Kami konfirmasi ke dosen dan kami mendapat beberapa kritik yang nantinya dapat ditambahkan dalam program kami. Selanjutnya kami dapat membuat programnya.

    Saya M. Kizbudin yang tergabung dalam kelompok ini ikut berkontribusi dalam pembuatan web ini. Saya berkontribusi dalam pembuatan form Pembayaran, Berikut adalah hasil yang saya kerjakan.




    Categories:

    Tugas Legal Aspek Produk Teknologi Informasi

    Nama : M. Kizbudin
    Kelas : 2IA03
    NPM : 53417413
    Mata Kuliah : Legal Aspek Produk Teknologi Informasi

    1. Hak Kekayaan Intelektual

    Java
    Java adalah salah satu bahasa pemrograman yang populer di kalangan dunia enterprise. Bahasa ini dikembangkan di perusahaan yang bernama Sun Microsystems. Sun Microsystem terkenal sebagai perusahaan yang sangat mendukung gerakan open source. Tidak seperti saat ini, di masa lalu gerakan open-source masih sering dianggap sebagai ancaman bagi bisnis IT raksasa. Microsoft dan Oracle seringkali dianggap cukup sengit “memusuhi” gerakan-gerakan open source.
    Dengan posisi Sun Microsystems yang pro open source, tidak heran jika mereka pun membuat spesifikasi dan kode Java Standard Edition menjadi terbuka, istilahnya OpenJDK. Karena itu tidak heran ada beberapa versi Java yang open source, contohnya GNU Classpath, Apache Harmony, IcedTead, gcj, dll.


    2. Contoh Kasus Penyalahgunaan API (Application Programming Interface) Java oleh Google

    Sejak Agustus 2010 Oracle sudah mengajukan gugatan terhadap Google ke pengadilan. Menurut Oracle (sebagai pemilik hak paten bahasa pemrograman Java), Google telah melakukan pelanggaran dengan menggunakan 37 API Java di Android tanpa lisensi dari Oracle. Setelah proses penyidikan dan pengadilan yang panjang, akhirnya pada 27 Mei ini, pengadilan memutuskan jika Google dinyatakan tidak bersalah. Penggunaan API Java oleh Google dianggap masih dalam penggunaan yang wajar (fair usage). Oracle memutuskan untuk mengajukan banding.
    Google sebenarnya sempat mendapatkan angin segar pada Mei 2012 ketika hakim Judge William Alsup menyatakan jika API (Application Programming Interface) tidak bisa mendapatkan hak cipta. Selain itu sang hakim juga menyatakan jika Google tidak melanggar hak paten Oracle. Tetapi Oracle mengajukan banding. Akhirnya di tahun 2014 pengadilan banding memutuskan setuju dengan Oracle, API bisa mendapatkan hak cipta.

    Pada Januari 2010, Sun Microsystems akhirnya diakuisisi oleh Oracle -sebuah tindakan yang sangat disayangkan banyak pendukung gerakan open-source. Akibat akuisisi ini banyak penggerak open source di Sun Microsystems meninggalkan perusahaan ini.

    Android
    Android dibangun sejak tahun 2003 oleh Andy Rubin bersama beberapa rekannya. Di tahun 2005 Google membeli Android. Ketika Google meluncurkan platform Android pada tahun 2007 mereka menyatakan jika ada beberapa teknologi Java yang digunakan di dalamnya. Teknologi Java yang digunakan di Android ini berbasis pada versi open source Java yang bernama Apache Harmony. Teknologi ini diimplementasikan Google menjadi Dalvik (process virtual machine, mirip JVM dari Java). Belakangan Dalvik diganti menjadi ART (Android Run Time).

    Sikap Oracle
    CEO Sun Microsystems (sebelum diakuisisi Oracle) Jonathan Schwartz menyambut baik langkah Google yang memutuskan menggunakan teknologi Java untuk pengembangan platform Android. CEO Oracle Larry Ellison pun pada awalnya menyambut baik langkah Google ini. Pasca akuisisi Sun Microsystems, Oracle juga sedang mengembangkan platform ponsel yang berbasis Java.
    Namun belakangan Oracle berpendapat jika Google seharusnya meminta ijin lisensi pada mereka untuk menggunakan API Java di Android. Tentunya lisensi ini tidak gratis, nilainya jutaan dollar menurut Oracle. Sementara itu Google berpendapat lisensi tidak diperlukan, karena mereka hanya menggunakan API Java sesuai dengan porsinya, seperti umumnya diterapkan pada proyek open source. Pengadilan pun setuju. Google dinyatakan menang di pengadilan.

    Categories:

    Pengantar Web Sciene #1

    Asslamu'alaikum wr.wb salam sejahtera bagi kita semua di kesempataan kali ini saya akan membahas tentang hobi dan impian.
    kok tiba-tiba membahas tentang hobi dan impian tidak membahas soal ctf seperti biasanya?? 
    iya, kali ini saya membahas hobi dan impian dikarenakann tugas yang saya peroleh dari salah satu matakuliah sofskill di kampus,

    mungkin sebelum berlanjut ada baiknya kita mengenal apa itu ctf, penjelasan mengenai ctf bisa di akses melalui link berikut, untuk menunjang hobi saya seperti mencari write up, informasi lomba dan  lainya sekaligus untuk sarana belajar biasanya saya mengakses CTF TIME, dan channel youtube Cyber Security IPB (CSI) yang merupakan team akademik dari salah satu perguruan negeri di indonesia, dan kebetulan juga saya tergabung di team akademi dari universitas gunadarma yaitu CCUG dari situ saya mendapat banyak sekali pengalaman dan beberapa kali pernah mengikuti kompetisi ctf tingkat nasional maupun internasional, kenapa saya sangat suka dengan ctf? karena di ctf ini logika pemrograman, skill networking, analisa data digital (digital forensics) kita akan di asah dan itu penting menurut saya untuk ukuran mahasiswa di bidang IT.

    Ya mungkin itu aja yang mau saya ceritakan di post kali ini, makasih temen-temen yang sudah mau mampir di blog saya, kurang lebihnya terimakasih Wassalamu'alaikum wr.wb

    Writeup CCUG Hackfest 0x02 (Website Hacking)

    Website Hacking

    InspectMe!

    Diberikan website dengan link http://fallcrescent.ccug.gunadarma.ac.id/hackfest/inspect/
    setelah dibuka maka akan menampilkan
    lalu cek pada bagian tentang
    dari sini dudah di dapatkan clue untuk melihat pada HTML, CSS dan Javascript(JS) yang dari judul challenge ini sudah jelas harus di inspect, maka untuk menyrlrsaikanya penulis menggunakan fitur inspect element pada browser atau tekan ctrl + shift + c pada chrome untuk inspect element



    pada HTML di dapat bagian 1 dari 3 flag ( HackFest{ur_4_real_1nspe.
    dan jika dibuka pada bagian CSS

    Terdapat sisa dari flag nya ( ct0r_g4dget} )
    Flag : HackFest{ur_4_real_1nspect0r_g4dget}

    Bad Request 400

    Diberikan website dengan alamat http://ccug.gunadarma.ac.id:6007 dan ketika dibuka maka akan menampilkan pesan error
    dan diberi juga source code untuk websitenya, pada bagian settings.py terdapat

    ALLOWED_HOSTS = ['google.com','youtube.com','google.co.id','gmail.com']

    yang berarti yang diperbolehkan untuk mengakses website tersebut hanya salah satu dari ke 4 host tersebut, untuk menyelesaikan challenge ini penulis menggunakan burpsuite untuk tamper data sebelum membuka link http://ccug.gunadarma.ac.id:6007 dan mengubah host menjadi google.com

    maka akan terbuka

    lalu penulis membuka source code website dengan menggunakan ctrl + u pada browser dan menemukan sesuatu pada urls.py

    urlpatterns = [
       path('716a165aa758863193399a3d65dfacd05e8d8a30', FlagView.as_view(),name='flag'),
       path('', HomeView.as_view(),name='home'),
    ]

    Berarti flag nya berada di path 716a165aa758863193399a3d65dfacd05e8d8a30. lalu masukkan path tadi ke url dan di dapatkan flag
    Flag : HackFest{HTTP_HOST_itu_gampang_banget_untuk_dimanipulasi}

    WebFlag Checker

    diberikan website dengan alamat http://104.250.105.158:8002/index ketika di buka maka akan menampilkan :
    dan diberikan script python :


    from flask import Flask, render_template_string,request, session, render_template
    import hashlib
    import os
    app = Flask(__name__)
    app.config['FLAG'] = open("flag.txt","rb").read()

    @app.route("/",methods=["GET","POST"])
    @app.route("/index",methods=["GET","POST"])
    def check_flag():
    if request.method == "GET":
        session['token'] = hashlib.md5(os.urandom(32)).hexdigest()
        return render_template("index.html",token=session['token'])

    if request.method == "POST":
        check_token = request.form['token']
        if check_token == session['token']:
            template = open("templates/index.html","rb").read()
            check_flag = request.form['check_flag']
            if check_flag != "":
                if check_flag == app.config['FLAG']:
                    res = """
                    <br>
                    <div class='alert alert-success' role='alert'>
                    <strong>{0}</strong> is the correct flag.
                    </div>
                    """.format(check_flag)
                else:
                    res = """
                    <br>
                    <div class='alert alert-danger' role='alert'>
                    <strong>{0}</strong> is not the correct flag.
                    </div>
                    """.format(check_flag)
                template = template.replace("<!--result-->",res)
                session['token'] = hashlib.md5(os.urandom(32)).hexdigest()
            return render_template_string(template,token=session['token'])
        else:
            session['token'] = hashlib.md5(os.urandom(32)).hexdigest()
            return render_template("index.html",token=session['token'])


    if __name__ == "__main__":
    app.secret_key = os.urandom(16)
    app.run(port=8002)

    dengan hint yang diberikan, pada link tersebut terdapat payload yang dapat digunakan untuk website yang menggunakan flask dengan mengisi kolom flag dengan {{7*7}}
    berarti pada kolom flag dapat dijalankan perintah python, dan ternyata lag terdapat di config['FLAG'] maka saat dimasukkan



    Flag : HackFest{th15_15_fl4g_f000r_y00u_SSTI_n1nj4}

    Baby Codeigniter

    diberikan website dengan link https://target.ccug.gunadarma.ac.id/386f44/index.php dan saat di buka
    dan login menggunakan data yang sudah kita register sebelumnya
    yang berarti flag akan muncul pada bagian message, dan duberikan source code webnya yang menggunakan framework codeigniter setelah ditelusuri pada bagian controller terdapat code :

    if($res[0]['is_admin'] == 1) {
      //echo 'uuuu';
      $flag = 'The first flag is HackFest{[CENSORED]}. The second flag is secret user\'s password';

    dengan ini bisa di simpulkan bahwa parameter is_admin dapat digunakan untuk melakukan exploit, penulis menggunakan hackbar untuk merubah post data saat register
    setelah berhasil login dengan username dan password yang telah di daftarkan tadi dan didapatkan flag
    Flag :  HackFest{3776aeb22c9453304430525b92c2cea1}.

    Categories: ,

    Writeup CCUG Hackfest 0x02 (Reverse Engineering)

    Reverse Engineering

    Ular Terbungkus

    Diberikan file dengan ekstensi file python yang sudah di compile (.pyc) dan ketika di run maka akan menampilkan :


    ----- Sarang Ular -----
    Flag :

    untuk menyelesaikan challenge ini, penulis terlebih dahulu mendecompyle dengan bantuan Uncompyle6, dan saat di run akan tampil :



    ┌─[fallcrescent@parrot]─[~/Hackfest/Crypto/Multibyte_XOR_Source] └──╼ $ uncompyle6 ular_terbungkus.pyc
    # uncompyle6 version 3.2.4
    # Python bytecode 2.7 (62211)
    # Decompiled from: Python 2.7.15+ (default, Nov 28 2018, 16:27:22)
    # [GCC 8.2.0]
    # Embedded file name: ular_terbungkus.py
    # Compiled at: 2018-12-12 08:33:32
    from Crypto.Cipher import AES
    import hashlib, base64

    class Ular:

    def __init__(self):
        self.ular_flag = 'Gda+wKa52rT/1WaWzVXDVi23VemIwUNTpttG4JJddYGHDF4eSGj2/9tCZs8OTwzaizI75GTfxS/QGDKEVm9XBz2zM/WQGrM7gqDNfx3SCpVKtaENNnnYOZHwk8Lpo1wt'

    def unpad(self, s):
        return s[:-ord(s[-1])]

    def decrypt(self, s):
        cip = base64.b64decode(s)
        key = hashlib.md5(cip[:16]).hexdigest()
        IV = cip[-16:]
        cipher = cip[16:-16]
        aes_obj = AES.new(key, AES.MODE_CBC, IV)
        return self.unpad(aes_obj.decrypt(cipher))

    def get_flag(self):
        return self.decrypt(self.ular_flag)


    def main():
    print '----- Sarang Ular -----'
    inp_flag = raw_input('Flag : ')
    real_flag = Ular().get_flag()
    if inp_flag == real_flag:
        print '[+] Correct'
    else:
        print '[x] Wrong'


    if __name__ == '__main__':
    main()
    # okay decompiling ular_terbungkus.pyc

    dari script diatas penulis hanya membenarkan penulisan script dengan menghapous bagian if dan input lalu menampilkan fungsi real_flag


    def main():
    print '----- Sarang Ular -----'
    real_flag = Ular().get_flag()
    print(real_flag)

    Flag : HackFest{88df7b7657844da585f1590c887bbaefdb2685c6}

    Serial Number

    diberikan service netcat dengan alamat nc ccug.gunadarma.ac.id 6006 dan jika di run maka akan menampilkan :


    HackFest 0x02 Secret Software

    [?] Serial number :

    dan juga diberikan sebuah file exe yang sudah, lalu penulis membukanya dengan IDA Pro dan mendapatkan :

    Dan dapat di lihat bahwa service menerima angka dengan format %d-%d-%d-%d-%d dan akan dimasukkan fungsi sub_AC0 dan ketika dibuka fungsinya tertulis

    Untuk menyelesaikan challenge ini penulis menggunakan perhitungan manual dikarenakan pada saat mengerjakan tidak mengetahui ada z3 tools yang dapat membantu solve perhitungan ini. Dengan membandingkan nilai dengan ketentuan if agar tidak return 0 Maka didapatkan
    a1 = 2000
    a2 = 2000
    a3 = 4000
    a4 = 8000
    a5 = 4000

    dan ketika dimasukan ke service



    HackFest 0x02 Secret Software

    [?] Serial number : 2000-2000-4000-8000-4000

    Nice bro
    HackFest{z3_akan_setia_menemanimu_di_masa_masa_sulit_seperti_ini}

    Flag : HackFest{z3_akan_setia_menemanimu_di_masa_masa_sulit_seperti_ini}

    Categories: ,

    Writeup CCUG HackFest 0x02 (Cryptography)

    Cryptography

    One Byte XOR

    diberikan file ZIP berisi source code python encryptor dan hasil enkripsinya berikut adalah scriptnya



    from Crypto import Random
    import base64

    def main():
    flag = open("flag.txt","rb").read()
    key = Random.new().read(1)
    res = ""
    for i in range(len(flag)):
        res += chr(ord(flag[i]) ^ ord(key))
    res = base64.b64encode(res)
    open("encrypted","wb").write(res)

    if __name__ == "__main__":
    main()

    Fungsi enkirptor diatas adalah meng-XOR setiap character dengan 1 byte key random, lalu hasilnya di encode ke base64. Untuk menyelesaikan challenge ini, penulis menggunakan Brute Force untuk angka dari 0 sampai 256
    berikut adalah script solvernya


    from Crypto import Random
    import base64

    flag = open("flag.txt","rb").read()
    flag = base64.b64decode(flag)

    def xorString(string,key):
       res = ""
       for i in range(len(string)):
       res += chr(ord(flag[i]) ^ key)
       return res

    for j in range(0,256):
       resu = xorString(flag,j)
       if "HackFest" in resu:
       print j,resu

    Setelah di run maka di dapatkan output :

    Selamat, ini flagnya : HackFest{ketika_ragu_dan_galau_brute_force_aja}



    Flag: HackFest{ketika_ragu_dan_galau_brute_force_aja}



    Cryptizi


    Diberikan file zip berisi source code python berupa enkriptor, berikut adalah Scriptnya





    def main():
       print("#[][][]ENKRIPTOR mini " )
       x = raw_input("\n\ntYPE : \n")
       x = duniasakti(x)
       print("\n\n {}RESULT :\n" + x)
       return 0

    def duniasakti(yy):
       x = list(yy)
       a = len(x) - 1
       n = a/2
       for i in range(n,a+1):
       temp = x[a-i]
       x[a-i] = x[i]
       x[i]   = temp
       a = a + 1
       v = a * 3
       for h in range(a):
       temp = x[h]
       for j in range(256):
       karakter = chr(j)
       if(karakter==temp):
       x[h] = str(j*v)
       break
       continue
       x = "Un%".join(x)
       x = list(x)
       z = list()
       yuyu = ['1','2','3','4']
       kangkang = ['!*','x','_','q']
       for i in x:
       c = i in yuyu
       if(c == True):
       i = kangkang[yuyu.index(i)]
       z.append(i)
       z = ''.join(z)
       return(z)

    if __name__ == '__main__':
       main()

    enkripsi ini merubah text asli (Plain text) menjadi list dan merubahnya dengan sebuah inyeger lalu di gabung dengan "Un5%" dan merubah angka menjadi !*,x,_,q secara berurutan, berikut adalah solvernya



    cipher = open("xxcheap.enc","rb").read()

    cipher = cipher.replace("!*","1")
    cipher = cipher.replace("x","2")
    cipher = cipher.replace("_","3")
    cipher = cipher.replace("q","4")
    cipher = cipher.replace("Un%"," ")
    print cipher

    a = 33
    v = a * 3
    x = [12375, 10395, 11484, 11286, 9999, 10197, 10890, 9999, 10791, 10395, 9900, 9405, 11484, 10395, 10692, 11583, 11385, 9405, 9603, 10395, 11385, 11583, 10890, 9603, 10791, 9405, 10197, 10890, 9603, 9900, 9603, 10593, 12177]
    t = ""

    print v

    for i in range(33):
       h = x[i]
       y = h/v
       t += chr(y)

    print(t[::-1])

    maka akan keluar output


    12375 10395 11484 11286 9999 10197 10890 9999 10791 10395 9900 9405 11484 10395 10692 11583 11385 9405 9603 10395 11385 11583 10890 9603 10791 9405 10197 10890 9603 9900 9603 10593 12177
    99
    {kadang_manusia_sulit_dimengerti}

    Flag : HackFest{kadang_manusia_sulit_dimengerti}

    AES Machine

    diberikan sebuah koneksi netcat dengan alamat nc ccug.gunafarma.ac.id 6008 jika di jalankan maka akan keluar :



    ┌─[fallcrescent@parrot]─[~] └──╼ $nc ccug.gunadarma.ac.id 6008
       _ ___   ___ __ __      _ _
      /_\ |    __/ __| |   \/ |__ _ __| |_ (_)_ _  ___
     / _ \|   _| \__ \ |  |\/| / _` / _| ' \  | | ' \/ -_)
    /_/ \_\___|___/ |_|  |_ \__,_\__|_||_|_|_||_\___| v1.0
                                                  
    Options : encrypt, decrypt, getflag, quit
    [!] NOTE : You only have 3 times to encrypt your plaintext or flag
    >>

    dan jika di masukkan getflah akan di dapatkan flag yang terenkripsi seperti berikut:



    [+] Ciphertext : b5X77CB4DqBfWtrHHF14GySO/BctWdJKkmIp5f7opxJi6HcQTL37vteKjFyn2ReXxLjq2gh6iwwNTyLSXKpSWA==

    diberikan juga source code untuk menencryptnya, berikut adalah script encrpyptornya



    import sys
    from base64 import b64encode
    from base64 import b64decode
    from Crypto.Cipher import AES
    from Crypto import Random
    import hashlib

    BLOCK_SIZE = 16
    IV = hashlib.md5(Random.new().read(32)).digest()
    key = hashlib.sha256(Random.new().read(64)).digest()

    def pad(s):
    return s + Random.new().read(BLOCK_SIZE - (len(s) % 16))

    def encrypt(msg):
    msg = pad(msg)
    cipher = AES.new(key,AES.MODE_OFB,IV)
    return b64encode(cipher.encrypt(msg))

    def _unpad(s):
        return s[:-ord(s[len(s)-1:])]

    def getflag():
    flag = open("flag.txt","rb").read()
    return encrypt(flag)

    def print_(s):
    sys.stdout.write(s)
    sys.stdout.flush()

    def println(s):
    print_(s+"\n")

    def welcome():
    print_(""" _   ___ ___   __ __ _ _
      /_\ | __/ __| |  \/ |__ _ __| |_ (_)_ _  ___
     / _ \| _|\__ \ | |\/| / _` / _| ' \| | ' \/ -_)
    /_/ \_\___|___/ |_|  |_\__,_\__|_||_|_|_||_\___| v1.0
                                                    """)
    def main():
    num = 1
    welcome()
    println("")
    println("Options : encrypt, decrypt, getflag, quit")
    println("[!] NOTE : You only have 3 times to encrypt your plaintext or flag")
    while True:
        try:
            print_(">> ")
            pil = raw_input()
            if pil == "encrypt":
                if num > 3:
                    println("[!] You have use this more than 3 times")
                    break
                print_("[?] Plaintext : ")
                plain = raw_input()
                println("[+] Ciphertext : " + encrypt(plain))
                num += 1
            elif pil == "decrypt":
       print_("[?] Plaintext : ")
                plain = raw_input()
       println("[+] Flag : " + decrypt(plain))
       num += 1
            elif pil == "getflag":
                if num > 3:
                    println("[!] You have use this more than 3 times")
                    break
                println("[+] Ciphertext : " + getflag())
                num += 1
            elif pil == "quit":
                println("[+] Exiting Program ")
                break
            else:
                println("[-] Invalid option ")
                break
        except:
            break

    if __name__ == "__main__":
    main()

    dari source code diatas bisa disimpulkan bahwa IV dan key akan di buat random srtiap di jalankan jenis AESnya yang digunakan adalah OFB dan diencrypt menjadi base 64

    untuk menyelesaikan soal ini dapat menggunakan cara menXOR kan plaintextnya lalu akan di dapatkan key yang akan di XOR untuk mendapatkan Flag.

    dapat diambil contoh dari service yang di jalankan sbb:



    >> encrypt
    [?] Plaintext : AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    [+] Ciphertext : ZrXZxidcPJVlKq+zOH0LaQT6iW8IfaY44xJZlY2Z0zAXkAJobsuDmvT6rn/RqDDisYShfbYVzTVGkjGLSbsZWA==

    script solver



    import base64

    flag = "b5X77CB4DqBfWtrHHF14GySO/BctWdJKkmIp5f7opxJi6HcQTL37vteKjFyn2ReXxLjq2gh6iwwNTyLSXKpSWA=="
    flag = base64.b64decode(flag)

    plain = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    cipher = "ZrXZxidcPJVlKq+zOH0LaQT6iW8IfaY44xJZlY2Z0zAXkAJobsuDmvT6rn/RqDDisYShfbYVzTVGkjGLSbsZWA=="

    def xorString(string,key):
       res = ""
       for i in range(len(string)):
       res += chr(ord(string[i]) ^ ord(key[i]))
       return res.encode("hex")

    key = xorString(plain,cipher)
    print xorString(flag,key)

    setelah di run maka di dapatkan flag
    Flag : HackFest{145ea23a549de530111205c4949c79eb1cb70f44}

    MultiByte Xor

    Diberikan file zip berisi Source Code Python, beserta hasil enkripsinya berikut adalah source codenya :

    def main():
    key = open("key.txt","rb").read().strip()
    message = open("message.txt","rb").read().strip()

    assert(len(key) == 12)
    assert('HackFest' in message)
    assert(key.isalnum() == True)
    message_enc = ""
    for x in range(len(message)):
        message_enc += chr(ord(message[x]) ^ ord(key[x % len(key)]))
    open("message.txt.encrypted","wb").write(message_enc)

    if __name__ == "__main__":
    main()

    Berikut Hasil dari enkripsi yang di jalankan

    *I<Q;3'    I/N+;[ 7:I{
    ^QGxc.+(N.1? &.N,D* i9(<7$*U/

    9+39k

    9@.&"kI:Q='i
    9N+;[    7:Gk&
    ?Q&r*?
    9,:(.    I1^&~i
    *?Uo;'I/;Q!5i*N+U=&(N!*%+Do?,#
    I:U;'%N
    *
    9^.r"

    untuk menyelesaikan challenge ini penulis menggunakan Known Plain Attack dapat menggunakan tools yang ada di internet, untuk toolsnya bisa di lihat disini. dan ketika dijalankan maka akan menampilkan :

    ┌─[fallcrescent@parrot]─[~/Hackfest/Crypto/Multibyte_XOR_Source] └──╼ $ ./KPA.py message.txt.encrypted 'HackFest' 12
    Searching XOR-encrypted message.txt.encrypted for string 'HackFest' (max_key_length = 12)
    Key length: 12
    Partial Key: In����ciX0OR
    Plaintext: Se����t datang����HackFest����2. Saya ����gai prob����setter b����rap semo����nda dapa����ndapatka����l baru d����HackFest����bagai co����nya chal����e ini, c����enge ini����ancang a����peserta ����Fest mem����i betul ����imana kr����grafi XO����rkerja d����enyerang����dengan m����unakan K���� Plainte����ttack.
    D����ni dia f����yang bis����da submi����HackFest����wn_plain����_attack_����e2f67cdf����4ddc8e09����4cd7}

    Key length: 12
    Partial Key: In����ciX0OR
    Plaintext: Se����t datang����HackFest����2. Saya ����gai prob����setter b����rap semo����nda dapa����ndapatka����l baru d����HackFest����bagai co����nya chal����e ini, c����enge ini����ancang a����peserta ����Fest mem����i betul ����imana kr����grafi XO����rkerja d����enyerang����dengan m����unakan K���� Plainte����ttack.
    D����ni dia f����yang bis����da submi����HackFest����wn_plain����_attack_����e2f67cdf����4ddc8e09����4cd7}

    Key length: 12
    Partial Key: ��iKunciX0��
    Plaintext: ��lamat da���� di Hack���� 0x02. S����sebagai ����lem sett����erharap ����ga Anda ����t mendap����n hal ba����ari Hack����. Sebaga����ntohnya ����lenge in����hallenge���� diranca����gar pese����HackFest����ahami be����bagaiman����iptograf����R berker����an menye����nya deng����enggunak����nown Pla����xt Attac����an ini d����lag yang����a Anda s����t : Hack����{known_p����text_att����9276e2f6����a9b94ddc����fb2d4cd7�

    Key length: 12
    Partial Key: In����ciX0OR
    Plaintext: Se����t datang����HackFest����2. Saya ����gai prob����setter b����rap semo����nda dapa����ndapatka����l baru d����HackFest����bagai co����nya chal����e ini, c����enge ini����ancang a����peserta ����Fest mem����i betul ����imana kr����grafi XO����rkerja d����enyerang����dengan m����unakan K���� Plainte����ttack.
    D����ni dia f����yang bis����da submi����HackFest����wn_plain����_attack_����e2f67cdf����4ddc8e09����4cd7}

    Didapat key = IniKunciX0OR


    ┌─[fallcrescent@parrot]─[~/Hackfest/Crypto/Multibyte_XOR_Source]
    └──╼ $ ./KPA.py message.txt.encrypted --key=IniKunciX0OR
    Key length: 12
    Partial Key: IniKunciX0OR
    Plaintext: Selamat datang di HackFest 0x02. Saya sebagai problem setter berharap semoga Anda dapat mendapatkan hal baru dari HackFest. Sebagai contohnya challenge ini, challenge ini dirancang agar peserta HackFest memahami betul bagaimana kriptografi XOR berkerja dan menyerangnya dengan menggunakan Known Plaintext Attack.
    Dan ini dia flag yang bisa Anda submit : HackFest{known_plaintext_attack_9276e2f67cdfa9b94ddc8e09fb2d4cd7}

    Flag : HackFest{known_plaintext_attack_9276e2f67cdfa9b94ddc8e09fb2d4cd7}

    Kindergarten Encryption

    Diberikan Script Encrpytor dan emkripsi seperti berikut :


    import string
    import random
    import sys
    character = string.digits + string.lowercase + string.uppercase + string.punctuation
    BLOCK_SIZE = 8
    key = random.randint(2**4,len(character))

    def pad(s):
    res = s
    while len(res) % BLOCK_SIZE != 0:
        res += " "
    return res

    def encrypt(s):
    p = pad(s)
    c = ""
    mx = []
    mx_t = []
    for x in range(len(p)):
        if p[x] not in character:
            c += p[x]
        else:
            pos = (character.index(p[x]) + key) % len(character)
            c += character[pos]
    for x in range(0,len(c),BLOCK_SIZE):
        mx.append(c[x:x+BLOCK_SIZE])
    for i in range(BLOCK_SIZE):
        tmp = ""
        for j in range(len(mx)):
            tmp += mx[j][i]
        mx_t.append(tmp)
    return ''.join(mx_t)[::-1]

    def main():
    if len(sys.argv) == 2:
        f = sys.argv[1]
        cip = open(f,"rb").read()
        cip = encrypt(cip)
        open(f+".enc","wb").write(cip)
    else:
        exit()

    if __name__ == "__main__":
    main()

    bisa disimpulkan enkripsi tersebut merupakan implementasi dari kriptografi caesar  dan column transposition cipher, berikut solvernya :

    import string

    BLOCK_SIZE = 8
    message = open("message.txt.enc","rb").read()
    message = message[::-1]
    character = string.digits + string.lowercase + string.uppercase + string.punctuation

    def test(key):
       mx_t = []
       ka = len(message)
       ma = ka/BLOCK_SIZE

       for i in range(0,len(message),ma):
       mx_t.append(message[i:i+ma])
       mx = ""
       
       for i in range(0,len(mx_t[0])):
       for j in range(0,len(mx_t)):
       mx += (mx_t[j][i])
       c = ""
       for x in range(len(mx)):
       if mx[x] not in character:
       c+= mx[x]
       else:
       pos = (character.index(mx[x]) - key ) % len(character)
       c += character[pos]
       return c

    for key in range(2**4,len(character)):
       c = test(key)
       if "HackFest" in c:
       print "key:",key
       print "plain:\n",c
       break

    Output yang di dapat :

    key: 16
    plain:
    IKLAN UNIVERSITAS GUNADARMA
    Universitas Gunadarma
    Membangun Insan Cerdas Berkompetitif dan Berkarakter
    Universitas Gunadarma
    Bersama UG masa depan diraih saat ini
    HackFest{orang_pintar_kalah_sama_orang_sabar_tekun_dan_rajin}
    MARS UNIVERSITAS GUNADARMA
    Majulah Gunadarma
    Majulah Putra Indonesia
    Tuntut Ilmu Bersemangat Baja Tuk Mengemban Tugas Mulia
    Majulah Gunadarma
    Majulah Putra Indonesia
    Kibarkan Panji Panji Cita
    Tonggak Membangun Negara
    Hiduplah Gunadarma
    Hidup Siswa Pendidiknya
    Mengabdi Pada Negara Bangsa Nan Jaya

    Flag: HackFest{orang_pintar_kalah_sama_orang_sabar_tekun_dan_rajin}

    Classic Crypto Machine

    diberikan service netcat yang beralamatkan nc ccug.gunadarma.ac.id 6003 yang ketika di run maka akan tampil :


    --------------------------------------------
       Random Classic Crypto Machine
    --------------------------------------------
    Option : encrypt, decrypt, getflag, exit

    >> getflag
    [+] Result : DJgqTxk5GqxsqH{xiUPxUo+5s}xr+5x+Ta+xi+5UaKjuU5j+

    penulis mencoba untuk input setiap huruf uppercase, lowercase, dan numerik untuk mengetahui apa saja yang akan di rubah


    Asli      = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789{}"
    Cipher = "aHDsq5YVS3kneRmfIZGPW189lC06NdXgcuME2A7FtbpywzO4QLvhUrTiJKjBxo{}"

    lalu penulis mencoba encrpyt pesan seperti berikut :


    >> encrypt
    [?] Message : HackFest{123456ABCDEGIJKLMOPQRSTUVWXYZ789}    
    [+] Result : D2gcv0kyGEBMqz{Ao7PhTt+bi}Jp+4K+jw+LN+6OaxXudQr+

    lalu penulis menyusun script sbb untuk solvernya :


    from string import maketrans

    #raw = "HackFest{123456ABCDEGIJKLMOPQRSTUVWXYZ789}"
    #raw = "D2gcv0kyGEBMqz{Ao7PhTt+bi}Jp+4K+jw+LN+6OaxXudQr+"
    raw = "DJgqTxk5GqxsqH{xiUPxUo+5s}xr+5x+Ta+xi+5UaKjuU5j+"
    raw = raw.replace("+","")


    asli   = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789{}"
    cipher = "aHDsq5YVS3kneRmfIZGPW189lC06NdXgcuME2A7FtbpywzO4QLvhUrTiJKjBxo{}"
    transtbl = maketrans(cipher,asli)

    plain = raw.translate(transtbl)

    print plain

    t = "cKFGYAkRsJ7IeT{L9MtZ2OP3}4QV56SXCBUa8EHDW1"
    h = "HackFest{123456ABCDEGIJKLMOPQRSTUVWXYZ789}"

    result = ""
    for i in range(len(h)):
       pos = t.find(h[i])
       result += plain[pos]

    print result

    flag : HackFest{60d8828f306ede4809f1fab0ff828853}


    Baby RSA


    Diberikan sebuah service nc ccug.gunadarma.ac.id 6004 yang ketika dibuka akan melakukan

    -----     Basic RSA HackFest 0x02     -----

    [+] Level 1 : Temukan nilai n

    p = 112929231839133764922499650211502042983992522246363389414474183288140649720837
    q = 109099903505021106777266264281880454823285926834179667561051699220281661035493
    n =

    Dapat disimpulkan bahwa challenge ini akan memiliki beberapa level dengan soal yang berbeda beda. Untuk menyelesaikan level-level terdapat hint berupa link yang menunjukan halaman Wikipedia dengan itu penulis dapat mendapatkan untuk mencari nilai n dapat di lakukan n = pq maka dibuatlah script di python

    >>> def soal1(p,q):
    ... n=p*q
    ... print(n)
    ... return;
    ...
    >>> soal1(p,q)
    12320568296545651007975344558539473699506190984476704529033056826916623164536349893268304478908382864342093065085644220702536014936470661634136750798667641

    Lalu level 2
    [+] Level 2 : Temukan nilai p

    n = 10872329446459129667921644340962528388878929362939012297295288926876443586605345820094871187376734268471914144532889920441052111516485840345063304798849199
    q = 97964102664819230216369526981268162507859658722305600628418624802857385115189
    p =

    Dapat menggunakan persamaan sebelumnya hanya ditukar posisi p = nq

    >>> def soal2(n,q):
    ... p = n/q
    ... print(p)
    ... return;
    ...
    >>> soal2(n,q)
    110982790131385439183723482973777784066553128829290195687134540527228330203091





    Level 3

    [+] Level 3 : Temukan nilai m

    pesan = aku pasti bisa jadi juara hackfest 0x02
    m =

    Untuk mendapatkan m dapat dilakukan pengubahan pesan menjadi hexadecimal

    >>> def soal3(pesan):
    ... m = int(pesan.encode("hex"),16)
    ... print(m)
    ... return;
    ...
    >>> pesan = "aku pasti bisa jadi juara hackfest 0x02"
    >>> soal3(pesan)
    3175160763199730136104003070276660270796333966900447388966212557680438006565173088752158388274

    Level 4
    [+] Level 4 : Temukan nilai phi(n)

    n = 9206319279554238079698747425008417624874207283636875034394462687384683731832770440746049983145925424382008526538789703529606606309114020211552708433112187
    q = 98392596907614538909695412992547731548149407230658364699581726812760734593153
    phi(n) =

    Untuk mendapatkan (n)dapat digunakan rumus (n) =(p-1)(q-1) maka untuk level 4

    >>> def soal4(n,q):
    ... p = n/q
    ... phin = (p-1)*(q-1)
    ... print(phin)
    ... return;
    ...
    >>> soal4(n,q)
    9206319279554238079698747425008417624874207283636875034394462687384683731832578480954364508576426459271964149847992919399995028606507027058104941207936256
    Level 5

    [+] Level 5 : Temukan nilai d

    n = 9853378978342277246592854301601474299315203685648314474324753473155118482252169802617906434483572961369844016154721468959046212604116497292113114162231737
    p = 110033185946243101710239017871774914594735109397409265529182580549501277407929
    e = 65537
    d =

    Untuk level 5, q nya tidak diketahui maka harus melakukan q = nplalu untuk (n) =(p-1)(q-1)dan d = modulo inverse e dan (n)maka dalam python di lakukan

    >>> from libnum import invmod
    >>> def soal5(n,p,e):
    ...      q = n/p
    ...      phin = (p-1)*(q-1)
    ...      d = invmod(e, phin)
    ...      print(d)
    ...      return;
    ...
    >>> soal5(n,p,e)
    3440120304613419071353450711429319826092606856147200565894451748161531134968145179213649016515631007988591748561673347510075940851176671740951158297856001

    Level 6

    [+] Level 6 : Temukan nilai c

    pesan = 6J4fGdqv2mER1pq0cYOTiYsDOpJjJgKRIVmA9d0DQtMPAZyr
    n = 160530120449698853323914225889124288546202333785790888734659128737331626915319316700266511731408151927180987601275757530973277653384961677715161263674205308817194621469376259337292610388151469412735064526307603622141517435842801463275101483227977200587303919482938745312230648306154070691886591194934605433409
    q = 13165879531906425940330381135111494537878458358222582656432653812513061043891386238791888923754391942196746222741546266017174542138733300161390873843866919
    e = 65537
    c =

    Pada level 6 ini p tidak diketahui maka harus dilakukan p = nqdan pesan masih harus di ubah ke dalam hexadecimal dan untuk c = me % nmaka dalam python dapat dilakukan

    >>> def soal6(m,n,q,e):
    ... p = n/q
    ... m = int(m.encode("hex"),16)
    ... c = pow(m,e,n)
    ... print(c)
    ... return;
    ...
    >>> soal6(pesan,n,q,e)
    100501547972271070798318369578645466989911616757748641372952916585423785490588909924189274460434149361552127069392971622473595503186907497335888977716049079304160335989197580325853248310829095991132035902793603908571011915641163207424630738539889500138614509900784220676722179766888454341208545415304372961547

    Level 7

    [+] Level 7 : Temukan nilai m

    ciphertext in base64 = NBhrA55dSfY00kwWshL0e3WKcXYM6QqoDxt+cP2BCcwHPc7wNHTZ+L+89wyKw3TCXDgp8GpHLEAMvOPrJFZO6KaFoyHt8R46cCrwzFwx1x5C+miHhpUNVMcExnhG4M90VPq9EfEkCmHZJtXUfjbncXs5d7kBtT/8znjc9CdB9vw=
    n = 105634545350227668733616554822704614788920475329747055385504294275239128530470142574808200030192609373682071201808841553172406658025654874765485132609987007425076979724142236031162853736147304603432629192223788297598717680324572795857452903934488917270781541310261931620206108863609139447378538166776891718573
    q = 10057149911218765533626529011598670489153341897417383198981179878497158384644852029373336716203886373181491358314668788822752936362913099867066628093325287
    e = 65537
    m =

    Untuk level 7 pesan nya telah di encode dengan base64 berarti harus di decode dahulu dan di encode lagi menjadi hexadecimal lalu p dan (n)sama seperti sebelumnya dengan m =md % n dengan d =modulo inverse e dan (n)lalu m adalah pesan yang telah di decode dan di encode menjadi hex. Dalam python

    >>> import base64
    >>> def soal7(c,n,q,e):
    ... tempc = base64.b64decode(c)
    ... tempc = int(tempc.encode("hex"),16)
    ... p = n/q
    ... phin = (p-1)*(q-1)
    ... d = invmod(e, phin)
    ... m = pow(tempc,d,n)
    ... print(m)
    ... return;
    ...
    >>> soal7(pesan,n,q,e)
    15920080425091568109598387832238350405708995466701118404360496515404108810595592823358106083566318505980095945388855

    Level 8

    [+] Level 8 : Temukan plaintext

    ciphertext in base64 = X4eztVA+M9+dkuxSgS3e6JdLdbv9pFy1eWx0YuQyfCBS/8N9dvX9n+VZlEtCZDmqxfHW19TdO6tiHor34fhlWOmc0X8OyBF6ywIL6l9Z0fupNv+kPnoAS1LrQb/WPfq2YmT8tuE89Nm1erDI8tjsz9Cxq2BvW1geC/aH0l5xqvw=
    n = 112159657044006086576915455759176679621763496017981700046200895529676073817474177034245292799763333996176042362769229641412420129561323219586574124980985619853051416733196196651657810439513884095626601902976547198664947223165325332365109374872968723598810114042756682864529920654837856721441582636538549146817
    p = 10303880386138735355196665822024787118841643672219032647140881217742041465754554143032067331382589882001248527861118412427798577586084906701529625378686187
    e = 65537
    plaintext =

    Level 8 sama seperti level 7 dalam pengerjaan hanya tinggal mengubah hasil m dari angka ke string

    >>> from libnum import n2s
    >>> def soal8(c,n,q,e):
    ... tempc = base64.b64decode(c)
    ... tempc = int(tempc.encode("hex"),16)
    ... p = n/q
    ... phin = (p-1)*(q-1)
    ... d = invmod(e, phin)
    ... m = pow(tempc,d,n)
    ... str = n2s(m)
    ... print(str)
    ... return;
    ...
    >>> soal8(c,n,p,e)
    FBaZgCWjZ7n0QxUqH5LUD8opOegltdBGThfGkw8VdOmxNYmU

    Dan di dapatkan output

    [+] Baik, sudah saatnya aku memberi kakak flag
    [+] Ini flagnya kak : HackFest{basic_RSA_itu_pentiing_buangeet_lhoo_kak_hehe}

    Flag : HackFest{basic_RSA_itu_pentiing_buangeet_lhoo_kak_hehe}

    Categories: ,

    http://www.resepkuekeringku.com/2014/11/resep-donat-empuk-ala-dunkin-donut.html http://www.resepkuekeringku.com/2015/03/resep-kue-cubit-coklat-enak-dan-sederhana.html http://www.resepkuekeringku.com/2014/10/resep-donat-kentang-empuk-lembut-dan-enak.html http://www.resepkuekeringku.com/2014/07/resep-es-krim-goreng-coklat-kriuk-mudah-dan-sederhana-dengan-saus-strawberry.html http://www.resepkuekeringku.com/2014/06/resep-kue-es-krim-goreng-enak-dan-mudah.html http://www.resepkuekeringku.com/2014/09/resep-bolu-karamel-panggang-sarang-semut-lembut.html

    Copyright © FallCrescent | Powered by Blogger

    Design by Anders Noren       Up ↑