うさぎとスマホとプログラム

空色のうさぎ、手放せないスマホ、動けば良しのプログラム。 いつか自分の役に立つことを書く。

@a.b みたいなデコレータの作り方

そのまんまのメモです
デコレータをインポートしないで
tracer.cmd とかで実行できるようにしたくなったのでお試し。
ソースコード
class Main():
    def add_resp(self,cmd):
        def _add_resp(func):
            def wrapper(*args, **kwargs):
                print("Decorated!")
                func.decorated = "Cmd"
                return func(*args, **kwargs)
            return wrapper
        return _add_resp

tracer = Main()
       
@tracer.add_resp("test")
def help():
    print("testdesu")
    return "OK"

print(help())


実行結果
Decorated!
testdesu
OK

使い方
tracer の中に 関数を置いちゃっても使えるようになる
それだけ。

補足
func(*args, **kwargs) で実行しないと
で返ってきちゃう

感想
案外難しくなかった。

デコレータが付いているかを判断するには

そのまんまのメモです
Hook.pyを作るときにデコレータが付いたもの
ついていないものを混ぜて実行できるようにしたくなったので
お試ししてみた。
ソースコード
class Main():
    def add_resp(cmd):
        def _add_resp(func):
            def wrapper(*args, **kwargs):
                func.decorated = "Cmd"
                return func
            return wrapper
        return _add_resp

    @add_resp("help")
    def help(self):
        print("test")
     
    def help2(self):
        print("test2")
 
x = Main()
print(dir(x.help()))
print(dir(x.help2()))


