查看: 16402|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr9 f! Z/ _* S. Y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ' X4 k9 }7 v, s
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
2 A' l+ m, A0 i. X! Cusage: himr <address> <value>. sample: himr 0x80040000 0x0
2 J* G5 j. C; n- }& ]  H+ i$ r$ b7 J6 S1 f9 ~! V
* m7 E) Z3 n; k: N7 O$ _, l
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?2 o7 C; l  w7 X

8 n/ Q5 @1 A- R& Z" H补充内容 (2012-3-8 09:42):
, v2 ]* k/ E5 Z! \http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
# |" R9 f8 r% b& b这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。3 l2 B4 X& Y. |3 [
6 X& d: h' v; u0 o' A! ^$ L
himr <address> <value>. sample: himr 0x80040000 0x0# z( b+ u6 |( m0 k

! Q8 D4 V0 q, `& g- I例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。# l" ^; e+ M. S# _2 }; C$ w% m" U0 G
himr 0x80040000 0x006 N0 j3 |& Y' e; c
himr 0x80040001 0x11
5 A; |9 u* o9 t, ahimr 0x80040002 0x22% k6 z$ h& h6 P+ |  ?
himr 0x80040003 0x33
4 ?3 J- P  f+ ^7 t, @9 x+ T" lhimr 0x80040004 0x448 Y! q/ }& ?! n' Y  J- \
himr 0x80040005 0x55
. M9 N9 @! @5 P8 x! m
7 k  z2 ^8 V  uSN也是类似。( R, _! |/ H6 U; Q0 Q0 K8 h( i

0 A9 h: S2 J& M5 a! T现在主要是,谁告诉我们MAC和SN的地址?
8 B  r3 I. @3 G5 c& u: w
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
% Z% N- c$ O0 g6 R! ~4 ~一直想找到运程修改MAC和SN的办法,苦于无解啊

! R1 B, P7 p2 [  ^源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
7 ?* O  h' Y- r' Z% N: A: d: a
修改的代码早有了。到今天不会编译。% v4 n9 t8 b' @' T2 b! G
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    / N" w7 ~% h8 k
  2. #include <malloc.h>& ]' l! {5 a$ P0 D* r: Y
  3. #include <sys/types.h>* ~4 ~7 [- n" M. V3 _# U  p
  4. #include <sys/stat.h>
    6 @$ X) n" q6 m  @3 N, ?4 r& l- ?
  5. #include <sys/ioctl.h>% o" q' C+ Z0 H- L
  6. #include <stdio.h>
    7 r' w% s& c0 d* J! g! j8 T, i
  7. #include <string.h>
    3 ^5 C2 ]0 ~$ V
  8. 0 f- k6 n' `- |2 P
  9. typedef struct {
    9 S0 _# f7 x% N2 }3 o- T# F" n  {
  10.         unsigned int        e2prom_cmd_sub_addr;0 Q$ Y6 U$ C/ x) J3 U
  11.         unsigned int        sub_addr_count;) U7 \' p7 N! Y* Y# e
  12.         unsigned char*        e2prom_cmd_data;: G2 {' h# o1 x  [2 s
  13.         unsigned int        data_count;
    4 ], U3 }8 z3 M* K  y# b# K1 q
  14. } e2prom_s_cmd;+ d. ~" U$ J9 H: K+ A- f/ a

  15. * D4 S, m6 i/ f5 d7 j4 D
  16. #define E2PROM_CMD_READ 1
    0 u$ o0 x  U1 u/ O' o
  17. #define E2PROM_CMD_WRITE 2
    " H' z  E9 p4 p/ L( p5 {$ `
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"  s  \6 D# V7 K

  19. 1 X* A3 X' p4 t6 a
  20. static int readparam(unsigned char *mac, unsigned char *stbid)$ }! \! i9 F/ d# o, a2 g
  21. {/ a; I9 S) o! u* X& x/ D! f* }9 R
  22.         int fd, ret;* C( o/ P0 o; Q# o
  23.         e2prom_s_cmd arg;+ J6 c/ I$ x0 H8 b4 C
  24.         unsigned char buf[0x18];! ?; T9 ~' A* u+ F- L& X
  25. - @% T/ z3 V  e. D0 D) f; O% C
  26.         fd = open(E2PROM_DEVICE, O_RDWR);  G0 T* ~! b! N+ y( @# b' n( \
  27.         if (fd  < 0) {
    % o% R( q7 r" v2 @2 i! q3 I6 f
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ) m( K$ ?; \, u, A. r# Z
  29.                 return -1;. F$ q6 c9 J) D! A$ d6 j
  30.         }
    1 U" ~9 I6 y# m
  31.         arg.sub_addr_count      = 2;
    7 s& V: k2 t) f1 O# G8 L
  32.         arg.data_count          = 0x18;3 T2 I* W, ~( O' ~2 O1 N
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ! Z2 D7 }7 \# T* m9 _1 [& s
  34.         arg.e2prom_cmd_data     = buf;
    $ M5 k8 _( ]! @9 c1 ?
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);6 q1 P  |( d5 a. s6 |# c
  36.         if (ret != 0) {
    1 e( q0 q" D0 i) t! @( U, l
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);0 \  y, s1 Z2 N5 Y
  38.                 return -1;3 I6 q; Z4 i4 {9 _  V6 ^# b0 a7 i. B0 Z
  39.         }+ i( Y7 X! c3 L5 K# u! @7 g- M
  40.         memcpy(mac, buf, 6);
    $ Z% u" X, C9 ^( ?! H
  41.         memcpy(stbid, &buf[6], 18);
    5 c' @3 Y: N6 n  t1 Z
  42.         stbid[18] = '\0';. I# |0 {! U+ ?; M9 ^2 u% v& F

  43. 4 R. W, u" U+ T0 C  g% L/ o2 \
  44.         return 0;
    ; Y5 n0 G' Z6 E) D  t/ X2 y2 H
  45. }3 l3 s1 g- K+ q
  46. 4 ]8 R/ P; }, a) P. O
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)% S8 ^+ L' L) g/ a9 G* y: J
  48. {
      a  U  j9 v$ R8 J; z) ~: @
  49.         int fd, ret;
    6 \. l& m) }1 l
  50.         e2prom_s_cmd arg;" ?' j: ^0 `1 x! q# `
  51.         unsigned char buf[0x18];
    7 B% B5 u& a2 u' l
  52. # @, A8 ]& {9 o1 D; L5 l
  53.         memcpy(buf, mac, 6);
    2 V* r% d& s$ \  Q" n9 P
  54.         memcpy(&buf[6], stbid, 18);! M6 E" `/ [' R; [: v2 t. K9 F
  55.         fd = open(E2PROM_DEVICE, O_RDWR);3 s/ w' B: O* @, W* w0 q) X
  56.         if (fd  < 0) {
    , z  i2 V& x2 Q
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);, T$ P- b. C9 k+ T
  58.                 return -1;
    ( E8 d3 m* L" Y7 X% f  C
  59.         }
    $ S2 \  m2 N! p
  60.         arg.sub_addr_count      = 2;
    $ S" v4 C5 E5 x9 ~" s8 o* i# M
  61.         arg.data_count          = 0x18;
    5 f" ]- M+ c' {- u3 H2 [
  62.         arg.e2prom_cmd_sub_addr = 0x290;) E4 u# I7 \) `( [3 A' U; R
  63.         arg.e2prom_cmd_data     = buf;
    2 V9 y$ Z+ D0 L: u2 {( q
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);2 x4 ]- |% a/ u4 b) t2 l
  65.         if (ret != 0) {
    - p4 Q8 x8 r/ D2 O  V
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);  ?% b$ E1 j- M* r: U* g8 `$ ~
  67.                 return -1;
    9 `3 ?( F& B; I$ e  d, m# a
  68.         }
    ! d9 v' O0 V. Q7 [

  69. * r% W( ]) E) u
  70.         return 0;+ ?" W( J+ [' W5 q, Z' Z- {) W
  71. }
    / t9 Q3 {" Q- k. T
  72. & R9 ^- T/ m% L: T9 b3 N  H
  73. int main()
    : @! M. V& i; r3 Z
  74. {
    3 ]& E, I6 M( j6 B% v7 j
  75.         char c;/ V( Y+ b, [' Y9 z0 f8 |
  76.         int i, macs[6];
    1 }, S+ D  G* c3 K. g
  77.         unsigned char mac[6];
    ) p" ]: z$ X6 {
  78.         unsigned char stbid[256];
    # Z( N% g0 v$ W1 W9 C) e! I

  79. 1 @+ C* V% o3 t7 J
  80.         if (readparam(mac, stbid) < 0)/ Q: b+ s6 D! U$ W* |* X& \
  81.                 return 1;# v& T6 F. |- E! H! l
  82. 2 F" R/ d- y: [# j8 {0 O' m
  83.         printf("Current parameters: \n");/ W6 h3 E6 d& M+ L
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! D+ I! V+ l1 {: z
  85.         printf("  STBID: %s\n", stbid);
    , R% X+ w8 Z! C0 A- r8 d1 ^; g
  86.        
    % E2 M( _' v; X$ m
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    5 z1 N8 w8 X/ R! D4 Z6 y1 f, s
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {8 k5 }* N9 n6 M: ~& R% R, N- ]
  89.                 printf("Input MAC error\n");( P7 r  P( D& y
  90.                 return 1;% I) H4 ~4 n) E- P6 `9 E# X" `/ M
  91.         }& F; M2 Q, t$ u8 D
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    6 U7 Y% c$ o4 j& V
  93.         printf("\nPlease input new STBID: ");9 a% ?; l. d/ Z/ N
  94.         scanf("%s", stbid);! C( Z' f3 I2 i2 R1 H& p
  95.         if (strlen(stbid) != 18) {) P8 [# D7 P' @/ ]% t+ i
  96.                 printf("Invalid stbid\n");
    ( Q. j& G, f8 U" k0 K
  97.                 return 1;8 h' T8 Q9 r+ Q: Z' m- x0 `8 P
  98.         }
    % T7 y- Y7 f3 b4 h
  99.         printf("\nNew parameters: \n");9 W" ~& e" F- L* N, W
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' W- }# {* x$ f$ H  S, u
  101.         printf("  STBID: %s\n", stbid);* a% c8 p+ y6 e0 j: H
  102. $ c5 w. n" m' u1 V# N
  103.         printf("\nDo you want to change paramemters? (y/N) ");. _3 I6 y% u7 M4 Q# c& ]
  104.         for (;;) {
    % `' A3 n- a5 S( }$ o5 T5 Y3 I4 K& Z
  105.                 c = getchar();9 Z3 ]9 e8 r. U% n+ y8 I3 q
  106.                 if (c == 'y' || c == 'Y')& b2 C5 l- @( B9 \2 u0 C
  107.                         break;
    " K* [7 w6 \" ^- |& K
  108.                 if (c == 'n' || c == 'N') {
    2 E9 O0 d5 l: T9 n: C5 y8 c8 c
  109.                         printf("\nAborted.\n");' R# {2 a" t  _( n. X( j( u5 R
  110.                         return 1;
    $ ?  n8 J/ b/ t( g& c1 C5 S: b
  111.                 }- V8 L1 Y1 K6 v" y: B( w, A
  112.         }
    ; {" O9 Z) |% ]2 n0 X: N1 B3 E
  113.         if (writeparam(mac, stbid) == 0)
    2 b+ s/ q7 V+ Q& u
  114.                 printf("Parameters changed.\n");
    ) f4 \+ I, K3 b8 b8 i

  115. 1 H1 L/ J% s# q
  116.         return 0;
    ' d; J8 I* `/ Y+ t
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 | 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 | 显示全部楼层
0522 发表于 2012-3-23 18:24
7 L7 @# f! r5 m在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

2 R: ^* c) u9 q6 s你用的编译命令行格式是什么?' g& c% Z. M* Y9 Y2 t
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部