ブログ

割とコンピュータよりの情報をお届けします。

2018年4月5日

C言語のchar (*) [4]って何?

C# DllImportでDLLを試していたが、C言語のヘッダファイルに記述された内容について忘れていたことがあった。

プロトタイプ宣言に char (*) [4] とあって「なんだっけ」と思って4時間ほど考えていた。

char (*) [4] をそのまま読んで要素数4つのバイト配列へのポインタの配列か?と思っていた。

Visual Studioで新しいプロジェクトを作って関数のテストをいろいろしていて、これは2次元配列であることが分かった。

ようやく解決した。

≫ 続きを読む

2018/04/05 コンピュータ   TakeMe

Pythonでポートスキャン

Pythonでポートスキャンをする方法が載っていたので試してみた。

ポートスキャンは時間がかかると思っていたが、一つ一つの処理はそんなでもないが、tcpで通信する分タイムアウトを待って応答を返しているのでシリーズで処理すると時間がかかるようだ。

一応マルチスレッドで並列処理してみた。

import socket
import threading

scan_range = [1, 2000];

host = "localhost";

threads = [];
ports = [];
isopen = [];

def Run(port, i):
    con = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    return_code = con.connect_ex((host, port))
    con.close()

    if return_code == 0:
        isopen[i] = 1;
    
    
count = 0;
for port in range(scan_range[0], scan_range[1]):
    ports.append(port);
    isopen.append(0);
    thread = threading.Thread(target=Run, args=(port, count));
    thread.start();
    threads.append(thread);
    count = count + 1;

for i in range(len(threads)):
    threads[i].join();
    if isopen[i] == 1:
        print("%d open" % ports[i]);

≫ 続きを読む

2018/04/05 コンピュータ   TakeMe