Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use strict;
- use threads ('exit' => 'threads_only');
- use IO::Socket;
- # Helps to find similar PNG images
- # uploaded around. For example
- # if direct link you have for
- # original image looks like
- #
- # https://image.ibb.co/abcdef/z.png
- #
- # Then using this script
- # you can search for another
- # images uploaded in the same dir
- #
- # https://image.ibb.co/a**def/..png
- #
- # Where * will be used for bruteforce
- #
- # Script will create 60 threads where
- # every new thread will get unique
- # char in second position to brute
- # and will use every possible char
- # at third position of filepath
- #
- # Script will accept images as right
- # only if image is in PNG format and
- # have a width which equals to 720px
- # This is a "*" in "*bcdef" filepath
- my $prefix_char1 = "";
- # Do not touch
- my $prefix_char2 = "";
- # This is a "***" in "abc***" filepath
- my $suffix_string = "YPc";
- # Let's find 'em all!
- my $prefix_string = "0123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ";
- my @prefix_list = reverse split "", $prefix_string;
- my @thread_array;
- my @thread_alive;
- my $thread_handle;
- my $thread_waiting;
- foreach $prefix_char2 (@prefix_list) {
- push @thread_array, threads->create(\&thread, $prefix_char2, $prefix_char1, $suffix_string);
- }
- foreach $thread_handle (@thread_array) {
- $thread_handle->join();
- }
- while (1) {
- @thread_alive = threads->list(threads::running);
- $thread_waiting = $#thread_alive + 1;
- if ($thread_waiting == 0) {
- last;
- }
- print "WAITING FOR $thread_waiting THREADS\n";
- sleep 1;
- }
- sub thread {
- my $fn = "";
- my $tc = "";
- my $prefix_char3 = "";
- my $prefix_char2 = shift;
- my $prefix_char1 = shift;
- my $suffix_string = shift;
- my $prefix_string = "123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ";
- my @prefix_list = reverse split "", $prefix_string;
- foreach $prefix_char3 (@prefix_list) {
- $fn = "$prefix_char1$prefix_char2$prefix_char3$suffix_string";
- if (file_exists($fn)) {
- $tc = file_good($fn);
- if ($tc) {
- print "CHECK $fn $tc\n";
- }
- undef $tc;
- }
- }
- exit;
- }
- sub file_exists {
- my $fn = shift;
- my ($sh, $sb, $rc);
- my $sh = IO::Socket::INET->new ("image.ibb.co:80");
- print $sh "GET /$fn/..png HTTP/1.1\r\nHost: image.ibb.co\r\n\r\n";
- $sh->recv ($sb, 12);
- close $sh;
- $rc = substr ($sb, 9, 3);
- if ($rc == 200) {
- return 1;
- } else {
- return 0;
- }
- }
- sub file_good {
- my $fn = shift;
- my ($sh, $sb, $pp, $tp, $dp, $tc, $iw, $ih);
- $sh = IO::Socket::INET->new("image.ibb.co:80");
- print $sh "GET /$fn/..png HTTP/1.1\r\nHost: image.ibb.co\r\n\r\n";
- $sh->recv ($sb, 768);
- close $sh;
- $pp = index ($sb, "\x89\x50\x4E\x47");
- $tp = index ($sb, "\x4C\x61\x73\x74");
- $dp = index ($sb, "\x49\x48\x44\x52");
- if ($pp && $tp && $dp) {
- $tc = substr ($sb, $tp + 20, 20);
- ($iw, $ih) = unpack ("NN", substr ($sb, $dp + 4, 8));
- if ($iw == 720) {
- return $tc;
- } else {
- return 0;
- }
- } else {
- return 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement