onihusube / 2chAPIProxy

2ch(5ch)のAPI未対応専ブラに代わってAPIアクセスや書きこみを行うローカルプロクシ
MIT License
32 stars 6 forks source link

書き込み仕様変更について #2

Open onihusube opened 2 years ago

onihusube commented 2 years ago

X-PostNonce: 現在のunix時間 X-MonaKey: 書き込み確認画面のレスポンスヘッダにある X-PostSig: リクエストボディとかのハッシュ?

一番最初の書き込みは X-MonaKey: 00000000-0000-0000-0000-000000000000 で投げて 書き込み確認のレスポンスが帰ってくるからそのヘッダにある X-MonaKey: ??? を使って改めて書き込み そしてX-MonaKeyを保持して次からの書き込みに使い回す X-MonaKeyの寿命は604800秒(一週間) 荒らすとそのX-MonaKeyがBANされて書き込み不可に ってとこか X-PostSigの算出が分かれば解決しそう APIってより書き込みの際のbbs.cgiのヘッダを変えただけかな webブラウザからはどうするんだろ

onihusube commented 2 years ago

とりあえずEn2chを使ってアルゴリズムはわかった

板名<>dat番号<>UinxTime<>名前<>メール<>本文<>空<>ユーザーエージェント<>MonaKey<>空<>Nonce(UnixTime + ".000")

っていう文字列をEn2chから取り出した秘密鍵でHmacSHA256でハッシュすれば署名通って書き込めた MonaKeyは専ブラを再インストールしたり1週間で変わるとか言われてるやつで署名なしで書き込もうとするとレスポンスヘッダに付いてくる 空のところはEn2chにはないお絵描きとかBe番号とかかなのかもしれない

ChMateの秘密鍵も探してみる

onihusube commented 2 years ago

F7vFm WCGd5 Gzs8hc03 NpRvw4 bPwMz3

onihusube commented 2 years ago

◆UserAgent(例) Monazilla/1.00 2chMate/0.8.10.153 Dalvik/2.1.0 (Linux; U; Android 10; Pixel Build/QP1A.191005.007.A3)

◆X-2ch-UA 2chMate/0.8.10.153

◆X-ApiKey 8yoeAcaLXiEY1FjEuJBKgkPxirkDqn

◆HMKey >>111-115

書き込みのApiKey, HMKeyは DAT読み込みのAppKey, HMKey としても使えるっぽいな

onihusube commented 2 years ago

大変参考にした🙏

C#版はだいたいこんな感じ?

実際には

onihusube commented 2 years ago

0000 Set cookies; 1000 Post date is invalid; 1011 Thread is not alive; 6990 MultiPost1; 9804 Banned by Oven; 6970 Landfill1; 9911 Banned; 9999 Not yet;

(そんな前からあったのか

onihusube commented 2 years ago

そのほか見たやつ

スレで見かけたやつ(真偽は不明、一応)

onihusube commented 2 years ago

正常に得られたMonakeyを改変(最下位桁を+1)して送ったところX-Chx-Error:E3310 Invalid key.が得られた。

初期値は000のやつじゃないとだめっぽい?

onihusube commented 2 years ago

同じ板でもスレによって書き込めたり署名が一致しません。って出たりするな

昨日以前の取得したスレではエラーでるけど その場合はスレのログ削除して新たに取得したらエラー一切でないわ

他のブラウザでそのスレに書き込んでたり、キーを変えて書き込むとそうなるみたい

あーもしかして、一度新仕様で書き込みを試みていた(書き込めなかった)状態でUAとかを設定し直すとこうなる?
なんか状態あったっけ・・・

onihusube commented 2 years ago

名前欄に全角文字使うと書けないらしい

名前のところエンコード解除してない疑惑

onihusube commented 2 years ago

未確認(少なくともSID取得は問題なかった、一部はdat取得もできた)

これってほんもの?

UA: Monazilla/1.00 JaneStyle_Android/2.3.1 Dalvik/2.1.0 (Linux; U; Android 10; Pixel Build/QP1A.191005.007.A3) AppKey: vIyNd18OvKKeRkMmBUqqtEsdLuA8hh HMKey: EowMzHCOOQVJ3xQCfU9iyLu6MwRCN1

UA: Monazilla/1.00 2chGear/1.1.3 Dalvik/2.1.0 (Linux; U; Android 10; Pixel Build/QP1A.191005.007.A3) AppKey: hmCELmps15cHN8mL7viOH23nH24EwP HMKey: fOOxqHdfCactc639EMjCF1mUAkG1Lx

UA: Monazilla/1.00 En2ch/1.4.21 Dalvik/2.1.0 (Linux; U; Android 10; Pixel Build/QP1A.191005.007.A3) AppKey: CD59oXlsHKztxozKg3m33RsIvCwghQ HMKey: ZqFSgmJt3GXBVoa90QTVftqwODjR0E

UA: Monazilla/1.00 Ciisaa/1.71 Dalvik/2.1.0 (Linux; U; Android 10; Pixel Build/QP1A.191005.007.A3) AppKey: 1n0gDnwQE6st8KPj1qD7dKEWubpp1N HMKey: 3Op2jFmeYpcMfuDwnV8OtXmKu6n8oL

onihusube commented 2 years ago

今来た人用 書き込みの1回目で「制限を設けております」、2回目で「鍵が無効です」となるのは、UserAgentが規制されたから 2chMateのUAの末尾が(Linux; U; Android 10; Pixel Build/QP1A.191005.007.A3)となっているものが規制された あまりに多くの人が使いすぎたから

UAの末尾の部分を適当に変えるだけで回避できる。実在しないものでもよい。実在するものの例は>>634 一つのものを大勢の人が使うとまた規制される可能性があるので適当にでっち上げたものを使うのがよい

onihusube commented 2 years ago

書き込めない理由はわかったで 書き込み時に本家のChMateはX-2ch-UAがリクエストヘッダに設定されるけどこのソフトでは設定されないからや

取り敢えず本家はこんな感じ https://pastebin.com/UjCyrwPJ

それがこのプロキシで

こういう設定をしたときは https://pastebin.com/69uVF6VW

こうなってる https://pastebin.com/R1zsBqbJ

本家のリクエスト文に完全に成りすませばプロキシにたいする規制は理論上不可能

onihusube commented 2 years ago

署名が一致しません。はまったやつ原因メモ

書き込みUA等のPostSig計算にかかわるものをUAから設定する(コピペしてくる)時、末尾にホワイトスペースがついてる。

ヘッダで送るときは末尾のホワイトスペースは消されるため、PostSig計算時と文字列が変わる。

onihusube commented 2 years ago

Torにあったけど使える? https://pastebin.com/9VHdefF2

AppKey: a6kwZ1FHfwlxIKJWCq4XQQnUTqiA1P
HMKey: ZDzsNQ7PcOOGE2mXo145X6bt39WMz6
X2chUA(SID): JaneStyle/4.23
X2chUA(Get): (None)
X2chUA(Post): (None)
UA(SID): Monazilla/1.00 JaneStyle/4.23 Windows/10.0.22000
UA(Get): Monazilla/1.00 JaneStyle/4.23 Windows/10.0.22000
UA(Post): Monazilla/1.00 JaneStyle/4.23 Windows/10.0.22000

AppKey: vIyNd18OvKKeRkMmBUqqtEsdLuA8hh
HMKey: EowMzHCOOQVJ3xQCfU9iyLu6MwRCN1
X2chUA(SID): (None)
X2chUA(Get): (None)
X2chUA(Post): (None)
UA(SID): Dalvik/2.1.0 (Linux; U; Android 10; Pixel 5 Build/SP2A.220305.012)
UA(Get): Monazilla/1.00 JaneStyle_Android/2.3.1 Dalvik/2.1.0 (Linux; U; Android 10; Pixel 5 Build/SP2A.220305.012)
UA(Post): Monazilla/1.00 JaneStyle_Android/2.3.1 Dalvik/2.1.0 (Linux; U; Android 10; Pixel 5 Build/SP2A.220305.012)

AppKey: 8yoeAcaLXiEY1FjEuJBKgkPxirkDqn
HMKey: F7vFmWCGd5Gzs8hc03NpRvw4bPwMz3
X2chUA(SID): 2chMate/0.8.10.153
X2chUA(Get): 2chMate/0.8.10.153
X2chUA(Post): 2chMate/0.8.10.153
UA(SID): Monazilla/1.00 2chMate/0.8.10.153 Dalvik/2.1.0 (Linux; U; Android 10; Pixel 5 Build/SP2A.220305.012)
UA(Get): Monazilla/1.00 2chMate/0.8.10.153 Dalvik/2.1.0 (Linux; U; Android 10; Pixel 5 Build/SP2A.220305.012)
UA(Post): Monazilla/1.00 2chMate/0.8.10.153 Dalvik/2.1.0 (Linux; U; Android 10; Pixel 5 Build/SP2A.220305.012)

AppKey: hmCELmps15cHN8mL7viOH23nH24EwP
HMKey: fOOxqHdfCactc639EMjCF1mUAkG1Lx 
X2chUA(SID): Monazilla/1.00 2chGear/1.1.3 Dalvik/2.1.0 (Linux; U; Android 10; Pixel 5 Build/SP2A.220305.012)
X2chUA(Get): (None)
X2chUA(Post): (None)
UA(SID): DOLIB/1.00
UA(Get): Monazilla/1.00 2chGear/1.1.3 Dalvik/2.1.0 (Linux; U; Android 10; Pixel 5 Build/SP2A.220305.012)
UA(Post): Monazilla/1.00 2chGear/1.1.3 Dalvik/2.1.0 (Linux; U; Android 10; Pixel 5 Build/SP2A.220305.012)

AppKey: 1n0gDnwQE6st8KPj1qD7dKEWubpp1N
HMKey: 3Op2jFmeYpcMfuDwnV8OtXmKu6n8oL 
X2chUA(SID): Ciisaa/1.71 (A)
X2chUA(Get): (None)
X2chUA(Post): (None)
UA(SID): DOLIB/1.00
UA(Get): Monazilla/1.00 (Ciisaa/1.71 (A))
UA(Post): Monazilla/1.00 Ciisaa/1.71 Dalvik/2.1.0 (Linux; U; Android 10; Pixel 5 Build/SP2A.220305.012)

AppKey: CD59oXlsHKztxozKg3m33RsIvCwghQ
HMKey: ZqFSgmJt3GXBVoa90QTVftqwODjR0E
X2chUA(SID): En2ch/1.4.21
X2chUA(Get): (None)
X2chUA(Post): (None)
UA(SID): Monazilla/1.00 En2ch/1.4.21 Dalvik/2.1.0 (Linux; U; Android 10; Pixel 5 Build/SP2A.220305.012)
UA(Get): Monazilla/1.00 En2ch/1.4.21 Dalvik/2.1.0 (Linux; U; Android 10; Pixel 5 Build/SP2A.220305.012)
UA(Post): Monazilla/1.00 En2ch/1.4.21 Dalvik/2.1.0 (Linux; U; Android 10; Pixel 5 Build/SP2A.220305.012)
onihusube commented 2 years ago
onihusube commented 2 years ago
onihusube commented 2 years ago

もう一つどうぞ https://pastebin.com/6td60uRg

onihusube commented 2 years ago

取り敢えずJaneStyleのUAで書けないのはリクエストボディのURLエンコードが小文字になってたのを本家に合わせて大文字にしたら書き込めるな。 ヘッダーもまだ本家と差があるから合わせていかないとな AcceptヘッダがないのとかAccept-Encodingがgzip, indentityじゃなくてgzipだけになってるのとか

ヘッダに関してはBoardSettings.yamlで何とか出来るはずなのでとりあえず特殊対応はしない・・・

onihusube commented 2 years ago

URLエンコード結果は大文字になるのが正しいけど、HttpUtility.UrlEncodeは小文字でエンコードする。今回のはこれが原因?(他の串で問題が起きてないように見えることからもそうっぽい??)

HttpUtility.UrlEncode以外の方法はエンコーディングを指定して変換できないので好ましくない(UTF-8決め打ちする)。

ここに提示されているように、正規表現で置換するのが良いかな・・・

onihusube commented 2 years ago

Shift-JISのパーセントエンコーディング、めも

ウィキペディア あいうえお

%83E%83B%83L%83y%83f%83B%83A+%82%A0%82%A2%82%A4%82%A6%82%A8

になる(スペースは+)。

つまり

ウ : %83E
ィ : %83B
キ : %83L
ペ : %83y
デ : %83f
ィ : %83B
ア : %83A

あ : %82%A0
い : %82%A2
う : %82%A4
え : %82%A6
お : %82%A8

に対応する。

通常のパーセントエンコーディングのデコード方法に従ってデコード(%を取り除いた文字列2文字を16進数値として読む)すると、例えば%83E -> 0x83 Eとなる。この時のエンコーディングは何かを仮定する(この場合shift-jisだと思ってデコードする)。

0x83はshift-jisとして有効な文字ではないので、その次の文字と結合する。その次の文字をAsciiコードで数値に直して結合すると、0x83 E -> 0x83 0x45 -> 0x8345となり、0x8345はshift-jisでのに対応する。
このとき次の文字も%始まりならまた同様にデコードする、たとえば%82%A0 -> 0x82 0xA0 -> 0x82A00x82A0はshift-jis でに対応する。 つまりは、Shift-JISのパーセントエンコーディングにおいても%xx%+2文字(半角英数)となるはず。

C#実装テスト

onihusube commented 2 years ago

この変更で設定そのままでかけたので確定。

onihusube commented 2 years ago

>>654 参考までに… https://pastebin.com/8Ekw3cm4

2chGearのpost時ヘッダ

feature=confirmedってなんや・・・

onihusube commented 2 years ago

Androidは全部でてる https://pastebin.com/u/as238

onihusube commented 2 years ago

トランスポートのコネクションは一致させれないの?

BoardSettings.yamlのKeep-AliveをfalseにするとConnectionの行自体が消えるな

これとかヘッダ順序とか、HTTPWebRequestを使わないようにしないとダメそう

Fiddlerにリクエストをやってもらうのがよさそうだけど、今は何でそうしてないんだっけ・・・

onihusube commented 2 years ago

20連投すると 鍵が失効しています IP変えたら書ける もしくは串ではないJaneからIP変えなくても書き込める

20連投じゃなくて5回Monaキー再取得のほうかな 5連投でUA替えてるから5回目でアウト

俺の見立て 短時間に連投もしくはMonaキー取得を繰り返し行うとIPアドレスが要注意リストに載り 5回目の再取得で鍵が失効

その目をつけられてしまったIPからのMonaキー取得は JaneStyleで1回目の取得であっても5回目扱いとなり鍵が失効する

IPアドレスがブラックリスト(≠BBX)に載らない程度のもっさり連投だったんだろう 45秒で5連投して4分以内に5回目のMonaキー再取得を行うくらいの連投じゃないと

IPアドレスがブラックリスト(≠BBX)に載るレベルの(45秒で5連投)書き込みを行い Monaキー取得を繰り返し行うとIPアドレスが要注意リストに載り 5回目の再取得で鍵が失効

その目をつけられてしまったIPからのMonaキー取得は JaneStyleで(クッキー削除して)1回目の取得であっても5回目扱いとなり鍵が失効する

VPN探してて既に他の人によってこれにされてしまっているIPを使った時、 串が原因かといろいろ設定変える無駄が減る

前スレでpovo2.0で再現できなって言ったけどさっき書き込んだスレを確認したら勝手にIDがコロコロしてた

今はコロコロしなくなったからまた試したら、確かに短時間に何回も鍵を更新すると、そのIPには5回目からは失効した鍵しか渡されなくなった

onihusube commented 2 years ago

色々と実験をして「ERROR: 不正取得を検出しました」を出す事に成功した IPを変えれば回避できる

>>639 多分6時間くらいで解除される気がする

onihusube commented 2 years ago

>>186 俺も今PCから書き込むと串規制(101)が出て書けないんだよね 有志がpastebinに貼ってくれた例のUAとKEYだと書けなくなってるんだろうけど代わりのが見つからんから詰んでるわ どうしたら良いんだ

AppKeyとHMKeyそのままで書き込み用UAを実在のものに変えてもダメだね 参ったわ 8853 Detect invalid proxy.; って出る

PCから来たID:QNOehZwI0だけど書けたわ、原因が分かった 恐らく運営側は今「独自のUserAgent」を持ってる書き込みを規制してるんじゃないか? みんな↓みたいなUA設定してるでしょ?

Monazilla/1.00 BROWSER_NAME/BROWSER_VERSION Dalvik/2.1.0 (Linux; U; Android 10; XXX/YYY)

これのXXX/YYY部分だけ変えてCookie削除したら書き込めた、それ以外は一切弄ってない 逆に言うとこのXXX/YYY部分で汎用的な機種名の入ったUA使ってない場合、悪目立ちして規制されることがあるっぽい 俺は「Chinko Build/454545.191919」とかにしてたから不興を買ったのかも知れん

なるほど(ちょっと笑ったw

onihusube commented 2 years ago

Monakey再取得し過ぎによる「ERROR: 不正取得を検出しました」への対策は 書き込める設定+Monakeyが記載されたバックアップしておくべきsetting.xmlをまだ所持したことが無い者にとってはIP変えるしかないのが現状なのかな

既に「ERROR: 不正取得を検出しました」が出されたIPで 有効なMonakeyを新たに5chから発行してもらえるようになる条件が そのIPに対する既存の有効なMonakeyの自然失効だとしたら実質2週間規制?

2日待ったら解除されたよ

onihusube commented 2 years ago

■鍵(MonaKey)について

5chは2022年3月から専ブラ用にAPI経由の新しい書き込み方式(以下、新方式)が導入され、JaneStyleはv4.20以降で対応した 従来の書き込み方式(以下、旧方式)は移行期間を経て2022年4月未明に停止された模様

新方式では専ブラがインストールされた各クライアント環境毎にユニークな鍵(MonaKey)が5chから発行され、書き込み時の認証に使用される 鍵(MonaKey)には有効期限(現状で1~2週間)があり、定期的に更新の為の同意が求められる 5ch側は規制として鍵(MonaKey)をBANする事が出来、BANされた鍵(MonaKey)では書き込みが拒否される

■鍵(MonaKey)関係の主なエラーメッセージ

・「ERROR: 鍵の有効期限が切れています。」  →1~2週間で発生。[同意]をすれば鍵が更新される。

・「ERROR: 鍵が失効しています。」  →何らかの理由で鍵が失効している。[同意]をすれば鍵が更新される。

・「ERROR: 鍵が一致しません。 」  →何らかの理由で鍵が合わず使えない。[同意]をすれば鍵が更新される。

・「ERROR: 鍵が無効です。 」  →鍵が規制でBANされている。規制解除を待つか鍵の削除が必要。

・「ERROR: 不正な取得を検出しました。」  →鍵の取得を同じIPで短時間に繰り返すと発生。IPが規制されている。規制解除を待つかIPの変更が必要。

onihusube commented 2 years ago

ソフトウェア板でRock54 Mango板で確認しようとしたら ERROR: 不正取得を検出しました nonceの設定間違ってたがそれまでは普通に書けてた IP変更とnonceの設定正したら復帰出来た NGWordとか他の何かの規制に引っ掛かると不正な串判定をチェックされるのか或いは板に依るのか 全てで厳密なチェックはしていないみたいね

onihusube commented 2 years ago

En2chだと不正な串。色々試してみた https://pastebin.com/Y8uLnhmf コレによると Accept-Encoding ヘッダが無い yamlでは消してあるのに付加されてしまってる gzip nonce ミリ秒有り無しも試してみたけどダメ ミリ秒 .000 固定なら専用対応が必要なのかも どちらが要因なのかは分からないけどログから見れる違いはその2つくらい

>>837 スレ立て出来無いっぽいですね~^^; でも本家で出来無いスレ立て出来たら面白そう

onihusube commented 2 years ago

とりあえずiOS版のjanestyleの通信キャプチャしたけどAPIKeyしかわからないし、できる人いるならHMKey解析して

Connection:keep-alive Host:agree.5ch.net Accept-Language:ja-JP;q=1 Content-Type:application/x-www-form-urlencoded Accept-Encoding:gzip, deflate, br X-MonaKey:省略 Accept:*/* User-Agent:Monazilla/1.00 JaneStyle_iOS/2.7.7.1 iOS15.4.1 iPhone10,1 X-APIKey:3VR1n0X53THKErNL07ex5bL3Hm33dt X-PostNonce:1654262422.471 Content-Length:129 Referer: http://agree.5ch.net/test/read.cgi/operate/1652610044/ X-PostSig:c15fec69e9dc171b81b9e59b6e13027f30f6f4e91795c23e1ac666592f200f34

これが>>930のフィールド

FROM=&MESSAGE=test&bbs=operate&feature=confirmed&key=1652610044&mail=&submit=%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%82%80&time=1654262422

onihusube commented 2 years ago

鍵を捨てて書き込みボタンを押して確認画面を通過して書き込みするとfeatureが付いたリクエストが送られるのでブロックされる そこからもう一回書き込むと鍵が無効になってるのでそもそも書き込めない

そこでまた鍵を捨てて今度は確認画面を通過したあとの再書込みのリクエストをfiddlerのリクエスト書き換えるとfeatureを消して書き込むともちろん書き込める

そして2回目以降は最初からfeatureが入ってないリクエストがapi串で生成されるようになるので何も書き換えずに書き込める

これは最新バージョンでも前のバージョンでも同じだった

これxeroの生リクエスト自体が状況に応じてfeatureついたり付かなかったりしててそれが串のリクエストにも反映されてるっぽい あとviewだと更新からの初書き込みフィーチャー付かなかないな

>>46 かも知れない ただ前スレのやり取りを見てるとxenoとか特定のブラウザが付けるパラメーターに問題があるかもという事なので使っている専ブラによっては起こらないかも ちなみにこの書き込みはdetourで作ったmonakeyを2chproxyのsetting.xmlに設定して書き込んでいる 最初のmonakey取得プロセスさえクリアすれば使える

onihusube commented 2 years ago

試してみてください🙏

2chAPIProxy test.zip

as123414 commented 2 years ago

なおりました

onihusube commented 2 years ago

>>52 使ってみたけど駄目だったね

>>53で駄目だったって書いたけど 「不正取得を~」ってエラーが出た後に串を再起動させたら書き込めました

onihusube commented 2 years ago

現在の状況まとめ 0528でGUIの設定とyamlを正しく設定すればEn2ch以外の全てのKeyで書ける (ソフトウェア板のテストスレで確認) Xenoは0528にissueの「書き込み仕様変更について」で公開されてるtest版zipの中のexeを上書きすれば書けるようになる それ以外の「書けない」は正しく設定出来ていないか以下の規制に巻き込まれている 【速報】5ch全板、AndroidとiPhoneから書き込めなくなる「鍵が無効です」 http://hayabusa9.2ch.net/test/read.cgi/news/1654419782/

BANの種類にも依るが、UAの機種やOSのバージョン部分を有効なモノに変えてMonakeyを更新すれば書けるようになるはず 不正取得に掛かっていたらipの変更も必要 Monakeyのリセットは自動でやってくれるので設定ファイルから手作業で消したりする必要は無い ip変えられない人は規制解除まで大人しく待つしかない

onihusube commented 2 years ago

荒らした板でUA規制

書き込むと ↓ 制限されています ↓ 鍵無効 ↓ 別の板で書き込んで再取得 ↓ 別の板で書ける ↓ 荒らし板 ↓ 制限されています ↓ 鍵無効

IPは一切変えず

onihusube commented 2 years ago
onihusube commented 2 years ago

Live5ch/1.59 (スレ立て)

POST http://egg.5ch.net/test/bbs.cgi HTTP/1.1 Proxy-Connection: Keep-Alive Content-Type: application/x-www-form-urlencoded; Charset=shift_jis Accept: */* Cookie: NAME=; MAIL=sage Referer: http://egg.5ch.net/software/ User-Agent: Monazilla/1.00 Live5ch/1.59 Windows/10.0.22000 X-PostSig: 71539a5e85f21a30958fb45a1379abcd**** X-APIKey: HnNrwoBmZhuS2Iy7XcfKcNjXWbStay X-PostNonce: 1659596387.489 X-MonaKey: 1c232433ec64dadfadf6d944e12b32fg**** Content-Length: 132 Host: egg.5ch.net

subject=test&submit=%90%56%8B%4B%83%58%83%8C%83%62%83%68%8D%EC%90%AC&FROM=&mail=sage&MESSAGE=test&bbs=software&time=1659596387&sid=

色々と修正して取得し直したので上げ直し

HOST /test/bbs.cgi HTTP/1.1 Connection: Keep-Alive Content-Type: application/x-www-form-urlencoded; Charset=UTF-8 Accept: */* Cookie: NAME=; MAIL= Referer: http://egg.5ch.net/test/read.cgi/software/16595*/ User-Agent: Monazilla/1.00 Live5ch/1.59 Windows/10.0.22000 X-PostSig: 81539a5e85f21a30958fb45a1379abcd**** X-APIKey: HnNrwoBmZhuS2Iy7XcfKcNjXWbStay X-PostNonce: 1659596387.489 X-MonaKey: 0c232433ec64dadfadf6d944e12b32fg**** Content-Length: 132 Host: egg.5ch.net

subject=test&submit=%90%56%8B%4B%83%58%83%8C%83%62%83%68%8D%EC%90%AC&FROM=&mail=sage&MESSAGE=test&bbs=software&time=1659596387&sid=

onihusube commented 2 years ago

■書き込みOK Monazilla/1.00 JaneStyle/4.23 Windows/10.0.22000 Monazilla/1.00 JaneStyle/4.24 Windows/10.0.22000 Monazilla/1.00 2chMate/0.8.10.153 Dalvik/0 (Linux; U Android 0) Monazilla/1.00 2chMate/0.8.10.154 Dalvik/0 (Linux; U Android 0) Monazilla/1.00 2chMate/0.8.10.155 Dalvik/0 (Linux; U Android 0) Monazilla/1.00 Ciisaa/1.71 Dalvic/0 Monazilla/2.00 JaneStyle/4.23 Windows/10.0.22000 Monazilla/1.00 JaneStyle/4.23 (^o^) Windows/10.0.22000 Monazilla/1.00 2chMate/0.8.10.153 Dalvik/0 (Linux; U Android 0) (^o^)

■■未登録のバージョンです。 Monazilla/1.00 JaneStyle/4.22 Windows/10.0.22000 Monazilla/1.00 JaneStyle/4.25 Windows/10.0.22000 Monazilla/1.00 2chMate/0.8.10.152 Dalvik/0 (Linux; U Android 0) Monazilla/1.00 2chMate/0.8.10.156 Dalvik/0 (Linux; U Android 0)

■もっと古いのにしましょうね。 Monazilla/1.00 2chMate/0.8.10.153 Dalvik/0 (Linux; N Android 0) Monazilla/1.00 2chMate/0.8.10.153 Dalvik/0 (Linux; I Android 0)

■もう新しいのにしましょうね。 Monazilla/1.00 JaneStyle/4.23 Windows/5.1.2600

■■新仕様に対応した専用ブラウザをご利用ください。 Monazilla/1.00 JaneStyle/4.23 Monazilla/1.00 2chMate/0.8.10.154 Dalvik/0 (Linux; U) Monazilla/1.00 JaneStyle/4.23 (^o^)

■不正なPROXYを検出しました。 Monazilla/1.00 JaneStyle/4.23 Windows/10.0.22001 Monazilla/1.00 JaneStyle/4.23 Windows/10.0.22000 (^o^)

■■APIキーが一致しません。4 Monazilla/1.01 JaneStyle/4.23 Windows/10.0.22000 Monazilla/1.00 JaneStyle 4.23 Windows/10.0.22000

■署名が一致しません。 Monazilla/1.00 JaneStyle/4.23 Windows/10.0.22000

■403 Forbidden Monazilla/0.00 JaneStyle/4.23 Windows/10.0.22000 Monazilla/1,00 JaneStyle/4.23 Windows/10.0.22000 Monazilla/3.00 JaneStyle/4.23 Windows/10.0.22000 Monazilla 1.00 JaneStyle/4.23 Windows/10.0.22000 onazilla/1.00 JaneStyle/4.23 Windows/10.0.22000

■400 Bad Request Monazilla/1.00 janeStyle/4?23 Windows/10.0.22000 ※?は$20~$7E以外の文字コード

>>282のこれは先頭に空白が入ってるパターンね >■署名が一致しません。 > Monazilla/1.00 JaneStyle/4.23 Windows/10.0.22000

onihusube commented 2 years ago

泥Spyleは出回ってたリクエスト文とは違いが在るようだ 専用ブラウザを助けるプロクシ作らね?26.1串目 http://egg.2ch.net/test/read.cgi/software/1661687123/45 2chAPI串のフィールド順に'oekaki_thread1', 'oekaki'とか設定して反映されるのだろうか?

case 'JaneStyle_Android': new_query.seed_time = new_query.time

function create_nonce( let nonce = query.seed_time ? query.seed_time + '000' : String(new Date().getTime())

コレって泥Spyleがミリ秒'000'固定になってて En2chの方では000で無くても書けるから"new_query.seed_time"は設定されてないけど 泥Spyleではそこを判断されてるってことかな?

onihusube commented 2 years ago

Jane Android2.3.3

POST http://egg.5ch.net/test/bbs.cgi HTTP/1.1
X-PostNonce: 1662002761.061
Accept: */*
X-MonaKey: 176e015c4dc17b3bb0a07ecc0f9e1e7d********************************
Referer: http://egg.5ch.net/test/read.cgi/software/16612*****/
Connection: close
User-Agent: Monazilla/1.00 JaneStyle_Android/2.3.3 Dalvik/2.1.0 (Linux; U; Android 12; ***** Build/*****)
Host: egg.5ch.net
Accept-Encoding: gzip
Accept-Language: ja
X-PostSig: 5456d9bb5dc4dc4b23e1bf8377e4edbd********************************
X-APIKey: vIyNd18OvKKeRkMmBUqqtEsdLuA8hh
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Content-Length: 125

MESSAGE=test&bbs=software&mail=sage&submit=%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%82%80&subject=&FROM=&time==1662002658&key=16612***** 

>>117ありがとうございます 2.3.2 からの変更点は ・nonce がミリ秒付加 ・ボディのフィールドからfeature削除 みたいですね

onihusube commented 2 years ago

nonce が偽装元と違っていると 「不正なPROXY 403」

onihusube commented 2 years ago

Ciisaaが不正なPROXY

本家との差異 ・Accept-Encoding : gzip 偽装に在って 本家には無い ・Referer: http://egg.5ch.net/software/ が本家はspyle形式 ・nonce スレ立てはミリ秒なのに投稿はセンチ秒??? コピペミスだと思うが 投稿: https://pastebin.com/mkWR7NGx スレ立て: https://pastebin.com/ibpppvBB ・Connection: close 偽装ではyamlのheaderに書いても反映されないけど Keep-Alive しとけばConnection:ヘッダは付加されるので良いはず

試せる人は Accept-Encoding : gzip を削除してPOSTしてみて欲しい

>>178 >試せる人は Accept-Encoding : gzip を削除してPOSTしてみて欲しい やってもダメ

検証結果 CiisaaのUAに「Build/」が含まれていると不正なPROXYエラーになる

なんだそれ

Jane Style (Windows版) Part208 http://egg.5ch.net/test/read.cgi/software/1662203433/554 > ChromeとCiisaaだけは素でもBuild/~を吐かない

だそうだ nutsも\sBuild/以下を)に置き換えて削除してる

ブルスタにCiisaa入れてのテストだけど「Build/」~が付いてないのが正しいみたい

onihusube commented 2 years ago

>>219,220 制限、余所、もう書けません、この手のエラーは、 UAだけ、回線だけ、UAと回線の組み合わせ、どれもあり得て一概には言えないな

>>223,229 こちらでも確認した 何種か試したが eonet で Monazilla/~ が制限規制されてるっぽいな Mozilla/~ で余所規制を回避すれば eonet でも書ける

onihusube commented 2 years ago

>>121 不正なPROXY 201 は 2chMate 関係のエラーとまでしかわからない 例えば X-2ch-UA がないとか

onihusube commented 2 years ago

泥のUAチェックが厳密になって機種名や機種ビルドまで見るようになり出したけど 泥の最新ビルドまでそんなタイムリーに漏れなく更新出来るものなんだろうか いばらの道を突き進むなぁ

>>430 JaneStyle_Android/2.4.0のUAを試してみるといい バージョンアップ前は Monazilla/1.00 JaneStyle_Android/2.3.3 Dalvik/0 <好きの文字列> みたいなレベルのがOKだったけど 最新版は Monazilla/1.00 JaneStyle_Android/2.4.0 Dalvik/2.1.0 (Linux; U; Android **; <機種名> Build/機種ビルド番号) のフォーマットで実在する組合せじゃないと不正なPROXY扱いになる (少なくとも自分が確認した範囲では)

ちなみにJaneStyle_Androidの予約バージョンだけは2.4.1から2.4.9まで全部通る なんだそれ

いま改めて確認したらめちゃめちゃ緩くなってた なんか問題が発生したのかな

>>438 書けなかった UAに戻してら書けた 運営がなんかやらかしたみたいだね

onihusube commented 2 years ago

>>493 spyleやLiveならこういうので分かる 【test】投稿テスト【ワッチョイ】 part5 http://egg.5ch.net/test/read.cgi/software/1660099053/

20220917-20220923

-Mc42 … Monazilla/1.00 JaneStyle.4.23 Windows/6.0.6000 -TQyE … Monazilla/1.00 JaneStyle.4.23 Windows/6.1.7600 -rZTD … Monazilla/1.00 JaneStyle.4.23 Windows/6.1.7601 Service Pack 1 -QNcw … Monazilla/1.00 JaneStyle.4.23 Windows/6.2.9200 -+HgJ … Monazilla/1.00 JaneStyle.4.23 Windows/6.3.9600 -4wF4 … Monazilla/1.00 JaneStyle.4.23 Windows/10.0.10240 -MhoU … Monazilla/1.00 JaneStyle.4.23 Windows/10.0.18363 -eAa0 … Monazilla/1.00 JaneStyle.4.23 Windows/10.0.19041 -91vb … Monazilla/1.00 JaneStyle.4.23 Windows/10.0.19042 -okD4 … Monazilla/1.00 JaneStyle.4.23 Windows/10.0.19043 -E+l9 … Monazilla/1.00 JaneStyle.4.23 Windows/10.0.19044 -aM1M … Monazilla/1.00 JaneStyle.4.23 Windows/10.0.19045 -epGT … Monazilla/1.00 JaneStyle.4.23 Windows/10.0.20270 -PPqk … Monazilla/1.00 JaneStyle.4.23 Windows/10.0.21390 -ldZd … Monazilla/1.00 JaneStyle.4.23 Windows/10.0.22000 -6Po3 … Monazilla/1.00 JaneStyle.4.23 Windows/10.0.22449 -xH4D … Monazilla/1.00 JaneStyle.4.23 Windows/10.0.22622 -9gzz … Monazilla/1.00 JaneStyle.4.23 Windows/10.0.25115 ****-t/ch … Monazilla/1.00 JaneStyle.4.23 Windows/10.0.25188

20220917-20220923

-YO1K … Monazilla/1.00 Live5ch/1.59 Windows/6.0.6000 -nMbm … Monazilla/1.00 Live5ch/1.59 Windows/6.1.7600 -AZvI … Monazilla/1.00 Live5ch/1.59 Windows/6.1.7601 (Service Pack 1) -bI3p … Monazilla/1.00 Live5ch/1.59 Windows/6.2.9200 -bPEN … Monazilla/1.00 Live5ch/1.59 Windows/6.3.9600 -+BtO … Monazilla/1.00 Live5ch/1.59 Windows/10.0.10240 -6Hnt … Monazilla/1.00 Live5ch/1.59 Windows/10.0.18363 -vqHb … Monazilla/1.00 Live5ch/1.59 Windows/10.0.19041 -uMuI … Monazilla/1.00 Live5ch/1.59 Windows/10.0.19042 -UC+/ … Monazilla/1.00 Live5ch/1.59 Windows/10.0.19043 -cETI … Monazilla/1.00 Live5ch/1.59 Windows/10.0.19044 -HdVQ … Monazilla/1.00 Live5ch/1.59 Windows/10.0.19045 -85zq … Monazilla/1.00 Live5ch/1.59 Windows/10.0.20270 -z0sj … Monazilla/1.00 Live5ch/1.59 Windows/10.0.21390 -/PCR … Monazilla/1.00 Live5ch/1.59 Windows/10.0.22000 -nN9E … Monazilla/1.00 Live5ch/1.59 Windows/10.0.22449 -zja0 … Monazilla/1.00 Live5ch/1.59 Windows/10.0.22622 -49sq … Monazilla/1.00 Live5ch/1.59 Windows/10.0.25115 ****-O3CH … Monazilla/1.00 Live5ch/1.59 Windows/10.0.25188

onihusube commented 1 year ago

pinkには新仕様での書き込みを旧と区別することなく受け入れる板と スクリプト被害に遭ったので新を受け入れずにはじく設定になってる板がある

棲息域が違えばどっちもあることに気付かないけどね