Navigation

    SmartAPI Forum
    • Register
    • Login
    • Search
    • Categories
    • Popular
    • Groups
    • FAQs
    • API Docs

    Guide to secure your SmartAPI Account with two factor authentication

    General Discussion
    0
    104
    1955
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      babitakundu @punit last edited by

      @Ashok yes I saw the changes but then also I am getting the same error.

      M 1 Reply Last reply Reply Quote 0
      • A
        aj_Brk @admin last edited by

        @ivar i don't think you need to paas totp everytime. I tested get profile and other apis. It is working like before. Only login has changes.

        I 1 Reply Last reply Reply Quote 0
        • A
          aj_Brk @punit last edited by

          @admin i too had to build the new code manually. Can you get the code merged to main?

          1 Reply Last reply Reply Quote 0
          • punit
            punit @mudit236 last edited by

            @mudit236 AB's release management is a joke which we all know 🙂

            1 Reply Last reply Reply Quote 0
            • punit
              punit @aj_Brk last edited by

              @aj_Brk Secret is time based one generated by local app or code using the secret key or QR code. It will be authenticated against the masterkey with AB servers. So it is possible

              A 1 Reply Last reply Reply Quote 0
              • punit
                punit @anil_patel last edited by

                @anil_patel You can generate using code locally . for example for Python, use pyotp package

                1 Reply Last reply Reply Quote 0
                • punit
                  punit @ravitandur last edited by

                  @ravitandur It is same API, so should be working. only extra totp need to be sent.

                  1 Reply Last reply Reply Quote 0
                  • A
                    aj_Brk @punit last edited by

                    @Ashok what i meant is you can't get this secret by just username and password as Anil is asking. One has to go to enable otp page to get this code one time.

                    punit 1 Reply Last reply Reply Quote 0
                    • punit
                      punit @aj_Brk last edited by

                      @aj_Brk correct

                      1 Reply Last reply Reply Quote 0
                      • A
                        aj_Brk @mudit236 last edited by

                        @babitakundu i guess you have to manually download the repo and run python setup.py install. I dont see the code yet updated on pip

                        punit 1 Reply Last reply Reply Quote 0
                        • punit
                          punit @aj_Brk last edited by

                          @aj_Brk Admins are adding in pip. If you want to try meanwhile, edit directly in local or download from github.

                          1 Reply Last reply Reply Quote 0
                          • M
                            Meenavenkit @babitakundu last edited by

                            @babitakundu just replace the generatesession def with new one. it worked for me. You have to manually edit in source file

                            1 Reply Last reply Reply Quote 0
                            • M
                              milind017 @aj_Brk last edited by

                              @aj_Brk code generated from "pyotp" not working for me, getting below output with your code. Any suggestion. If I am using the code from DUO app I am able to login successfully
                              data = obj.generateSession(clientCode, password, totp.now())
                              print(data)

                              Shell output:
                              pyotp: 586380
                              {'status': False, 'message': 'Invalid totp', 'errorcode': 'AB1050', 'data': None}

                              punit 1 Reply Last reply Reply Quote 0
                              • punit
                                punit @milind017 last edited by

                                @milind017 this need to do like this.

                                totp = pyotp.TOTP(s='secret key in qr uri after qr generation'

                                And then the generate session.

                                M 1 Reply Last reply Reply Quote 0
                                • M
                                  milind017 @punit last edited by

                                  @Ashok Yes did the same. Still getting the same
                                  obj = SmartConnect(api_key=historyApiKey)

                                  totp = pyotp.TOTP(s='secret key in qr uri after qr generation')
                                  print("pyotp",totp.now())

                                  attempts = 5
                                  while attempts > 0:
                                  attempts = attempts-1
                                  data = obj.generateSession(clientCode, password, totp.now())
                                  print(data)
                                  if data['status']:
                                  break
                                  time.sleep(2)

                                  A 1 Reply Last reply Reply Quote 0
                                  • S
                                    SSumit @gautamnaik1994 last edited by

                                    @gautamnaik1994 https://smartapi.angelbroking.com/topic/2383/automate-totp-login-using-python-module-pyotp

                                    M 1 Reply Last reply Reply Quote 0
                                    • M
                                      milind017 @SSumit last edited by

                                      @SSumit
                                      I have tried with shared link code, still getting the same
                                      d83195c5-6672-4ec1-868a-4ee367253b3a-image.png

                                      Shell Output:
                                      with TOTP: 932310
                                      With parse_uri: 932310
                                      {'status': False, 'message': 'Invalid totp', 'errorcode': 'AB1050', 'data': None}

                                      A punit S 3 Replies Last reply Reply Quote 0
                                      • A
                                        aj_Brk @milind017 last edited by

                                        @milind017 I see that you have put condition in if data['status'] , is it going in retry at all ?

                                        1 Reply Last reply Reply Quote 1
                                        • A
                                          aj_Brk @milind017 last edited by

                                          @milind017 try with this condition

                                          if not data['message'].contains('Invalid totp'):
                                          break

                                          M 1 Reply Last reply Reply Quote 0
                                          • punit
                                            punit @milind017 last edited by

                                            @milind017 @aj_Brk why retry, it passed almost always on first time. Anyway. Not sure why parse_uri is needed.. also just pass totp as a string

                                            A M 2 Replies Last reply Reply Quote 1
                                            • First post
                                              Last post