[BlueLeaf1336]> PROBLEMS> PingShooter>

PingShooter - Let's use ICMP.DLL

historyTOP

2004/01/20:作成

overviewTOP

2004/01/20

イマサラにもほどがありますが...pingを打ちたいなぁと思っています。DOSプロンプトでえぇやんといえばそのとおりですが、Delphiでやりたいなぁと。
そういうわけで、Googleで「Delphi ICMP」で検索してみました。いやいやナンボでもありますねぇ。いくつかピックアップしてみます。

それからDelphiではないのですが、ICMP.DLLを逆アセンブルしたという風なことが書いてあったページもせっかく見つけたので...

えーと、いくらでもあるので終了。といってもよいのですが、ここではあえてやります。やってみたいのでやります。適当にあるいは思い切りパクったりペチったりギったりしながらやりましょう。

あ、あと注意事項としては、構造体をバリバリ定義してゴリゴリとソケット作って...では基本的にないということです。特にpingを打つ時はICMP.DLLを使います(タイトルもそうなってますが)。何かを期待してこのページを見つけた方には、先に謝っておきます。ごめんなさい。

とはいえいつかそうしたいなぁとは思うんですが、ICMP.DLLを利用したユニットのコメントに必ず書いてあるのが、Raw Socketをadministrator権限以外では使えないヨ・でもICMP.DLLはMicrosoftは推奨してなくてWindowsからいつなくなってもおかしくないヨの2点です。1点目はadministrator権限でしか使わないWindows2000ユーザーなら(つまり自分ですが)できるのか?というのが救いなんですが、とにかくネットワーク系のプログラム(それに限らずですが)の技術力の圧倒的足りなさと、TCP/IPの本を懲りずに買い込んでるにも関わらず構造体の定義で力尽きてしまうことから、しばらくは無理だろうなと思ってます。で2点目は、なくなるかもしれないといっても、自分がWindows2000を使ってて、C:\WINNT\System32\icmp.dllが存在している以上、気にせんでヨシというところですか。

途中で文章がねじれましたが、とにかく楽に行こうということです。

ICMP.DLLの使い方の確認TOP

最終的には、いろいろと(いぅてもping/tracertしかないですが)したいんですが、とりあえず根元を確認しておきます。確認するのは、icmp.dll(Shift押すのが邪魔くさいので小文字にしました)のヘッダのPascalへの変換と関数の使い方の2点かと思います。

まあ、このページの最初にリンクを貼りましたが両方ともいくらでもサンプルがあります。適当に確認しておきましょう。具体的にはパクリましょう。

CodeCentral: Submissions by Scott MillerにたくさんあるうちのHow to Ping a machine using the ICMP.DLL APIからサンプルプロジェクトをダウンロードします(無料ですが登録が必要です。とはいえ登録しておいて嫌になることは全くありません)。このプロジェクトはそのままコンパイルでき、pingを実行できます。終わり。...じゃなくて、これをベースにつつきまわそうと思います。で、少しだけライセンスなどを確認しておきます。少しだけ日本語に超訳しておきます。

 title  How to Ping a maching using the API in ICMP.DLL
    by  Scott A. Miller
 email  smillersmiller AT yahoo.com
        (replace " AT " with "@")

Code Central Submission ID:  16430
available from http://codecentral.borland.com/

Last Modified  November 4, 2002

著作権:
    Copyright 2002  by Scott A. Miller
    このソフトウェアは非商用目的の場合は自由に配布してもかまいません。
    商用目的の場合は permission and license が必要です。

免責条項:
    このソフトウェアは 'as-is' で提供されます。any express や保証は一
    切ありません。何かあっても知りません。

目的:
    このプロジェクトは ICMP.DLL で提供される Win32 API を使用した
    "ping" の打ち方と戻り値の読み取りに関するデモです。

    この方式は、Win NT や Win 2000 では 通常の方法で ping を打つために
    administrator 権限が必要なことを踏まえると重要なものです。
    ICMP.DLL では admin 権限が必要ありません。

    注意すべきは、Microsoft は将来のバージョンのWindowsには ICMP.DLL
    が含まれないかもしれないとほのめかしていることです。

このページは非商用だから、コードの一部を載せたりするのはよいんですかねぇ。でも普通は配布してよい時って、そのまま説明書やなんやかやを含めてってことが多いのでそのあたりを踏まえて、パクリましょう。

その前に、以前に調べた時に発見したサイトのリンクをついでに。

上2つのEXEは画面がかっこよさげで良い感じです。

(続きます...)

EOFTOP