Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

sshのauthorized_keysのcommandでパイプは使えるか

authorized_keysのcommand=オプションにパイプを含むコマンドを指定できるか実験。 command="find /home/satob -maxdepth 1 -name '*.sh' | xargs grep '#!'" ssh-ed25519 AAAAC3Nz... pipe@example.com 実行してみたらこんな感じ。問題なく実行できた。結局…

rbashでディレクトリトラバーサルは防げない

satob.hatenablog.com で挙げた # cat authorized_keys command="ls /$SSH_ORIGINAL_COMMAND" ssh-rsa AAAAB.... $ ssh root@xxx.xxx.xxx.xxx -i ~/.ssh/com "tmp;hostname" ls: /tmp;hostname: No such file or directory みたいなケースで$SSH_ORIGINAL_CO…

OSSの脆弱性への対応が検討できないケースに関する考察

システムで利用しているOSSに脆弱性が見つかったときの対応が検討できないの、なんでだろう?という気もするんだけど、 問:ある業務アプリケーションに組み込んでいたOSSに含まれていた既知の脆弱性を悪用され、情報セキュリティ事故が発生した。同様の事故…

ProcessBuilder freezes when you try to run a .bat containing PowerShell scripts

Background By using the .bat file from here, you can run a PowerShell script by just click the .bat file. reosablo.hatenablog.jp Problem When you are trying to run the .bat file from Java ProcessBuilder class like this, the .bat file will …

Eclipseの操作自動化プロジェクトの淘汰っぷりが凄い

Eclipseで、このプロジェクトのコンテキストメニューからこのプラグインのこの機能を実行して、実行構成で定義したこの処理を実行して……という作業をマクロ化したいんだけど(そしてよくありそうな話だと思うんだけど)、プロジェクトが産まれては消えている…

外部プロセスとしてシェルスクリプトを起動する方法

任意の処理系から外部プロセスとしてシェルスクリプトを起動したい場合、大きく以下の2つの方法が考えられます。 (1) shの引数にシェルスクリプトを指定する /bin/sh foobar.sh のように、shの引数にシェルスクリプトを指定して起動する。 shに与えるパラメ…

シェルスクリプトに渡す引数をサニタイズ

シェルスクリプトに渡した引数を、スクリプト中で単純に$@で参照すると、OSコマンドインジェクションを招くおそれがある。 $ cat sanitize4.sh #!/bin/bash ash -s <

Equivalent of native2ascii and native2ascii -reverse in CyberChef

CyberChef Unescape string is equivalent to native2ascii -reverse. CyberChef Escape string is almost equivalent to native2ascii. Escape level should be "Special chars". native2ascii never escape Escape single quotes, double quotes, or backt…

CPU goes 100% when you read .HAR file with ConvertFrom-JSON

Background In Chrome DevTools, you can export the contents in the Network tab into a JSON file (.HAR file). Chrome cannot export the contents of the spreadsheet in the Network tab into .csv or .xlsx format. If you want to get these content…

Overwriting existing file never change creation time in NTFS

Overwriting existing file like 1..10 > file.txt, 1..10 | Out-File file.txt, or 1..10 | Set-Content file.txt, never changes creation time in NTFS. You have to delete the file explicitly like rm file.txt; 1..10 > file.txt, or change creation…

テスト用HTTPスタブサーバに適したプログラム

以下の条件で、以下のページで挙げられているツールをながめてみた。 nordicapis.com ボディの内容がこのパターンにマッチしたらこの内容を返す、また別の内容にマッチしたらこの内容を返す……というテストができること HTTPヘッダも含めたレスポンスの内容を…

インターネット中継用衛星コンステレーションによるレイテンシ改善幅の見積

HFTをしている証券会社が、取引所までのhop数を減らすためにStarlinkを利用することを考えたとしよう。最大でどのくらいレイテンシを改善できるだろうか。計算合ってるかな? 光ファイバ中の光速と真空中の光速の差による改善幅 Starlinkのうち一番低い軌道…

Copy-Item doesn't have --no-clobber option

Context: cp(1) has -n or --no-clobber option. It makes cp not overwrite existing files. This option is useful when you copy only newly created files. Problem: In PowerShell, Copy-Item cmdlet doesn't have options equivalent to --no-clobber …

ルータ⇔PC間とルータ⇔ISP&インターネット間で速度計測

PC⇔ルータ間と、ルータ⇔ISP&インターネット間のどちらにボトルネックがあるのか調べる。 PC⇔ルータ間 PCとルータの両方にiPerf3を入れて計測する。 PC側 PS > .\iperf3.exe -s -i 5 -p 5001 -f m --------------------------------------------------------…

4Kモニタへの60Hz出力についての知見

USB3.1 Type-Cコネクタでも、ハードウェアレベルで画面出力には使えないことがある。4K60Hzだと12Gbps必要で、USB 3.1Gen2の10Gbpsでは追いつかない。USB Alt ModeのDisplayPortでも4Kでは30Hzになってしまう。4K 60Hzに追いつくにはThunderbolt 3(40Gbps)…

TFTPでファイルのリクエストがタイムアウトになる

背景 デバイスのブート時にイメージをTFTPで流しこみたい。 TFTPで通信する際、デバイスのIPアドレスは192.168.11.1、TFTPサーバは192.168.11.168で固定になっている。 TFTPサーバにはWindows 10上のPumpKINを使っている。 PumpKINの設定で、リクエスト・レ…

