Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
K
koishi-plugin-hisoutensoku-jammer
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nanahira
koishi-plugin-hisoutensoku-jammer
Commits
0edb5722
Commit
0edb5722
authored
Feb 23, 2022
by
nanahira
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
better matching
parent
192c5e9a
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
33 additions
and
7 deletions
+33
-7
src/index.ts
src/index.ts
+33
-7
No files found.
src/index.ts
View file @
0edb5722
...
@@ -28,9 +28,9 @@ declare module 'koishi' {
...
@@ -28,9 +28,9 @@ declare module 'koishi' {
}
}
const
matcherGlobal
=
const
matcherGlobal
=
/
(
0*
[^\d]
*
)
*
([
1-2
]?[^\d
]?\d{0,2})(([^\d]
+
[
1-2
]?\d{1,2}){3,}?)
.+
?([
1-6
]([^\d]
*
\d){4})
/g
;
/
(
0*
[^\d]
*
)
*
([
1-2
]?[^\d
\.]?\d{0,2})(([^\d]
+
[
1-2
]?\d{1,2}){3,}?)
.+
?([
1-6
]([^\d]
*
\d){4})(
.*
[\+\-]\d{1,5})
*
/g
;
const
matcherSingle
=
const
matcherSingle
=
/
(
0*
[^\d]
*
)
*
([
1-2
]?[^\d
]?\d{0,2})(([^\d]
+
[
1-2
]?\d{1,2}){3,}?)
.+
?([
1-6
]([^\d]
*
\d){4})
/
;
/
(
0*
[^\d]
*
)
*
([
1-2
]?[^\d
\.]?\d{0,2})(([^\d]
+
[
1-2
]?\d{1,2}){3,}?)
.+
?([
1-6
]([^\d]
*
\d){4})(
.*
[\+\-]\d{1,5})
*
/
;
const
PROTOCOL_BASE64
=
'
base64://
'
;
const
PROTOCOL_BASE64
=
'
base64://
'
;
...
@@ -125,7 +125,7 @@ export default class HisoutensokuJammerPlugin implements OnApply {
...
@@ -125,7 +125,7 @@ export default class HisoutensokuJammerPlugin implements OnApply {
return
this
.
handleMessage
(
text
,
sender
,
false
);
return
this
.
handleMessage
(
text
,
sender
,
false
);
}
}
private
async
handle
Message
(
private
async
getTargetsFrom
Message
(
message
:
string
,
message
:
string
,
sender
:
string
,
sender
:
string
,
useCache
=
true
,
useCache
=
true
,
...
@@ -155,7 +155,8 @@ export default class HisoutensokuJammerPlugin implements OnApply {
...
@@ -155,7 +155,8 @@ export default class HisoutensokuJammerPlugin implements OnApply {
}
else
if
(
!
messageMatch
)
{
}
else
if
(
!
messageMatch
)
{
return
;
return
;
}
}
const
attackPromises
=
messageMatch
.
map
((
pattern
)
=>
{
const
results
:
{
address
:
string
;
port
:
number
}[]
=
[];
for
(
const
pattern
of
messageMatch
)
{
const
patternMatch
=
pattern
.
match
(
matcherSingle
);
const
patternMatch
=
pattern
.
match
(
matcherSingle
);
const
firstDigit
=
patternMatch
[
2
].
replace
(
/
[^\d]
+/g
,
''
);
const
firstDigit
=
patternMatch
[
2
].
replace
(
/
[^\d]
+/g
,
''
);
const
address
=
`
${
firstDigit
}
.
${
patternMatch
[
3
]
const
address
=
`
${
firstDigit
}
.
${
patternMatch
[
3
]
...
@@ -163,9 +164,34 @@ export default class HisoutensokuJammerPlugin implements OnApply {
...
@@ -163,9 +164,34 @@ export default class HisoutensokuJammerPlugin implements OnApply {
.
filter
((
s
)
=>
s
.
length
)
.
filter
((
s
)
=>
s
.
length
)
.
join
(
'
.
'
)}
`
;
.
join
(
'
.
'
)}
`
;
const
port
=
parseInt
(
patternMatch
[
5
].
replace
(
/
[^\d]
+/g
,
''
));
const
port
=
parseInt
(
patternMatch
[
5
].
replace
(
/
[^\d]
+/g
,
''
));
return
this
.
startAttack
(
address
,
port
);
results
.
push
({
address
,
port
});
});
const
suffixPattern
=
patternMatch
[
7
]?.
replace
(
/
[^\+\-\d]
/g
,
''
);
const
results
:
boolean
[]
=
await
Promise
.
all
(
attackPromises
);
if
(
suffixPattern
)
{
const
suffixMatch
=
suffixPattern
.
match
(
/
[\+\-]\d
+/g
);
if
(
suffixMatch
)
{
let
mutatedPort
=
port
;
for
(
const
numberPattern
of
suffixMatch
)
{
const
portOffset
=
parseInt
(
numberPattern
);
mutatedPort
+=
portOffset
;
}
results
.
push
({
address
,
port
:
mutatedPort
});
}
}
}
return
results
;
}
private
async
handleMessage
(
message
:
string
,
sender
:
string
,
useCache
=
true
,
)
{
const
targets
=
await
this
.
getTargetsFromMessage
(
message
,
sender
,
useCache
);
const
results
:
boolean
[]
=
await
Promise
.
all
(
targets
.
map
((
target
)
=>
{
return
this
.
startAttack
(
target
.
address
,
target
.
port
);
}),
);
}
}
private
async
startAttack
(
address
:
string
,
port
:
number
):
Promise
<
boolean
>
{
private
async
startAttack
(
address
:
string
,
port
:
number
):
Promise
<
boolean
>
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment