Надо у одного чудака с компа слить себе папку с важными файлами через интернет (иначе нельзя). Есть возможность внедрить ему прогу, приклеенную к другой. С бекдором можно попробовать, но у него наверняка блокированы порты. Как решить эту задачу? Может, кто уже писал что-то подобное? Был вариант как-то паковать, кодировать (типа Base64) и передавать постом на бесплатный хостинг. 1. Какие есть еще варианты? 2. Как скрипту (желательно php) получить файл и сохранить на сервере (есть стандартные средства или надо самому все писать?) 3. Если прийдется кодировать/раскодировать в Base64, как это сделать на php? С заливной частью, думаю, проблем не будет.
большая папка? нельзя сжать её rar-ом / zip-ом - чтобы один файл, а не папка вышла и потом выслать архив на ящик. незнаю что там да как но вроде ты усложняешь сильно всё. у него там сервер что-ли? как у него на компе php выполняться будит? больше инфы давай
Жора Нормально он все объяснил vvs777 Я так понимаю, Вас интересуют способы обхода фаервола. Если у Вас есть навоки в программировании, обратите внимание на эту тему: http://www.security-teams.net/index.php?showtopic=3059. Там в сорсах траяна можно обнаружить файл FuckFirewall.cpp - это то, что Вам нужно. По поводу скачивания в Base64 - думаю администрация не сильно обидится, если я немного насорю Функци base64 кодирования написаны на асме и занимают много метса, я залил их сюда: https://drmist.ru/download/base64.cpp Всего этого должно Вам хватить, чтобы собрать несложный троян со всеми необходимыми функциями. Разумеется, если вы знаете, что делать с исходниками на C++
До сих пор вижу такие посты - честно скажу, смеюсь. #FUCK_FIREWALL - действительно тема. Наверное прокатит на Outpost 0.01 demo... Код обалденный... Сверх приватный и нужный... Да, много места, но всеже не столь много чтобы их нельзя было вынуть из OpenSSH для FreeBSD... B64.CPP Code: /* From openssh-3.1p1.tar.gz\openssh-3.1p1\openbsd-compat\base64.c */ /* original header */ /* $OpenBSD: base64.c,v 1.3 1997/11/08 20:46:55 deraadt Exp $ */ /* * Copyright (c) 1996 by Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS * SOFTWARE. */ /* * Portions Copyright (c) 1995 by International Business Machines, Inc. * * International Business Machines, Inc. (hereinafter called IBM) grants * permission under its copyrights to use, copy, modify, and distribute this * Software with or without fee, provided that the above copyright notice and * all paragraphs of this notice appear in all copies, and that the name of IBM * not be used in connection with the marketing of any product incorporating * the Software or modifications thereof, without specific, written prior * permission. * * To the extent it has a right to do so, IBM grants an immunity from suit * under its patents, if any, for the use, sale or manufacture of products to * the extent that such products are used for performing Domain Name System * dynamic updates in TCP/IP networks by means of the Software. No immunity is * granted for any product per se or for any other function of any product. * * THE SOFTWARE IS PROVIDED "AS IS", AND IBM DISCLAIMS ALL WARRANTIES, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE. IN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, * DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER ARISING * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE, EVEN * IF IBM IS APPRISED OF THE POSSIBILITY OF SUCH DAMAGES. */ #include <winsock.h> //#define Assert(Cond) if (!(Cond)) abort() #define Assert(Cond) // static const char Base64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; static const char Pad64 = '='; int Base64_Decode( char const *src, u_char *target, size_t targsize ) { int tarindex, state, ch; char *pos; state = 0; tarindex = 0; while ((ch = *src++) != '\0') { if (isspace( ch )) continue; if (ch == Pad64) break; pos = strchr( Base64, ch ); if (pos == 0) return (-1); switch (state) { case 0: if (target) { if (tarindex >= targsize) return (-1); target[tarindex] = (pos - Base64) << 2; } state = 1; break; case 1: if (target) { if (tarindex + 1 >= targsize) return (-1); target[tarindex] |= (pos - Base64) >> 4; target[tarindex+1] = ((pos - Base64) & 0x0f) << 4 ; } tarindex++; state = 2; break; case 2: if (target) { if (tarindex + 1 >= targsize) return (-1); target[tarindex] |= (pos - Base64) >> 2; target[tarindex+1] = ((pos - Base64) & 0x03) << 6; } tarindex++; state = 3; break; case 3: if (target) { if (tarindex >= targsize) return (-1); target[tarindex] |= (pos - Base64); } tarindex++; state = 0; break; } } if (ch == Pad64) { ch = *src++; switch (state) { case 0: case 1: return (-1); case 2: for (; ch != '\0'; ch = *src++) if (!isspace( ch )) break; if (ch != Pad64) return (-1); ch = *src++; case 3: for (; ch != '\0'; ch = *src++) if (!isspace( ch )) return (-1); if (target && target[tarindex] != 0) return (-1); } } else { if (state != 0) return (-1); } return (tarindex); } int Base64_Encode( u_char const *src, size_t srclength, char *target, size_t targsize ) { size_t datalength = 0; u_char input[3]; u_char output[4]; int i; while (2 < srclength) { input[0] = *src++; input[1] = *src++; input[2] = *src++; srclength -= 3; output[0] = input[0] >> 2; output[1] = ((input[0] & 0x03) << 4) + (input[1] >> 4); output[2] = ((input[1] & 0x0f) << 2) + (input[2] >> 6); output[3] = input[2] & 0x3f; Assert( output[0] < 64 ); Assert( output[1] < 64 ); Assert( output[2] < 64 ); Assert( output[3] < 64 ); if (datalength + 4 > targsize) return (-1); target[datalength++] = Base64[output[0]]; target[datalength++] = Base64[output[1]]; target[datalength++] = Base64[output[2]]; target[datalength++] = Base64[output[3]]; } if (0 != srclength) { input[0] = input[1] = input[2] = '\0'; for (i = 0; i < srclength; i++) input[i] = *src++; output[0] = input[0] >> 2; output[1] = ((input[0] & 0x03) << 4) + (input[1] >> 4); output[2] = ((input[1] & 0x0f) << 2) + (input[2] >> 6); Assert( output[0] < 64 ); Assert( output[1] < 64 ); Assert( output[2] < 64 ); if (datalength + 4 > targsize) return (-1); target[datalength++] = Base64[output[0]]; target[datalength++] = Base64[output[1]]; if (srclength == 1) target[datalength++] = Pad64; else target[datalength++] = Base64[output[2]]; target[datalength++] = Pad64; } if (datalength >= targsize) return (-1); target[datalength] = '\0'; return (datalength); } B64.H Code: /* (C) KEZ */ // from openssh-3.1p1.tar.gz\openssh-3.1p1\openbsd-compat\base64.h #ifndef _BASE64_H_INCLUDED_ #define _BASE64_H_INCLUDED_ // like php style extern int Base64_Decode( char const *src, u_char *target, size_t targsize ); extern int Base64_Encode( u_char const *src, size_t srclength, char *target, size_t targsize ); #endif // _BASE64_H_INCLUDED_ долой кодинг! даешь кантер страйг!
kez Меня не покидает чувство, что у Вас ко мне некого рода личная неприязнь ))) Или просто от прероды желание всех кругом опустить. Предлогаю Вам написать что-нибудь свое и ставте туда хоть компоненты дельфовските, хоть чужой алгоритм (имхо не самой лучшей реализации). Степень приватности и нужности выберете самостоятельно.
Ой как все запущено... Во первых я хорошо шарю в делфи но не в сях. За ссылки спасибо, пригодятся. Я имел в виду что прога посылает файл на хостинг, на котором висит php скрипт. Че-то меня бейс64 заломал сразу. Буду слать в виде =45=64=97... так легче кодить-декодить. Думал, есть в php стандартная функция как полученный в параметрах файл сохранить на диске. Слышал, что такая есть, но не видел как ее юзать.
vvs777 1) В чем заключается проблема перевода из си в дельфи? могу попробовать объяснить - это не сложно. 2) Зачем =AA=BB=CC...., Если можно AABBCC...? кроме того, php прекрасно декодирует base64 - а данных передаваться будет значительно меньше, чем в hex'е. 3) Вы когда-нибудь заливали что-нить на webfile.ru? Это делается через специальный пост запрос. При этом файл сохраняется на сервере в /tmp, а скрипту передается параметр $_FILE["имя_переменной_в_пост_запросе"]. Это переменная - ассоциати(ви? - как правильно? )) )рованный двумерный массив, $_FILE[..]["size"] - размер файла, $_FILE[..]["error"] - код ошибки, $_FILE[..]["tmp_name"] - имя файла на сервере. Остается только скопировать его из /tmp куда вам нужно. Что относительно программы - она должна послать специальный пост-запрос (http://rfc.net/rfc2388.html - multipart/form-data). Вобще по ключевым словам "сокеты, multipart/form-data, POST" можно найти хорошее описание на русском. Но лично я поступил бы так: написал бекдур, запущенный на 2-х портах: на первом - перенапревленный ввод/вывод из cmd.exe, на втором - протокол такой: я шлю полный путь к файлу, троян отсылает его в base64. (а можно и вобще никак не закодированный или даже упакованный) Написать клиент (если netcat кажется неудобным) не составит труда.
Я недавно нарвался на пидерский комп кде мой трой не сработал потому, что порты перекрыты и еще и ход из всей сети через 1 ящик. Сейчас мне это срочно надо сделать до четверга. Ошибки быть не должно. Прога должна все делать сама. Может и Бейс сделаю. Ps: Внедпрение в адресное пространство разрешенных файрволами прог - рулит. Пока проблема - поток в библиотеке прерывается при закрытии программы, а должен завершиться культурно.
Короче сделал. Только вот лажа. Текстовые вообще шлются без проблем. Послал xls (EXEL). Скачал по фтп. Размер совпадает, но не открывается. Прописал FC /B file.xls file_dn.xls и получил длинный лист Code: 00000008: 00 20 00000009: 00 20 0000000A: 00 20 0000000B: 00 20 0000000C: 00 20 0000000D: 00 20 0000000E: 00 20 0000000F: 00 20 00000010: 00 20 (Везде где были 00 стало 20) Как с этим бороться?
В смысле? Я и так все в двоичном шлю. И текст в том числе. Чтоб не морочить голову. пока работает вариант с представлением в виде Hex кода и отправки этой хренотени, но объем 2х.
попробуй это, при желании можно исправить, у меня просто нет времени и желания xoft похож на base64 но ключевой надыбал из движка платежки енкрипт,а декрипт писал сам, поэтому различаются стили.. ногами не бейте Code: <?php function changedatain($plain_data,$key){ // encode plain data with key using xoft encryption $key_length=0; //key length counter $all_bin_chars=""; $cipher_data=""; for($i=0;$i<strlen($plain_data);$i++){ $p=substr($plain_data,$i,1); // p = plaintext $k=substr($key,$key_length,1); // k = key $key_length++; if($key_length>=strlen($key)){ $key_length=0; } $dec_chars=ord($p)^ord($k); $dec_chars=$dec_chars + strlen($key); $bin_chars=decbin($dec_chars); while(strlen($bin_chars)<8){ $bin_chars="0".$bin_chars; } $all_bin_chars=$all_bin_chars.$bin_chars; } $m=0; for($j=0;$j<strlen($all_bin_chars);$j=$j+4){ $four_bit=substr($all_bin_chars,$j,4); // split 8 bit to 4 bit $four_bit_dec=bindec($four_bit); $decimal_value=$four_bit_dec * 4 + $m; //multiply by 4 plus m where m=0,1,2, or 3 $base64_value=dectobase64($decimal_value); //convert to base64 value $cipher_data=$cipher_data.$base64_value; $m++; if($m>3){ $m=0; } } return $cipher_data; } function dectobase64($decimal_value){ // convert decimal value into base64 value switch($decimal_value){ case 0: $base64_value="A";break; case 1: $base64_value="B";break; case 2: $base64_value="C";break; case 3: $base64_value="D";break; case 4: $base64_value="E";break; case 5: $base64_value="F";break; case 6: $base64_value="G";break; case 7: $base64_value="H";break; case 8: $base64_value="I";break; case 9: $base64_value="J";break; case 10: $base64_value="K";break; case 11: $base64_value="L";break; case 12: $base64_value="M";break; case 13: $base64_value="N";break; case 14: $base64_value="O";break; case 15: $base64_value="P";break; case 16: $base64_value="Q";break; case 17: $base64_value="R";break; case 18: $base64_value="S";break; case 19: $base64_value="T";break; case 20: $base64_value="U";break; case 21: $base64_value="V";break; case 22: $base64_value="W";break; case 23: $base64_value="X";break; case 24: $base64_value="Y";break; case 25: $base64_value="Z";break; case 26: $base64_value="a";break; case 27: $base64_value="b";break; case 28: $base64_value="c";break; case 29: $base64_value="d";break; case 30: $base64_value="e";break; case 31: $base64_value="f";break; case 32: $base64_value="g";break; case 33: $base64_value="h";break; case 34: $base64_value="i";break; case 35: $base64_value="j";break; case 36: $base64_value="k";break; case 37: $base64_value="l";break; case 38: $base64_value="m";break; case 39: $base64_value="n";break; case 40: $base64_value="o";break; case 41: $base64_value="p";break; case 42: $base64_value="q";break; case 43: $base64_value="r";break; case 44: $base64_value="s";break; case 45: $base64_value="t";break; case 46: $base64_value="u";break; case 47: $base64_value="v";break; case 48: $base64_value="w";break; case 49: $base64_value="x";break; case 50: $base64_value="y";break; case 51: $base64_value="z";break; case 52: $base64_value="0";break; case 53: $base64_value="1";break; case 54: $base64_value="2";break; case 55: $base64_value="3";break; case 56: $base64_value="4";break; case 57: $base64_value="5";break; case 58: $base64_value="6";break; case 59: $base64_value="7";break; case 60: $base64_value="8";break; case 61: $base64_value="9";break; case 62: $base64_value="+";break; case 63: $base64_value="/";break; case 64: $base64_value="=";break; default: $base64_value="a";break; } return $base64_value; } function base64todec($decimal_value){ $base64_value=97; if ((ord($decimal_value) > 64) && (ord($decimal_value) < 91)) $base64_value=ord($decimal_value)-65; if ((ord($decimal_value) > 96) && (ord($decimal_value) < 123)) $base64_value=ord($decimal_value)-71; if ((ord($decimal_value) > 47) && (ord($decimal_value) < 58)) $base64_value=ord($decimal_value)+4; if ($decimal_value == "+") $base64_value=62; if ($decimal_value == "/") $base64_value=63; if ($decimal_value == "=") $base64_value=64; return $base64_value; } function decr($plain_data,$key) { $m = 0; $bin = ""; $result = ""; for($i=0;$i<strlen($plain_data);$i++){ $p=substr($plain_data,$i,1); $c=base64todec ($p); $c=($c-$m)/4; $m++; if ($m>3) $m=0; $b = decbin($c); while(strlen($b)<4) $b="0".$b; $bin .= $b; } $m = 0; for($j=0;$j<strlen($bin);$j=$j+8){ $bit_8=substr($bin,$j,8); $c = bindec($bit_8) - strlen($key); $k=substr($key,$m,1); // k = key $m++; if ($m==strlen($key)) $m=0; $res=($c^ord($k)); $result .= chr($res); } return $result; } /*echo echo changedatain("56435168",changeme)."<br>"; echo decr("U5abU1aXUpWzYNaX",changeme); //4613213468735121354 */ $f = file ("nums.txt"); foreach ($f as $c) { echo decr(trim($c),changeme)."<br>"; } ?>