備忘録

備忘録

2017-01-01から1年間の記事一覧

C# で HtmlAgilityPack を使って HTML の要素値を XPath で取得する

C#

Ⅰ. はじめに タイトルの通り、「C# で HtmlAgilityPack を使って HTML の要素値を XPath で取得する」方法です。 Web スクレイピングが簡単になります。 Ⅱ. サンプル http://example.comの「タイトル」と「リンク先(href)の値」を取得するサンプルです。 1.…

C#でSMTP, Mailgun, SendGridなどを利用してメールを送信する方法

C#

Ⅰ. はじめに メール配信サービスのAPIをラップした FluentEmail というライブラリの紹介です。 .NET Standard で作られているためクロスプラットフォームで動作します。各サービスの API ドキュメントには HttpClient や RestClient 等を使って Web API を直…

nginx で autoindexの文字化けを治す

Ⅰ. はじめに nginx の autoindex を on にしただけだと以下のように文字化けします。 これを治す方法です。 Ⅱ. やり方 1. charset utf-8; を追加する server { listen 80; root /var/www/html/hoge; index index.html; location / { autoindex on; charset u…

BCD を修正する

Ⅰ. はじめに BCD(Boot Configuration Data)(ブート構成データ)を修正する方法です。 Windows と Linux をデュアルブートした状態から Grub を消して Windows のみブートさせる場合などに必要な作業となります。 Ⅱ. やり方 1. ブート可能な Windows メディ…

プロセスセキュリティまとめ

Ⅰ. はじめに OpenProcess などで使われるアクセス権のフラグまとめです。 Ⅱ. まとめ PROCESS_ALL_ACCESS 0x1FFFFF PROCESS_CREATE_PROCESS 0x80 PROCESS_CREATE_THREAD 0x2 PROCESS_DUP_HANDLE 0x40 PROCESS_QUERY_INFORMATION 0x400 PROCESS_SET_QUOTA 0x10…

仲介DLLを作成する

Ⅰ. はじめに 仲介DLLを作成する方法です。 DLL Proxy や DLL Wrapper とも呼ばれています。 Ⅱ. やり方(kagasu/ProxyDllGenerator を使用する方法) https://github.com/kagasu/ProxyDllGenerator 1. 以下コマンドを実行する ProxyDllGenerator.exe --dll te…

DoubleAgent を試してみる

Ⅰ. はじめに DoubleAgent とは? Microsoft Application Verifer を悪用したDLL注入の事です。 セキュリティ会社 Cybellum によって 2017/03/22 に公開されました。 何ができるの? プロセスの開始と同時に 任意の dll が読み込まれ任意コードの実行が可能に…

.NET Core で 実行ファイル(exe)を作成する方法

2024/01/22 追記 Ⅰ. はじめに Ⅱ. FDD と SCD の違いについて .NET Core 3.0 以上の場合 .NET Core 2.x 以下の場合 Ⅲ. FDD のやり方 以下のコマンドを実行する Ⅳ. SCDのやり方 1. 以下のコマンドを実行する 2. 実行ファイルが作成される その他 参考 2024/01/…

C#でプロセスのスレッド一時停止させる

C#

Ⅰ. はじめに プロセスのサスペンド、リジュームを拡張メソッドにして使いやすくしたクラスを紹介します。 コピペで動きます。 Ⅱ. プログラム Program.cs var process = Process.GetProcessesByName("notepad").FirstOrDefault(); process.Threads.Suspend();…

プロテクトを回避してメモリをフルダンプする

Ⅰ.はじめに Ⅱ. Belkasoft Live RAM Captureのすごいところ Ⅲ. メモリダンプ方法 1. Belkasoft Live RAM Captureをダウンロードする 2. 保存先を指定し、Captureをクリックする 3. 以上でダンプ完了です。 Ⅳ. ダンプから画像ファイルを取り出す 1. WinHexでダ…

一時的なメールサービスのAPIサーバを作る

Ⅰ. はじめに 一時的なメールアドレスを作成するサービスはいくつか存在します。 一時的なメールアドレスを作成する - 備忘録しかし、どのサービスもAPI経由でのアクセスが出来ないものばかりです。 送信されるリクエストを解析してサービスを利用する事も可…

VisualStudio で貼り付け時にクォートを自動的にパースする

1. はじめに IntelliJ 系のIDEであればデフォルト機能として JSON や XPath の文字列をプログラムに貼付けする時に自動的にクォートがパースされます。 VisualStudioで同様の恩恵をうけるための拡張機能の紹介です。 2. SmartPaster2017 のダウンロード Smar…

Chrome UserAgentをワンクリックで切り替える

Ⅰ. はじめに Google Chrome はデベロッパーツールや拡張機能でUserAgentを簡単に変更することが可能です。 しかし、簡単といってもクリック回数が1回で切り替わるわけではありません。1クリックのみでトグル式にUserAgentを変更するツールが存在していなかっ…

Chrome Extension 拡張機能 アイコンクリック時に何かする

Ⅰ. はじめに ウィンドウを持たせずに、アイコンクリックで何かアクションを起こしたい場合に利用できます。 Ⅱ. サンプル manifest.json { "background": { "scripts" : [ "js/background.js" ] } } background.js chrome.browserAction.onClicked.addListene…

JavaScript難読化ツールの紹介と比較

Ⅰ. はじめに Ⅱ. 比較(無料版) 1. JavaScript obfuscator 2. Javascript Obfuscator 3. jjencode 4. Closure Compiler 5. /packer/ 6. YUI Compressor 7. aaencode 8. emojify-webpack-plugin 9. JSFuck 複号ツール JavaScriptbeautifier JStillery REstri…

C#(EXE)からC++(DLL)の関数を呼び出す方法

Ⅰ. はじめに Ⅱ. 関数をエクスポートする方法(P/Invoke) 1. サンプルプログラム 2. 実行結果 3. DllImportの呼出規約について Ⅲ. C++/CLIを利用する方法 1. サンプルプログラム 2. 実行結果 Ⅰ. はじめに C#(EXE)からC++(DLL)の関数を呼び出す方法です。方法…

.protoをシリアライズされているバイナリデータから作る

Ⅰ. はじめに armor.proto (proto3) データ(C#) Ⅱ. protofudger を使う方法 使い方 出力結果 Ⅲ. Protobuf Viewerを使う方法 Ⅳ. protoc を使う方法 使い方 作った.protoをテストする場合 出力結果 Ⅴ. protobuf-inspectorを使う Ⅵ. d3を使う Ⅶ. protobuf-decode…

Androidで複数キーでソートする

Ⅰ. はじめに この記事ではStream APIを利用したソートとLightweight-Stream-APIを利用したソートの2つを紹介します。 Java8で追加されたStream APIとComparatorを使ったソートはAndroid N (Android 7.0)以上でなければ動作しません。 Android N 以下の場合は…

自作PCを作るときにおすすめなサイト

Ⅰ. はじめに 基本的に、自作PCを作るときはパーツのリストを作ってから購入に踏み切ると思います。 その時のリスト作りに役立つWEBサイトの紹介です。 pcpartpicker.com https://pcpartpicker.com/list/作ったリストの消費電力まで計算してくれる優秀なサイ…

JavaでJSONを扱う(GSONの使い方)

Ⅰ. はじめに Ⅱ. 使い方(クラスを作る場合) 1. JSON を Javaのクラスに変換する 2. Main.java 3. 実行結果 Ⅲ. 使い方(クラスを作らない場合) 1. Main.java 3. 実行結果 参考 Ⅰ. はじめに JavaでJSONを扱う方法です 最近人気のGoogleが開発しているライブ…

Javaでokhttpを使って全ての証明書を許可する

Ⅰ. はじめに オレオレ証明書などは以下のエラーを吐いて弾かれてしまいます。 デバッグ時など、とりあえず全部許可したいときのやり方です。 Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator. ValidatorException:…

C#でPublic Key Pinningする

C#

Ⅰ. はじめに Public Key Pinningとは、SSL証明書のチェックを行うことです。 チェックを行うことで、不正な証明書を検知することができます。例えばクラッカーはMITMを利用して傍受を試みます。 MITMを利用するとSSL証明書が書き換わる為、 不正な証明書であ…

PythonでPOSTする

Ⅰ. はじめに PythonでPOSTする方法です。 Ⅱ. プログラム import requests # InsecureRequestWarning を非表示にする場合 # from requests.packages.urllib3.exceptions import InsecureRequestWarning # requests.packages.urllib3.disable_warnings(Insecur…

VisualStudioで設定したAWSのプロファイルを修正する

Ⅰ. はじめに AWS Toolkit for Visual Studioを利用しているのが前提です。 VisualStudioに追加したプロファイルの追加、編集、削除するについて説明します。 Ⅱ. やり方 1. AWS Explorer を表示させる VisualStudioのメニューから 「表示」→「AWS Explorer」…

JMPの隠蔽

Ⅰ. はじめに リバースエンジニアリングのテクニックの1つです。 パターン化しているので覚えておいて損はありません。 主に ASProtect というパッカーが利用する方法です。 Ⅱ. JMPの隠蔽方法 通常の場合 アセンブリでJMPする場合は以下のように書きます。 JM…

C# WPF 数値のみ入力できるTextBoxを作る

C#

Ⅰ. はじめに 半角数値0~9のみを許可するTextBoxの作り方です。 数値のみ入力可能なTextBoxは標準機能として用意されていません。(2017/02/20時点) 入力値が数値かどうかを判定するコードを書く必要があります。 Ⅱ. 作り方 1. MainWindow.xaml

C# で RSA暗号鍵(.pem)作成する

Ⅰ. はじめに C#でpemファイルを作成する方法です。その逆の、 「C#でpemファイルを読み込む方法」はy_yoda様がQiitaに投稿している記事の通りです。 http://qiita.com/y_yoda/items/f4bd3ec56ac7591c5804 Ⅱ. 環境 C# .NET Core 1.1.0 Ⅲ. ソースコード NuGet…

C#でRSS 1.0のFeedを読む

C#

Ⅰ. はじめに .NET Framework 3.5以降であれば Atom 1.0 と RSS 2.0を対象にした SyndicationFeed があるのですが、RSS 1.0はサポートされていません。 RSS 1.0 を手書きで解析するときのメモです。 Ⅱ. プログラム 解析対象のXML(GIGAZINEのRSS1.0のFeedを利…

Nox App Player のデフォルトランチャーアプリを変更する方法

Ⅰ. はじめに Nox App Playerでは、 Playストアから Nova Launcher などをインストールしても、 自動的にNox Launcherに切り替わってしまいます。 それを解決する方法です。 Ⅱ. やり方 1. NOXの設定でrootをONにする 2. 任意のランチャーアプリをインストール…

C# でBouncyCastleを使ってRijndael 鍵長256bit, ブロック長256bitで暗号化する

C#

Ⅰ. はじめに .NET Core標準のRijndael実装は鍵長256bit、ブロック長256bitがサポートされていません。 鍵長256bit、ブロック長 256bit のRijndael を利用したい場合は、それなりに利用数が多いBouncyCastleを利用するのがベターかと思います。 Ⅱ. やり方 1. …