🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.os.linux.programowanie
Article #72866

bash zamienia mi cudzysłowy na apostrofy w skrypcie

#72866
From: Jivanmukta
Date: Sun, 10 Feb 2019 15:40
35 lines
2396 bytes
Piszę prosty obfuscator PHP przy pomocy bash i php.
Próbuję sprawdzić czy kod źródłowy zawiera zmienne zmiennych (tzn. napis 
$$variable w PHP).
Robię to tak:

preg_match_file() {
   php <$1 >>$2 -r "\$f = fopen('php://stdin', 'r'); while (\$line = 
fgets(\$f)) { while (preg_match('$3', \$line, \$matches)) { if 
(!strstr('$5', \$matches[$4])) echo \$matches[$4]; \$line = 
preg_replace('$3', '', \$line); } } fclose(\$f);"
}

preg_match_file $f /tmp/simplephpobfuscator_error '\$\$(\w|\d|_)+' 1 ""

tzn. przekazuję do funkcji bashowej preg_match_file wyrażenie regularne 
\$\$(\w|\d|_)+
I tu pojawia się problem bo (nie wiem dlaczego bash zamienia mi 
cudzysłowy " na apostrofy '). Tzn jak wywołam mój skrypt:
   bash -x ./simplephpobfuscator.sh 2>stderr.txt
to w stderr.txt mam:

+ preg_match_file rozgloszenia/application/controllers/Admin.php 
/tmp/simplephpobfuscator_error '\$\$(\w|\d|_)+' 1 ''
+ php -r '$f = fopen('\''php://stdin'\'', '\''r'\''); while ($line = 
fgets($f)) { while (preg_match('\''\$\$(\w|\d|_)+'\'', $line, $matches)) 
{ if (!strstr('\'''\'', $matches[1])) echo $matches[1]; $line = 
preg_replace('\''\$\$(\w|\d|_)+'\'', '\'''\'', $line); } } fclose($f);'
PHP Warning:  preg_match(): Delimiter must not be alphanumeric or 
backslash in Command line code on line 1
PHP Stack trace:
PHP   1. {main}() Command line code:0
PHP   2. preg_match() Command line code:1

Nie rozumiem dlaczego bash pozamieniał " na ' i nie wiem jak temu 
zapobiec. Proszę o pomoc.
Technical Details
Message-ID: <q3pgko$2kfqm$1@portraits.wsisiz.edu.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!wsisiz.edu.pl!.POSTED.public-gprs639615.centertel.pl!not-for-mail

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!wsisiz.edu.pl!.POSTED.public-gprs639615.centertel.pl!not-for-mail
From: Jivanmukta <jivanmukkta@poczta.onet.pl>
Newsgroups: pl.comp.os.linux.programowanie
Subject: bash zamienia mi cudzysłowy na apostrofy w skrypcie
Date: Sun, 10 Feb 2019 16:40:05 +0100
Organization: http://www.wit.edu.pl
Message-ID: <q3pgko$2kfqm$1@portraits.wsisiz.edu.pl>
Mime-Version: 1.0
Injection-Date: Sun, 10 Feb 2019 15:40:08 -0000 (UTC)
Injection-Info: portraits.wsisiz.edu.pl; posting-host="public-gprs639615.centertel.pl:5.184.41.192"; logging-data="2768726"; mail-complaints-to="abuse@wsisiz.edu.pl"
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1
X-Mozilla-News-Host: news://news.icp.pl:119
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit