Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <ButtonConstants.au3>
- #include <EditConstants.au3>
- #include <GUIConstantsEx.au3>
- #include <StaticConstants.au3>
- #include <WindowsConstants.au3>
- #include <Array.au3>
- #include <IE.au3>
- Global Enum $Parser_Nothing, $Parser_FirstName, $Parser_LastName, $Parser_Options, $Parser_NickNamePatterns, $Parser_eMailPatterns, $Parser_Cities
- Global $arrManFirstNames[1], $arrWomanFirstNames[1], $arrManLastNames[1], $arrWomanLastNames[1]
- Global $arrEMailPatterns[1], $arrNickNamePatterns[1], $arrCities[1], $iDateYearsFromTo
- Global $ODReg = GUICreate("OD Autoreger by D4rkC10ud", 202, 132, 192, 124)
- Global $SettingsBtn = GUICtrlCreateButton("settings of fake profile`s generator", 10, 10, 181, 21)
- Global $OutpBtn = GUICtrlCreateButton("Output file", 10, 40, 81, 21)
- $StartBtn = GUICtrlCreateButton("Start registration", 10, 100, 181, 21)
- Global $iAccsInp = GUICtrlCreateInput("", 130, 70, 61, 21)
- $Label1 = GUICtrlCreateLabel("Count of accs:", 10, 70, 113, 17)
- $sFileSettings = ""
- $sOutpSettings = ""
- GUISetState(@SW_SHOW)
- Func _IEGetObjByClass(ByRef $o_object, $s_Class, $i_index = 0)
- If Not IsObj($o_object) Then
- __IEErrorNotify("Error", "_IEGetObjByClass", "$_IEStatus_InvalidDataType")
- SetError($_IEStatus_InvalidDataType, 1)
- Return 0
- EndIf
- ;
- If Not __IEIsObjType($o_object, "browserdom") Then
- __IEErrorNotify("Error", "_IEGetObjByClass", "$_IEStatus_InvalidObjectType")
- SetError($_IEStatus_InvalidObjectType, 1)
- Return 0
- EndIf
- ;
- Local $i_found = 0
- ;
- $o_tags = _IETagNameAllGetCollection($o_object)
- For $o_tag In $o_tags
- If String($o_tag.className) = $s_Class Then
- If ($i_found = $i_index) Then
- SetError($_IEStatus_Success)
- Return $o_tag
- Else
- $i_found += 1
- EndIf
- EndIf
- Next
- ;
- __IEErrorNotify("Warning", "_IEGetObjByClass", "$_IEStatus_NoMatch", $s_Class)
- SetError($_IEStatus_NoMatch, 2)
- Return 0
- EndFunc
- Func PatternToStr(ByRef $Person, $Pattern)
- Local $Result = $Pattern
- $Result = StringReplace($Result, "#LastName#", $Person[5], 0, 1)
- $Result = StringReplace($Result, "#FirstName#", $Person[4], 0, 1)
- $Result = StringReplace($Result, "#BirthdayDay#", String($Person[3]), 0, 1)
- $Result = StringReplace($Result, "#BirthdayMonth#", String($Person[2]), 0, 1)
- $Result = StringReplace($Result, "#BirthdayYear#", String($Person[1]), 0, 1)
- While True
- $Result = StringReplace($Result, "#RndNum#", Random(0, 9, 1))
- If @extended = 0 Then ExitLoop
- Wend
- While True
- $Result = StringReplace($Result, "#RndLatinChr#", Chr(Random(97, 122, 1)))
- If @extended = 0 Then ExitLoop
- Wend
- Return $Result
- EndFunc
- Func RandomEl(ByRef $arr)
- Return $arr[Random(1, UBound($arr)-1, 1)]
- EndFunc
- Func TranslitRus($sCyr)
- Local $i, $s, $r
- For $i=1 To StringLen($sCyr)
- $s=StringMid($sCyr, $i, 1)
- Select
- Case $s="а"
- $r=$r&"a";
- Case $s="б"
- $r=$r&"b";
- Case $s="в"
- $r=$r&"v";
- Case $s="г"
- $r=$r&"g";
- Case $s="д"
- $r=$r&"d";
- Case $s="е"
- $r=$r&"e";
- Case $s="ё"
- $r=$r&"jo";
- Case $s="ж"
- $r=$r&"zh";
- Case $s="з"
- $r=$r&"z";
- Case $s="и"
- $r=$r&"i";
- Case $s="й"
- $r=$r&"jj";
- Case $s="к"
- $r=$r&"k";
- Case $s="л"
- $r=$r&"l";
- Case $s="м"
- $r=$r&"m";
- Case $s="н"
- $r=$r&"n";
- Case $s="о"
- $r=$r&"o";
- Case $s="п"
- $r=$r&"p";
- Case $s="р"
- $r=$r&"r";
- Case $s="с"
- $r=$r&"s";
- Case $s="т"
- $r=$r&"t";
- Case $s="у"
- $r=$r&"u";
- Case $s="ф"
- $r=$r&"f";
- Case $s="х"
- $r=$r&"kh";
- Case $s="ц"
- $r=$r&"c";
- Case $s="ч"
- $r=$r&"ch";
- Case $s="ш"
- $r=$r&"sh";
- Case $s="щ"
- $r=$r&"shh";
- Case $s="ь"
- Case $s="ы"
- $r=$r&"y";
- Case $s="ъ"
- Case $s="э"
- $r=$r&"eh";
- Case $s="ю"
- $r=$r&"ju";
- Case $s="я"
- $r=$r&"ja";
- Case Else
- $r=$r&$s;
- EndSelect
- Next
- Return $r
- EndFunc
- Func ParseProfileSettings($sProfile)
- Local $iParserStatus, $fileProfile, $sCurLine
- $fileProfile=FileOpen($sProfile)
- If $fileProfile=-1 Then Return False
- While True
- $sCurLine=FileReadLine($fileProfile)
- If (@error=-1) Then ExitLoop
- $sCurLine=StringStripWS($sCurLine, 3)
- If ($sCurLine="") Or (StringMid($sCurLine, 1, 1)=";") Then
- ContinueLoop
- ElseIf $sCurLine="[Born]" Then
- $iParserStatus = $Parser_Options
- ContinueLoop
- ElseIf $sCurLine="[LastNames]" Then
- $iParserStatus = $Parser_LastName
- ContinueLoop
- ElseIf $sCurLine="[FirstNames]" Then
- $iParserStatus = $Parser_FirstName
- ContinueLoop
- ElseIf $sCurLine="[PatternsNickname]" Then
- $iParserStatus = $Parser_NickNamePatterns
- ContinueLoop
- ElseIf $sCurLine="[PatternsEmail]" Then
- $iParserStatus = $Parser_eMailPatterns
- ContinueLoop
- ElseIf $sCurLine="[Cities]" Then
- $iParserStatus = $Parser_Cities
- EndIf
- If $iParserStatus=$Parser_Options Then
- $Option=StringSplit($sCurLine, "=")
- If $Option[0]<>2 Then Return False
- If $Option[1]="Years" Then
- $iDateYearsFromTo=StringSplit($Option[2], "-")
- If $iDateYearsFromTo[0] <>2 Then Return False
- _ArrayDelete($iDateYearsFromTo, 0)
- EndIf
- ElseIf $iParserStatus=$Parser_FirstName Then
- $NameNSex = StringSplit($sCurLine, ":")
- If $NameNSex[0]<>2 Then Return False
- If StringInStr($NameNSex[2], "M")<>0 Then _ArrayAdd($arrManFirstNames, $NameNSex[1])
- If StringInStr($NameNSex[2], "F")<>0 Then _ArrayAdd($arrWomanFirstNames, $NameNSex[1])
- ElseIf $iParserStatus=$Parser_LastName Then
- $NameNSex = StringSplit($sCurLine, ":")
- If $NameNSex[0]<>2 Then Return False
- If StringInStr($NameNSex[2], "M")<>0 Then _ArrayAdd($arrManLastNames, $NameNSex[1])
- If StringInStr($NameNSex[2], "F")<>0 Then _ArrayAdd($arrWomanLastNames, $NameNSex[1])
- ElseIf $iParserStatus=$Parser_NickNamePatterns Then
- _ArrayAdd($arrNickNamePatterns, $sCurLine)
- ElseIf $iParserStatus=$Parser_eMailPatterns Then
- _ArrayAdd($arrEMailPatterns, $sCurLine)
- ElseIf $iParserStatus=$Parser_Cities Then
- _ArrayAdd($arrCities, $sCurLine)
- EndIf
- WEnd
- Return True
- EndFunc
- Func GeneratePerson()
- Local $Result[10]
- $Result[0]=Random(0, 1, 1) ;Sex
- $Result[1]=Random($iDateYearsFromTo[0], $iDateYearsFromTo[1], 1)-1900 ;Year`s born
- $Result[2]=Random(1, 12, 1) ; Month
- $Result[3]=Random(1, 28, 1) ; Day
- If $Result[0]=0 Then
- $Result[4]=RandomEl($arrWomanFirstNames) ; First Name
- $Result[5]=RandomEl($arrWomanLastNames) ; Last Name
- Else
- $Result[4]=RandomEl($arrManFirstNames) ; First Name
- $Result[5]=RandomEl($arrManLastNames) ; Last Name
- EndIf
- $Result[6]=TranslitRus(PatternToStr($Result, RandomEl($arrNickNamePatterns))) ;NickName
- $Result[7]=TranslitRus(PatternToStr($Result, RandomEl($arrEMailPatterns))) ;e-mail
- $Result[9]=GenPass(14)
- $Result[8]=RandomEl($arrCities) ;City
- Return $Result
- EndFunc
- Func GenPass($iLen)
- Local $char, $i, $Result=""
- For $i=1 to $iLen
- $char=Random(0, 61, 1)
- If $char<10 Then
- $Result=$Result&Chr($char+48)
- ElseIf ($char>9) And ($char<36) Then
- $Result=$Result&Chr($char+55)
- Else
- $Result=$Result&Chr($char+61)
- EndIf
- Next
- Return $Result
- EndFunc
- Func RegAccs($sSettings, $sOutp)
- Local $arrPerson, $oLogin, $oIE
- If $sSettings = "" Then
- MsgBox(16, "Error", "Please, choice settings of fake profile`s generator")
- Return
- EndIf
- If $sOutp = "" Then
- MsgBox(16, "Error", "Please, choice output file")
- Return
- EndIf
- If ParseProfileSettings($sSettings) = False Then
- MsgBox(16, "Error", "Invalid settings format!")
- Return
- EndIf
- $iAccs=Int(GUICtrlRead($iAccsInp))
- If (($iAccs<1) or ($iAccs>100)) Then
- MsgBox(16, "Error", "Invalid count of accounts!")
- Return
- EndIf
- $oIE=_IECreate("", 0, 0)
- $fAccsXML=FileOpen($sOutp, 258)
- FileWrite($fAccsXML, '<?xml version="1.0" encoding="UTF-8"?>'&@CRLF&'<ACCOUNTS>'&@CRLF)
- For $i=1 to $iAccs
- _IENavigate($oIE, "http://www.odnoklassniki.ru/")
- $oForm = _IEFormGetCollection($oIE, 1)
- _IEFormSubmit($oForm)
- $arrPerson = GeneratePerson()
- $oForm=_IEFormGetCollection($oIE, 0)
- $oEl=_IEFormElementGetObjByName($oForm, "fr.name")
- _IEFormElementSetValue($oEl, $arrPerson[4])
- $oEl=_IEFormElementGetObjByName($oForm, "fr.surname")
- _IEFormElementSetValue($oEl, $arrPerson[5])
- $oEl=_IEFormElementGetObjByName($oForm, "fr.email")
- _IEFormElementSetValue($oEl, $arrPerson[7])
- $oEl=_IEFormElementGetObjByName($oForm, "fr.city")
- _IEFormElementSetValue($oEl, $arrPerson[8])
- $oEl=_IEFormElementGetObjByName($oForm, "fr.lgn")
- _IEFormElementSetValue($oEl, $arrPerson[6])
- $oEl=_IEFormElementGetObjByName($oForm, "fr.rpassword")
- _IEFormElementSetValue($oEl, $arrPerson[9])
- $oEl=_IEFormElementGetObjByName($oForm, "fr.rpassword2")
- _IEFormElementSetValue($oEl, $arrPerson[9])
- $oEl=_IEFormElementGetObjByName($oForm, "fr.bday")
- _IEFormElementOptionSelect($oEl, 0, 1, "byIndex")
- $oEl=_IEFormElementGetObjByName($oForm, "fr.country")
- _IEFormElementOptionSelect($oEl, 0, 1, "byIndex")
- $oEl=_IEFormElementGetObjByName($oForm, "fr.bday")
- _IEFormElementOptionSelect($oEl, $arrPerson[3], 1, "byIndex")
- $oEl=_IEFormElementGetObjByName($oForm, "fr.bmonth")
- _IEFormElementOptionSelect($oEl, $arrPerson[2], 1, "byIndex")
- $oEl=_IEFormElementGetObjByName($oForm, "fr.byear")
- _IEFormElementOptionSelect($oEl, (107-$arrPerson[1]), 1, "byIndex")
- _IEFormElementRadioSelect($oForm, String(2-$arrPerson[0]), "fr.gender")
- _IEFormSubmit($oForm)
- $oLogout = _IEGetObjByClass($oIE, "portal-headline__login__link", 1)
- If ($oLogout<>0) Then
- _IEAction($oLogout, "click")
- _IELoadWait($oIE, 3000)
- $oForms=_IEFormGetCollection($oIE)
- For $oForm In $oForms
- If StringInStr($oForm.action, "/dk?cmd=PopLayerLogoffUser")<>0 Then
- $oLogoffBtn=_IEFormElementGetCollection($oForm, 1)
- _IELoadWait($oIE, 5000)
- _IEAction($oLogoffBtn, "click")
- _IELoadWait($oIE, 5000)
- ExitLoop
- EndIf
- Next
- Else
- ContinueLoop
- EndIf
- FileWrite($fAccsXML, "<ACCOUNT>"&@CRLF&"<BIRTHDAY>"&@CRLF&"<YEAR>"&String($arrPerson[1])&"</YEAR>"&@CRLF)
- FileWrite($fAccsXML, "<MONTH>"&String($arrPerson[2])&"</MONTH>"&@CRLF)
- FileWrite($fAccsXML, "<DAY>"&String($arrPerson[3])&"</DAY>"&@CRLF&"</BIRTHDAY>"&@CRLF)
- FileWrite($fAccsXML, "<LOGIN><![CDATA["&String($arrPerson[6])&"]]></LOGIN>"&@CRLF)
- FileWrite($fAccsXML, "<PASSWORD><![CDATA["&$arrPerson[9]&"]]></PASSWORD>"&@CRLF)
- FileWrite($fAccsXML, "<FIRSTNAME><![CDATA["&$arrPerson[4]&"]]></FIRSTNAME>"&@CRLF)
- FileWrite($fAccsXML, "<LASTNAME><![CDATA["&$arrPerson[5]&"]]></LASTNAME>"&@CRLF)
- FileWrite($fAccsXML, "<EMAIL><![CDATA["&$arrPerson[7]&"]]></EMAIL>"&@CRLF)
- FileWrite($fAccsXML, "<CITY><![CDATA["&$arrPerson[8]&"]]></CITY>"&@CRLF)
- FileWrite($fAccsXML, "<SEX>"&String($arrPerson[0])&"</SEX>"&@CRLF)
- FileWrite($fAccsXML, "</ACCOUNT>"&@CRLF)
- Next
- FileWrite($fAccsXML, '</ACCOUNTS>'&@CRLF)
- FileClose($fAccsXML)
- MsgBox(0, "Done", "Work is done!")
- EndFunc
- While 1
- $nMsg = GUIGetMsg()
- Switch $nMsg
- Case $GUI_EVENT_CLOSE
- Exit
- Case $SettingsBtn
- $sFileSettings = FileOpenDialog("settings of fake profile`s generator", ".", "Text files (*.txt)|All (*.*)")
- Case $OutpBtn
- $sOutpSettings = FileSaveDialog("Save output as..", ".", "XML file (*.xml)|All (*.*)", 0, "accs.xml")
- Case $StartBtn
- RegAccs($sFileSettings, $sOutpSettings)
- EndSwitch
- WEnd
Advertisement
Add Comment
Please, Sign In to add comment