投稿者「Keiichi Horiai」のアーカイブ

ISS撮影挑戦(失敗)


https://iss.jaxa.jp/iss/index.html
国際宇宙ステーション(ISS)は、日本、米国、ロシア、カナダ、欧州の15カ国が協力して建設した、地上約400km上空にある人類史上最大の有人実験施設です。
その大きさは約108.5m×72.8mとほぼサッカー場ほどの大きさとなり、質量は約420トンにもなります。
2021年2月25日 5時6分頃の位置
東京のきぼう予想1300Km~1400Km

火星、土星、木星

2018年7月15日 サッカーWORLDCUPの決勝戦を見ながら、、
ほぼ全天で雲は見えなかったが、シーリングは不良。エアコン室外機の排気の影響があるかも?
望遠鏡の光軸調整が不十分。
望遠鏡 セレストロン  C8-XLT (203mm F10) x2 barlow , ASI120MC
各1000枚のフレームをキャプチャー
Registax6で画像処理、1000枚から60%を自動選別しスタック処理

無線でAirGapを超える実験(その2 Windows10 RS-232CポートのON/OFF)

PCには、Raspberry Piと違ってGPIOのような物理的にアクセス可能なデバイスは用意されていない。そこで、最近のPCの標準装備からはほとんど姿を消したものの、RS232C(特に法人向けのPCには、数年前まで、標準装備されていたように記憶していますが、、、?)ポートには、ハードウェアによるフロー制御に利用可能なRTS端子があることを思い出した。

この端子を、高速でON/OFFすることで、電波として放射できないか、実験をしてみた。RTS端子をオシロで観測した様子。46KHz程度で、周期がかなり変動している。

電波のスペクトラムを観測した様子のyoutube動画はこちら https://youtu.be/YtIuUOOOiLs
動画の左側は、Raspberry Pi3のGPIO端子をソフトウエアでOn/Offした時のスペクトラム波形。右側がPCのRS-232C端子をOn/Offした際の、スペクトラム波形。WindowsではOn/Off周期の変動が大きく、スペクトラムが大きく広がっている。

プログラム例


#include
#include
int main()
{
HANDLE hComm;
int Status;
int n;
unsigned clockDivisor = 0;
hComm = CreateFile(“COM1”, //port name
GENERIC_READ | GENERIC_WRITE, //Read/Write
0, // No Sharing
NULL, // No Security
OPEN_EXISTING,// Open existing port only
0, // Non Overlapped I/O
NULL); // Null for Comm Devices
if (hComm == INVALID_HANDLE_VALUE)
printf(“Error in opening serial port”);
else {
printf(“opening serial port successful”);
for(n=0;n<100000;n++){  // ここのループでRF信号を放射 Status = EscapeCommFunction(hComm, SETRTS); // RTS ON Status = EscapeCommFunction(hComm, CLRRTS); // RTS OFF } printf("Done...\n"); uSleep(5000000); } CloseHandle(hComm);//Closing the Serial Port return 0; }

無線でAirGapを超える実験(その1 Raspberry Pi)

イスラエスのベン・グリオン大学の研究チームが様々な手段でAirGapを超える実験を発表していて、これまでに、電波、音波、熱などの例が紹介されています。
かねてから、ネタの一つとして無線で実験してみたいと思っていたのですが、最近になってようやく実験を開始しました。
最初は、GPIOを備え、敷居が低そうなRaspberry Piで実験を試みました。RaspberrPiでは、FM変調で音楽などを流す試みが発表されています。手始めに、これを実験してみましたが、githubからダウンロードして、簡単に再現することができました。このソフトはあらかじめ用意したwavファイルの音楽を流したり、マイクロフォンやLINE入力からのオーディオ信号をFM変調で送信できるようになっています。調べてみると、RaspberryPiには3個のGPCLKポートが備わっていて、このポートから、内蔵のクロックを基にしてプログラマブルに周波数を設定可能なハードウェアとなっています。

GPCLK General Purpose CLock https://pinout.xyz/pinout/gpclk
GPIO端子に出力される信号は、基本的には矩形波なので、RF信号の振幅が変化するような変調は、外部のハードウェアなしには実装できません。FM電波とした理由も、そこにあるものと思われます。プログラマブルにクロックを設定できる仕組みを利用し、GPCLK端子へ出力する周波数をうまく制御してFM変調を実現しているようです。クロック生成の詳細は、この記事などが参考になります
RaspberryPiのFM送信機のソフトを利用してデジタルデータを送信するには、データからQPSKなどの信号を音声データとして生成し、wavファイルに落として変調用のファイルとすれば、比較的簡単に実現できそうな気がします(APSK変調)。もっと安直な方法として、GPCLK端子から、あるの周波数の信号を断続して出力すれば、搬送波の断続による原始的なCW変調が実現できそうなので、こちらの方式で実験をしてみました。クロックの生成で、参考にた記事は、こちらの Miscellaneous related code セクションにあるMinimal Clock Accessのコードです。

クロックの制御部分だけをC言語で記述し、残りの部分は、これまた安直にPHPで記述しています。

LANのパケット監視

WannaCryは、LANの中ではsmb(445/TCP)で感染するということなので、簡易な監視のツールを作ってみました。
ミラーしたセグメントのパケットをtcpdumpでキャプチャし、PHPのスクリプトで観測したパケットの数を可視化します。
使い方は、次のような感じ、、、
#tcpdump -ntttti eth0 port 445 | visualize.php
visualize.php は、定期的にhtmlファイルを生成ます
利用者はブラウザでhtmlファイルを閲覧します。
htmlファイルは (例えば10秒毎に)自身をrefreshします。
表示される、画像の1マスは、ノード(PCやサーバ)間のパケット数を色で表現しています。
通信がまったく観測されない場合は濃い青色で観測されたパケット数が多いと黄色~赤に変化します。
また、マスの中の1文字は、観測したパケットの数に応じて、0-9,A-Z…..と表示しています。


#!/usr/bin/php
$MIN_TH) {
MkHTML($buf,$date);
$prev_min = $min;
}
}
fclose($fp);
MkHTML($buf,$date);
echo “Finished!!!\n”;
function MkHTML($buf,$date){
$date=”

$date

“;
$header=”“;
$msg=”

$date

\n\n”;
for($i=1;$i<255;$i++){ $sum=0; for($j=1;$j<255;$j++){ $sum+=$buf[$j][$i]; } $iSum[$i]=$sum; // echo "$i,$iSum[$i]\n"; } for($i=1;$i<255;$i++){ $tmp="“;$sum=0;
for($j=1;$j<255;$j++){ $var=$buf[$i][$j]; $pt="."; if($var<63) { if($var<10) { $pt=$var; } else { $pt=chr(ord('A')+$var-10); } } $sum+=$var; $var=20*log($var+1); $color=set_color($var); if($iSum[$j]!=0) $tmp.= "“;
}
if($sum !=0 ) {
$msg.=$tmp;
$msg.=”\n”;
}
}
$msg.=”
$i10.8.0.$j\”>$pt
\n

$date

\n”;
$fw=fopen(“/var/www/html/cross.html”,”w”);
fputs($fw,$header);
fputs($fw,$msg);
fclose($fw);
}
function set_color($x){
if ($x<64) { $r=0; $g= $x*4 ; $b=255; } else { if ($x<128){ $r=4*( $x -64 );$g=255;$b=255-$r; } else { if ($x<192){ $b=4*( $x - 128 );$r=255;$g=255-$b; } else { $r=255;$g=0;$b=255-4*( $x -192); } } } return "#".sprintf("%02x%02x%02x",$r,$g,$b); } ?>