[ไม่ทำต่อแล้ว] PHP Virus Remover AJAX v2.S By EThaiZone

เริ่มโดย EThaiZone, 05 พฤษภาคม 2009, 10:24:00

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

sir_15

ตอนนี้Hostgator ปลอดภัยแล้วนะคะ ของเค้าดีจริงๆ  :'(

เหลือดรีมโหด ต้องรอดูอาการต่อไป

อ้างถึงเดียวเปิด donate จะได้เข้าทำนองของฟรีไม่มีในโลก     :D

เปิดเลยจ่ะโจ้เห็นด้วยนะ แค่นี้พี่ก็เกรงใจจะแย่  :)

EThaiZone

ของ dreamhost แค่แก้เรื่อง path ให้ย้อนหลังมา 1 ชั้นเอง
นอกนั้นเหมือนกันหมด

แต่ว่าปัญหาอยู่ที่จำนวนไฟล์ อย่างของคุณ sir_15 นี้
มีตั้ง 100 กว่าโดเมน

ซึ่งแบบว่า php มันจัดการไม่ค่อยจะไหว เลยกำลังนึกอาจต้องทำเป็น ajax เต็มๆ
เดี๋ยวต้องดูกันอีกที  :P

tinnoi

ขอบคุณมากครับ ขอรับไปลอง แล้วจะมีเอี่ยวด้วยครับ เจอบ่อยครับ ของผม
[direct=https://trainee.naruthee.com]หาที่ฝึกงาน[/direct] ,
[direct=http://www.piyamitrgroup.com]รับรื้อถอน[/direct] ,
[direct=https://fastvisa2024.weebly.com/]รับทำวีซ่า[/direct] ,
[direct=https://business.10thai.com]10thai[/direct]

sir_15

อ้างถึงจาก: EThaiZone ใน 05 พฤษภาคม 2009, 11:21:25
แนะนำให้เลี่ยงเลยนะครับ พวกโปรแกรมเถื่อนแนวแครก
ไม่ใช่แต่กับเฉพาะ FTP Client อย่าง Cuteftp
เชื่อไหม ทั้งคุณ sir_15 และอีกท่าน (ลูกค้าเก่าผม) ทั้งคู่ใช่ Cuteftp  อย่างไม่น่าเชื่อ


ลืมบอกไปค่ะ Cuteftp  ของกิวโหลดจากในบอร์ดนี่แหละ  :D

ball6847

อ้างถึงจาก: EThaiZone ใน 05 พฤษภาคม 2009, 12:38:56
ของ dreamhost แค่แก้เรื่อง path ให้ย้อนหลังมา 1 ชั้นเอง
นอกนั้นเหมือนกันหมด

แต่ว่าปัญหาอยู่ที่จำนวนไฟล์ อย่างของคุณ sir_15 นี้
มีตั้ง 100 กว่าโดเมน

ซึ่งแบบว่า php มันจัดการไม่ค่อยจะไหว เลยกำลังนึกอาจต้องทำเป็น ajax เต็มๆ
เดี๋ยวต้องดูกันอีกที  :P


เพราะงี้แหละ ผมเลยเอาของคุณ mean มาโมใส่ ajax  ;D
We use Ubuntu.

[direct=http://ng-seo.sourcelab.xyz/]AngularJS SEO Experimental[/direct]

sir_15

ลองดรีมโฮสมาแล้วนะคะ อีกโฮสนึงมานมีโดเมนไม่มาก ไม่ถึง 100 เลย ประมาณ 50-60 โดเมน





ลบได้สบายมากจ่ะ แต่ดรีมโฮส1 ที่มัน 168 โดเมนนี่ยังคงค้างอยู่ที่เดิม *--*

ใครที่มีโดเมนในดรีมโฮสไม่เยอะนำไปใช้ได้แล้วนะคะ ไม่มีปัญหา ผลงานคุณภาพ By EThaizone  :)

ปล.แอบประชาสัมพันธ์ให้ด้วย อิอิ

g-ji

มันขึ้นแบบนี้อ่า

Warning: Invalid argument supplied for foreach() in /home/xxxdomains/g-ji.com/public_html/php_virus_remover.php on line 80

Warning: Invalid argument supplied for foreach() in /home/xxx/domains/g-ji.com/public_html/php_virus_remover.php on line 94

Warning: Invalid argument supplied for foreach() in /home/xxx/domains/g-ji.com/public_html/php_virus_remover.php on line 94


ขึ้นอยู่ 3 บรรทัีดนี้ ยาวเป็นหางว่าวเลย  :'(

inDexTop10

[direct=http://goo.gl/h2PZom]Digitalocean.com[/direct] - ถูกและดีจริง ลด 10$ ลงไปเป็นบอก

mikeyx

Warning:  Invalid argument supplied for foreach() in /home/xxx/domains/xxx.com/public_html/virus-scan.php on line 77

error เยอะเลยครับจนถึง line 91

g-ji

อ้างถึงจาก: mikeyx ใน 05 พฤษภาคม 2009, 15:00:04
Warning:  Invalid argument supplied for foreach() in /home/xxx/domains/xxx.com/public_html/virus-scan.php on line 77

error เยอะเลยครับจนถึง line 91

ดูแล้วโครงสร้างเดียวกัน

ออใช่

ของเรามันบอกว่า file *.js มีปัญหา -*- ลองโหลดมาเปิดดูก็ไม่มีอะไรง่ะ

7

เอาเข้า sourceforce ไปเลยดิ จะได้เป็นเรื่องเป็นราว ให้คนเข้ามา submit signature เหมือนโปรแกรม antivirus

EThaiZone

อ้างถึงจาก: 7 ใน 05 พฤษภาคม 2009, 16:17:48
เอาเข้า sourceforce ไปเลยดิ จะได้เป็นเรื่องเป็นราว ให้คนเข้ามา submit signature เหมือนโปรแกรม antivirus
เรื่องคือภาษาปะกิดไม่คล่อง ไม่รู้จะเขียนอธิบายยังไง
กลัวไปขายขี้หน้า  ;D

ตอนนี้ขอกลับไปไล่โค้ดดูก่อน เห็นว่าเจอ error
เพราะเท่านี้เทสก็ยังไม่เจอ  :P

เออ นึกขึ้่นได้ อาจเพราะใ้ช glob ไม่ได้หรือเปล่าว้า  :P

g-ji

ของเรามัน error บรรทัดนี้อ่ะ

foreach($file as $node)

glob นั้นหมายถึง global หรือเปล่า ถ้าใช่ โฮสเราใช้ได้นะ :P (สคริปหน้าอ่านการ์ตูนใหม่ก็ใช้ เหอๆ)

SearchMarketing

มันคืออะไร มันทำอะไรหรอครับ

แล้วมันไปลบไวรัสได้ไง

ผมเจอ 10 ตัวแนะ clean ไปแล้ว แต่อ่านโค้ดไม่ออก อยากรู้ว่าทำอะไรลงไป กลัวเว็บเน่าอะคับ
:'( :'(

g-ji

อ้างถึงจาก: SearchMarketing ใน 05 พฤษภาคม 2009, 22:10:58
มันคืออะไร มันทำอะไรหรอครับ

แล้วมันไปลบไวรัสได้ไง

ผมเจอ 10 ตัวแนะ clean ไปแล้ว แต่อ่านโค้ดไม่ออก อยากรู้ว่าทำอะไรลงไป กลัวเว็บเน่าอะคับ
:'( :'(

สคริปนี้มันจะ หา สคริปท์ที่เป็นไวรัส หรือ เข้าข่ายที่จะเป็นไวรัส (ดูจากโค้ดที่เขียน)

แล้วจะลบโค้ดออก แทนที่ด้วย พื้นที่ว่างๆ แทน

EThaiZone

อ้างถึงจาก: g-ji ใน 05 พฤษภาคม 2009, 21:52:18
ของเรามัน error บรรทัดนี้อ่ะ

foreach($file as $node)

glob นั้นหมายถึง global หรือเปล่า ถ้าใช่ โฮสเราใช้ได้นะ :P (สคริปหน้าอ่านการ์ตูนใหม่ก็ใช้ เหอๆ)
glob จริงๆ ครับ เป็นฟัีงค์ชั่นสารพัดประโยชน์
http://www.thaiseoboard.com/index.php/topic,6920.msg241386.html#msg241386

อ้างถึงจาก: SearchMarketing ใน 05 พฤษภาคม 2009, 22:10:58
มันคืออะไร มันทำอะไรหรอครับ

แล้วมันไปลบไวรัสได้ไง

ผมเจอ 10 ตัวแนะ clean ไปแล้ว แต่อ่านโค้ดไม่ออก อยากรู้ว่าทำอะไรลงไป กลัวเว็บเน่าอะคับ
:'( :'(
อืม งั้นผมแจงให้สำหรับคนที่ไม่รู้เรื่องโค้ดละกัน ขั้นแรกเปิดในไฟล์ นะครับ จะเช่นช่วงนี้

## Virus Pattern (ห้ามแก้เด็ดขาด)
$virus_core = array(
"#(<\?.*?function_exists.*?fromCharCode.*?document\.write.*?</title>.*?gzencode.*?set_error_handler.*?\?>)#i", // (PHP/ScriptEngine/RSS) gumblar.cn
"#(<\?(php)?[^a-z0-9]*?eval\(base64_decode\(.*?'\)\);[^a-z0-9]*?\?>)#is", // (PHP/Backdoor/POST/Eval) gumblar.cn
"#<iframe.*?visibility: ?hidden.*?></iframe>#i", // (PHP/IFrame/Hidden) litecarexcellent.cn
"#\(function\(\)\{var.*?replace.*?eval\(unescape.*?\}\)\(\);#i", // (JS/ScriptEngine/RSS) gumblar.cn
"#\(function\([a-z0-9]*\)\{var.*?(replace|eval|unescape).*?\}\)\([^\)]*\);#i", // (JS/ScriptEngine/RSS) gumblar.cn
"#\(function\([a-z0-9]*\)\{eval\(unescape.*?replace.*?\}\)\([^\)]*\);#i", // (JS/ScriptEngine/RSS) gumblar.cn
);

มันเป็น Regex (Regular Expression) ที่ใช้แยกโค้ดที่เป็นไวรัสออกจากโค้ดปกติในไฟล์
นึกภาพ อย่าง บรรทัดนี้
#(<\?.*?function_exists.*?fromCharCode.*?document\.write.*?</title>.*?gzencode.*?set_error_handler.*?\?>)#i
แปลเป็นภาษาคนจะเป็นขั้นตอนดังนี้
หา <?
ผ่านไปๆๆ
หา function_exists
ผ่านไปๆๆ
หา fromCharCode
ผ่านไปๆๆ
หา document.write
ผ่านไปๆๆ
หา </title>
ผ่านไปๆๆ
หา gzencode
ผ่านไปๆๆ
หา set_error_handler
ผ่านไปๆๆ
หา ?>

แล้ว i ท้ายสุดคือ case insensitive คือไม่สนเรื่องตัวเล็กตัวใหญ่
และผมไม่ได้ใส่ s ไว้ เพื่อแสดงว่า ทั้งหมดอยู่ในบรรทัดเดียว

นี้แค่แนวคิด 1 บรรทัดครับ ผมก็ต้องได้โค้ดที่ว่าเป็นอันตรายมาก่อน (จากตัวไฟล์เลย)
แล้วแปลงเป็น regex ใส่ไว้ กลายเป็น Virus Pattern ไว้ใช้ตรวจ

แล้วตัวโค้ดที่เหลือใน php virus remover (ตอนแรกไม่รู้ตั้งชื่อไรให้มันดี)
ก็ทำหน้าที่อ่านไฟล์ที่น่าโดนเล่นงาน และตามลบเฉพาะส่วนที่ตรวจแล้วตรงกับ Virus Pattern ครับ

:)

SearchMarketing

ขอบคุณครับแล้วมันมาอยู่บนเว็บผมได้ไงอะ

ระหว่าง ftp กับผมไปโหลดสคริปใต้ดินมาใช้ไม่รู้เรื่อง

g-ji

อ้างถึงจาก: EThaiZone ใน 05 พฤษภาคม 2009, 22:21:19
อ้างถึงจาก: g-ji ใน 05 พฤษภาคม 2009, 21:52:18
ของเรามัน error บรรทัดนี้อ่ะ

foreach($file as $node)

glob นั้นหมายถึง global หรือเปล่า ถ้าใช่ โฮสเราใช้ได้นะ :P (สคริปหน้าอ่านการ์ตูนใหม่ก็ใช้ เหอๆ)
glob จริงๆ ครับ เป็นฟัีงค์ชั่นสารพัดประโยชน์
http://www.thaiseoboard.com/index.php/topic,6920.msg241386.html#msg241386


ถ้าตัว glob อันนี้

$file = glob($path."*.{".$ext2."}",GLOB_BRACE);

น่าจะใช่จุดที่มีปัญหากับเรานะั เพราะมันเริ่ม error ที่บรรทัดนี้

foreach($file as $node)

แค่ ชุดนี้ชุดเดียวที่มีปัญหา


foreach($file as $node) {
$data = @file_get_contents($node);
foreach($virus_core as $code) {
preg_match($code, $data, $match);
if(!empty($match[0])) {
$name = strtr($node, $fix);
if(isset($_GET['debug'])) echo "<b>Filename:</b> ".$name."<br/>".$match[0]."<br/>";
$list_problem[] = $node;
continue;
}
}
}

EThaiZone

เออ ลืมบอกเทคนิคหนึ่งเรื่องการเขียน regex เผื่อใครอยากใช้

สังเกตนะครับ ผมไม่ได้ใช้ .* แบบชาวบ้าน
แต่ใช้ .*? แทน ภาษาของมันเรียกว่าการทำเป็น ungreedy
ซึ่งช่วยเรื่องการเขียน pattern ที่ถูกต้องได้มากๆ
เพราะปกติมันจะเป็น greedy มาแต่แรก

ยกตัวอย่าง
$str = '<a href="xxx"><b>Bla Bla</b></a>';
preg_match("#<.*>#", $str, $match); //Greedy
print_r($match);
preg_match("#<.*?>#", $str, $match); //UnGreedy
print_r($match);


ผลลัพท์
Array
(
   
  • => <a href="xxx"><b>Bla Bla</b></a>
    )
    Array
    (
       
  • => <a href="xxx">
    )

    ใช้ให้เหมาะ แล้วโครงสร้าง web scraping ของท่านจะเจริญ  

    ชวนมาทำหมวกดำกันซะงั้น :D

    ปล. ลืมบอก หรือใส่ U ต่อท้ายก็ได้ จะใช้ .* แต่มีผลเป็น ungreedy เหมือนกัน
    อย่าไปใส่ผิดเป็น u ล่ะ เพราะ u หมายถึง unicode  :P

EThaiZone

อ้างถึงจาก: g-ji ใน 05 พฤษภาคม 2009, 22:27:32
อ้างถึงจาก: EThaiZone ใน 05 พฤษภาคม 2009, 22:21:19
อ้างถึงจาก: g-ji ใน 05 พฤษภาคม 2009, 21:52:18
ของเรามัน error บรรทัดนี้อ่ะ

foreach($file as $node)

glob นั้นหมายถึง global หรือเปล่า ถ้าใช่ โฮสเราใช้ได้นะ :P (สคริปหน้าอ่านการ์ตูนใหม่ก็ใช้ เหอๆ)
glob จริงๆ ครับ เป็นฟัีงค์ชั่นสารพัดประโยชน์
http://www.thaiseoboard.com/index.php/topic,6920.msg241386.html#msg241386


ถ้าตัว glob อันนี้

$file = glob($path."*.{".$ext2."}",GLOB_BRACE);

น่าจะใช่จุดที่มีปัญหากับเรานะั เพราะมันเริ่ม error ที่บรรทัดนี้

foreach($file as $node)

แค่ ชุดนี้ชุดเดียวที่มีปัญหา


foreach($file as $node) {
$data = @file_get_contents($node);
foreach($virus_core as $code) {
preg_match($code, $data, $match);
if(!empty($match[0])) {
$name = strtr($node, $fix);
if(isset($_GET['debug'])) echo "<b>Filename:</b> ".$name."<br/>".$match[0]."<br/>";
$list_problem[] = $node;
continue;
}
}
}


น่าสนใจนะ เพราะจาก php.net
Note:  The GLOB_BRACE flag is not available on some non GNU systems, like Solaris. 

เอาเป็นว่าเดี๋ยวเวอร์ชั่นหน้า จะทำเป็น opendir readdir แทน
ตอนนี้ต้องขอไป benchmark ดูก่อนว่าแบบใช้ regex กับไม่ใช้ (explode . แล้วถึงตัวท้าย)
แบบไหนจะไวกว่ากัน

:P