実行結果
['__annotations__', ...  'decorated']
test2
['__bool__', ...']

使い方
hasattr(関数, 'decorated')
ってやればデコレートされてるかがわかる
if "decorated" in dir(関数):
でもOK

補足
ひとつでも 関数に変数を追加すると
__getattribute__ っていうのが現れて
それを見ると 辞書型で追加した変数一覧が出る
(追加されてないと Nonetype ~ でエラーが返る)

感想
func.~ で 関数に変数を作成できちゃうんだなぁ~

LINEとかDiscordとかで24時間音楽配信を行う方法

Youtubeとかちゃんとした配信サービス使えよって話だし何度もやられてきてる手段なんだけど改めてやりたい人が居れば参考に。(さっきの奴の日本語版です)

[用意するハード]

Windowsパソコン
 - Windows VPSでもOKっぽい
 - 使うソフトによるだろうけど
  Win8.1 + LINE + VLC + VB-Audio + ManyCam
  で メモリ 1.1GBぐらい使う

[用意するアプリ]

LINE とか Discordとかビデオ通話アプリ
 - カメラ/マイク のデバイスが変えられればなんでもいける
仮想カメラ
 - OBS-VirtualCam とか ManyCam とか 結構色々ある
仮想スピーカー
 - NetDuettoしかないと思ってたけど
  VB-Audio Virtual Cable のが 音質いいのでおすすめ
音楽再生ソフト
 - VLCメディアプレイヤーを使ったけど
   再生するデバイスが選べたら割と何でもいい

[方法]

1. アプリをインストールする
2. ビデオ通話アプリを開く
3. カメラ/マイク の デバイスを 仮想のものに変える
4. 音楽再生ソフトで 再生デバイスを仮想のものにして再生を開始する
5. 仮想カメラを好きなようにセットアップする
6. あとはビデオ通話を作成するだけ


[メモ]

LINEのビデオ通話は 音質があんまりよくない
(画質は特に問題なさそう)

プログラム(Bot)で VLCを操作するなら
VLC HTTP Request でググるとかなり簡単にできる
(注意としては要求にBASIC認証が要る)

How to make a 24 hours music live in LINE

The method is not so special.
You can use this method for Skype or Discord or any other video call app.



[Needed Hardware]
Windows Computer
 - It should have more than 1GB RAM

[Needed Software]
LINE
 - Official Windows Client for make a live
Virtual Camera App
 - OpenBroadCaster or ManyCam or something
Virtual Speaker App
 - VB-Audio Virtual Cable or NetDuetto or something
Media Player
 - I recommend VLC Media Player.
   It have many useful extensions.
 - But other media player can use too.

[Methods]
1. Install All Softwares
2. Open LINE App and open settings.
3. Change calling devices to Virtual devices.
4. Make a live at your group.
5. Open VLC Media Player
6. Play a music and set a speaker device to virtual speaker.
7. Configure virtual camera to you like.
8. Now music will playing in your live.

[Notes]
Sound and Video quality are not good at LINE.
You can use "VLC HTTP request" for control by your program if you're using VLC.

最近のLINEで起こった面白いことリスト

ちょっとメモ代わりに書きます。
LINEというかLINE非公式Bot界隈ですかね...


1. メッセージ下にアイコンと文字を表示する フッターメッセージという手法が見つかる




いつからあったのかはわからないけど いつの間にかGithubで様々なソースに使われるようになったもの。とても便利。昔々のリンク型メッセージかと思っていたけど どうやらLINE@に関連して使われているものらしい。 どこで使われてたんだっけ?



[方法]

APIでメッセージを送るときに contentMetadataに 'AGENT_NAME' 'AGENT_LINK' 'AGENT_ICON' それぞれリンク名 リンク先アドレス アイコンアドレスを指定するだけ。
なお対策されて contentMetadataに付けるだけでは使用できなくなりました。 対策しなくても誰も迷惑しないのに!



2. 公式アカウント(LINE@) を用いた グループ荒らしBotがデビュー

Team Elite Bot というアカウント名のインドネシアBotが グループリンクから参加し、荒らしている光景が スクリーンショットに取られTwitterで公開される。これはマジでビビった...


[方法]

LINE@ の Webから 1対1トークを開き Fiddlerで横から内容を見る。すると lineauthToken という いかにもな名称の通信が見えるのでそれを覗くとあら不思議。なんとそこには通常のLINEアカウントと変わらない ログイン要求が...そしてこれを見ながら 某APIの設定を変えてトークンを使えば普通にログインできて一般アカウントと同様に扱えてしまう。 しかしLINE@は通常のアカウントではないのでありとあらゆるものに規制がなく グループからの追い出しの回数にも制限がなかったため荒らし行為ができてしまった。それでいいのかLINE運営よ。なお、のちにグループの作成はできないように対策されました(なぜそれだけ)



3. midから相手に強制的に友達追加させる手法が見つかる





誰がはじめたのかは知らんが 公式アカウントが 突如 うちのアカウントや 様々な人に友達登録して "友達登録ありがとう!" といった 明らかに悪意のあるメッセージを送り付けてくるようになる。 あくまでも自分から友達登録したという扱いになるため 友達外からのメッセージ拒否もきかず 一日に5つも強制登録される 公式アカウントに笑うしかなかった。
なお、この後に オバマbotという Happy birthday to me! というわけのわからないメッセージを送る 公式アカウントが出たようだが これは それよりも1週間ほど前のこと。国内で話題になるまで動かないのか LINE運営よ。


[方法]

APIに 明らかにそれらしき メソッドが実装されていた。makeUserAddMyselfAsContactである。これを一般アカウントから実行すると Buddy または official account のみ 使用できると返ってくる。 そう、 OfficialAccountなら使えるのである。 ↑の手法と組み合わせてしまえば 友達登録を強制的に行うことが可能だった。
人によっては 人の投稿のいいねから midを取り、さらにそのmidのユーザーの投稿からいいねを取り というのを 繰り返し30万人分もの midを入手し 友達登録したユーザーも居た。 当たり前ですがもう使えません。(これはもっと早く対応してほしかった。)




4. 一般アカウントが テンプレートメッセージや フレックスメッセージを送るようになる


ある台湾人さんが 通信内容を解析した結果見つけた手法である。あるアプリ内アプリが送る送信要求に似せた送信要求を投げることで テンプレートメッセージやフレックスメッセージが送れてしまうのである。URL以外(postback,message)を使うことができないという欠点はあったが見た目が工夫できるというのはとても画期的なものであった。これは今や様々な非公式Botで使われておりトークルームがかなり賑やかなものとなった。ただ、これは あくまでもアプリ内アプリがあるからできていることで、いつかは修正される可能性がある...

[方法]

Github is our friend.

5. テンプレート/フレックスメッセージをタップでメッセージを送れるようになる


ある日本人が公式APIに興味を持ち、Qiitaで調べていたところ偶然見つけたアイデアである。これは革命となり 解析の本場のインドネシアで更なる研究がされ、これを応用したクソデカLINEスタンプといった、様々な利用用途が発明された。ちなみに発見したのはぼくです。

[方法]

LIFFアプリです。LIFFアプリは LINEトークルーム内で開ける Webアプリでユーザーの代わりにメッセージを送ることができるものです。そう、ユーザーの代わりに送れてしまうんです。LIFFアプリはURLパラメータを取ることができます。これらを利用して任意の文字をユーザーの代わりに送信する LIFFアプリを作成し公表することで様々な非公式Botで使われるようになりました。


6. 公式アカウントを使い、無限にいいね/コメント する手法が見つかる


ある日本人がLINE@クライアントの通信内容を解析した結果、アカウント登録と削除の手法を発見した。これを使い無限にいいねをする。ただしLINE@アカウントの個数は10個までと定められている。よって  アカウント登録→ いいね/コメント → アカウント削除を繰り返すことでこのようなことができる。

[方法]

Github is very good at search method.




7. ユーザー名とユーザープロフィール画像を偽装する手法が見つかる

これも台湾の方が見つけたものです。メッセージにcontentMetadataを付けるだけでプロフィール画像とプロフィール名を変えることができます。フッター同様にLINE@由来らしいです。これはちょっと流石にマズイでしょ...

[方法]

(DMで直接聞いてください)


(8. グループに参加していなくても 既読を付けられる)


これは昔からの仕様なのかもしれないですがグループに参加していなくても
グループIDとメッセージIDさえわかれば cl.sendChatChecked() で 既読が付けられるみたいです。 それちょっと怖くない??


(9. グループにカバー画像が追加される)


最新のアップデートでグループにカバー画像が追加されました。これでグループに更なる特色が出せてとても便利なんです...が。なんとこれ一切通知が出ない。誰がいつ変えたのか全くわからない。内部的には情報が送られてきてて見えてないだけだろーとか思ったが本当に送られてきてない。 それはまずくない??


今のところここまで。 今後アプデでどんな機能が追加されるのか。
今後どんな大問題をやらかすのか 楽しみです...w

こみトレ32 参加した感想とか

チノちゃん もふもふ ドマオーさんです。
9/2 に こみっく★トレジャー(こみトレ) 32 に参加してきたので
その感想とかどうしたかとか 書こうと思います。
ちなみにパンフはこんなの(公式サイトからコピペ)
 

以下適当に書きたいことを書きます。



[これまでの同人誌即売会の参加歴]

2015/08 コミックマーケット C88
  1-3日目 始発から3本目 単独参加

コミケに2015年に行ったきりでそれ以降に行ったことなかったりしました。TwitterとかLINEとか見てる人は少ないと思うかもしれないですが 他はすべて メロンブックスとらのあなヤフオクか メルカリ か まんだらけ といった通販や中古を使って 収集しています。 そんな感じなので2回目の即売会参加になりました。まだマナーとかよくわかってないんで 失礼なことしてなかったら 良いのだけど...


[参加前の準備]

・ルート作成
・パンフ購入
・ネットでサークル情報をざっと見る
・気になったサークルのTwitterを全て見る
  お品書きが出ているサークルはGooglePhotoに画像を保存する
  出ていないサークルは 当日確認として保留。
・お品書きと 手持ちの金額を 睨みながら どこを回るかを検討
・寝る


>>ルート作成
とりあえず まず GoogleMap で 現在地から 会場のインテックス大阪までのルートを出してもらいました。家は大阪府内にあるんで交通機関は普通に電車と徒歩で1時間ほどで行けました。始発で行けば欲しいのは確実に全て買えるんでしょうが睡眠時間と肩の力抜いて参加したいって理由で 7時到着ぐらいになりました。

>>ガイドブック(パンフレット)(カタログ)購入
実は会場で買った方が280円安いんですが マップとか色々確認したかったので高いと知っていながら梅田まで買いに行きました。 まずブックファーストコミックランド梅田店ってところに行ったんですが売り切れだったんで メロンブックス梅田店に行って買ってきました。同人ショップなんで当然なんですが 同人誌がたっぷりでありました。えっちぃの好きだけど囲まれたくはないっていう弱気な陰キャだったんで 結構あわあわしました。カタログだかパンフレットだかガイドブックだかよくわからなかったけど 画像見せたら 店員さんが教えてくれて助かった...

>>ネットでサークル情報をざっと見る
ガイドブックに ペンネーム名順 サークル名順 カテゴリ順 場所順のリストが載ってるんで
それだけを見てもよかったんですが せっかくなんで 電子カタログのNAVIOってとこから37ページ分全部のサークルを見て ここすこってところのTwitterリストを出しました。コミケと違ってそんなに 参加サークルは多くないので全部見れるのがいいところ。

>>気になったサークルのTwitterを全て見てお品書きを保存
見たものは全て保存したいっていう 我ながら狂気的なの趣味を持っているので愛用してる Save to Google Photos っていう拡張機能を使って 専用アルバム にお品書きをぶち込みました

>>お品書きと 手持ちの金額を 睨みながら どこを回るかを検討
これが一番きつかった。3万円ぐらいあればごちうさ島の同人誌は全て制覇できそうな感じだったんですが あいにく 手持ちは 1万7千円しかなかったので どれを行くかかなーり悩みました。 結局大手と 今まで追ってきたサークルだけを行くことになりました。しょうがないね。

>> 寝る
寝ました (午前4時半就寝)


[参加当日]

・親友と待ち合わせ
・会場入り
・激戦地
・他を色々回る
・帰る

>>親友と待ち合わせ
駅で親友と待ち合わせて一緒に行ってきました。なんか差し入れでカルピスくれたけどあれはもしやツッコミ待ちだったのだろうか...(今気づく)

>>会場入り
着いたころには既に人の列がそこそこありました。もうちょっと早く行った方がよかったのかも。(誰だ 8時前に行くなとか言ったやつ) 列が形成されてからは 適当に時間潰してしばらくしてから 朝ごはん代わりにサークルKのおにぎりとか食べました。 やっぱり誰かと一緒に行ってないと時間潰すのが結構困りそうだった。

>>激戦地
まず蜂蜜少女、次にComethrough、そのあとCaramelCrunch、その他という感じで行こうとしたのだけど 一番初めの蜂蜜少女が異常に長い列で やばかったです。そりゃネットにも転売されるわなって感じでした... 後2つは意外と普通に行けました。Comethroughがぼくの一番の推しなんですが 全然並んでなくてえぇ...ってなりました。 もっと流行ってもいいのでは。

>>他を色々回る
ちょっとあわあわしてたら 3サークル分 セットを買い逃してしまい それが心残り...
どこもコミケの残りを出してるっていうのは本当のようで在庫が少ないようでした。
次行くことがあれば素早く回れるようにします(´・ω・`)

>>帰る
帰るまでがコミケ/コミトレ とは良く行ったもので 帰りも結構重かったです。後帰った後は 眠くて一瞬で寝てしまい 気づいたら夜9時でした... 睡眠はちゃんと取りましょう...


書きたいのはこれぐらいですかね。 今回の成果はまた別の記事で
一週間後ぐらいに上げます。読んでくれた人が居ればありがとね。

ウルトラ低コストでネット上に記録が残らない個人サーバーを建てるには

タイトル通りです。個人的にそんなものを作ってみたいので方法をまとめてみます。
悪用は厳禁です。自己責任でお願いします。

風邪引きました、ドマオーです。普段から怪しげなことをやっております。
今回は 絶 対 に ネット上に記録を残したくないが
金はなるべくだしたくない 身内だけのサーバーを作りたいマンになるために
どうすればいいのかという記事を メモとして書こうと思います。

サーバーハード

おうちRaspberry Pi 3 サーバーで決まりです。
 なんてったって自分自身の元からかかってる通信料金に
 電気代 月300円以下ぐらいを ちょこっと足すだけで建てれますからね。
 容量・OS 一切制限なしで自由にできる格安サーバーは
 ラズパイぐらいのものでしょう(偏見)
 ただ、通信速度がある程度出ていないと使いものにならないんじゃないかっていうのは
 思います。それと固定グローバルIPアドレスが割り当てられてる必要があるので
 できる環境は結構限られてるかもしれません。
 ちなみにうちはSoftbank光を引いています。

サーバーソフトウェア

割と個人的に好きなものを使えばいいんじゃないかと思いますが
 ここでは Apache2 を 使用しています。あと、調べたところによると
 Apacheと完全な互換があり、超軽量なLitespeedというものもあるらしいです。
 導入してから気づいたので変えるのが面倒でそのままですが
 新規導入する方は Litespeedでいいと思います。

※ここでラズパイにApache2を導入し終わったとする※

ドメインを取得

 freenom.com というサイトで .ga .ml .cf .tk .gq で終わるドメイン
 どれでも 1年間 タダでほぼ何個でも取れます。もちろん 有効期限直前に
 更新することもできます。日本語ドメインだって取れます。
 メールアドレスさえあれば登録できるのでGmailとか登録して使いましょう。
 注意点として同一アドレス宛てのドメインが20件以上を越えると
 エラーが出てしまうので取りすぎには気を付けましょう(それは取りすぎなだけ)

ドメインを取れたとする ※

CDNを導入

個人では利用しているという話をあまり聞きませんが
 CloudFlare の Freeプランが 物凄く便利で 物凄くすごいので
 必ず登録することをおすすめします。導入方法自体はググったら出ます。
 導入後にできることは色々ありますが、うちが推したいのは
 https を タダで 一瞬で取れる サーバーのIPアドレスを隠せる
 ってとこですね。セキュリティ対策が一気に これだけでできちゃうので
 もうほんと大助かりです。万全ではないでしょうが 大体はこれで防げます。

CDNを導入したとする ※

ページ内容

 まぁまずは定番ですが HTMLファイルのヘッダーにはすべて
 
 を入れましょう。とりあえずこれでGoogleとかのクローラーは基本来なくなります。
 次に 記録を残したくないので robots.txtを作って User-agent: *
 Disallow: / を入れます。 これでGoogleとかは 見た瞬間に帰ってくれます。
 ですが これを 無視してくるやつが居ます。 そう、WaybackMachineです。
 こいつをブロックするためには .htaccessを 弄ればいいようです。 あとそれでも信用できない場合のみですがBASICかDigest認証を指定すると
 Botは生理的に無理と言って絶対に来なくなりますっぽいです。

国ブロック


 ググったら日本以外からのアクセスをブロックする方法もあります。



まとめ

 RaspberryPi 3 + Freenom + CloudFlare + robots.txt + .htaccess
  を用いるとかなり格安で
   ・グローバルIPアドレスが出ない
   ・検索結果に出ない
   ・Webアーカイブされない
   ・日本からしかアクセスできない
  サーバーが建てれます。