匿名加工情報の作成に使う鍵つきハッシュの鍵をPBKDF2で生成する

個人情報を含むデータをもとにプログラムのテストデータを作成する場合などには、データの匿名化が必要になります。個人情報保護委員会「個人情報の保護に関する法律についてのガイドライン(匿名加工情報編)」*1には、管理用IDなど特定の個人の識別に使え…

Microsoft Print to PDFで出力したPDFファイルが0バイトになる問題を回避する

大きなPDFファイルを複数に分割しようと思って、Adobe ReaderからMicrosoft Print to PDFへ印刷してみたんだけど、できあがるPDFファイルが0バイトで、正常に出力されない。 Wordでも同じ現象が起こったので、これはMicrosoft Print to PDFの問題かな?と思…

最近のWindows Server付属のIISで無理矢理匿名認証っぽいことをする

Windows Serverの特定バージョン以降だとIISでWebDAVの匿名認証が使えないという話。下記ページだと「IIS 7+」でdeprecatedだと書いてある。比較的最近の記事(2019年)だけど、IIS 7.0ってWindows Server 2008に付属のバージョンだぞ? techcommunity.micro…

cmd.exeとPowerShellの起動速度

PowerShellの起動速度が遅い遅いというけれど、cmd.exeと比較してどの程度遅いのか確かめてみた。 OSはWindows 10 version 2004、CPUはIntel(R) Core(TM) i7-8750H CPU @ 2.20GHz(6コア12スレッド)です。 なお、処理に使うウィンドウはPowerShellのもので…

ファイルをAESで暗号化したときに送信先とnonceを共有する方法

AESをECBモードで使っていたり、IVとして固定値を使っていたりするケースがやたら見られるので、 あるファイルをAESで暗号化し、ローカルマシンのストレージ上に保存しておく 暗号化したファイルをリモートマシンへFTP等で送付し、リモートマシンのストレー…

「解決済みの質問を削除する」風習の調査(があったらいいな)

Web上のQ&Aサイトでは、質問をした後、回答が得られて問題が解決したら、質問者が質問を削除してしまうというケースが見受けられる。 特に技術的なQ&Aサイトの場合は、同じ疑問を持ったり、同じ問題にぶつかった人が解決方法にたどりつく機会が減ってしまう…

非機能要件の安全率の事例収集

非機能要件の安全率として「どのくらいの安全率なら適切か」という値はありません *1 (研究もないように思います)。IPA 非機能要求グレード *2 の「04_項目一覧.pdf」では、性能目標値の「余裕率」として、1倍・1.2倍・1.5倍・2倍・3倍・10倍以上から選択…

リテラルと定数とEnumとOTLTとResourceと……の使いわけ

プログラム中で変更可能なパラメータ(メッセージ、設定値、エラーコードなど)は、その記述方法を工夫することで、ソースコードの可読性やアプリケーション保守の容易性を向上させることができます。 一方で、大規模なチームでアプリケーション開発を行う場…

How to add a JMS queue corresponding to jboss.naming.context.java.jboss.resources.xxx.yyy.zzz with jboss-cli

Context You are building a Java web application with JMS. You have added a reference to JMS queue with <res-ref-name>xxx/yyy/zzz</res-ref-name> in web.xml. You have changed the configuration file from standalone.xml to standalone-full.xml to use JMS module. You have a…

「基く」は「もとづく」か「もとずく」か

私(1981年生)は小学校か中学校かで「もとづく」が正しくて、「もとずく」は誤りだと習ったように思います。 ところが1955年(昭和30年)の第3期国語審議会では、「もとづく」か「もとずく」かは「原則を決めてもなおかつかたづかない」(吉田委員)ものと…

ソフトウェアエンジニアリング左道

「ソフトウェアエンジニアリング左道」という言葉を思いついた。生産性や品質向上を目的としたソフトウェアエンジニアリングでなく、どうしようもない状況をどうにかこうにか切り抜けたり、イヤな落とし穴をわざと作ったりするソフトウェアエンジニアリング…

日本のSIer的なソフトウェア工学が必要とされる前提条件

以下のような前提条件が満たされると、日本のSIer的なソフトウェア工学の有用性が高くなるのかな?という想像。 解雇規制が強い(↔カリフォルニア州の雇用法。突然の解雇が合法 *1) 雇用の流動性が低い(↔エストニア等で高い。アメリカは中位で、日本は非常…

What is the difference of RFC 5322, RFC 821 and implementations of javax.mail.internet.InternetAddress ?

Test for RFC 5322: https://gist.github.com/satob/0dc003aefe020d5f1e9263bd7e173f9f (with regexp in http://www.din.or.jp/~ohzaki/mail_regex.htm#RFC) Test for RFC 821: https://gist.github.com/satob/8c5a42cf636732d81b850b58e8808eef (with regex…

メールアドレスのバリデーション方法

じゃぁメールアドレスのバリデーションってどうやったらいいのさ、という話。 satob.hatenablog.com もちろんバリデーションをした後には、メールアドレスの実在性確認のために実際にメールを送信します*1。その前段の、 「じゃぁどんなメールアドレスだった…